Validation.
(Contributed by Victor Stinner in :gh:`94199`.)
+* Many previously deprecated cleanups in :mod:`importlib` have now been
+ completed:
+
+ * References to, and support for ``module_repr()`` has been eradicated.
+
Porting to Python 3.12
======================
_ORIGIN = "built-in"
- @staticmethod
- def module_repr(module):
- """Return repr for the module.
-
- The method is deprecated. The import machinery does the job itself.
-
- """
- _warnings.warn("BuiltinImporter.module_repr() is deprecated and "
- "slated for removal in Python 3.12", DeprecationWarning)
- return f'<module {module.__name__!r} ({BuiltinImporter._ORIGIN})>'
-
@classmethod
def find_spec(cls, fullname, path=None, target=None):
if path is not None:
_ORIGIN = "frozen"
- @staticmethod
- def module_repr(m):
- """Return repr for the module.
-
- The method is deprecated. The import machinery does the job itself.
-
- """
- _warnings.warn("FrozenImporter.module_repr() is deprecated and "
- "slated for removal in Python 3.12", DeprecationWarning)
- return '<module {!r} ({})>'.format(m.__name__, FrozenImporter._ORIGIN)
-
@classmethod
def _fix_up_module(cls, module):
spec = module.__spec__
expected=value))
self.assertEqual(output, 'Hello world!\n')
- def test_module_repr_indirect(self):
+ def test_module_repr_indirect_through_spec(self):
name = '__hello__'
module, output = self.exec_module(name)
self.assertEqual(repr(module),
self.assertEqual(stdout.getvalue(),
'Hello world!\nHello world!\n')
- def test_module_repr(self):
- with fresh('__hello__', oldapi=True):
- module = self.machinery.FrozenImporter.load_module('__hello__')
- repr_str = self.machinery.FrozenImporter.module_repr(module)
- self.assertEqual(repr_str,
- "<module '__hello__' (frozen)>")
-
# No way to trigger an error in a frozen module.
test_state_after_failure = None
def get_filename(self, fullname):
return self.path
- def module_repr(self, module):
- return '<module>'
-
SPLIT_SOL = make_abc_subclasses(SourceOnlyLoader, 'SourceLoader')
repr(m), "<module 'foo' (<class 'test.test_module.FullLoader'>)>")
def test_module_repr_with_bare_loader_and_filename(self):
- # Because the loader has no module_repr(), use the file name.
m = ModuleType('foo')
# Yes, a class not an instance.
m.__loader__ = BareLoader
self.assertEqual(repr(m), "<module 'foo' from '/tmp/foo.py'>")
def test_module_repr_with_full_loader_and_filename(self):
- # Even though the module has an __file__, use __loader__.module_repr()
m = ModuleType('foo')
# Yes, a class not an instance.
m.__loader__ = FullLoader
--- /dev/null
+Long deprecated, ``module_repr()`` should now be completely eradicated.