[New-bugs-announce] [issue35843] importlib.util docs for namespace packages innaccurate

Anthony Sottile report at bugs.python.org
Mon Jan 28 13:03:10 EST 2019

New submission from Anthony Sottile <asottile at umich.edu>:

For instance:

# `a` is an empty directory, a PEP 420 namespace package

>>> import importlib.util
>>> importlib.util.find_spec('a')
ModuleSpec(name='a', loader=None, origin='namespace', submodule_search_locations=_NamespacePath(['/tmp/x/a']))


> ...  Normally “origin” should be set, but it may be None (the default) which indicates it is unspecified (e.g. for namespace packages).

above the `origin` is `'namespace'`


> List of strings for where to find submodules, if a package (None otherwise).

However the `_NamespacePath` object above is not indexable:

>>> x = importlib.util.find_spec('a').submodule_search_locations
>>> x[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '_NamespacePath' object does not support indexing

I can work around however with:

>>> next(iter(x))


so I guess a few things can/should come out of this:

- Document the `'namespace'` origin
- Document that `submodule_search_paths` is a Sized[str] instead
- Add `__getitem__` to `_NamespacePath` such that it implements the full `Sized` protocol

assignee: docs at python
components: Documentation
messages: 334484
nosy: Anthony Sottile, docs at python
priority: normal
severity: normal
status: open
title: importlib.util docs for namespace packages innaccurate
versions: Python 3.7, Python 3.8

Python tracker <report at bugs.python.org>

More information about the New-bugs-announce mailing list