Browse Source

fix: store special dependand names in sets instead of lists

pull/12406/head
Peter Volf 1 week ago
parent
commit
63367915ed
Failed to extract signature
  1. 14
      fastapi/dependencies/models.py
  2. 12
      fastapi/dependencies/utils.py

14
fastapi/dependencies/models.py

@ -1,5 +1,5 @@
from dataclasses import dataclass, field
from typing import Any, Callable, List, Optional, Sequence, Tuple
from typing import Any, Callable, List, Optional, Sequence, Set, Tuple
from fastapi._compat import ModelField
from fastapi.security.base import SecurityBase
@ -22,12 +22,12 @@ class Dependant:
security_requirements: List[SecurityRequirement] = field(default_factory=list)
name: Optional[str] = None
call: Optional[Callable[..., Any]] = None
request_param_names: List[str] = field(default_factory=list)
websocket_param_names: List[str] = field(default_factory=list)
http_connection_param_names: List[str] = field(default_factory=list)
response_param_names: List[str] = field(default_factory=list)
background_tasks_param_names: List[str] = field(default_factory=list)
security_scopes_param_names: List[str] = field(default_factory=list)
request_param_names: Set[str] = field(default_factory=set)
websocket_param_names: Set[str] = field(default_factory=set)
http_connection_param_names: Set[str] = field(default_factory=set)
response_param_names: Set[str] = field(default_factory=set)
background_tasks_param_names: Set[str] = field(default_factory=set)
security_scopes_param_names: Set[str] = field(default_factory=set)
security_scopes: Optional[List[str]] = None
use_cache: bool = True
path: Optional[str] = None

12
fastapi/dependencies/utils.py

@ -318,22 +318,22 @@ def add_non_field_param_to_dependency(
*, param_name: str, type_annotation: Any, dependant: Dependant
) -> Optional[bool]:
if lenient_issubclass(type_annotation, Request):
dependant.request_param_names.append(param_name)
dependant.request_param_names.add(param_name)
return True
elif lenient_issubclass(type_annotation, WebSocket):
dependant.websocket_param_names.append(param_name)
dependant.websocket_param_names.add(param_name)
return True
elif lenient_issubclass(type_annotation, HTTPConnection):
dependant.http_connection_param_names.append(param_name)
dependant.http_connection_param_names.add(param_name)
return True
elif lenient_issubclass(type_annotation, Response):
dependant.response_param_names.append(param_name)
dependant.response_param_names.add(param_name)
return True
elif lenient_issubclass(type_annotation, StarletteBackgroundTasks):
dependant.background_tasks_param_names.append(param_name)
dependant.background_tasks_param_names.add(param_name)
return True
elif lenient_issubclass(type_annotation, SecurityScopes):
dependant.security_scopes_param_names.append(param_name)
dependant.security_scopes_param_names.add(param_name)
return True
return None

Loading…
Cancel
Save