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

pydantic.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.


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: _annotated_handlers.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 : _annotated_handlers.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: _annotated_handlers.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 : _annotated_handlers.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')