Pydantic Dataclasses
Provide an enhanced dataclass that performs validation.
dataclass
Section titled “dataclass”def dataclass(
*,
init: Literal[False] = False,
repr: bool = True,
eq: bool = True,
order: bool = False,
unsafe_hash: bool = False,
frozen: bool = False,
config: ConfigDict | type[object] | None = None,
validate_on_init: bool | None = None,
kw_only: bool = ...,
slots: bool = ...,
) -> Callable[[type[_T]], type[PydanticDataclass]]
def dataclass(
_cls: type[_T],
*,
init: Literal[False] = False,
repr: bool = True,
eq: bool = True,
order: bool = False,
unsafe_hash: bool = False,
frozen: bool | None = None,
config: ConfigDict | type[object] | None = None,
validate_on_init: bool | None = None,
kw_only: bool = ...,
slots: bool = ...,
) -> type[PydanticDataclass]
def dataclass(
*,
init: Literal[False] = False,
repr: bool = True,
eq: bool = True,
order: bool = False,
unsafe_hash: bool = False,
frozen: bool | None = None,
config: ConfigDict | type[object] | None = None,
validate_on_init: bool | None = None,
) -> Callable[[type[_T]], type[PydanticDataclass]]
def dataclass(
_cls: type[_T],
*,
init: Literal[False] = False,
repr: bool = True,
eq: bool = True,
order: bool = False,
unsafe_hash: bool = False,
frozen: bool | None = None,
config: ConfigDict | type[object] | None = None,
validate_on_init: bool | None = None,
) -> type[PydanticDataclass]A decorator used to create a Pydantic-enhanced dataclass, similar to the standard Python dataclass, but with added validation.
This function should be used similarly to dataclasses.dataclass.
A Pydantic dataclass validates its inputs like a BaseModel does, and a failed validation can leave you without the input that caused it. Logfire records dataclass validations the same way as model validations, input included — see Troubleshooting validation errors.
Returns
Section titled “Returns”Callable[[type[_T]], type[PydanticDataclass]] | type[PydanticDataclass] — A decorator that accepts a class as its argument and returns a Pydantic dataclass.
Parameters
Section titled “Parameters”_cls : type[_T] | None Default: None
The target dataclass.
init : Literal[False] Default: False
Included for signature compatibility with dataclasses.dataclass, and is passed through to dataclasses.dataclass when appropriate. If specified, must be set to False, as pydantic inserts its own __init__ function.
repr : bool Default: True
A boolean indicating whether to include the field in the __repr__ output.
eq : bool Default: True
Determines if a __eq__ method should be generated for the class.
order : bool Default: False
Determines if comparison magic methods should be generated, such as __lt__, but not __eq__.
unsafe_hash : bool Default: False
Determines if a __hash__ method should be included in the class, as in dataclasses.dataclass.
frozen : bool | None Default: None
Determines if the generated class should be a ‘frozen’ dataclass, which does not allow its attributes to be modified after it has been initialized. If not set, the value from the provided config argument will be used (and will default to False otherwise).
config : ConfigDict | type[object] | None Default: None
The Pydantic config to use for the dataclass.
validate_on_init : bool | None Default: None
A deprecated parameter included for backwards compatibility; in V2, all Pydantic dataclasses are validated on init.
kw_only : bool Default: False
Determines if __init__ method parameters must be specified by keyword only. Defaults to False.
slots : bool Default: False
Determines if the generated class should be a ‘slots’ dataclass, which does not allow the addition of new attributes after instantiation.
Raises
Section titled “Raises”AssertionError— Raised ifinitis notFalseorvalidate_on_initisFalse.
rebuild_dataclass
Section titled “rebuild_dataclass”def rebuild_dataclass(
cls: type[PydanticDataclass],
*,
force: bool = False,
raise_errors: bool = True,
_parent_namespace_depth: int = 2,
_types_namespace: MappingNamespace | None = None,
) -> bool | NoneTry to rebuild the pydantic-core schema for the dataclass.
This may be necessary when one of the annotations is a ForwardRef which could not be resolved during the initial attempt to build the schema, and automatic rebuilding fails.
This is analogous to BaseModel.model_rebuild.
Returns
Section titled “Returns”bool | None — Returns None if the schema is already “complete” and rebuilding was not required. bool | None — If rebuilding was required, returns True if rebuilding was successful, otherwise False.
Parameters
Section titled “Parameters”cls : type[PydanticDataclass]
The class to rebuild the pydantic-core schema for.
force : bool Default: False
Whether to force the rebuilding of the schema, defaults to False.
raise_errors : bool Default: True
Whether to raise errors, defaults to True.
_parent_namespace_depth : int Default: 2
The depth level of the parent namespace, defaults to 2.
_types_namespace : MappingNamespace | None Default: None
The types namespace, defaults to None.
is_pydantic_dataclass
Section titled “is_pydantic_dataclass”def is_pydantic_dataclass(class_: type[Any], /) -> TypeGuard[type[PydanticDataclass]]Whether a class is a pydantic dataclass.
Returns
Section titled “Returns”TypeGuard[type[PydanticDataclass]] — True if the class is a pydantic dataclass, False otherwise.
Parameters
Section titled “Parameters”The class.
Was this page helpful?