[Python-checkins] gh-106309: Deprecate typing.no_type_check_decorator (#106312)
AlexWaygood
webhook-mailer at python.org
Thu Jul 13 09:30:39 EDT 2023
https://github.com/python/cpython/commit/32718f908cc92c474fd968912368b8a4500bd055
commit: 32718f908cc92c474fd968912368b8a4500bd055
branch: main
author: Alex Waygood <Alex.Waygood at Gmail.com>
committer: AlexWaygood <Alex.Waygood at Gmail.com>
date: 2023-07-13T14:30:35+01:00
summary:
gh-106309: Deprecate typing.no_type_check_decorator (#106312)
files:
A Misc/NEWS.d/next/Library/2023-07-01-16-51-55.gh-issue-106309.hSlB17.rst
M Doc/library/typing.rst
M Doc/whatsnew/3.13.rst
M Lib/test/test_typing.py
M Lib/typing.py
diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst
index 11af3ea3c9030..0cf875582f7f4 100644
--- a/Doc/library/typing.rst
+++ b/Doc/library/typing.rst
@@ -2849,6 +2849,9 @@ Functions and decorators
This wraps the decorator with something that wraps the decorated
function in :func:`no_type_check`.
+ .. deprecated-removed:: 3.13 3.15
+ No type checker ever added support for ``@no_type_check_decorator``. It
+ is therefore deprecated, and will be removed in Python 3.15.
.. decorator:: override
@@ -3648,18 +3651,20 @@ Certain features in ``typing`` are deprecated and may be removed in a future
version of Python. The following table summarizes major deprecations for your
convenience. This is subject to change, and not all deprecations are listed.
-+----------------------------------+---------------+-------------------+----------------+
-| Feature | Deprecated in | Projected removal | PEP/issue |
-+==================================+===============+===================+================+
-| ``typing`` versions of standard | 3.9 | Undecided | :pep:`585` |
-| collections | | | |
-+----------------------------------+---------------+-------------------+----------------+
-| ``typing.ByteString`` | 3.9 | 3.14 | :gh:`91896` |
-+----------------------------------+---------------+-------------------+----------------+
-| ``typing.Text`` | 3.11 | Undecided | :gh:`92332` |
-+----------------------------------+---------------+-------------------+----------------+
-| ``typing.Hashable`` and | 3.12 | Undecided | :gh:`94309` |
-| ``typing.Sized`` | | | |
-+----------------------------------+---------------+-------------------+----------------+
-| ``typing.TypeAlias`` | 3.12 | Undecided | :pep:`695` |
-+----------------------------------+---------------+-------------------+----------------+
++-------------------------------------+---------------+-------------------+----------------+
+| Feature | Deprecated in | Projected removal | PEP/issue |
++=====================================+===============+===================+================+
+| ``typing`` versions of standard | 3.9 | Undecided | :pep:`585` |
+| collections | | | |
++-------------------------------------+---------------+-------------------+----------------+
+| ``typing.ByteString`` | 3.9 | 3.14 | :gh:`91896` |
++-------------------------------------+---------------+-------------------+----------------+
+| ``typing.Text`` | 3.11 | Undecided | :gh:`92332` |
++-------------------------------------+---------------+-------------------+----------------+
+| ``typing.Hashable`` and | 3.12 | Undecided | :gh:`94309` |
+| ``typing.Sized`` | | | |
++-------------------------------------+---------------+-------------------+----------------+
+| ``typing.TypeAlias`` | 3.12 | Undecided | :pep:`695` |
++-------------------------------------+---------------+-------------------+----------------+
+| ``typing.no_type_check_decorator`` | 3.13 | 3.15 | :gh:`106309` |
++-------------------------------------+---------------+-------------------+----------------+
diff --git a/Doc/whatsnew/3.13.rst b/Doc/whatsnew/3.13.rst
index b7c436fc15161..06fcaf4608cdc 100644
--- a/Doc/whatsnew/3.13.rst
+++ b/Doc/whatsnew/3.13.rst
@@ -161,6 +161,10 @@ Deprecated
``NT = NamedTuple("NT", [])``. To create a TypedDict class with 0 fields, use
``class TD(TypedDict): pass`` or ``TD = TypedDict("TD", {})``.
(Contributed by Alex Waygood in :gh:`105566` and :gh:`105570`.)
+* :func:`typing.no_type_check_decorator` is deprecated, and scheduled for
+ removal in Python 3.15. After eight years in the :mod:`typing` module, it
+ has yet to be supported by any major type checkers.
+ (Contributed by Alex Waygood in :gh:`106309`.)
* :mod:`array`'s ``'u'`` format code, deprecated in docs since Python 3.3,
emits :exc:`DeprecationWarning` since 3.13
diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py
index 1df21926d1f67..0450a87577ece 100644
--- a/Lib/test/test_typing.py
+++ b/Lib/test/test_typing.py
@@ -5794,10 +5794,14 @@ class F:
get_type_hints(clazz)
def test_meta_no_type_check(self):
-
- @no_type_check_decorator
- def magic_decorator(func):
- return func
+ depr_msg = (
+ "'typing.no_type_check_decorator' is deprecated "
+ "and slated for removal in Python 3.15"
+ )
+ with self.assertWarnsRegex(DeprecationWarning, depr_msg):
+ @no_type_check_decorator
+ def magic_decorator(func):
+ return func
self.assertEqual(magic_decorator.__name__, 'magic_decorator')
diff --git a/Lib/typing.py b/Lib/typing.py
index 9187b74b0e2e1..387b4c5ad5284 100644
--- a/Lib/typing.py
+++ b/Lib/typing.py
@@ -2395,6 +2395,8 @@ def no_type_check_decorator(decorator):
This wraps the decorator with something that wraps the decorated
function in @no_type_check.
"""
+ import warnings
+ warnings._deprecated("typing.no_type_check_decorator", remove=(3, 15))
@functools.wraps(decorator)
def wrapped_decorator(*args, **kwds):
func = decorator(*args, **kwds)
diff --git a/Misc/NEWS.d/next/Library/2023-07-01-16-51-55.gh-issue-106309.hSlB17.rst b/Misc/NEWS.d/next/Library/2023-07-01-16-51-55.gh-issue-106309.hSlB17.rst
new file mode 100644
index 0000000000000..5bd3880520871
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2023-07-01-16-51-55.gh-issue-106309.hSlB17.rst
@@ -0,0 +1,2 @@
+Deprecate :func:`typing.no_type_check_decorator`. No major type checker ever
+added support for this decorator. Patch by Alex Waygood.
More information about the Python-checkins
mailing list