From 8b334223fd414a3d340fbe08c61b4af32c8e18da Mon Sep 17 00:00:00 2001 From: haoming9245 Date: Mon, 14 Aug 2023 15:25:48 +0800 Subject: [PATCH] replace --- sqlmodel/main.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/sqlmodel/main.py b/sqlmodel/main.py index 5b5950a811..e7feb95ebc 100644 --- a/sqlmodel/main.py +++ b/sqlmodel/main.py @@ -24,14 +24,15 @@ cast, ) +from fastapi._compat import ModelField, UndefinedType +from jinja2 import Undefined from pydantic import BaseConfig, BaseModel from pydantic.errors import ConfigError, DictError -from pydantic.fields import SHAPE_SINGLETON from pydantic.fields import FieldInfo as PydanticFieldInfo -from pydantic.fields import ModelField, Undefined, UndefinedType from pydantic.main import ModelMetaclass, validate_model from pydantic.typing import NoArgAnyCallable, resolve_annotations from pydantic.utils import ROOT_KEY, Representation +from pydantic.v1.fields import SHAPE_SINGLETON from sqlalchemy import Boolean, Column, Date, DateTime from sqlalchemy import Enum as sa_Enum from sqlalchemy import Float, ForeignKey, Integer, Interval, Numeric, inspect @@ -573,7 +574,7 @@ def parse_obj( if update is not None: obj = {**obj, **update} # End SQLModel support dict - return super().parse_obj(obj) + return super().model_validate(obj) def __repr_args__(self) -> Sequence[Tuple[Optional[str], Any]]: # Don't show SQLAlchemy private attributes @@ -583,7 +584,7 @@ def __repr_args__(self) -> Sequence[Tuple[Optional[str], Any]]: @classmethod def validate(cls: Type[_TSQLModel], value: Any) -> _TSQLModel: if isinstance(value, cls): - return value.copy() if cls.__config__.copy_on_model_validation else value + return value.model_copy() if cls.__config__.copy_on_model_validation else value value = cls._enforce_dict_if_root(value) if isinstance(value, dict): @@ -619,18 +620,18 @@ def _calculate_keys( # Updated to not return SQLAlchemy attributes # Do not include relationships as that would easily lead to infinite # recursion, or traversing the whole database - return self.__fields__.keys() # | self.__sqlmodel_relationships__.keys() + return self.model_fields.keys() # | self.__sqlmodel_relationships__.keys() keys: AbstractSet[str] if exclude_unset: - keys = self.__fields_set__.copy() + keys = self.model_fields_set.copy() else: # Original in Pydantic: # keys = self.__dict__.keys() # Updated to not return SQLAlchemy attributes # Do not include relationships as that would easily lead to infinite # recursion, or traversing the whole database - keys = self.__fields__.keys() # | self.__sqlmodel_relationships__.keys() + keys = self.model_fields.keys() # | self.__sqlmodel_relationships__.keys() if include is not None: keys &= include.keys()