summaryrefslogtreecommitdiffstats
path: root/Lib/importlib/_bootstrap.py
diff options
context:
space:
mode:
authorAlex Waygood <Alex.Waygood@Gmail.com>2023-11-27 08:19:29 (GMT)
committerGitHub <noreply@github.com>2023-11-27 08:19:29 (GMT)
commit0622839cfedacbb48eba27180fd0f0586fe97771 (patch)
tree8fb1657b9ff18918a4f9a0c0819e413e42f35787 /Lib/importlib/_bootstrap.py
parente954ac7205d7a6e356c1736eb372d2b50dbd9f69 (diff)
downloadcpython-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.py10
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}>'