您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

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