On Sun, May 30, 2010 at 22:03, P.J. Eby <p...@telecommunity.com> wrote:
> At 06:18 PM 5/30/2010 -0700, Brett Cannon wrote:
>>
>> On Sun, May 30, 2010 at 00:40, P.J. Eby <p...@telecommunity.com> wrote:
>> >
>> > Which would completely break one of the major use cases of the PEP,
>> > which is
>> > precisely to ensure that you can install two pieces of code to the same
>> > namespace without either one overwriting the other's files.
>>
>> The PEP says the goal is to span packages across directories.
>
> The goal of namespace packages is to allow separately-distributed pieces of
> code to live in the same package namespace.  That this is sometimes achieved
> by installing them to different paths is an implementation detail.
>
> In the case of e.g. Linux distributions and other system packaging
> scenarios, the code will all be installed to the *same* directory -- so
> there cannot be any filename collisions among the separately-distributed
> modules.  That's why we want to get rid of the need for an __init__.py to
> mark the directory as a package: it's a collision point for system package
> management tools.
>
>
>> > pkgutil doesn't have such a limitation, except in the case extend_path,
>> > and
>> > that limitation is one that PEP 382 intends to remove.
>>
>> It's because pkgutil.extend_path has that limitation I am asking as
>> that's what the PEP refers to. If the PEP wants to remove the
>> limitation it should clearly state how it is going to do that.
>
> I'm flexible on it either way.  The only other importer I know of that does
> anything else is one that actually allows (unsafely) importing from URLs.
>
> If we allow for other things, then we need to extend the PEP 302 protocol to
> have a way to ask an importer for a subpath string.
>
>
>
>> As for adding to the PEP 302 protocols, it's a question of how much we
>> want importer implementors to have control over this versus us. I
>> personally would rather keep any protocol extensions simple and have
>> import handle as many of the details as possible.
>
> I lean the other way a bit, in that the more of the importer internals you
> expose, the harder you make it for an importer to be anything other than a
> mere virtual file system.  (As it is, I think there is too much "file-ness"
> coupling in the protocol already, what with file extensions and the like.)
>

Yes, there is a VERY strong file path connection in loaders and they
have essentially become simple virtual file systems. But that does
make implementation of alternative back-ends easier which seems to be
the common case. Plus pre-existing code already mutates __path__,
__file__, etc. as if they are file paths using os.path.join. And imp's
new source_from_cache and cache_from_source are not weakening the tie
to file paths either.

But as long as whatever mechanism gets exposed allows people to work
from a module name that will be enough. The path connection is not
required as load_module is the end-all-be-all method. If we have a
similar API added for .pth files that works off of module names then
those loaders that don't want to work from file paths don't have to.
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to