| from enum import Enum | |
| from typing import Any, Callable, Dict, Optional, Sequence | |
| from pydantic.fields import FieldInfo, Undefined | |
| class ParamTypes(Enum): | |
| query = "query" | |
| header = "header" | |
| path = "path" | |
| cookie = "cookie" | |
| class Param(FieldInfo): | |
| in_: ParamTypes | |
| def __init__( | |
| self, | |
| default: Any = Undefined, | |
| *, | |
| alias: Optional[str] = None, | |
| title: Optional[str] = None, | |
| description: Optional[str] = None, | |
| gt: Optional[float] = None, | |
| ge: Optional[float] = None, | |
| lt: Optional[float] = None, | |
| le: Optional[float] = None, | |
| min_length: Optional[int] = None, | |
| max_length: Optional[int] = None, | |
| regex: Optional[str] = None, | |
| example: Any = Undefined, | |
| examples: Optional[Dict[str, Any]] = None, | |
| deprecated: Optional[bool] = None, | |
| include_in_schema: bool = True, | |
| **extra: Any, | |
| ): | |
| self.deprecated = deprecated | |
| self.example = example | |
| self.examples = examples | |
| self.include_in_schema = include_in_schema | |
| super().__init__( | |
| default=default, | |
| alias=alias, | |
| title=title, | |
| description=description, | |
| gt=gt, | |
| ge=ge, | |
| lt=lt, | |
| le=le, | |
| min_length=min_length, | |
| max_length=max_length, | |
| regex=regex, | |
| **extra, | |
| ) | |
| def __repr__(self) -> str: | |
| return f"{self.__class__.__name__}({self.default})" | |
| class Path(Param): | |
| in_ = ParamTypes.path | |
| def __init__( | |
| self, | |
| default: Any = ..., | |
| *, | |
| alias: Optional[str] = None, | |
| title: Optional[str] = None, | |
| description: Optional[str] = None, | |
| gt: Optional[float] = None, | |
| ge: Optional[float] = None, | |
| lt: Optional[float] = None, | |
| le: Optional[float] = None, | |
| min_length: Optional[int] = None, | |
| max_length: Optional[int] = None, | |
| regex: Optional[str] = None, | |
| example: Any = Undefined, | |
| examples: Optional[Dict[str, Any]] = None, | |
| deprecated: Optional[bool] = None, | |
| include_in_schema: bool = True, | |
| **extra: Any, | |
| ): | |
| assert default is ..., "Path parameters cannot have a default value" | |
| self.in_ = self.in_ | |
| super().__init__( | |
| default=default, | |
| alias=alias, | |
| title=title, | |
| description=description, | |
| gt=gt, | |
| ge=ge, | |
| lt=lt, | |
| le=le, | |
| min_length=min_length, | |
| max_length=max_length, | |
| regex=regex, | |
| deprecated=deprecated, | |
| example=example, | |
| examples=examples, | |
| include_in_schema=include_in_schema, | |
| **extra, | |
| ) | |
| class Query(Param): | |
| in_ = ParamTypes.query | |
| def __init__( | |
| self, | |
| default: Any = Undefined, | |
| *, | |
| alias: Optional[str] = None, | |
| title: Optional[str] = None, | |
| description: Optional[str] = None, | |
| gt: Optional[float] = None, | |
| ge: Optional[float] = None, | |
| lt: Optional[float] = None, | |
| le: Optional[float] = None, | |
| min_length: Optional[int] = None, | |
| max_length: Optional[int] = None, | |
| regex: Optional[str] = None, | |
| example: Any = Undefined, | |
| examples: Optional[Dict[str, Any]] = None, | |
| deprecated: Optional[bool] = None, | |
| include_in_schema: bool = True, | |
| **extra: Any, | |
| ): | |
| super().__init__( | |
| default=default, | |
| alias=alias, | |
| title=title, | |
| description=description, | |
| gt=gt, | |
| ge=ge, | |
| lt=lt, | |
| le=le, | |
| min_length=min_length, | |
| max_length=max_length, | |
| regex=regex, | |
| deprecated=deprecated, | |
| example=example, | |
| examples=examples, | |
| include_in_schema=include_in_schema, | |
| **extra, | |
| ) | |
| class Header(Param): | |
| in_ = ParamTypes.header | |
| def __init__( | |
| self, | |
| default: Any = Undefined, | |
| *, | |
| alias: Optional[str] = None, | |
| convert_underscores: bool = True, | |
| title: Optional[str] = None, | |
| description: Optional[str] = None, | |
| gt: Optional[float] = None, | |
| ge: Optional[float] = None, | |
| lt: Optional[float] = None, | |
| le: Optional[float] = None, | |
| min_length: Optional[int] = None, | |
| max_length: Optional[int] = None, | |
| regex: Optional[str] = None, | |
| example: Any = Undefined, | |
| examples: Optional[Dict[str, Any]] = None, | |
| deprecated: Optional[bool] = None, | |
| include_in_schema: bool = True, | |
| **extra: Any, | |
| ): | |
| self.convert_underscores = convert_underscores | |
| super().__init__( | |
| default=default, | |
| alias=alias, | |
| title=title, | |
| description=description, | |
| gt=gt, | |
| ge=ge, | |
| lt=lt, | |
| le=le, | |
| min_length=min_length, | |
| max_length=max_length, | |
| regex=regex, | |
| deprecated=deprecated, | |
| example=example, | |
| examples=examples, | |
| include_in_schema=include_in_schema, | |
| **extra, | |
| ) | |
| class Cookie(Param): | |
| in_ = ParamTypes.cookie | |
| def __init__( | |
| self, | |
| default: Any = Undefined, | |
| *, | |
| alias: Optional[str] = None, | |
| title: Optional[str] = None, | |
| description: Optional[str] = None, | |
| gt: Optional[float] = None, | |
| ge: Optional[float] = None, | |
| lt: Optional[float] = None, | |
| le: Optional[float] = None, | |
| min_length: Optional[int] = None, | |
| max_length: Optional[int] = None, | |
| regex: Optional[str] = None, | |
| example: Any = Undefined, | |
| examples: Optional[Dict[str, Any]] = None, | |
| deprecated: Optional[bool] = None, | |
| include_in_schema: bool = True, | |
| **extra: Any, | |
| ): | |
| super().__init__( | |
| default=default, | |
| alias=alias, | |
| title=title, | |
| description=description, | |
| gt=gt, | |
| ge=ge, | |
| lt=lt, | |
| le=le, | |
| min_length=min_length, | |
| max_length=max_length, | |
| regex=regex, | |
| deprecated=deprecated, | |
| example=example, | |
| examples=examples, | |
| include_in_schema=include_in_schema, | |
| **extra, | |
| ) | |
| class Body(FieldInfo): | |
| def __init__( | |
| self, | |
| default: Any = Undefined, | |
| *, | |
| embed: bool = False, | |
| media_type: str = "application/json", | |
| alias: Optional[str] = None, | |
| title: Optional[str] = None, | |
| description: Optional[str] = None, | |
| gt: Optional[float] = None, | |
| ge: Optional[float] = None, | |
| lt: Optional[float] = None, | |
| le: Optional[float] = None, | |
| min_length: Optional[int] = None, | |
| max_length: Optional[int] = None, | |
| regex: Optional[str] = None, | |
| example: Any = Undefined, | |
| examples: Optional[Dict[str, Any]] = None, | |
| **extra: Any, | |
| ): | |
| self.embed = embed | |
| self.media_type = media_type | |
| self.example = example | |
| self.examples = examples | |
| super().__init__( | |
| default=default, | |
| alias=alias, | |
| title=title, | |
| description=description, | |
| gt=gt, | |
| ge=ge, | |
| lt=lt, | |
| le=le, | |
| min_length=min_length, | |
| max_length=max_length, | |
| regex=regex, | |
| **extra, | |
| ) | |
| def __repr__(self) -> str: | |
| return f"{self.__class__.__name__}({self.default})" | |
| class Form(Body): | |
| def __init__( | |
| self, | |
| default: Any = Undefined, | |
| *, | |
| media_type: str = "application/x-www-form-urlencoded", | |
| alias: Optional[str] = None, | |
| title: Optional[str] = None, | |
| description: Optional[str] = None, | |
| gt: Optional[float] = None, | |
| ge: Optional[float] = None, | |
| lt: Optional[float] = None, | |
| le: Optional[float] = None, | |
| min_length: Optional[int] = None, | |
| max_length: Optional[int] = None, | |
| regex: Optional[str] = None, | |
| example: Any = Undefined, | |
| examples: Optional[Dict[str, Any]] = None, | |
| **extra: Any, | |
| ): | |
| super().__init__( | |
| default=default, | |
| embed=True, | |
| media_type=media_type, | |
| alias=alias, | |
| title=title, | |
| description=description, | |
| gt=gt, | |
| ge=ge, | |
| lt=lt, | |
| le=le, | |
| min_length=min_length, | |
| max_length=max_length, | |
| regex=regex, | |
| example=example, | |
| examples=examples, | |
| **extra, | |
| ) | |
| class File(Form): | |
| def __init__( | |
| self, | |
| default: Any = Undefined, | |
| *, | |
| media_type: str = "multipart/form-data", | |
| alias: Optional[str] = None, | |
| title: Optional[str] = None, | |
| description: Optional[str] = None, | |
| gt: Optional[float] = None, | |
| ge: Optional[float] = None, | |
| lt: Optional[float] = None, | |
| le: Optional[float] = None, | |
| min_length: Optional[int] = None, | |
| max_length: Optional[int] = None, | |
| regex: Optional[str] = None, | |
| example: Any = Undefined, | |
| examples: Optional[Dict[str, Any]] = None, | |
| **extra: Any, | |
| ): | |
| super().__init__( | |
| default=default, | |
| media_type=media_type, | |
| alias=alias, | |
| title=title, | |
| description=description, | |
| gt=gt, | |
| ge=ge, | |
| lt=lt, | |
| le=le, | |
| min_length=min_length, | |
| max_length=max_length, | |
| regex=regex, | |
| example=example, | |
| examples=examples, | |
| **extra, | |
| ) | |
| class Depends: | |
| def __init__( | |
| self, dependency: Optional[Callable[..., Any]] = None, *, use_cache: bool = True | |
| ): | |
| self.dependency = dependency | |
| self.use_cache = use_cache | |
| def __repr__(self) -> str: | |
| attr = getattr(self.dependency, "__name__", type(self.dependency).__name__) | |
| cache = "" if self.use_cache else ", use_cache=False" | |
| return f"{self.__class__.__name__}({attr}{cache})" | |
| class Security(Depends): | |
| def __init__( | |
| self, | |
| dependency: Optional[Callable[..., Any]] = None, | |
| *, | |
| scopes: Optional[Sequence[str]] = None, | |
| use_cache: bool = True, | |
| ): | |
| super().__init__(dependency=dependency, use_cache=use_cache) | |
| self.scopes = scopes or [] | |