[3.12] gh-115570: Fix DeprecationWarnings in test_typing (#115571) (#115574)

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
This commit is contained in:
Jelle Zijlstra 2024-02-16 13:46:48 -08:00 committed by GitHub
parent f383ca1a6f
commit 83c7dd5200
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 16 additions and 2 deletions

View file

@ -8123,6 +8123,17 @@ class RETests(BaseTestCase):
self.assertEqual(__name__, 'typing.re') self.assertEqual(__name__, 'typing.re')
self.assertEqual(len(w), 1) 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): def test_cannot_subclass(self):
with self.assertRaisesRegex( with self.assertRaisesRegex(
TypeError, TypeError,

View file

@ -3256,11 +3256,11 @@ class TextIO(IO[str]):
class _DeprecatedType(type): class _DeprecatedType(type):
def __getattribute__(cls, name): 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( warnings.warn(
f"{cls.__name__} is deprecated, import directly " f"{cls.__name__} is deprecated, import directly "
f"from typing instead. {cls.__name__} will be removed " f"from typing instead. {cls.__name__} will be removed "
"in Python 3.12.", "in Python 3.13.",
DeprecationWarning, DeprecationWarning,
stacklevel=2, stacklevel=2,
) )

View file

@ -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.