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

59 行
2.4 KiB

  1. from typing import Any, Callable, List, Optional, Sequence
  2. from fastapi.security.base import SecurityBase
  3. from pydantic.fields import ModelField
  4. class SecurityRequirement:
  5. def __init__(
  6. self, security_scheme: SecurityBase, scopes: Optional[Sequence[str]] = None
  7. ):
  8. self.security_scheme = security_scheme
  9. self.scopes = scopes
  10. class Dependant:
  11. def __init__(
  12. self,
  13. *,
  14. path_params: Optional[List[ModelField]] = None,
  15. query_params: Optional[List[ModelField]] = None,
  16. header_params: Optional[List[ModelField]] = None,
  17. cookie_params: Optional[List[ModelField]] = None,
  18. body_params: Optional[List[ModelField]] = None,
  19. dependencies: Optional[List["Dependant"]] = None,
  20. security_schemes: Optional[List[SecurityRequirement]] = None,
  21. name: Optional[str] = None,
  22. call: Optional[Callable[..., Any]] = None,
  23. request_param_name: Optional[str] = None,
  24. websocket_param_name: Optional[str] = None,
  25. http_connection_param_name: Optional[str] = None,
  26. response_param_name: Optional[str] = None,
  27. background_tasks_param_name: Optional[str] = None,
  28. security_scopes_param_name: Optional[str] = None,
  29. security_scopes: Optional[List[str]] = None,
  30. use_cache: bool = True,
  31. path: Optional[str] = None,
  32. ) -> None:
  33. self.path_params = path_params or []
  34. self.query_params = query_params or []
  35. self.header_params = header_params or []
  36. self.cookie_params = cookie_params or []
  37. self.body_params = body_params or []
  38. self.dependencies = dependencies or []
  39. self.security_requirements = security_schemes or []
  40. self.request_param_name = request_param_name
  41. self.websocket_param_name = websocket_param_name
  42. self.http_connection_param_name = http_connection_param_name
  43. self.response_param_name = response_param_name
  44. self.background_tasks_param_name = background_tasks_param_name
  45. self.security_scopes = security_scopes
  46. self.security_scopes_param_name = security_scopes_param_name
  47. self.name = name
  48. self.call = call
  49. self.use_cache = use_cache
  50. # Store the path to be able to re-generate a dependable from it in overrides
  51. self.path = path
  52. # Save the cache key at creation to optimize performance
  53. self.cache_key = (self.call, tuple(sorted(set(self.security_scopes or []))))