Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Python: Dev
Re: PEP 420 - dynamic path computation is missing rationale
 

Index | Next | Previous | View Flat


ncoghlan at gmail

May 23, 2012, 6:02 AM


Views: 179
Permalink
Re: PEP 420 - dynamic path computation is missing rationale [In reply to]

On Wed, May 23, 2012 at 10:31 PM, Eric V. Smith <eric [at] trueblade> wrote:
> On 05/22/2012 09:49 PM, PJ Eby wrote:
>> It shouldn't - all you should need is to use
>> getattr(sys.modules[self.modname], self.attr) instead of referencing a
>> parent path object directly.
>
> The problem isn't the lookup, it's coming up with self.modname and
> self.attr. As it currently stands, PathFinder.find_module is given the
> parent path, not the module name and attribute name used to look up the
> parent path using sys.modules and getattr.

Right, that's what PJE and I were discussing. Instead of passing in
the path object directly, you can instead pass an object that *lazily*
retrieves the path object in its __iter__ method:

class LazyIterable:
"""On iteration, retrieves a reference to a named iterable and
returns an iterator over that iterable"""
def __init__(self, modname, attribute):
self.modname = modname
self.attribute = attribute
def __iter__(self):
mod = import_module(self.modname) # Will almost always get
a hit directly in sys.modules
return iter(getattr(mod, self.attribute)

Where importlib currently passes None or sys.path as the path argument
to find_module(), instead pass "LazyIterable('sys', 'path')" and where
it currently passes package.__path__, instead pass
"LazyIterable(package.__name__, '__path__')".

The existing for loop iteration and tuple() calls should then take
care of the lazy lookup automatically.

That way, the only code that needs to know the values of modname and
attribute is the code that already has access to those values.

Cheers,
Nick.

--
Nick Coghlan   |   ncoghlan [at] gmail   |   Brisbane, Australia
_______________________________________________
Python-Dev mailing list
Python-Dev [at] python
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: http://mail.python.org/mailman/options/python-dev/list-python-dev%40lists.gossamer-threads.com

Subject User Time
PEP 420 - dynamic path computation is missing rationale guido at python May 20, 2012, 6:33 PM
    Re: PEP 420 - dynamic path computation is missing rationale eric at trueblade May 21, 2012, 1:00 AM
        Re: PEP 420 - dynamic path computation is missing rationale guido at python May 21, 2012, 6:55 AM
    Re: PEP 420 - dynamic path computation is missing rationale pje at telecommunity May 21, 2012, 11:08 AM
    Re: PEP 420 - dynamic path computation is missing rationale ncoghlan at gmail May 21, 2012, 4:25 PM
    Re: PEP 420 - dynamic path computation is missing rationale ncoghlan at gmail May 21, 2012, 4:32 PM
    Re: PEP 420 - dynamic path computation is missing rationale eric at trueblade May 21, 2012, 5:32 PM
        Re: PEP 420 - dynamic path computation is missing rationale pje at telecommunity May 22, 2012, 10:47 AM
    Re: PEP 420 - dynamic path computation is missing rationale eric at trueblade May 22, 2012, 7:51 AM
        Re: PEP 420 - dynamic path computation is missing rationale ncoghlan at gmail May 22, 2012, 8:39 AM
    Re: PEP 420 - dynamic path computation is missing rationale ncoghlan at gmail May 22, 2012, 8:41 AM
    Re: PEP 420 - dynamic path computation is missing rationale eric at trueblade May 22, 2012, 9:31 AM
        Re: PEP 420 - dynamic path computation is missing rationale pje at telecommunity May 22, 2012, 1:43 PM
    Re: PEP 420 - dynamic path computation is missing rationale guido at python May 22, 2012, 11:37 AM
    Re: PEP 420 - dynamic path computation is missing rationale barry at python May 22, 2012, 3:05 PM
    Re: PEP 420 - dynamic path computation is missing rationale eric at trueblade May 22, 2012, 5:40 PM
        Re: PEP 420 - dynamic path computation is missing rationale pje at telecommunity May 22, 2012, 6:49 PM
        Re: PEP 420 - dynamic path computation is missing rationale ncoghlan at gmail May 22, 2012, 6:58 PM
    Re: PEP 420 - dynamic path computation is missing rationale pje at telecommunity May 22, 2012, 8:58 PM
    Re: PEP 420 - dynamic path computation is missing rationale ncoghlan at gmail May 22, 2012, 9:27 PM
    Re: PEP 420 - dynamic path computation is missing rationale eric at trueblade May 23, 2012, 5:31 AM
        Re: PEP 420 - dynamic path computation is missing rationale ncoghlan at gmail May 23, 2012, 6:02 AM
    Re: PEP 420 - dynamic path computation is missing rationale eric at trueblade May 23, 2012, 6:10 AM
        Re: PEP 420 - dynamic path computation is missing rationale brett at python May 23, 2012, 12:02 PM
    Re: PEP 420 - dynamic path computation is missing rationale pje at telecommunity May 23, 2012, 8:13 AM
    Re: PEP 420 - dynamic path computation is missing rationale pje at telecommunity May 23, 2012, 12:35 PM
    Re: PEP 420 - dynamic path computation is missing rationale brett at python May 23, 2012, 12:56 PM
    Re: PEP 420 - dynamic path computation is missing rationale eric at trueblade May 23, 2012, 2:29 PM
        Re: PEP 420 - dynamic path computation is missing rationale eric at trueblade May 23, 2012, 5:24 PM
            Re: PEP 420 - dynamic path computation is missing rationale pje at telecommunity May 23, 2012, 5:58 PM
    Re: PEP 420 - dynamic path computation is missing rationale eric at trueblade May 23, 2012, 6:02 PM
        Re: PEP 420 - dynamic path computation is missing rationale pje at telecommunity May 23, 2012, 7:58 PM
        Re: PEP 420 - dynamic path computation is missing rationale ncoghlan at gmail May 23, 2012, 8:49 PM
    Re: PEP 420 - dynamic path computation is missing rationale guido at python May 24, 2012, 11:33 AM
    Re: PEP 420 - dynamic path computation is missing rationale eric at trueblade May 24, 2012, 11:42 AM
    Re: PEP 420 - dynamic path computation is missing rationale ericsnowcurrently at gmail May 24, 2012, 1:11 PM

  Index | Next | Previous | View Flat
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.