Skip to content

pydantic.config

Configuration for Pydantic models.

BaseConfig

This class is only retained for backwards compatibility.

Deprecated

BaseConfig is deprecated. Use the pydantic.ConfigDict instead.

ConfigDict

Bases: TypedDict

A dictionary-like class for configuring Pydantic models.

Attributes:

Name Type Description
title str | None

The title for the generated JSON schema. Defaults to None.

str_to_lower bool

Whether to convert all characters to lowercase for str & bytes types. Defaults to False.

str_to_upper bool

Whether to convert all characters to uppercase for str & bytes types. Defaults to False.

str_strip_whitespace bool

Whether to strip leading and trailing whitespace for str & bytes types. Defaults to False.

str_min_length int

The minimum length for str & bytes types. Defaults to None.

str_max_length int | None

The maximum length for str & bytes types. Defaults to None.

extra ExtraValues | None

Whether to ignore, allow, or forbid extra attributes during model initialization. Accepts the string values of 'ignore', 'allow', or 'forbid'. Defaults to 'ignore'.

  • 'forbid' will cause validation to fail if extra attributes are included.
  • 'ignore' will silently ignore any extra attributes.
  • 'allow' will assign the attributes to the model.

See Extra Attributes for details.

frozen bool

Whether or not models are faux-immutable, i.e. whether __setattr__ is allowed, and also generates a __hash__() method for the model. This makes instances of the model potentially hashable if all the attributes are hashable. Defaults to False.

Note

On V1, this setting was called allow_mutation, and was True by default.

populate_by_name bool

Whether an aliased field may be populated by its name as given by the model attribute, as well as the alias. Defaults to False.

Note

The name of this configuration setting was changed in v2.0 from allow_population_by_alias to populate_by_name.

use_enum_values bool

Whether to populate models with the value property of enums, rather than the raw enum. This may be useful if you want to serialize model.model_dump() later. Defaults to False.

validate_assignment bool

Whether to perform validation on assignment to attributes. Defaults to False.

arbitrary_types_allowed bool

Whether to allow arbitrary user types for fields (they are validated simply by checking if the value is an instance of the type). If False, RuntimeError will be raised on model declaration. Defaults to False.

See Arbitrary Types Allowed for details.

from_attributes bool

Whether to allow model creation from object attributes. Defaults to False.

Note

The name of this configuration setting was changed in v2.0 from orm_mode to from_attributes.

loc_by_alias bool

Whether to use the alias for error locs. Defaults to True.

alias_generator Callable[[str], str] | None

a callable that takes a field name and returns an alias for it.

See Alias Generator for details.

ignored_types tuple[type, ...]

A tuple of types that may occur as values of class attributes without annotations. This is typically used for custom descriptors (classes that behave like property). If an attribute is set on a class without an annotation and has a type that is not in this tuple (or otherwise recognized by pydantic), an error will be raised. Defaults to ().

allow_inf_nan bool

Whether to allow infinity (+inf an -inf) and NaN values to float fields. Defaults to True.

json_schema_extra dict[str, object] | JsonSchemaExtraCallable | None

A dict or callable to provide extra JSON schema properties. Defaults to None.

strict bool

If True, strict validation is applied to all fields on the model. See Strict Mode for details.

revalidate_instances Literal['always', 'never', 'subclass-instances']

When and how to revalidate models and dataclasses during validation. Accepts the string values of 'never', 'always' and 'subclass-instances'. Defaults to 'never'.

  • 'never' will not revalidate models and dataclasses during validation
  • 'always' will revalidate models and dataclasses during validation
  • 'subclass-instances' will revalidate models and dataclasses during validation if the instance is a subclass of the model or dataclass

See Revalidate Instances for details.

ser_json_timedelta Literal['iso8601', 'float']

The format of JSON serialized timedeltas. Accepts the string values of 'iso8601' and 'float'. Defaults to 'iso8601'.

  • 'iso8601' will serialize timedeltas to ISO 8601 durations.
  • 'float' will serialize timedeltas to the total number of seconds.
ser_json_bytes Literal['utf8', 'base64']

The encoding of JSON serialized bytes. Accepts the string values of 'utf8' and 'base64'. Defaults to 'utf8'.

  • 'utf8' will serialize bytes to UTF-8 strings.
  • 'base64' will serialize bytes to base64 strings.
validate_default bool

Whether to validate default values during validation. Defaults to False.

protected_namespaces tuple[str, ...]

A tuple of strings that prevent model to have field which conflict with them. Defaults to ('model_', )).

See Protected Namespaces for details.

hide_input_in_errors bool

Whether to hide inputs when printing errors. Defaults to False.

See Hide Input in Errors.