You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

38 rivejä
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 []))))