Skip to content

Config

Configuration for Pydantic models.

ConfigDict

Bases: TypedDict

Usage Documentation

Model Config

A TypedDict for configuring Pydantic behaviour.

title instance-attribute

title: str | None

The title for the generated JSON schema, defaults to the model's name

str_to_lower instance-attribute

str_to_lower: bool

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

str_to_upper instance-attribute

str_to_upper: bool

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

str_strip_whitespace instance-attribute

str_strip_whitespace: bool

Whether to strip leading and trailing whitespace for str types.

str_min_length instance-attribute

str_min_length: int

The minimum length for str types. Defaults to None.

str_max_length instance-attribute

str_max_length: int | None

The maximum length for str types. Defaults to None.

extra instance-attribute

extra: ExtraValues | None

Whether to ignore, allow, or forbid extra attributes during model initialization.

The value must be a ExtraValues string. Defaults to 'ignore'.

See Extra Attributes for details.

frozen instance-attribute

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 instance-attribute

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 instance-attribute

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.

from_attributes instance-attribute

from_attributes: bool

Whether to build models and look up discriminators of tagged unions using python object attributes.

loc_by_alias instance-attribute

loc_by_alias: bool

Whether to use the alias for error locs rather than the field's name. Defaults to True.

alias_generator instance-attribute

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 instance-attribute

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 instance-attribute

allow_inf_nan: bool

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

json_schema_extra instance-attribute

json_schema_extra: dict[
    str, object
] | JsonSchemaExtraCallable | None

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

json_encoders instance-attribute

json_encoders: dict[type[object], JsonEncoder] | None

A dict of custom JSON encoders for specific types. Defaults to None.

Deprecated

This config option is a carryover from v1. We originally planned to remove it in v2 but didn't have a 1:1 replacement so we are keeping it for now. It is still deprecated and will likely be removed in the future.

strict instance-attribute

strict: bool

(new in V2) If True, strict validation is applied to all fields on the model. See Strict Mode for details.

revalidate_instances instance-attribute

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 instance-attribute

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 instance-attribute

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 instance-attribute

validate_default: bool

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

validate_return instance-attribute

validate_return: bool

whether to validate the return value from call validators.

protected_namespaces instance-attribute

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 instance-attribute

hide_input_in_errors: bool

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

See Hide Input in Errors.

defer_build instance-attribute

defer_build: bool

Whether to defer model validator and serializer construction until the first model validation.

This can be useful to avoid the overhead of building models which are only used nested within other models, or when you want to manually define type namespace via Model.model_rebuild(_types_namespace=...). Defaults to False.

schema_generator instance-attribute

schema_generator: type[_GenerateSchema] | None

A custom core schema generator class to use when generating JSON schemas. Useful if you want to change the way types are validated across an entire model/schema.

The GenerateSchema interface is subject to change, currently only the string_schema method is public.

See #6737 for details.

Defaults to None.

ExtraValues module-attribute

ExtraValues = Literal['allow', 'ignore', 'forbid']

BaseConfig

This class is only retained for backwards compatibility.

Deprecated

BaseConfig is deprecated. Use the pydantic.ConfigDict instead.

pydantic.alias_generators

Alias generators for converting between different capitalization conventions.

to_pascal

to_pascal(snake)

Convert a snake_case string to PascalCase.

Parameters:

Name Type Description Default
snake str

The string to convert.

required

Returns:

Type Description
str

The PascalCase string.

Source code in pydantic/alias_generators.py
 7
 8
 9
10
11
12
13
14
15
16
17
def to_pascal(snake: str) -> str:
    """Convert a snake_case string to PascalCase.

    Args:
        snake: The string to convert.

    Returns:
        The PascalCase string.
    """
    camel = snake.title()
    return re.sub('([0-9A-Za-z])_(?=[0-9A-Z])', lambda m: m.group(1), camel)

to_camel

to_camel(snake)

Convert a snake_case string to camelCase.

Parameters:

Name Type Description Default
snake str

The string to convert.

required

Returns:

Type Description
str

The converted camelCase string.

Source code in pydantic/alias_generators.py
20
21
22
23
24
25
26
27
28
29
30
def to_camel(snake: str) -> str:
    """Convert a snake_case string to camelCase.

    Args:
        snake: The string to convert.

    Returns:
        The converted camelCase string.
    """
    camel = to_pascal(snake)
    return re.sub('(^_*[A-Z])', lambda m: m.group(1).lower(), camel)

to_snake

to_snake(camel)

Convert a PascalCase or camelCase string to snake_case.

Parameters:

Name Type Description Default
camel str

The string to convert.

required

Returns:

Type Description
str

The converted string in snake_case.

Source code in pydantic/alias_generators.py
33
34
35
36
37
38
39
40
41
42
43
44
def to_snake(camel: str) -> str:
    """Convert a PascalCase or camelCase string to snake_case.

    Args:
        camel: The string to convert.

    Returns:
        The converted string in snake_case.
    """
    snake = re.sub(r'([a-zA-Z])([0-9])', lambda m: f'{m.group(1)}_{m.group(2)}', camel)
    snake = re.sub(r'([a-z0-9])([A-Z])', lambda m: f'{m.group(1)}_{m.group(2)}', snake)
    return snake.lower()