Re: PEP 420: Implicit Namespace Packages

Nick Coghlan <[email protected]>
Newsgroups gmane.comp.python.import
Message-ID <CADiSq7fSyVS3VPx=yE_+UFHio7hqPn2DmiRMMYmgJ+_m-UHJ+w@mail.gmail.com>
On Fri, May 4, 2012 at 10:05 AM, PJ Eby <[email protected]> wrote:
> On Thu, May 3, 2012 at 6:20 PM, Nick Coghlan <[email protected]> wrote:
>>
>> I'd still prefer to just officially bless the existing "<whatever>"
>> convention for non-filesystem imports over encouraging type checks on
>> __loader__ or defining a new introspection interface for loaders.
>>
>> If we say "this is the stdlib convention" people are going to start using
>> the same check as is now used in traceback.py
>>
>> The precedent is there with code objects, and I think it's a good example
>> to follow.
>
> Note that this messes with the idea of using the first directory as filename
> -- anybody who joins with os.path.dirname(__file__) is going to get a mess
> (on regular filesystem paths), which is (I'm guessing) why the trailing
> separator idea was proposed in the first place.
>
> Which kind of brings us full circle on that point.  I suppose we could just
> say screw it, anybody implementing VFS importers had darn well better
> understand os.path.join and friends, since PEP 302 requires it for get_data
> anyway.

Yep. It also means VFS importers are officially free to put all the
metadata they want inside the angle brackets, secure in the knowledge
that everyone else should be treating it as an opaque blob. It then
becomes a way for them to pass necessary info to get_data() *without*
having to create distinct loader instances for every module.

Arguably, we should also be adding the angle brackets in zipimporter
(since those aren't real filesystem paths).

> Still seems like a wart, but oh well.  OTOH, maybe it's better for people
> munging __file__ to get a weird error all the time with namespace packages,
> instead of something that works some of the time, and fails later?

Right. Otherwise we'd get layout dependent behaviour where dubious
cross-portion references worked if all portions were installed to the
same path segment, but then failed if they were split across multiple
segments.

Cheers,
Nick.

-- 
Nick Coghlan   |   [email protected]   |   Brisbane, Australia
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.