import builtins
import ipaddress
import uuid
+import warnings
import weakref
- from collections.abc import Mapping, Sequence, Set
+ from collections.abc import Callable, Mapping, Sequence, Set
+ from dataclasses import dataclass
from datetime import date, datetime, time, timedelta
from decimal import Decimal
from enum import Enum
from pathlib import Path
from typing import (
TYPE_CHECKING,
+ Annotated,
Any,
- Callable,
ClassVar,
Literal,
- Optional,
+ TypeAlias,
TypeVar,
Union,
cast,
_T = TypeVar("_T")
NoArgAnyCallable = Callable[[], Any]
- IncEx: TypeAlias = Union[
- set[int],
- set[str],
- Mapping[int, Union["IncEx", bool]],
- Mapping[str, Union["IncEx", bool]],
- ]
+ IncEx: TypeAlias = (
+ set[int]
+ | set[str]
+ | Mapping[int, Union["IncEx", bool]]
+ | Mapping[str, Union["IncEx", bool]]
+ )
OnDeleteType = Literal["CASCADE", "SET NULL", "RESTRICT"]
+INCLUDE_DEPRECATION_MSG = "`include` is deprecated and does nothing. It will be removed, use `exclude` instead"
+
def __dataclass_transform__(
*,
def Field(
default: Any = Undefined,
*,
- default_factory: Optional[NoArgAnyCallable] = None,
- alias: Optional[str] = None,
- validation_alias: Optional[str] = None,
- serialization_alias: Optional[str] = None,
- title: Optional[str] = None,
- description: Optional[str] = None,
- exclude: Union[bool, None] = None,
+ default_factory: NoArgAnyCallable | None = None,
+ alias: str | None = None,
+ validation_alias: str | None = None,
+ serialization_alias: str | None = None,
+ title: str | None = None,
+ description: str | None = None,
- exclude: Set[int | str] | Mapping[int | str, Any] | Any = None,
- include: Set[int | str] | Mapping[int | str, Any] | Any = None,
++ exclude: bool | None = None,
+ include: Annotated[
- Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any],
++ Set[int | str] | Mapping[int | str, Any] | Any,
+ deprecated(INCLUDE_DEPRECATION_MSG),
+ ] = None,
- const: Optional[bool] = None,
- gt: Optional[float] = None,
- ge: Optional[float] = None,
- lt: Optional[float] = None,
- le: Optional[float] = None,
- multiple_of: Optional[float] = None,
- max_digits: Optional[int] = None,
- decimal_places: Optional[int] = None,
- min_items: Optional[int] = None,
- max_items: Optional[int] = None,
- unique_items: Optional[bool] = None,
- min_length: Optional[int] = None,
- max_length: Optional[int] = None,
+ const: bool | None = None,
+ gt: float | None = None,
+ ge: float | None = None,
+ lt: float | None = None,
+ le: float | None = None,
+ multiple_of: float | None = None,
+ max_digits: int | None = None,
+ decimal_places: int | None = None,
+ min_items: int | None = None,
+ max_items: int | None = None,
+ unique_items: bool | None = None,
+ min_length: int | None = None,
+ max_length: int | None = None,
allow_mutation: bool = True,
- regex: Optional[str] = None,
- discriminator: Optional[str] = None,
+ regex: str | None = None,
+ discriminator: str | None = None,
repr: bool = True,
- primary_key: Union[bool, UndefinedType] = Undefined,
+ primary_key: bool | UndefinedType = Undefined,
foreign_key: Any = Undefined,
- unique: Union[bool, UndefinedType] = Undefined,
- nullable: Union[bool, UndefinedType] = Undefined,
- index: Union[bool, UndefinedType] = Undefined,
- sa_type: Union[type[Any], UndefinedType] = Undefined,
- sa_column_args: Union[Sequence[Any], UndefinedType] = Undefined,
- sa_column_kwargs: Union[Mapping[str, Any], UndefinedType] = Undefined,
- schema_extra: Optional[dict[str, Any]] = None,
+ unique: bool | UndefinedType = Undefined,
+ nullable: bool | UndefinedType = Undefined,
+ index: bool | UndefinedType = Undefined,
+ sa_type: type[Any] | UndefinedType = Undefined,
+ sa_column_args: Sequence[Any] | UndefinedType = Undefined,
+ sa_column_kwargs: Mapping[str, Any] | UndefinedType = Undefined,
+ schema_extra: dict[str, Any] | None = None,
) -> Any: ...
def Field(
default: Any = Undefined,
*,
- default_factory: Optional[NoArgAnyCallable] = None,
- alias: Optional[str] = None,
- validation_alias: Optional[str] = None,
- serialization_alias: Optional[str] = None,
- title: Optional[str] = None,
- description: Optional[str] = None,
- exclude: Union[bool, None] = None,
+ default_factory: NoArgAnyCallable | None = None,
+ alias: str | None = None,
+ validation_alias: str | None = None,
+ serialization_alias: str | None = None,
+ title: str | None = None,
+ description: str | None = None,
- exclude: Set[int | str] | Mapping[int | str, Any] | Any = None,
- include: Set[int | str] | Mapping[int | str, Any] | Any = None,
++ exclude: bool | None = None,
+ include: Annotated[
- Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any],
++ Set[int | str] | Mapping[int | str, Any] | Any,
+ deprecated(INCLUDE_DEPRECATION_MSG),
+ ] = None,
- const: Optional[bool] = None,
- gt: Optional[float] = None,
- ge: Optional[float] = None,
- lt: Optional[float] = None,
- le: Optional[float] = None,
- multiple_of: Optional[float] = None,
- max_digits: Optional[int] = None,
- decimal_places: Optional[int] = None,
- min_items: Optional[int] = None,
- max_items: Optional[int] = None,
- unique_items: Optional[bool] = None,
- min_length: Optional[int] = None,
- max_length: Optional[int] = None,
+ const: bool | None = None,
+ gt: float | None = None,
+ ge: float | None = None,
+ lt: float | None = None,
+ le: float | None = None,
+ multiple_of: float | None = None,
+ max_digits: int | None = None,
+ decimal_places: int | None = None,
+ min_items: int | None = None,
+ max_items: int | None = None,
+ unique_items: bool | None = None,
+ min_length: int | None = None,
+ max_length: int | None = None,
allow_mutation: bool = True,
- regex: Optional[str] = None,
- discriminator: Optional[str] = None,
+ regex: str | None = None,
+ discriminator: str | None = None,
repr: bool = True,
- primary_key: Union[bool, UndefinedType] = Undefined,
+ primary_key: bool | UndefinedType = Undefined,
foreign_key: str,
- ondelete: Union[OnDeleteType, UndefinedType] = Undefined,
- unique: Union[bool, UndefinedType] = Undefined,
- nullable: Union[bool, UndefinedType] = Undefined,
- index: Union[bool, UndefinedType] = Undefined,
- sa_type: Union[type[Any], UndefinedType] = Undefined,
- sa_column_args: Union[Sequence[Any], UndefinedType] = Undefined,
- sa_column_kwargs: Union[Mapping[str, Any], UndefinedType] = Undefined,
- schema_extra: Optional[dict[str, Any]] = None,
+ ondelete: OnDeleteType | UndefinedType = Undefined,
+ unique: bool | UndefinedType = Undefined,
+ nullable: bool | UndefinedType = Undefined,
+ index: bool | UndefinedType = Undefined,
+ sa_type: type[Any] | UndefinedType = Undefined,
+ sa_column_args: Sequence[Any] | UndefinedType = Undefined,
+ sa_column_kwargs: Mapping[str, Any] | UndefinedType = Undefined,
+ schema_extra: dict[str, Any] | None = None,
) -> Any: ...
def Field(
default: Any = Undefined,
*,
- default_factory: Optional[NoArgAnyCallable] = None,
- alias: Optional[str] = None,
- validation_alias: Optional[str] = None,
- serialization_alias: Optional[str] = None,
- title: Optional[str] = None,
- description: Optional[str] = None,
- exclude: Union[bool, None] = None,
+ default_factory: NoArgAnyCallable | None = None,
+ alias: str | None = None,
+ validation_alias: str | None = None,
+ serialization_alias: str | None = None,
+ title: str | None = None,
+ description: str | None = None,
- exclude: Set[int | str] | Mapping[int | str, Any] | Any = None,
- include: Set[int | str] | Mapping[int | str, Any] | Any = None,
++ exclude: bool | None = None,
+ include: Annotated[
- Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any],
++ Set[int | str] | Mapping[int | str, Any] | Any,
+ deprecated(INCLUDE_DEPRECATION_MSG),
+ ] = None,
- const: Optional[bool] = None,
- gt: Optional[float] = None,
- ge: Optional[float] = None,
- lt: Optional[float] = None,
- le: Optional[float] = None,
- multiple_of: Optional[float] = None,
- max_digits: Optional[int] = None,
- decimal_places: Optional[int] = None,
- min_items: Optional[int] = None,
- max_items: Optional[int] = None,
- unique_items: Optional[bool] = None,
- min_length: Optional[int] = None,
- max_length: Optional[int] = None,
+ const: bool | None = None,
+ gt: float | None = None,
+ ge: float | None = None,
+ lt: float | None = None,
+ le: float | None = None,
+ multiple_of: float | None = None,
+ max_digits: int | None = None,
+ decimal_places: int | None = None,
+ min_items: int | None = None,
+ max_items: int | None = None,
+ unique_items: bool | None = None,
+ min_length: int | None = None,
+ max_length: int | None = None,
allow_mutation: bool = True,
- regex: Optional[str] = None,
- discriminator: Optional[str] = None,
+ regex: str | None = None,
+ discriminator: str | None = None,
repr: bool = True,
- sa_column: Union[Column[Any], UndefinedType] = Undefined,
- schema_extra: Optional[dict[str, Any]] = None,
+ sa_column: Column[Any] | UndefinedType = Undefined,
+ schema_extra: dict[str, Any] | None = None,
) -> Any: ...
def Field(
default: Any = Undefined,
*,
- default_factory: Optional[NoArgAnyCallable] = None,
- alias: Optional[str] = None,
- validation_alias: Optional[str] = None,
- serialization_alias: Optional[str] = None,
- title: Optional[str] = None,
- description: Optional[str] = None,
- exclude: Union[bool, None] = None,
+ default_factory: NoArgAnyCallable | None = None,
+ alias: str | None = None,
+ validation_alias: str | None = None,
+ serialization_alias: str | None = None,
+ title: str | None = None,
+ description: str | None = None,
- exclude: Set[int | str] | Mapping[int | str, Any] | Any = None,
- include: Set[int | str] | Mapping[int | str, Any] | Any = None,
++ exclude: bool | None = None,
+ include: Annotated[
- Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any],
++ Set[int | str] | Mapping[int | str, Any] | Any,
+ deprecated(INCLUDE_DEPRECATION_MSG),
+ ] = None,
- const: Optional[bool] = None,
- gt: Optional[float] = None,
- ge: Optional[float] = None,
- lt: Optional[float] = None,
- le: Optional[float] = None,
- multiple_of: Optional[float] = None,
- max_digits: Optional[int] = None,
- decimal_places: Optional[int] = None,
- min_items: Optional[int] = None,
- max_items: Optional[int] = None,
- unique_items: Optional[bool] = None,
- min_length: Optional[int] = None,
- max_length: Optional[int] = None,
+ const: bool | None = None,
+ gt: float | None = None,
+ ge: float | None = None,
+ lt: float | None = None,
+ le: float | None = None,
+ multiple_of: float | None = None,
+ max_digits: int | None = None,
+ decimal_places: int | None = None,
+ min_items: int | None = None,
+ max_items: int | None = None,
+ unique_items: bool | None = None,
+ min_length: int | None = None,
+ max_length: int | None = None,
allow_mutation: bool = True,
- regex: Optional[str] = None,
- discriminator: Optional[str] = None,
+ regex: str | None = None,
+ discriminator: str | None = None,
repr: bool = True,
- primary_key: Union[bool, UndefinedType] = Undefined,
+ primary_key: bool | UndefinedType = Undefined,
foreign_key: Any = Undefined,
- ondelete: Union[OnDeleteType, UndefinedType] = Undefined,
- unique: Union[bool, UndefinedType] = Undefined,
- nullable: Union[bool, UndefinedType] = Undefined,
- index: Union[bool, UndefinedType] = Undefined,
- sa_type: Union[type[Any], UndefinedType] = Undefined,
- sa_column: Union[Column, UndefinedType] = Undefined, # type: ignore
- sa_column_args: Union[Sequence[Any], UndefinedType] = Undefined,
- sa_column_kwargs: Union[Mapping[str, Any], UndefinedType] = Undefined,
- schema_extra: Optional[dict[str, Any]] = None,
+ ondelete: OnDeleteType | UndefinedType = Undefined,
+ unique: bool | UndefinedType = Undefined,
+ nullable: bool | UndefinedType = Undefined,
+ index: bool | UndefinedType = Undefined,
+ sa_type: type[Any] | UndefinedType = Undefined,
+ sa_column: Column | UndefinedType = Undefined, # type: ignore
+ sa_column_args: Sequence[Any] | UndefinedType = Undefined,
+ sa_column_kwargs: Mapping[str, Any] | UndefinedType = Undefined,
+ schema_extra: dict[str, Any] | None = None,
) -> Any:
current_schema_extra = schema_extra or {}
+
+ if include is not None:
+ warnings.warn(INCLUDE_DEPRECATION_MSG, DeprecationWarning, stacklevel=2)
+
# Extract possible alias settings from schema_extra so we can control precedence
schema_validation_alias = current_schema_extra.pop("validation_alias", None)
schema_serialization_alias = current_schema_extra.pop("serialization_alias", None)