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 4 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, fwd_ref: ForwardRef,
globalns: dict[str, Any], globalns: dict[str, Any],
) -> Any: ) -> Any:
class _LenientNamespace(dict): class _LenientNamespace(dict[str, Any]):
def __missing__(self, key: str) -> Any: def __missing__(self, key: str) -> Any:
return Any return Any
localns = _LenientNamespace(globalns) localns = _LenientNamespace(globalns)
if sys.version_info >= (3, 13): if sys.version_info >= (3, 13):
result = fwd_ref.evaluate( result = fwd_ref._evaluate(
globalns, localns, recursive_guard=frozenset(), type_params=() globalns, localns, recursive_guard=frozenset(), type_params=()
) )
else: else:
result = fwd_ref.evaluate(globalns, localns, recursive_guard=frozenset()) result = fwd_ref._evaluate(globalns, localns, recursive_guard=frozenset())
return result return result

1
pyproject.toml

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

Loading…
Cancel
Save