[Python-checkins] gh-97850: Remove all known instances of module_repr() (#97876)
warsaw
webhook-mailer at python.org
Wed Oct 5 14:42:35 EDT 2022
https://github.com/python/cpython/commit/5dc35991356306055ab2d85b886881ffd6577ae1
commit: 5dc35991356306055ab2d85b886881ffd6577ae1
branch: main
author: Barry Warsaw <barry at python.org>
committer: warsaw <barry at python.org>
date: 2022-10-05T11:42:26-07:00
summary:
gh-97850: Remove all known instances of module_repr() (#97876)
Remove all known instances of module_repr()
files:
A Misc/NEWS.d/next/Core and Builtins/2022-10-04-17-02-18.gh-issue-97850.E3QTRA.rst
M Doc/whatsnew/3.12.rst
M Lib/importlib/_bootstrap.py
M Lib/test/test_importlib/frozen/test_loader.py
M Lib/test/test_importlib/test_abc.py
M Lib/test/test_module.py
diff --git a/Doc/whatsnew/3.12.rst b/Doc/whatsnew/3.12.rst
index 62ec2de2e78c..2e9515d036e7 100644
--- a/Doc/whatsnew/3.12.rst
+++ b/Doc/whatsnew/3.12.rst
@@ -426,6 +426,11 @@ Removed
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
======================
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
index 67989c500f21..5d3c9fe3fbd2 100644
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -728,17 +728,6 @@ class BuiltinImporter:
_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:
@@ -808,17 +797,6 @@ class FrozenImporter:
_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__
diff --git a/Lib/test/test_importlib/frozen/test_loader.py b/Lib/test/test_importlib/frozen/test_loader.py
index 32f951cb1aca..da1569e3d068 100644
--- a/Lib/test/test_importlib/frozen/test_loader.py
+++ b/Lib/test/test_importlib/frozen/test_loader.py
@@ -103,7 +103,7 @@ def test_lacking_parent(self):
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),
@@ -190,13 +190,6 @@ def test_module_reuse(self):
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
diff --git a/Lib/test/test_importlib/test_abc.py b/Lib/test/test_importlib/test_abc.py
index c214209350a0..8641b6cc6830 100644
--- a/Lib/test/test_importlib/test_abc.py
+++ b/Lib/test/test_importlib/test_abc.py
@@ -687,9 +687,6 @@ def get_data(self, path):
def get_filename(self, fullname):
return self.path
- def module_repr(self, module):
- return '<module>'
-
SPLIT_SOL = make_abc_subclasses(SourceOnlyLoader, 'SourceLoader')
diff --git a/Lib/test/test_module.py b/Lib/test/test_module.py
index 6c83d76c8e3c..70e4efea6935 100644
--- a/Lib/test/test_module.py
+++ b/Lib/test/test_module.py
@@ -239,7 +239,6 @@ def test_module_repr_with_full_loader(self):
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
@@ -247,7 +246,6 @@ def test_module_repr_with_bare_loader_and_filename(self):
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
diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-10-04-17-02-18.gh-issue-97850.E3QTRA.rst b/Misc/NEWS.d/next/Core and Builtins/2022-10-04-17-02-18.gh-issue-97850.E3QTRA.rst
new file mode 100644
index 000000000000..f880d9663842
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2022-10-04-17-02-18.gh-issue-97850.E3QTRA.rst
@@ -0,0 +1 @@
+Long deprecated, ``module_repr()`` should now be completely eradicated.
More information about the Python-checkins
mailing list