Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 

38 Zeilen
1.5 KiB

  1. from dataclasses import dataclass, field
  2. from typing import Any, Callable, List, Optional, Sequence, Tuple
  3. from fastapi._compat import ModelField
  4. from fastapi.security.base import SecurityBase
  5. @dataclass
  6. class SecurityRequirement:
  7. security_scheme: SecurityBase
  8. scopes: Optional[Sequence[str]] = None
  9. @dataclass
  10. class Dependant:
  11. path_params: List[ModelField] = field(default_factory=list)
  12. query_params: List[ModelField] = field(default_factory=list)
  13. header_params: List[ModelField] = field(default_factory=list)
  14. cookie_params: List[ModelField] = field(default_factory=list)
  15. body_params: List[ModelField] = field(default_factory=list)
  16. dependencies: List["Dependant"] = field(default_factory=list)
  17. security_requirements: List[SecurityRequirement] = field(default_factory=list)
  18. name: Optional[str] = None
  19. call: Optional[Callable[..., Any]] = None
  20. request_param_name: Optional[str] = None
  21. websocket_param_name: Optional[str] = None
  22. http_connection_param_name: Optional[str] = None
  23. response_param_name: Optional[str] = None
  24. background_tasks_param_name: Optional[str] = None
  25. security_scopes_param_name: Optional[str] = None
  26. security_scopes: Optional[List[str]] = None
  27. use_cache: bool = True
  28. path: Optional[str] = None
  29. cache_key: Tuple[Optional[Callable[..., Any]], Tuple[str, ...]] = field(init=False)
  30. def __post_init__(self) -> None:
  31. self.cache_key = (self.call, tuple(sorted(set(self.security_scopes or []))))