Skip to content
You're viewing docs for v2.4. See the latest version →

Functional Serializers

This module contains related classes and functions for serialization.

PydanticUndefinedAnnotation

Bases: PydanticErrorMixin, NameError

A subclass of NameError raised when handling undefined annotations during CoreSchema generation.

Attributes

name

Default: name

Methods

from_name_error

@classmethod

def from_name_error(cls, name_error: NameError) -> Self

Convert a NameError to a PydanticUndefinedAnnotation error.

Returns

Self — Converted PydanticUndefinedAnnotation error.

Parameters

name_error : NameError

NameError to be converted.


GetCoreSchemaHandler

Handler to call into the next CoreSchema schema generation function.

Attributes

field_name

Get the name of the closest field to this validator.

Type: str | None

Methods

call

def __call__(__source_type: Any) -> core_schema.CoreSchema

Call the inner handler and get the CoreSchema it returns. This will call the next CoreSchema modifying function up until it calls into Pydantic’s internal schema generation machinery, which will raise a pydantic.errors.PydanticSchemaGenerationError error if it cannot generate a CoreSchema for the given source type.

Returns

core_schema.CoreSchema — The pydantic-core CoreSchema generated.

Parameters

__source_type : Any

The input type.

generate_schema

def generate_schema(__source_type: Any) -> core_schema.CoreSchema

Generate a schema unrelated to the current context. Use this function if e.g. you are handling schema generation for a sequence and want to generate a schema for its items. Otherwise, you may end up doing something like applying a min_length constraint that was intended for the sequence itself to its items!

Returns

core_schema.CoreSchema — The pydantic-core CoreSchema generated.

Parameters

__source_type : Any

The input type.

resolve_ref_schema

def resolve_ref_schema(
    __maybe_ref_schema: core_schema.CoreSchema,
) -> core_schema.CoreSchema

Get the real schema for a definition-ref schema. If the schema given is not a definition-ref schema, it will be returned as is. This means you don’t have to check before calling this function.

Returns

core_schema.CoreSchema — A concrete CoreSchema.

Parameters

__maybe_ref_schema : core_schema.CoreSchema

A CoreSchema, ref-based or not.

Raises
  • LookupError — If the ref is not found.

PlainSerializer

Plain serializers use a function to modify the output of serialization.

Attributes

func

Type: core_schema.SerializerFunction

return_type

Type: Any Default: PydanticUndefined

when_used

Type: Literal['always', 'unless-none', 'json', 'json-unless-none'] Default: 'always'

Methods

get_pydantic_core_schema

def __get_pydantic_core_schema__(
    source_type: Any,
    handler: GetCoreSchemaHandler,
) -> core_schema.CoreSchema

Gets the Pydantic core schema.

Returns

core_schema.CoreSchema — The Pydantic core schema.

Parameters

source_type : Any

The source type.

handler : GetCoreSchemaHandler

The GetCoreSchemaHandler instance.


WrapSerializer

Wrap serializers receive the raw inputs along with a handler function that applies the standard serialization logic, and can modify the resulting value before returning it as the final output of serialization.

Attributes

func

Type: core_schema.WrapSerializerFunction

return_type

Type: Any Default: PydanticUndefined

when_used

Type: Literal['always', 'unless-none', 'json', 'json-unless-none'] Default: 'always'

Methods

get_pydantic_core_schema

def __get_pydantic_core_schema__(
    source_type: Any,
    handler: GetCoreSchemaHandler,
) -> core_schema.CoreSchema

This method is used to get the Pydantic core schema of the class.

Returns

core_schema.CoreSchema — The generated core schema of the class.

Parameters

source_type : Any

Source type.

handler : GetCoreSchemaHandler

Core schema handler.


SerializeAsAny


field_serializer

def field_serializer(
    __field: str,
    fields: str = (),
    return_type: Any = ...,
    when_used: Literal['always', 'unless-none', 'json', 'json-unless-none'] = ...,
    check_fields: bool | None = ...,
) -> Callable[[_PlainSerializeMethodType], _PlainSerializeMethodType]
def field_serializer(
    __field: str,
    fields: str = (),
    mode: Literal['plain'],
    return_type: Any = ...,
    when_used: Literal['always', 'unless-none', 'json', 'json-unless-none'] = ...,
    check_fields: bool | None = ...,
) -> Callable[[_PlainSerializeMethodType], _PlainSerializeMethodType]
def field_serializer(
    __field: str,
    fields: str = (),
    mode: Literal['wrap'],
    return_type: Any = ...,
    when_used: Literal['always', 'unless-none', 'json', 'json-unless-none'] = ...,
    check_fields: bool | None = ...,
) -> Callable[[_WrapSerializeMethodType], _WrapSerializeMethodType]

Decorator that enables custom field serialization.

See Custom serializers for more information.

Four signatures are supported:

  • (self, value: Any, info: FieldSerializationInfo)
  • (self, value: Any, nxt: SerializerFunctionWrapHandler, info: FieldSerializationInfo)
  • (value: Any, info: SerializationInfo)
  • (value: Any, nxt: SerializerFunctionWrapHandler, info: SerializationInfo)

Returns

Callable[[Any], Any] — The decorator function.

Parameters

fields : str Default: ()

Which field(s) the method should be called on.

mode : Literal['plain', 'wrap'] Default: 'plain'

The serialization mode.

  • plain means the function will be called instead of the default serialization logic,
  • wrap means the function will be called with an argument to optionally call the default serialization logic.

return_type : Any Default: PydanticUndefined

Optional return type for the function, if omitted it will be inferred from the type annotation.

when_used : Literal['always', 'unless-none', 'json', 'json-unless-none'] Default: 'always'

Determines the serializer will be used for serialization.

check_fields : bool | None Default: None

Whether to check that the fields actually exist on the model.


model_serializer

def model_serializer(__f: FuncType) -> FuncType
def model_serializer(
    mode: Literal['plain', 'wrap'] = ...,
    when_used: Literal['always', 'unless-none', 'json', 'json-unless-none'] = 'always',
    return_type: Any = ...,
) -> Callable[[FuncType], FuncType]

Decorator that enables custom model serialization.

See Custom serializers for more information.

Returns

Callable[[Any], Any] — The decorator function.

Parameters

__f : Callable[..., Any] | None Default: None

The function to be decorated.

mode : Literal['plain', 'wrap'] Default: 'plain'

The serialization mode.

  • 'plain' means the function will be called instead of the default serialization logic
  • 'wrap' means the function will be called with an argument to optionally call the default serialization logic.

when_used : Literal['always', 'unless-none', 'json', 'json-unless-none'] Default: 'always'

Determines when this serializer should be used.

return_type : Any Default: PydanticUndefined

The return type for the function. If omitted it will be inferred from the type annotation.


FuncType

Default: TypeVar('FuncType', bound=(Callable[..., Any]))

AnyType

Default: TypeVar('AnyType')