Skip to content

Commit 438aea3

Browse files
committed
Test ref.evaluate() on undefined generics
1 parent 2164613 commit 438aea3

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

Lib/test/test_annotationlib.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1675,6 +1675,21 @@ def test_name_lookup_without_eval(self):
16751675

16761676
self.assertEqual(exc.exception.name, "doesntexist")
16771677

1678+
def test_evaluate_undefined_generic(self):
1679+
# Test the codepath where have to eval() with undefined variables.
1680+
fwdref = ForwardRef("glob[int, undef]").evaluate(format=Format.FORWARDREF, globals={"glob": dict})
1681+
self.assertIs(fwdref.__origin__, dict)
1682+
self.assertIs(fwdref.__args__[0], int)
1683+
1684+
fwdref = ForwardRef("loc[int, undef]").evaluate(format=Format.FORWARDREF, locals={"loc": dict})
1685+
self.assertIs(fwdref.__origin__, dict)
1686+
self.assertIs(fwdref.__args__[0], int)
1687+
1688+
# Ensure that globals overwrite builtins
1689+
fwdref = ForwardRef("list[int, undef]").evaluate(format=Format.FORWARDREF, globals={"list": dict})
1690+
self.assertIs(fwdref.__origin__, dict)
1691+
self.assertIs(fwdref.__args__[0], int)
1692+
16781693
def test_fwdref_invalid_syntax(self):
16791694
fr = ForwardRef("if")
16801695
with self.assertRaises(SyntaxError):

0 commit comments

Comments
 (0)