[3.14] Revert "gh-137969: Fix evaluation of ref.evaluate(format=Format.FORWARDREF) objects (GH-138075) (#140929)" (GH-140931)

Revert "[3.14] gh-137969: Fix evaluation of `ref.evaluate(format=Format.FORWARDREF)` objects (GH-138075) (#140929)"

This reverts commit cdb6fe89ae.
This commit is contained in:
Jelle Zijlstra 2025-11-03 06:07:22 -08:00 committed by GitHub
parent fa9bb9a092
commit 1b376b82ac
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 6 additions and 19 deletions

View file

@ -159,12 +159,12 @@ def evaluate(
type_params = getattr(owner, "__type_params__", None)
# Type parameters exist in their own scope, which is logically
# between the locals and the globals.
type_param_scope = {}
# between the locals and the globals. We simulate this by adding
# them to the globals.
if type_params is not None:
globals = dict(globals)
for param in type_params:
type_param_scope[param.__name__] = param
globals[param.__name__] = param
if self.__extra_names__:
locals = {**locals, **self.__extra_names__}
@ -172,8 +172,6 @@ def evaluate(
if arg.isidentifier() and not keyword.iskeyword(arg):
if arg in locals:
return locals[arg]
elif arg in type_param_scope:
return type_param_scope[arg]
elif arg in globals:
return globals[arg]
elif hasattr(builtins, arg):
@ -185,7 +183,7 @@ def evaluate(
else:
code = self.__forward_code__
try:
return eval(code, globals=globals, locals={**type_param_scope, **locals})
return eval(code, globals=globals, locals=locals)
except Exception:
if not is_forwardref_format:
raise
@ -193,7 +191,7 @@ def evaluate(
# All variables, in scoping order, should be checked before
# triggering __missing__ to create a _Stringifier.
new_locals = _StringifierDict(
{**builtins.__dict__, **globals, **type_param_scope, **locals},
{**builtins.__dict__, **globals, **locals},
globals=globals,
owner=owner,
is_class=self.__forward_is_class__,