From 4c998f64db8534a96b4e95a5200f5b9ad3859250 Mon Sep 17 00:00:00 2001 From: Codebuff Contributor Date: Fri, 15 May 2026 11:39:30 +0600 Subject: [PATCH] Fix pre-commit and Python 3.14 test CI failures - Remove duplicate _resolve_forward_ref_lenient function - Use ForwardRef.evaluate() instead of deprecated _evaluate() - Use frozenset() instead of set() for recursive_guard parameter - Add noqa for E402 in test file (deliberate late import) --- fastapi/dependencies/utils.py | 19 +++---------------- tests/test_annotated_forward_ref.py | 2 +- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/fastapi/dependencies/utils.py b/fastapi/dependencies/utils.py index 72b0b14f0b..40e6957b8b 100644 --- a/fastapi/dependencies/utils.py +++ b/fastapi/dependencies/utils.py @@ -254,19 +254,6 @@ def get_typed_annotation(annotation: Any, globalns: dict[str, Any]) -> Any: return annotation -def _resolve_forward_ref_lenient( - fwd_ref: ForwardRef, - globalns: dict[str, Any], -) -> Any: - class _LenientNamespace(dict): - def __missing__(self, key: str) -> Any: - return Any - - localns = _LenientNamespace(globalns) - result = fwd_ref._evaluate(globalns, localns, set()) - return result - - def _resolve_forward_ref_lenient( fwd_ref: ForwardRef, globalns: dict[str, Any], @@ -277,11 +264,11 @@ def _resolve_forward_ref_lenient( localns = _LenientNamespace(globalns) if sys.version_info >= (3, 13): - result = fwd_ref._evaluate( - globalns, localns, recursive_guard=set(), type_params=() + result = fwd_ref.evaluate( + globalns, localns, recursive_guard=frozenset(), type_params=() ) else: - result = fwd_ref._evaluate(globalns, localns, recursive_guard=set()) + result = fwd_ref.evaluate(globalns, localns, recursive_guard=frozenset()) return result diff --git a/tests/test_annotated_forward_ref.py b/tests/test_annotated_forward_ref.py index 8b9a483eaa..ceb7636aa7 100644 --- a/tests/test_annotated_forward_ref.py +++ b/tests/test_annotated_forward_ref.py @@ -20,7 +20,7 @@ async def read_root(potato: Annotated[Potato, Depends(get_potato)]): return {"color": potato.color, "size": potato.size} -from dataclasses import dataclass +from dataclasses import dataclass # noqa: E402 @dataclass