[Python-checkins] bpo-46333: include `module` in `ForwardRef.__repr__` (#31283)
gvanrossum
webhook-mailer at python.org
Sat Feb 12 10:36:01 EST 2022
https://github.com/python/cpython/commit/b70690bb37cc4bac695051484734eede0c1f9ada
commit: b70690bb37cc4bac695051484734eede0c1f9ada
branch: main
author: aha79 <34090357+aha79 at users.noreply.github.com>
committer: gvanrossum <gvanrossum at gmail.com>
date: 2022-02-12T07:35:57-08:00
summary:
bpo-46333: include `module` in `ForwardRef.__repr__` (#31283)
The module parameter carries semantic information about the forward ref.
Show to the user that forward refs with same argument but different
module are different.
Co-authored-by: Andreas Hangauer <andreas.hangauer at siemens.com>
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
files:
A Misc/NEWS.d/next/Library/2022-02-11-20-01-49.bpo-46333.PMTBY9.rst
M Lib/test/test_typing.py
M Lib/typing.py
diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py
index 6e2a2b1978ab4..2bb5d61068a78 100644
--- a/Lib/test/test_typing.py
+++ b/Lib/test/test_typing.py
@@ -2862,6 +2862,8 @@ def fun(x: a):
def test_forward_repr(self):
self.assertEqual(repr(List['int']), "typing.List[ForwardRef('int')]")
+ self.assertEqual(repr(List[ForwardRef('int', module='mod')]),
+ "typing.List[ForwardRef('int', module='mod')]")
def test_union_forward(self):
diff --git a/Lib/typing.py b/Lib/typing.py
index 1de48cca00d84..4a8bdf8132861 100644
--- a/Lib/typing.py
+++ b/Lib/typing.py
@@ -779,7 +779,11 @@ def __ror__(self, other):
return Union[other, self]
def __repr__(self):
- return f'ForwardRef({self.__forward_arg__!r})'
+ if self.__forward_module__ is None:
+ module_repr = ''
+ else:
+ module_repr = f', module={self.__forward_module__!r}'
+ return f'ForwardRef({self.__forward_arg__!r}{module_repr})'
class _TypeVarLike:
"""Mixin for TypeVar-like types (TypeVar and ParamSpec)."""
diff --git a/Misc/NEWS.d/next/Library/2022-02-11-20-01-49.bpo-46333.PMTBY9.rst b/Misc/NEWS.d/next/Library/2022-02-11-20-01-49.bpo-46333.PMTBY9.rst
new file mode 100644
index 0000000000000..669217e25f789
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2022-02-11-20-01-49.bpo-46333.PMTBY9.rst
@@ -0,0 +1,3 @@
+The :meth:`__repr__` method of :class:`typing.ForwardRef` now
+includes the ``module`` parameter of :class:`typing.ForwardRef`
+when it is set.
More information about the Python-checkins
mailing list