This commit is contained in:
Iliyan Angelov
2025-12-06 03:27:35 +02:00
parent 7667eb5eda
commit 5a8ca3c475
2211 changed files with 28086 additions and 37066 deletions

View File

@@ -26,11 +26,11 @@ from typing import (
from typing_extensions import dataclass_transform
from pydantic.v1.class_validators import ValidatorGroup, extract_root_validators, extract_validators, inherit_validators
from pydantic.v1.config import BaseConfig, Extra, inherit_config, prepare_config
from pydantic.v1.error_wrappers import ErrorWrapper, ValidationError
from pydantic.v1.errors import ConfigError, DictError, ExtraError, MissingError
from pydantic.v1.fields import (
from .class_validators import ValidatorGroup, extract_root_validators, extract_validators, inherit_validators
from .config import BaseConfig, Extra, inherit_config, prepare_config
from .error_wrappers import ErrorWrapper, ValidationError
from .errors import ConfigError, DictError, ExtraError, MissingError
from .fields import (
MAPPING_LIKE_SHAPES,
Field,
ModelField,
@@ -39,11 +39,11 @@ from pydantic.v1.fields import (
Undefined,
is_finalvar_with_default_val,
)
from pydantic.v1.json import custom_pydantic_encoder, pydantic_encoder
from pydantic.v1.parse import Protocol, load_file, load_str_bytes
from pydantic.v1.schema import default_ref_template, model_schema
from pydantic.v1.types import PyObject, StrBytes
from pydantic.v1.typing import (
from .json import custom_pydantic_encoder, pydantic_encoder
from .parse import Protocol, load_file, load_str_bytes
from .schema import default_ref_template, model_schema
from .types import PyObject, StrBytes
from .typing import (
AnyCallable,
get_args,
get_origin,
@@ -53,7 +53,7 @@ from pydantic.v1.typing import (
resolve_annotations,
update_model_forward_refs,
)
from pydantic.v1.utils import (
from .utils import (
DUNDER_ATTRIBUTES,
ROOT_KEY,
ClassAttribute,
@@ -73,9 +73,9 @@ from pydantic.v1.utils import (
if TYPE_CHECKING:
from inspect import Signature
from pydantic.v1.class_validators import ValidatorListDict
from pydantic.v1.types import ModelOrDc
from pydantic.v1.typing import (
from .class_validators import ValidatorListDict
from .types import ModelOrDc
from .typing import (
AbstractSetIntStr,
AnyClassMethod,
CallableGenerator,
@@ -282,12 +282,6 @@ class ModelMetaclass(ABCMeta):
cls = super().__new__(mcs, name, bases, new_namespace, **kwargs)
# set __signature__ attr only for model class, but not for its instances
cls.__signature__ = ClassAttribute('__signature__', generate_model_signature(cls.__init__, fields, config))
if not _is_base_model_class_defined:
# Cython does not understand the `if TYPE_CHECKING:` condition in the
# BaseModel's body (where annotations are set), so clear them manually:
getattr(cls, '__annotations__', {}).clear()
if resolve_forward_refs:
cls.__try_update_forward_refs__()
@@ -307,7 +301,7 @@ class ModelMetaclass(ABCMeta):
See #3829 and python/cpython#92810
"""
return hasattr(instance, '__post_root_validators__') and super().__instancecheck__(instance)
return hasattr(instance, '__fields__') and super().__instancecheck__(instance)
object_setattr = object.__setattr__
@@ -675,7 +669,7 @@ class BaseModel(Representation, metaclass=ModelMetaclass):
def schema_json(
cls, *, by_alias: bool = True, ref_template: str = default_ref_template, **dumps_kwargs: Any
) -> str:
from pydantic.v1.json import pydantic_encoder
from .json import pydantic_encoder
return cls.__config__.json_dumps(
cls.schema(by_alias=by_alias, ref_template=ref_template), default=pydantic_encoder, **dumps_kwargs
@@ -743,6 +737,7 @@ class BaseModel(Representation, metaclass=ModelMetaclass):
exclude_defaults: bool,
exclude_none: bool,
) -> Any:
if isinstance(v, BaseModel):
if to_dict:
v_dict = v.dict(
@@ -835,6 +830,7 @@ class BaseModel(Representation, metaclass=ModelMetaclass):
exclude_defaults: bool = False,
exclude_none: bool = False,
) -> 'TupleGenerator':
# Merge field set excludes with explicit exclude parameter with explicit overriding field set options.
# The extra "is not None" guards are not logically necessary but optimizes performance for the simple case.
if exclude is not None or self.__exclude_fields__ is not None: