Spaces:
Paused
Paused
| import warnings | |
| from enum import Enum | |
| from typing import Any, Callable, Dict, List, Optional, Sequence, Union | |
| from fastapi.openapi.models import Example | |
| from pydantic.fields import FieldInfo | |
| from typing_extensions import Annotated, deprecated | |
| from ._compat import ( | |
| PYDANTIC_V2, | |
| PYDANTIC_VERSION_MINOR_TUPLE, | |
| Undefined, | |
| ) | |
| _Unset: Any = Undefined | |
| class ParamTypes(Enum): | |
| query = "query" | |
| header = "header" | |
| path = "path" | |
| cookie = "cookie" | |
| class Param(FieldInfo): | |
| in_: ParamTypes | |
| def __init__( | |
| self, | |
| default: Any = Undefined, | |
| *, | |
| default_factory: Union[Callable[[], Any], None] = _Unset, | |
| annotation: Optional[Any] = None, | |
| alias: Optional[str] = None, | |
| alias_priority: Union[int, None] = _Unset, | |
| # TODO: update when deprecating Pydantic v1, import these types | |
| # validation_alias: str | AliasPath | AliasChoices | None | |
| validation_alias: Union[str, None] = None, | |
| serialization_alias: Union[str, None] = 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, | |
| pattern: Optional[str] = None, | |
| regex: Annotated[ | |
| Optional[str], | |
| deprecated( | |
| "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead." | |
| ), | |
| ] = None, | |
| discriminator: Union[str, None] = None, | |
| strict: Union[bool, None] = _Unset, | |
| multiple_of: Union[float, None] = _Unset, | |
| allow_inf_nan: Union[bool, None] = _Unset, | |
| max_digits: Union[int, None] = _Unset, | |
| decimal_places: Union[int, None] = _Unset, | |
| examples: Optional[List[Any]] = None, | |
| example: Annotated[ | |
| Optional[Any], | |
| deprecated( | |
| "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, " | |
| "although still supported. Use examples instead." | |
| ), | |
| ] = _Unset, | |
| openapi_examples: Optional[Dict[str, Example]] = None, | |
| deprecated: Union[deprecated, str, bool, None] = None, | |
| include_in_schema: bool = True, | |
| json_schema_extra: Union[Dict[str, Any], None] = None, | |
| **extra: Any, | |
| ): | |
| if example is not _Unset: | |
| warnings.warn( | |
| "`example` has been deprecated, please use `examples` instead", | |
| category=DeprecationWarning, | |
| stacklevel=4, | |
| ) | |
| self.example = example | |
| self.include_in_schema = include_in_schema | |
| self.openapi_examples = openapi_examples | |
| kwargs = dict( | |
| default=default, | |
| default_factory=default_factory, | |
| alias=alias, | |
| title=title, | |
| description=description, | |
| gt=gt, | |
| ge=ge, | |
| lt=lt, | |
| le=le, | |
| min_length=min_length, | |
| max_length=max_length, | |
| discriminator=discriminator, | |
| multiple_of=multiple_of, | |
| allow_inf_nan=allow_inf_nan, | |
| max_digits=max_digits, | |
| decimal_places=decimal_places, | |
| **extra, | |
| ) | |
| if examples is not None: | |
| kwargs["examples"] = examples | |
| if regex is not None: | |
| warnings.warn( | |
| "`regex` has been deprecated, please use `pattern` instead", | |
| category=DeprecationWarning, | |
| stacklevel=4, | |
| ) | |
| current_json_schema_extra = json_schema_extra or extra | |
| if PYDANTIC_VERSION_MINOR_TUPLE < (2, 7): | |
| self.deprecated = deprecated | |
| else: | |
| kwargs["deprecated"] = deprecated | |
| if PYDANTIC_V2: | |
| kwargs.update( | |
| { | |
| "annotation": annotation, | |
| "alias_priority": alias_priority, | |
| "validation_alias": validation_alias, | |
| "serialization_alias": serialization_alias, | |
| "strict": strict, | |
| "json_schema_extra": current_json_schema_extra, | |
| } | |
| ) | |
| kwargs["pattern"] = pattern or regex | |
| else: | |
| kwargs["regex"] = pattern or regex | |
| kwargs.update(**current_json_schema_extra) | |
| use_kwargs = {k: v for k, v in kwargs.items() if v is not _Unset} | |
| super().__init__(**use_kwargs) | |
| def __repr__(self) -> str: | |
| return f"{self.__class__.__name__}({self.default})" | |
| class Path(Param): | |
| in_ = ParamTypes.path | |
| def __init__( | |
| self, | |
| default: Any = ..., | |
| *, | |
| default_factory: Union[Callable[[], Any], None] = _Unset, | |
| annotation: Optional[Any] = None, | |
| alias: Optional[str] = None, | |
| alias_priority: Union[int, None] = _Unset, | |
| # TODO: update when deprecating Pydantic v1, import these types | |
| # validation_alias: str | AliasPath | AliasChoices | None | |
| validation_alias: Union[str, None] = None, | |
| serialization_alias: Union[str, None] = 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, | |
| pattern: Optional[str] = None, | |
| regex: Annotated[ | |
| Optional[str], | |
| deprecated( | |
| "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead." | |
| ), | |
| ] = None, | |
| discriminator: Union[str, None] = None, | |
| strict: Union[bool, None] = _Unset, | |
| multiple_of: Union[float, None] = _Unset, | |
| allow_inf_nan: Union[bool, None] = _Unset, | |
| max_digits: Union[int, None] = _Unset, | |
| decimal_places: Union[int, None] = _Unset, | |
| examples: Optional[List[Any]] = None, | |
| example: Annotated[ | |
| Optional[Any], | |
| deprecated( | |
| "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, " | |
| "although still supported. Use examples instead." | |
| ), | |
| ] = _Unset, | |
| openapi_examples: Optional[Dict[str, Example]] = None, | |
| deprecated: Union[deprecated, str, bool, None] = None, | |
| include_in_schema: bool = True, | |
| json_schema_extra: Union[Dict[str, Any], None] = None, | |
| **extra: Any, | |
| ): | |
| assert default is ..., "Path parameters cannot have a default value" | |
| self.in_ = self.in_ | |
| super().__init__( | |
| default=default, | |
| default_factory=default_factory, | |
| annotation=annotation, | |
| alias=alias, | |
| alias_priority=alias_priority, | |
| validation_alias=validation_alias, | |
| serialization_alias=serialization_alias, | |
| title=title, | |
| description=description, | |
| gt=gt, | |
| ge=ge, | |
| lt=lt, | |
| le=le, | |
| min_length=min_length, | |
| max_length=max_length, | |
| pattern=pattern, | |
| regex=regex, | |
| discriminator=discriminator, | |
| strict=strict, | |
| multiple_of=multiple_of, | |
| allow_inf_nan=allow_inf_nan, | |
| max_digits=max_digits, | |
| decimal_places=decimal_places, | |
| deprecated=deprecated, | |
| example=example, | |
| examples=examples, | |
| openapi_examples=openapi_examples, | |
| include_in_schema=include_in_schema, | |
| json_schema_extra=json_schema_extra, | |
| **extra, | |
| ) | |
| class Query(Param): | |
| in_ = ParamTypes.query | |
| def __init__( | |
| self, | |
| default: Any = Undefined, | |
| *, | |
| default_factory: Union[Callable[[], Any], None] = _Unset, | |
| annotation: Optional[Any] = None, | |
| alias: Optional[str] = None, | |
| alias_priority: Union[int, None] = _Unset, | |
| # TODO: update when deprecating Pydantic v1, import these types | |
| # validation_alias: str | AliasPath | AliasChoices | None | |
| validation_alias: Union[str, None] = None, | |
| serialization_alias: Union[str, None] = 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, | |
| pattern: Optional[str] = None, | |
| regex: Annotated[ | |
| Optional[str], | |
| deprecated( | |
| "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead." | |
| ), | |
| ] = None, | |
| discriminator: Union[str, None] = None, | |
| strict: Union[bool, None] = _Unset, | |
| multiple_of: Union[float, None] = _Unset, | |
| allow_inf_nan: Union[bool, None] = _Unset, | |
| max_digits: Union[int, None] = _Unset, | |
| decimal_places: Union[int, None] = _Unset, | |
| examples: Optional[List[Any]] = None, | |
| example: Annotated[ | |
| Optional[Any], | |
| deprecated( | |
| "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, " | |
| "although still supported. Use examples instead." | |
| ), | |
| ] = _Unset, | |
| openapi_examples: Optional[Dict[str, Example]] = None, | |
| deprecated: Union[deprecated, str, bool, None] = None, | |
| include_in_schema: bool = True, | |
| json_schema_extra: Union[Dict[str, Any], None] = None, | |
| **extra: Any, | |
| ): | |
| super().__init__( | |
| default=default, | |
| default_factory=default_factory, | |
| annotation=annotation, | |
| alias=alias, | |
| alias_priority=alias_priority, | |
| validation_alias=validation_alias, | |
| serialization_alias=serialization_alias, | |
| title=title, | |
| description=description, | |
| gt=gt, | |
| ge=ge, | |
| lt=lt, | |
| le=le, | |
| min_length=min_length, | |
| max_length=max_length, | |
| pattern=pattern, | |
| regex=regex, | |
| discriminator=discriminator, | |
| strict=strict, | |
| multiple_of=multiple_of, | |
| allow_inf_nan=allow_inf_nan, | |
| max_digits=max_digits, | |
| decimal_places=decimal_places, | |
| deprecated=deprecated, | |
| example=example, | |
| examples=examples, | |
| openapi_examples=openapi_examples, | |
| include_in_schema=include_in_schema, | |
| json_schema_extra=json_schema_extra, | |
| **extra, | |
| ) | |
| class Header(Param): | |
| in_ = ParamTypes.header | |
| def __init__( | |
| self, | |
| default: Any = Undefined, | |
| *, | |
| default_factory: Union[Callable[[], Any], None] = _Unset, | |
| annotation: Optional[Any] = None, | |
| alias: Optional[str] = None, | |
| alias_priority: Union[int, None] = _Unset, | |
| # TODO: update when deprecating Pydantic v1, import these types | |
| # validation_alias: str | AliasPath | AliasChoices | None | |
| validation_alias: Union[str, None] = None, | |
| serialization_alias: Union[str, None] = 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, | |
| pattern: Optional[str] = None, | |
| regex: Annotated[ | |
| Optional[str], | |
| deprecated( | |
| "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead." | |
| ), | |
| ] = None, | |
| discriminator: Union[str, None] = None, | |
| strict: Union[bool, None] = _Unset, | |
| multiple_of: Union[float, None] = _Unset, | |
| allow_inf_nan: Union[bool, None] = _Unset, | |
| max_digits: Union[int, None] = _Unset, | |
| decimal_places: Union[int, None] = _Unset, | |
| examples: Optional[List[Any]] = None, | |
| example: Annotated[ | |
| Optional[Any], | |
| deprecated( | |
| "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, " | |
| "although still supported. Use examples instead." | |
| ), | |
| ] = _Unset, | |
| openapi_examples: Optional[Dict[str, Example]] = None, | |
| deprecated: Union[deprecated, str, bool, None] = None, | |
| include_in_schema: bool = True, | |
| json_schema_extra: Union[Dict[str, Any], None] = None, | |
| **extra: Any, | |
| ): | |
| self.convert_underscores = convert_underscores | |
| super().__init__( | |
| default=default, | |
| default_factory=default_factory, | |
| annotation=annotation, | |
| alias=alias, | |
| alias_priority=alias_priority, | |
| validation_alias=validation_alias, | |
| serialization_alias=serialization_alias, | |
| title=title, | |
| description=description, | |
| gt=gt, | |
| ge=ge, | |
| lt=lt, | |
| le=le, | |
| min_length=min_length, | |
| max_length=max_length, | |
| pattern=pattern, | |
| regex=regex, | |
| discriminator=discriminator, | |
| strict=strict, | |
| multiple_of=multiple_of, | |
| allow_inf_nan=allow_inf_nan, | |
| max_digits=max_digits, | |
| decimal_places=decimal_places, | |
| deprecated=deprecated, | |
| example=example, | |
| examples=examples, | |
| openapi_examples=openapi_examples, | |
| include_in_schema=include_in_schema, | |
| json_schema_extra=json_schema_extra, | |
| **extra, | |
| ) | |
| class Cookie(Param): | |
| in_ = ParamTypes.cookie | |
| def __init__( | |
| self, | |
| default: Any = Undefined, | |
| *, | |
| default_factory: Union[Callable[[], Any], None] = _Unset, | |
| annotation: Optional[Any] = None, | |
| alias: Optional[str] = None, | |
| alias_priority: Union[int, None] = _Unset, | |
| # TODO: update when deprecating Pydantic v1, import these types | |
| # validation_alias: str | AliasPath | AliasChoices | None | |
| validation_alias: Union[str, None] = None, | |
| serialization_alias: Union[str, None] = 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, | |
| pattern: Optional[str] = None, | |
| regex: Annotated[ | |
| Optional[str], | |
| deprecated( | |
| "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead." | |
| ), | |
| ] = None, | |
| discriminator: Union[str, None] = None, | |
| strict: Union[bool, None] = _Unset, | |
| multiple_of: Union[float, None] = _Unset, | |
| allow_inf_nan: Union[bool, None] = _Unset, | |
| max_digits: Union[int, None] = _Unset, | |
| decimal_places: Union[int, None] = _Unset, | |
| examples: Optional[List[Any]] = None, | |
| example: Annotated[ | |
| Optional[Any], | |
| deprecated( | |
| "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, " | |
| "although still supported. Use examples instead." | |
| ), | |
| ] = _Unset, | |
| openapi_examples: Optional[Dict[str, Example]] = None, | |
| deprecated: Union[deprecated, str, bool, None] = None, | |
| include_in_schema: bool = True, | |
| json_schema_extra: Union[Dict[str, Any], None] = None, | |
| **extra: Any, | |
| ): | |
| super().__init__( | |
| default=default, | |
| default_factory=default_factory, | |
| annotation=annotation, | |
| alias=alias, | |
| alias_priority=alias_priority, | |
| validation_alias=validation_alias, | |
| serialization_alias=serialization_alias, | |
| title=title, | |
| description=description, | |
| gt=gt, | |
| ge=ge, | |
| lt=lt, | |
| le=le, | |
| min_length=min_length, | |
| max_length=max_length, | |
| pattern=pattern, | |
| regex=regex, | |
| discriminator=discriminator, | |
| strict=strict, | |
| multiple_of=multiple_of, | |
| allow_inf_nan=allow_inf_nan, | |
| max_digits=max_digits, | |
| decimal_places=decimal_places, | |
| deprecated=deprecated, | |
| example=example, | |
| examples=examples, | |
| openapi_examples=openapi_examples, | |
| include_in_schema=include_in_schema, | |
| json_schema_extra=json_schema_extra, | |
| **extra, | |
| ) | |
| class Body(FieldInfo): | |
| def __init__( | |
| self, | |
| default: Any = Undefined, | |
| *, | |
| default_factory: Union[Callable[[], Any], None] = _Unset, | |
| annotation: Optional[Any] = None, | |
| embed: Union[bool, None] = None, | |
| media_type: str = "application/json", | |
| alias: Optional[str] = None, | |
| alias_priority: Union[int, None] = _Unset, | |
| # TODO: update when deprecating Pydantic v1, import these types | |
| # validation_alias: str | AliasPath | AliasChoices | None | |
| validation_alias: Union[str, None] = None, | |
| serialization_alias: Union[str, None] = 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, | |
| pattern: Optional[str] = None, | |
| regex: Annotated[ | |
| Optional[str], | |
| deprecated( | |
| "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead." | |
| ), | |
| ] = None, | |
| discriminator: Union[str, None] = None, | |
| strict: Union[bool, None] = _Unset, | |
| multiple_of: Union[float, None] = _Unset, | |
| allow_inf_nan: Union[bool, None] = _Unset, | |
| max_digits: Union[int, None] = _Unset, | |
| decimal_places: Union[int, None] = _Unset, | |
| examples: Optional[List[Any]] = None, | |
| example: Annotated[ | |
| Optional[Any], | |
| deprecated( | |
| "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, " | |
| "although still supported. Use examples instead." | |
| ), | |
| ] = _Unset, | |
| openapi_examples: Optional[Dict[str, Example]] = None, | |
| deprecated: Union[deprecated, str, bool, None] = None, | |
| include_in_schema: bool = True, | |
| json_schema_extra: Union[Dict[str, Any], None] = None, | |
| **extra: Any, | |
| ): | |
| self.embed = embed | |
| self.media_type = media_type | |
| if example is not _Unset: | |
| warnings.warn( | |
| "`example` has been deprecated, please use `examples` instead", | |
| category=DeprecationWarning, | |
| stacklevel=4, | |
| ) | |
| self.example = example | |
| self.include_in_schema = include_in_schema | |
| self.openapi_examples = openapi_examples | |
| kwargs = dict( | |
| default=default, | |
| default_factory=default_factory, | |
| alias=alias, | |
| title=title, | |
| description=description, | |
| gt=gt, | |
| ge=ge, | |
| lt=lt, | |
| le=le, | |
| min_length=min_length, | |
| max_length=max_length, | |
| discriminator=discriminator, | |
| multiple_of=multiple_of, | |
| allow_inf_nan=allow_inf_nan, | |
| max_digits=max_digits, | |
| decimal_places=decimal_places, | |
| **extra, | |
| ) | |
| if examples is not None: | |
| kwargs["examples"] = examples | |
| if regex is not None: | |
| warnings.warn( | |
| "`regex` has been deprecated, please use `pattern` instead", | |
| category=DeprecationWarning, | |
| stacklevel=4, | |
| ) | |
| current_json_schema_extra = json_schema_extra or extra | |
| if PYDANTIC_VERSION_MINOR_TUPLE < (2, 7): | |
| self.deprecated = deprecated | |
| else: | |
| kwargs["deprecated"] = deprecated | |
| if PYDANTIC_V2: | |
| kwargs.update( | |
| { | |
| "annotation": annotation, | |
| "alias_priority": alias_priority, | |
| "validation_alias": validation_alias, | |
| "serialization_alias": serialization_alias, | |
| "strict": strict, | |
| "json_schema_extra": current_json_schema_extra, | |
| } | |
| ) | |
| kwargs["pattern"] = pattern or regex | |
| else: | |
| kwargs["regex"] = pattern or regex | |
| kwargs.update(**current_json_schema_extra) | |
| use_kwargs = {k: v for k, v in kwargs.items() if v is not _Unset} | |
| super().__init__(**use_kwargs) | |
| def __repr__(self) -> str: | |
| return f"{self.__class__.__name__}({self.default})" | |
| class Form(Body): | |
| def __init__( | |
| self, | |
| default: Any = Undefined, | |
| *, | |
| default_factory: Union[Callable[[], Any], None] = _Unset, | |
| annotation: Optional[Any] = None, | |
| media_type: str = "application/x-www-form-urlencoded", | |
| alias: Optional[str] = None, | |
| alias_priority: Union[int, None] = _Unset, | |
| # TODO: update when deprecating Pydantic v1, import these types | |
| # validation_alias: str | AliasPath | AliasChoices | None | |
| validation_alias: Union[str, None] = None, | |
| serialization_alias: Union[str, None] = 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, | |
| pattern: Optional[str] = None, | |
| regex: Annotated[ | |
| Optional[str], | |
| deprecated( | |
| "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead." | |
| ), | |
| ] = None, | |
| discriminator: Union[str, None] = None, | |
| strict: Union[bool, None] = _Unset, | |
| multiple_of: Union[float, None] = _Unset, | |
| allow_inf_nan: Union[bool, None] = _Unset, | |
| max_digits: Union[int, None] = _Unset, | |
| decimal_places: Union[int, None] = _Unset, | |
| examples: Optional[List[Any]] = None, | |
| example: Annotated[ | |
| Optional[Any], | |
| deprecated( | |
| "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, " | |
| "although still supported. Use examples instead." | |
| ), | |
| ] = _Unset, | |
| openapi_examples: Optional[Dict[str, Example]] = None, | |
| deprecated: Union[deprecated, str, bool, None] = None, | |
| include_in_schema: bool = True, | |
| json_schema_extra: Union[Dict[str, Any], None] = None, | |
| **extra: Any, | |
| ): | |
| super().__init__( | |
| default=default, | |
| default_factory=default_factory, | |
| annotation=annotation, | |
| media_type=media_type, | |
| alias=alias, | |
| alias_priority=alias_priority, | |
| validation_alias=validation_alias, | |
| serialization_alias=serialization_alias, | |
| title=title, | |
| description=description, | |
| gt=gt, | |
| ge=ge, | |
| lt=lt, | |
| le=le, | |
| min_length=min_length, | |
| max_length=max_length, | |
| pattern=pattern, | |
| regex=regex, | |
| discriminator=discriminator, | |
| strict=strict, | |
| multiple_of=multiple_of, | |
| allow_inf_nan=allow_inf_nan, | |
| max_digits=max_digits, | |
| decimal_places=decimal_places, | |
| deprecated=deprecated, | |
| example=example, | |
| examples=examples, | |
| openapi_examples=openapi_examples, | |
| include_in_schema=include_in_schema, | |
| json_schema_extra=json_schema_extra, | |
| **extra, | |
| ) | |
| class File(Form): | |
| def __init__( | |
| self, | |
| default: Any = Undefined, | |
| *, | |
| default_factory: Union[Callable[[], Any], None] = _Unset, | |
| annotation: Optional[Any] = None, | |
| media_type: str = "multipart/form-data", | |
| alias: Optional[str] = None, | |
| alias_priority: Union[int, None] = _Unset, | |
| # TODO: update when deprecating Pydantic v1, import these types | |
| # validation_alias: str | AliasPath | AliasChoices | None | |
| validation_alias: Union[str, None] = None, | |
| serialization_alias: Union[str, None] = 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, | |
| pattern: Optional[str] = None, | |
| regex: Annotated[ | |
| Optional[str], | |
| deprecated( | |
| "Deprecated in FastAPI 0.100.0 and Pydantic v2, use `pattern` instead." | |
| ), | |
| ] = None, | |
| discriminator: Union[str, None] = None, | |
| strict: Union[bool, None] = _Unset, | |
| multiple_of: Union[float, None] = _Unset, | |
| allow_inf_nan: Union[bool, None] = _Unset, | |
| max_digits: Union[int, None] = _Unset, | |
| decimal_places: Union[int, None] = _Unset, | |
| examples: Optional[List[Any]] = None, | |
| example: Annotated[ | |
| Optional[Any], | |
| deprecated( | |
| "Deprecated in OpenAPI 3.1.0 that now uses JSON Schema 2020-12, " | |
| "although still supported. Use examples instead." | |
| ), | |
| ] = _Unset, | |
| openapi_examples: Optional[Dict[str, Example]] = None, | |
| deprecated: Union[deprecated, str, bool, None] = None, | |
| include_in_schema: bool = True, | |
| json_schema_extra: Union[Dict[str, Any], None] = None, | |
| **extra: Any, | |
| ): | |
| super().__init__( | |
| default=default, | |
| default_factory=default_factory, | |
| annotation=annotation, | |
| media_type=media_type, | |
| alias=alias, | |
| alias_priority=alias_priority, | |
| validation_alias=validation_alias, | |
| serialization_alias=serialization_alias, | |
| title=title, | |
| description=description, | |
| gt=gt, | |
| ge=ge, | |
| lt=lt, | |
| le=le, | |
| min_length=min_length, | |
| max_length=max_length, | |
| pattern=pattern, | |
| regex=regex, | |
| discriminator=discriminator, | |
| strict=strict, | |
| multiple_of=multiple_of, | |
| allow_inf_nan=allow_inf_nan, | |
| max_digits=max_digits, | |
| decimal_places=decimal_places, | |
| deprecated=deprecated, | |
| example=example, | |
| examples=examples, | |
| openapi_examples=openapi_examples, | |
| include_in_schema=include_in_schema, | |
| json_schema_extra=json_schema_extra, | |
| **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 [] | |