From c01a4808d3d212bf9833306293e4d5806d941651 Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Fri, 16 Feb 2024 11:37:42 -0800 Subject: [3.11] gh-115570: Fix DeprecationWarnings in test_typing (#115571) Co-authored-by: Alex Waygood --- Lib/test/test_typing.py | 11 +++++++++++ Lib/typing.py | 2 +- .../Library/2024-02-16-10-18-25.gh-issue-115570.bI6uu3.rst | 3 +++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2024-02-16-10-18-25.gh-issue-115570.bI6uu3.rst diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 8d6d693..287e566 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -7319,6 +7319,17 @@ class RETests(BaseTestCase): self.assertEqual(__name__, 'typing.re') self.assertEqual(len(w), 1) + def test_re_submodule_access_basics(self): + with warnings.catch_warnings(): + warnings.filterwarnings("error", category=DeprecationWarning) + from typing import re + self.assertIsInstance(re.__doc__, str) + self.assertEqual(re.__name__, "typing.re") + self.assertIsInstance(re.__dict__, types.MappingProxyType) + + with self.assertWarns(DeprecationWarning): + re.Match + def test_cannot_subclass(self): with self.assertRaises(TypeError) as ex: diff --git a/Lib/typing.py b/Lib/typing.py index c62993d..b04ab85 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -3382,7 +3382,7 @@ class TextIO(IO[str]): class _DeprecatedType(type): def __getattribute__(cls, name): - if name not in ("__dict__", "__module__") and name in cls.__dict__: + if name not in {"__dict__", "__module__", "__doc__"} and name in cls.__dict__: warnings.warn( f"{cls.__name__} is deprecated, import directly " f"from typing instead. {cls.__name__} will be removed " diff --git a/Misc/NEWS.d/next/Library/2024-02-16-10-18-25.gh-issue-115570.bI6uu3.rst b/Misc/NEWS.d/next/Library/2024-02-16-10-18-25.gh-issue-115570.bI6uu3.rst new file mode 100644 index 0000000..f3c8a11 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2024-02-16-10-18-25.gh-issue-115570.bI6uu3.rst @@ -0,0 +1,3 @@ +A :exc:`DeprecationWarning` is no longer omitted on access to the +``__doc__`` attributes of the deprecated ``typing.io`` and ``typing.re`` +pseudo-modules. -- cgit v0.12