gh-128661: Fix typing.evaluate_forward_ref
not showing deprecation (#128663)
gh-128661: Fix `typing.evaluate_forward_ref` not showing deprecataion
This commit is contained in:
parent
43ac9f5059
commit
b725297cee
@ -45,6 +45,7 @@ import abc
|
||||
import textwrap
|
||||
import typing
|
||||
import weakref
|
||||
import warnings
|
||||
import types
|
||||
|
||||
from test.support import captured_stderr, cpython_only, infinite_recursion, requires_docstrings, import_helper, run_code
|
||||
@ -7273,6 +7274,51 @@ class GetUtilitiesTestCase(TestCase):
|
||||
self.assertEqual(get_args(Unpack[tuple[Unpack[Ts]]]), (tuple[Unpack[Ts]],))
|
||||
|
||||
|
||||
class EvaluateForwardRefTests(BaseTestCase):
|
||||
def test_evaluate_forward_ref(self):
|
||||
int_ref = ForwardRef('int')
|
||||
missing = ForwardRef('missing')
|
||||
self.assertIs(
|
||||
typing.evaluate_forward_ref(int_ref, type_params=()),
|
||||
int,
|
||||
)
|
||||
self.assertIs(
|
||||
typing.evaluate_forward_ref(
|
||||
int_ref, type_params=(), format=annotationlib.Format.FORWARDREF,
|
||||
),
|
||||
int,
|
||||
)
|
||||
self.assertIs(
|
||||
typing.evaluate_forward_ref(
|
||||
missing, type_params=(), format=annotationlib.Format.FORWARDREF,
|
||||
),
|
||||
missing,
|
||||
)
|
||||
self.assertEqual(
|
||||
typing.evaluate_forward_ref(
|
||||
int_ref, type_params=(), format=annotationlib.Format.STRING,
|
||||
),
|
||||
'int',
|
||||
)
|
||||
|
||||
def test_evaluate_forward_ref_no_type_params(self):
|
||||
ref = ForwardRef('int')
|
||||
with self.assertWarnsRegex(
|
||||
DeprecationWarning,
|
||||
(
|
||||
"Failing to pass a value to the 'type_params' parameter "
|
||||
"of 'typing.evaluate_forward_ref' is deprecated, "
|
||||
"as it leads to incorrect behaviour"
|
||||
),
|
||||
):
|
||||
typing.evaluate_forward_ref(ref)
|
||||
|
||||
# No warnings when `type_params` is passed:
|
||||
with warnings.catch_warnings(record=True) as w:
|
||||
typing.evaluate_forward_ref(ref, type_params=())
|
||||
self.assertEqual(w, [])
|
||||
|
||||
|
||||
class CollectionsAbcTests(BaseTestCase):
|
||||
|
||||
def test_hashable(self):
|
||||
|
@ -1024,7 +1024,7 @@ def evaluate_forward_ref(
|
||||
owner=None,
|
||||
globals=None,
|
||||
locals=None,
|
||||
type_params=None,
|
||||
type_params=_sentinel,
|
||||
format=annotationlib.Format.VALUE,
|
||||
_recursive_guard=frozenset(),
|
||||
):
|
||||
|
@ -0,0 +1,2 @@
|
||||
Fixes :func:`typing.evaluate_forward_ref` not showing deprecation when
|
||||
``type_params`` arg is not passed.
|
Loading…
x
Reference in New Issue
Block a user