Re: pkgutil.extend_path

"Eric V. Smith" <[email protected]>
Newsgroups gmane.comp.python.import
Message-ID <[email protected]>
On 05/15/2012 06:04 PM, PJ Eby wrote:
> On Tue, May 15, 2012 at 1:26 PM, Eric V. Smith <[email protected]
> <mailto:[email protected]>> wrote:
> 
>     I'm looking at fixing pkgutil.extend_path in order to support namespace
>     packages where some portions use PEP-420 and some use extend_path.
> 
>     The first thing I notice is that there are no tests for
>     pkgutil.extend_path :(
> 
>     extend_path currently just examines the filesystem directly, which means
>     it doesn't support portions in zip files or other finder/loaders.
> 
>     But if I understand PJE and others correctly, the idea is to modify
>     extend_path so it calls the path_hook finders instead of looking at the
>     filesystem (in order to find the other __path__ entries). 
> 
> 
> Well, I actually wasn't trying to support that at all; I've never used
> extend_path() myself, so I was only talking about implementing
> transitional support for the PEP in declare_namespace().

I'm mostly interested in extend_path() because:
a) it's in the standard library
b) if it can be made to work, I assume declare_namespace() can, too

> That being said, it sounds like adding support in extend_path() might
> also be worthwhile.  Presumably, it would *not* auto-update, since
> extend_path() doesn't currently do that.  (Just as declare_namespace()
> *should* auto-update, because it currently does.)

Right. I have extend_path() working with mixed namespace packages: those
that have an __init__.py with extend_path, and those with no
__init__.py. In this case, it does not support auto-updating (although
it easily could, if we expose that from _bootstrap). I'll update the PEP
to mention returning the portions iterable even if a loader is returned,
clean up the code, and check it in.

I'll leave declare_namespace() for someone else. I might have time to
look at it if/when the PEP is accepted, but no promises.

>     There's the added issue of how to deal with .pkg files. Is only
>     supporting them from the filesystem okay? Or is it worth the hassle of
>     creating some finder API to access them?
> 
> 
> I don't know who actually uses them, but then I don't know who uses
> extend_path(), period.  The only examples I was able to find with Google
> and Nullege are of the form "try: declare_namespace() except:
> extend_path()" -- that is, code that first tries to use
> declare_namespace() instead.

I haven't touched the .pkg code. It doesn't work terribly well if a
zipimporter is used, but then it never did. At least I'm not making it
worse.

Once this is checked in, I think the work on the PEP and sample
implementation is done.

Eric.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.