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.
 
 
 
 

59 Zeilen
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 []))))