[Import-SIG] PEP 420 issue: extend_path

Eric V. Smith eric at trueblade.com
Tue May 8 06:52:05 CEST 2012


On 05/07/2012 04:38 AM, "Martin v. Löwis" wrote:
> I'd like to propose that pkgutil.extend_path is specified to also
> consider portions according to the PEP. Currently, it will only
> consider portions having an __init__.py
> 
> If a namespace package gets a portion installed that has an __init__.py,
> then all existing portions become ignored under
> the current PEP. With that change, if a portion has an __init__.py
> that uses extend_path, the other portions would still be considered.
> 
> With the current PEP, all contributors to a package need to
> simultaneously agree to drop their __init__.py for 3.3. Initially,
> this could cause confusion, and hinder adoption of the PEP.
> 
> The same would also apply to pkg_resources.declare_namespace.
> Unfortunately, this is out of the scope of the PEP, but I'm sure Tarek
> would accept a patch to distribute to bring it into conformance to
> pkgutil.

I agree this is an important consideration. I haven't had time to think
it through, yet.

> Interestingly, it appears that pkg_util will break under PEP 420,
> anyway, as it currently does (in _handle_ns)
> 
>     loader = importer.find_module(packageName)
>     if loader is None:
>         return None
> ...
>         loader.load_module(packageName); module.__path__ = path
> 
> Now, if loader suddenly becomes a string, than the load_module
> call will raise an attribute error (untested).

I've become convinced that we need a new finder method, and leave
find_module with its current (3.2) semantics.

Eric.



More information about the Import-SIG mailing list