Browse Source

Fix mypy/ty by using _evaluate, fix dict type args, ignore deprecation warning

- Keep ForwardRef._evaluate (recognized by mypy/ty typeshed)
- Fix class _LenientNamespace(dict) -> _LenientNamespace(dict[str, Any])
- Use frozenset() instead of set() for recursive_guard
- Ignore ForwardRef._evaluate deprecation warning in pytest config
pull/15519/head
Codebuff Contributor 3 weeks ago
parent
commit
6d404bca9a
  1. 6
      fastapi/dependencies/utils.py
  2. 1
      pyproject.toml

6
fastapi/dependencies/utils.py

@ -258,17 +258,17 @@ def _resolve_forward_ref_lenient(
fwd_ref: ForwardRef,
globalns: dict[str, Any],
) -> Any:
class _LenientNamespace(dict):
class _LenientNamespace(dict[str, Any]):
def __missing__(self, key: str) -> Any:
return Any
localns = _LenientNamespace(globalns)
if sys.version_info >= (3, 13):
result = fwd_ref.evaluate(
result = fwd_ref._evaluate(
globalns, localns, recursive_guard=frozenset(), type_params=()
)
else:
result = fwd_ref.evaluate(globalns, localns, recursive_guard=frozenset())
result = fwd_ref._evaluate(globalns, localns, recursive_guard=frozenset())
return result

1
pyproject.toml

@ -231,6 +231,7 @@ addopts = [
strict_xfail = true
filterwarnings = [
"error",
'ignore:The private ForwardRef._evaluate method is deprecated:DeprecationWarning',
]
timeout = "20"

Loading…
Cancel
Save