| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- """Type annotations to use with `__get_pydantic_core_schema__` and `__get_pydantic_json_schema__`."""
- from __future__ import annotations as _annotations
- from typing import TYPE_CHECKING, Any, Union
- from pydantic_core import core_schema
- if TYPE_CHECKING:
- from ._internal._namespace_utils import NamespacesTuple
- from .json_schema import JsonSchemaMode, JsonSchemaValue
- CoreSchemaOrField = Union[
- core_schema.CoreSchema,
- core_schema.ModelField,
- core_schema.DataclassField,
- core_schema.TypedDictField,
- core_schema.ComputedField,
- ]
- __all__ = 'GetJsonSchemaHandler', 'GetCoreSchemaHandler'
- class GetJsonSchemaHandler:
- """Handler to call into the next JSON schema generation function.
- Attributes:
- mode: Json schema mode, can be `validation` or `serialization`.
- """
- mode: JsonSchemaMode
- def __call__(self, core_schema: CoreSchemaOrField, /) -> JsonSchemaValue:
- """Call the inner handler and get the JsonSchemaValue it returns.
- This will call the next JSON schema modifying function up until it calls
- into `pydantic.json_schema.GenerateJsonSchema`, which will raise a
- `pydantic.errors.PydanticInvalidForJsonSchema` error if it cannot generate
- a JSON schema.
- Args:
- core_schema: A `pydantic_core.core_schema.CoreSchema`.
- Returns:
- JsonSchemaValue: The JSON schema generated by the inner JSON schema modify
- functions.
- """
- raise NotImplementedError
- def resolve_ref_schema(self, maybe_ref_json_schema: JsonSchemaValue, /) -> JsonSchemaValue:
- """Get the real schema for a `{"$ref": ...}` schema.
- If the schema given is not a `$ref` schema, it will be returned as is.
- This means you don't have to check before calling this function.
- Args:
- maybe_ref_json_schema: A JsonSchemaValue which may be a `$ref` schema.
- Raises:
- LookupError: If the ref is not found.
- Returns:
- JsonSchemaValue: A JsonSchemaValue that has no `$ref`.
- """
- raise NotImplementedError
- class GetCoreSchemaHandler:
- """Handler to call into the next CoreSchema schema generation function."""
- def __call__(self, 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.
- Args:
- source_type: The input type.
- Returns:
- CoreSchema: The `pydantic-core` CoreSchema generated.
- """
- raise NotImplementedError
- def generate_schema(self, 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!
- Args:
- source_type: The input type.
- Returns:
- CoreSchema: The `pydantic-core` CoreSchema generated.
- """
- raise NotImplementedError
- def resolve_ref_schema(self, 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.
- Args:
- maybe_ref_schema: A `CoreSchema`, `ref`-based or not.
- Raises:
- LookupError: If the `ref` is not found.
- Returns:
- A concrete `CoreSchema`.
- """
- raise NotImplementedError
- @property
- def field_name(self) -> str | None:
- """Get the name of the closest field to this validator."""
- raise NotImplementedError
- def _get_types_namespace(self) -> NamespacesTuple:
- """Internal method used during type resolution for serializer annotations."""
- raise NotImplementedError
|