diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 6e2a2b1978ab40..2bb5d61068a78c 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 1de48cca00d84c..4a8bdf8132861e 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 00000000000000..669217e25f789d --- /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.