Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Doc/deprecations/pending-removal-in-3.15.rst
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ Pending removal in Python 3.15
Use ``class TD(TypedDict): pass`` or ``TD = TypedDict("TD", {})``
to create a TypedDict with zero field.

* The :func:`typing.no_type_check_decorator` decorator function
* The :func:`!typing.no_type_check_decorator` decorator function
has been deprecated since Python 3.13.
After eight years in the :mod:`typing` module,
it has yet to be supported by any major type checker.
Expand Down
15 changes: 0 additions & 15 deletions Doc/library/typing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3244,17 +3244,6 @@ Functions and decorators

``@no_type_check`` mutates the decorated object in place.

.. decorator:: no_type_check_decorator

Decorator to give another decorator the :func:`no_type_check` effect.

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

Decorator to indicate that a method in a subclass is intended to override a
Expand Down Expand Up @@ -4099,10 +4088,6 @@ convenience. This is subject to change, and not all deprecations are listed.
- 3.12
- Undecided
- :pep:`695`
* - :func:`@typing.no_type_check_decorator <no_type_check_decorator>`
- 3.13
- 3.15
- :gh:`106309`
* - :data:`typing.AnyStr`
- 3.13
- 3.18
Expand Down
2 changes: 1 addition & 1 deletion Doc/whatsnew/3.13.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1995,7 +1995,7 @@ New Deprecations
use ``class TD(TypedDict): pass`` or ``TD = TypedDict("TD", {})``.
(Contributed by Alex Waygood in :gh:`105566` and :gh:`105570`.)

* Deprecate the :func:`typing.no_type_check_decorator` decorator function,
* Deprecate the :func:`!typing.no_type_check_decorator` decorator function,
to be removed in Python 3.15.
After eight years in the :mod:`typing` module,
it has yet to be supported by any major type checker.
Expand Down
3 changes: 3 additions & 0 deletions Doc/whatsnew/3.15.rst
Original file line number Diff line number Diff line change
Expand Up @@ -706,6 +706,9 @@ typing
:func:`issubclass`, but warnings were not previously emitted if it was merely
imported or accessed from the :mod:`!typing` module.

* Deprecated :func:`!typing.no_type_check_decorator` has been removed.
(Contributed by Nikita Sobolev in :gh:`133601`.)


unicodedata
-----------
Expand Down
31 changes: 1 addition & 30 deletions Lib/test/test_typing.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
from typing import is_typeddict, is_protocol
from typing import reveal_type
from typing import dataclass_transform
from typing import no_type_check, no_type_check_decorator
from typing import no_type_check
from typing import Type
from typing import NamedTuple, NotRequired, Required, ReadOnly, TypedDict
from typing import IO, TextIO, BinaryIO
Expand Down Expand Up @@ -6338,35 +6338,6 @@ class F:
for clazz in [C, D, E, F]:
self.assertEqual(get_type_hints(clazz), expected_result)

def test_meta_no_type_check(self):
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')

@magic_decorator
def foo(a: 'whatevers') -> {}:
pass

@magic_decorator
class C:
def foo(a: 'whatevers') -> {}:
pass

self.assertEqual(foo.__name__, 'foo')
th = get_type_hints(foo)
self.assertEqual(th, {})
cth = get_type_hints(C.foo)
self.assertEqual(cth, {})
ith = get_type_hints(C().foo)
self.assertEqual(ith, {})


class InternalsTests(BaseTestCase):
def test_collect_parameters(self):
Expand Down
18 changes: 0 additions & 18 deletions Lib/typing.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,6 @@
'Never',
'NewType',
'no_type_check',
'no_type_check_decorator',
'NoDefault',
'NoReturn',
'NotRequired',
Expand Down Expand Up @@ -2610,23 +2609,6 @@ def no_type_check(arg):
return arg


def no_type_check_decorator(decorator):
"""Decorator to give another decorator the @no_type_check effect.

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)
func = no_type_check(func)
return func

return wrapped_decorator


def _overload_dummy(*args, **kwds):
"""Helper for @overload to raise when called."""
raise NotImplementedError(
Expand Down
2 changes: 1 addition & 1 deletion Misc/NEWS.d/3.13.0a1.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3426,7 +3426,7 @@ This bug was introduced in Python 3.12.0 beta 1.
.. nonce: hSlB17
.. section: Library

Deprecate :func:`typing.no_type_check_decorator`. No major type checker ever
Deprecate :func:`!typing.no_type_check_decorator`. No major type checker ever
added support for this decorator. Patch by Alex Waygood.

..
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Remove deprecated :func:`!typing.no_type_check_decorator`.
Loading