Skip to content

Commit 24e985d

Browse files
committed
gh-155278: Avoid needlessly accessing ForwardRef.__forward_code__ in evaluate_forward_ref()
1 parent 297eb1b commit 24e985d

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

Lib/typing.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import collections.abc
2626
import copyreg
2727
import functools
28+
import keyword
2829
import operator
2930
import sys
3031
import types
@@ -998,8 +999,12 @@ def _make_forward_ref(code, *, parent_fwdref=None, **kwargs):
998999
if parent_fwdref.__owner__ is not None:
9991000
kwargs['owner'] = parent_fwdref.__owner__
10001001
forward_ref = annotationlib.ForwardRef(code, **kwargs)
1001-
# For compatibility, eagerly compile the forwardref's code.
1002-
forward_ref.__forward_code__
1002+
# For compatibility, eagerly compile the forwardref's code so that any
1003+
# SyntaxError is raised immediately rather than when the forward
1004+
# reference is evaluated. Similar to 'ForwardRef.evaluate(), we only compile
1005+
# it if necessary:
1006+
if not (code.isidentifier() and not keyword.iskeyword(code)):
1007+
forward_ref.__forward_code__
10031008
return forward_ref
10041009

10051010

0 commit comments

Comments
 (0)