Namespace packages _bootstrap.ModuleSpec.loader attributes are no longer None (#10376)

Namespace packages _bootstrap.ModuleSpec.loader attributes are no longer `None` _after_ calling the importlib._bootstrap._init_module_attrs function.

See:
* https://stackoverflow.com/questions/52869541/namespace-package-spec-loader-and-loader-attributes-not-set-to-none
* https://bugs.python.org/issue35181
This commit is contained in:
Géry Ogam 2019-05-01 22:08:17 +02:00 committed by Barry Warsaw
parent dde3eebdaa
commit ee88af3f4f
1 changed files with 5 additions and 6 deletions

View File

@ -345,12 +345,11 @@ of what happens during the loading portion of import::
_init_module_attrs(spec, module)
if spec.loader is None:
if spec.submodule_search_locations is not None:
# namespace package
sys.modules[spec.name] = module
else:
# unsupported
raise ImportError
# unsupported
raise ImportError
if spec.origin is None and spec.submodule_search_locations is not None:
# namespace package
sys.modules[spec.name] = module
elif not hasattr(spec.loader, 'exec_module'):
module = spec.loader.load_module(spec.name)
# Set __loader__ and __package__ if missing.