This commit is contained in:
Iliyan Angelov
2025-12-01 06:50:10 +02:00
parent 91f51bc6fe
commit 62c1fe5951
4682 changed files with 544807 additions and 31208 deletions

View File

@@ -1,9 +1,14 @@
"""Pydantic-specific errors."""
from __future__ import annotations as _annotations
import re
from typing import Any, ClassVar, Literal
from typing_extensions import Literal, Self
from typing_extensions import Self
from typing_inspection.introspection import Qualifier
from pydantic._internal import _repr
from ._migration import getattr_migration
from .version import version_short
@@ -14,6 +19,7 @@ __all__ = (
'PydanticImportError',
'PydanticSchemaGenerationError',
'PydanticInvalidForJsonSchema',
'PydanticForbiddenQualifier',
'PydanticErrorCodes',
)
@@ -36,6 +42,7 @@ PydanticErrorCodes = Literal[
'model-field-missing-annotation',
'config-both',
'removed-kwargs',
'circular-reference-schema',
'invalid-for-json-schema',
'json-schema-already-used',
'base-model-instantiated',
@@ -43,10 +50,10 @@ PydanticErrorCodes = Literal[
'schema-for-unknown-type',
'import-error',
'create-model-field-definitions',
'create-model-config-base',
'validator-no-fields',
'validator-invalid-fields',
'validator-instance-method',
'validator-input-type',
'root-validator-pre-skip',
'model-serializer-instance-method',
'validator-field-config-info',
@@ -55,9 +62,20 @@ PydanticErrorCodes = Literal[
'field-serializer-signature',
'model-serializer-signature',
'multiple-field-serializers',
'invalid_annotated_type',
'invalid-annotated-type',
'type-adapter-config-unused',
'root-model-extra',
'unevaluable-type-annotation',
'dataclass-init-false-extra-allow',
'clashing-init-and-init-var',
'model-config-invalid-field-name',
'with-config-on-model',
'dataclass-on-model',
'validate-call-type',
'unpack-typed-dict',
'overlapping-unpack-typed-dict',
'invalid-self-type',
'validate-by-alias-and-name-false',
]
@@ -146,4 +164,26 @@ class PydanticInvalidForJsonSchema(PydanticUserError):
super().__init__(message, code='invalid-for-json-schema')
class PydanticForbiddenQualifier(PydanticUserError):
"""An error raised if a forbidden type qualifier is found in a type annotation."""
_qualifier_repr_map: ClassVar[dict[Qualifier, str]] = {
'required': 'typing.Required',
'not_required': 'typing.NotRequired',
'read_only': 'typing.ReadOnly',
'class_var': 'typing.ClassVar',
'init_var': 'dataclasses.InitVar',
'final': 'typing.Final',
}
def __init__(self, qualifier: Qualifier, annotation: Any) -> None:
super().__init__(
message=(
f'The annotation {_repr.display_as_type(annotation)!r} contains the {self._qualifier_repr_map[qualifier]!r} '
f'type qualifier, which is invalid in the context it is defined.'
),
code=None,
)
__getattr__ = getattr_migration(__name__)