mirror of
https://github.com/python/cpython.git
synced 2025-11-08 17:41:42 +00:00
gh-136021: Make type_params a required parameter for typing._eval_type (#136332)
This commit is contained in:
parent
77a8bd29da
commit
c89f76e6c4
3 changed files with 4 additions and 32 deletions
|
|
@ -6309,31 +6309,6 @@ def foo(a: 'whatevers') -> {}:
|
||||||
|
|
||||||
|
|
||||||
class InternalsTests(BaseTestCase):
|
class InternalsTests(BaseTestCase):
|
||||||
def test_deprecation_for_no_type_params_passed_to__evaluate(self):
|
|
||||||
with self.assertWarnsRegex(
|
|
||||||
DeprecationWarning,
|
|
||||||
(
|
|
||||||
"Failing to pass a value to the 'type_params' parameter "
|
|
||||||
"of 'typing._eval_type' is deprecated"
|
|
||||||
)
|
|
||||||
) as cm:
|
|
||||||
self.assertEqual(typing._eval_type(list["int"], globals(), {}), list[int])
|
|
||||||
|
|
||||||
self.assertEqual(cm.filename, __file__)
|
|
||||||
|
|
||||||
f = ForwardRef("int")
|
|
||||||
|
|
||||||
with self.assertWarnsRegex(
|
|
||||||
DeprecationWarning,
|
|
||||||
(
|
|
||||||
"Failing to pass a value to the 'type_params' parameter "
|
|
||||||
"of 'typing.ForwardRef._evaluate' is deprecated"
|
|
||||||
)
|
|
||||||
) as cm:
|
|
||||||
self.assertIs(f._evaluate(globals(), {}, recursive_guard=frozenset()), int)
|
|
||||||
|
|
||||||
self.assertEqual(cm.filename, __file__)
|
|
||||||
|
|
||||||
def test_collect_parameters(self):
|
def test_collect_parameters(self):
|
||||||
typing = import_helper.import_fresh_module("typing")
|
typing = import_helper.import_fresh_module("typing")
|
||||||
with self.assertWarnsRegex(
|
with self.assertWarnsRegex(
|
||||||
|
|
|
||||||
|
|
@ -437,10 +437,7 @@ def __repr__(self):
|
||||||
return '<sentinel>'
|
return '<sentinel>'
|
||||||
|
|
||||||
|
|
||||||
_sentinel = _Sentinel()
|
def _eval_type(t, globalns, localns, type_params, *, recursive_guard=frozenset(),
|
||||||
|
|
||||||
|
|
||||||
def _eval_type(t, globalns, localns, type_params=_sentinel, *, recursive_guard=frozenset(),
|
|
||||||
format=None, owner=None):
|
format=None, owner=None):
|
||||||
"""Evaluate all forward references in the given type t.
|
"""Evaluate all forward references in the given type t.
|
||||||
|
|
||||||
|
|
@ -448,9 +445,6 @@ def _eval_type(t, globalns, localns, type_params=_sentinel, *, recursive_guard=f
|
||||||
recursive_guard is used to prevent infinite recursion with a recursive
|
recursive_guard is used to prevent infinite recursion with a recursive
|
||||||
ForwardRef.
|
ForwardRef.
|
||||||
"""
|
"""
|
||||||
if type_params is _sentinel:
|
|
||||||
_deprecation_warning_for_no_type_params_passed("typing._eval_type")
|
|
||||||
type_params = ()
|
|
||||||
if isinstance(t, _lazy_annotationlib.ForwardRef):
|
if isinstance(t, _lazy_annotationlib.ForwardRef):
|
||||||
# If the forward_ref has __forward_module__ set, evaluate() infers the globals
|
# If the forward_ref has __forward_module__ set, evaluate() infers the globals
|
||||||
# from the module, and it will probably pick better than the globals we have here.
|
# from the module, and it will probably pick better than the globals we have here.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
Make ``type_params`` parameter required in :func:`!typing._eval_type` after
|
||||||
|
a deprecation period for not providing this parameter. Also remove the
|
||||||
|
:exc:`DeprecationWarning` for the old behavior.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue