File tree Expand file tree Collapse file tree 4 files changed +16
-3
lines changed Expand file tree Collapse file tree 4 files changed +16
-3
lines changed Original file line number Diff line number Diff line change @@ -824,10 +824,16 @@ def _module_repr_from_spec(spec):
824824 """Return the repr to use for the module."""
825825 name = '?' if spec .name is None else spec .name
826826 if spec .origin is None :
827- if spec .loader is None :
827+ loader = spec .loader
828+ if loader is None :
828829 return f'<module { name !r} >'
830+ elif (
831+ _bootstrap_external is not None
832+ and isinstance (loader , _bootstrap_external .NamespaceLoader )
833+ ):
834+ return f'<module { name !r} (namespace) from { list (loader ._path )} >'
829835 else :
830- return f'<module { name !r} (namespace) from { list ( spec . loader . _path ) } >'
836+ return f'<module { name !r} ({ loader !r } ) >'
831837 else :
832838 if spec .has_location :
833839 return f'<module { name !r} from { spec .origin !r} >'
Original file line number Diff line number Diff line change @@ -23,6 +23,10 @@ def test___loader__(self):
2323 with util .uncache ('blah' ), util .import_state (meta_path = [loader ]):
2424 module = self .__import__ ('blah' )
2525 self .assertEqual (loader , module .__loader__ )
26+ expected_repr_pattern = (
27+ r"<module 'blah' \(<test\.test_importlib\..*SpecLoaderMock object at .+>\)>"
28+ )
29+ self .assertRegex (repr (module ), expected_repr_pattern )
2630
2731
2832(Frozen_SpecTests ,
Original file line number Diff line number Diff line change @@ -80,7 +80,7 @@ def test_cant_import_other(self):
8080
8181 def test_simple_repr (self ):
8282 import foo .one
83- assert repr (foo ).startswith ("<module 'foo' (namespace) from [" )
83+ self . assertTrue ( repr (foo ).startswith ("<module 'foo' (namespace) from [" ) )
8484
8585
8686class DynamicPathNamespacePackage (NamespacePackageTest ):
Original file line number Diff line number Diff line change 1+ Fix regression in Python 3.12 where calling :func: `repr ` on a module that
2+ had been imported using a custom :term: `loader ` could fail with
3+ :exc: `AttributeError `. Patch by Alex Waygood.
You can’t perform that action at this time.
0 commit comments