Skip to content

Commit a770495

Browse files
committed
Fix not using type_params in < 3.12.5
1 parent 145e833 commit a770495

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

src/test_typing_extensions.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8947,14 +8947,11 @@ class Y(Generic[Tx]):
89478947
self.assertEqual(get_origin(evaluated_ref1a), Y)
89488948
self.assertEqual(get_args(evaluated_ref1a), (Y[Tx],))
89498949

8950-
with self.subTest("nested string with type_params"):
8951-
if not TYPING_3_12_0:
8952-
self.skipTest("# TODO find reason why this one fails before 3.12.?")
8953-
evaluated_ref1b = evaluate_forward_ref(
8954-
typing.ForwardRef("Y[Y['Tx']]"), locals={"Y": Y}, type_params=(Tx,)
8955-
)
8956-
self.assertEqual(get_origin(evaluated_ref1b), Y)
8957-
self.assertEqual(get_args(evaluated_ref1b), (Y[Tx],))
8950+
evaluated_ref1b = evaluate_forward_ref(
8951+
typing.ForwardRef("Y[Y['Tx']]"), locals={"Y": Y}, type_params=(Tx,)
8952+
)
8953+
self.assertEqual(get_origin(evaluated_ref1b), Y)
8954+
self.assertEqual(get_args(evaluated_ref1b), (Y[Tx],))
89588955

89598956
with self.subTest("nested string of TypeVar"):
89608957
evaluated_ref2 = evaluate_forward_ref(typing.ForwardRef("""Y["Y['Tx']"]"""), locals={"Y": Y})

src/typing_extensions.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4357,6 +4357,12 @@ def evaluate_forward_ref(
43574357
type_params=type_params, owner=owner,
43584358
_recursive_guard=_recursive_guard, format=format
43594359
)
4360+
if sys.version_info < (3, 12, 5) and type_params:
4361+
# Make use of type_params
4362+
locals = dict(locals) if locals else {}
4363+
for tvar in type_params:
4364+
if tvar.__name__ not in locals: # lets not overwrite something present
4365+
locals[tvar.__name__] = tvar
43604366
if sys.version_info < (3, 9):
43614367
return typing._eval_type(
43624368
type_,

0 commit comments

Comments
 (0)