Re: PEP 420: Implicit Namespace Packages

"Eric V. Smith" <[email protected]>
Newsgroups gmane.comp.python.import
Message-ID <[email protected]>
On 05/02/2012 02:53 PM, Brett Cannon wrote:

> You actually don't need to explicitly type-check and instead can rely on
> duck typing::
> 
>   if loader is None: continue
>   elif hasattr(loader, 'load_module'): return loader
>   else:
>      namespace.append(loader)
>      continue

While I agree that this accomplishes the job, I don't think it's any
more readable than the existing code:

  if isinstance(loader, str):
      namespace.append(loader)
  elif loader:
      return loader

(with the case of None causing the code to loop)

But I'm open to changing it.

As to the three return types: Given that find_module() has all of the
information, I don't think it makes sense to add another method. And for
backward compatibility, we need to keep the {None, loader} return types.
If you agree that adding another method is wasteful (it will have to do
most of the same work as find_module(), or cache its result), then I
think adding a str return type makes the most sense.

I can't foresee this ever causing an actual problem. No one is going to
subclass a loader from str (famous last words, I know!).

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.