diff options
author | Alex Waygood <Alex.Waygood@Gmail.com> | 2023-11-27 08:19:29 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-27 08:19:29 (GMT) |
commit | 0622839cfedacbb48eba27180fd0f0586fe97771 (patch) | |
tree | 8fb1657b9ff18918a4f9a0c0819e413e42f35787 /Lib/importlib/_bootstrap.py | |
parent | e954ac7205d7a6e356c1736eb372d2b50dbd9f69 (diff) | |
download | cpython-0622839cfedacbb48eba27180fd0f0586fe97771.zip cpython-0622839cfedacbb48eba27180fd0f0586fe97771.tar.gz cpython-0622839cfedacbb48eba27180fd0f0586fe97771.tar.bz2 |
gh-112414: Fix `AttributeError` when calling `repr()` on a namespace package imported with a custom loader (#112425)
Diffstat (limited to 'Lib/importlib/_bootstrap.py')
-rw-r--r-- | Lib/importlib/_bootstrap.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py index ec2e56f..d942045 100644 --- a/Lib/importlib/_bootstrap.py +++ b/Lib/importlib/_bootstrap.py @@ -824,10 +824,16 @@ def _module_repr_from_spec(spec): """Return the repr to use for the module.""" name = '?' if spec.name is None else spec.name if spec.origin is None: - if spec.loader is None: + loader = spec.loader + if loader is None: return f'<module {name!r}>' + elif ( + _bootstrap_external is not None + and isinstance(loader, _bootstrap_external.NamespaceLoader) + ): + return f'<module {name!r} (namespace) from {list(loader._path)}>' else: - return f'<module {name!r} (namespace) from {list(spec.loader._path)}>' + return f'<module {name!r} ({loader!r})>' else: if spec.has_location: return f'<module {name!r} from {spec.origin!r}>' |