Conditionally import BaseModel to handle older pydantic v1 versions
This commit is contained in:
parent
e2c6f6983b
commit
18659d0a20
@ -39,8 +39,6 @@ from typing import (
|
|||||||
get_type_hints,
|
get_type_hints,
|
||||||
)
|
)
|
||||||
|
|
||||||
from pydantic import BaseModel as BaseModelV2
|
|
||||||
from pydantic.v1 import BaseModel as BaseModelV1
|
|
||||||
from sqlalchemy.orm import DeclarativeBase
|
from sqlalchemy.orm import DeclarativeBase
|
||||||
from typing_extensions import Self
|
from typing_extensions import Self
|
||||||
|
|
||||||
@ -63,6 +61,13 @@ try:
|
|||||||
except ModuleNotFoundError:
|
except ModuleNotFoundError:
|
||||||
import pydantic
|
import pydantic
|
||||||
|
|
||||||
|
from pydantic import BaseModel as BaseModelV2
|
||||||
|
|
||||||
|
try:
|
||||||
|
from pydantic.v1 import BaseModel as BaseModelV1
|
||||||
|
except ModuleNotFoundError:
|
||||||
|
BaseModelV1 = BaseModelV2
|
||||||
|
|
||||||
import wrapt
|
import wrapt
|
||||||
from redis.asyncio import Redis
|
from redis.asyncio import Redis
|
||||||
from redis.exceptions import ResponseError
|
from redis.exceptions import ResponseError
|
||||||
|
@ -24,9 +24,6 @@ from typing import (
|
|||||||
overload,
|
overload,
|
||||||
)
|
)
|
||||||
|
|
||||||
from pydantic import BaseModel as BaseModelV2
|
|
||||||
from pydantic.v1 import BaseModel as BaseModelV1
|
|
||||||
|
|
||||||
from reflex.base import Base
|
from reflex.base import Base
|
||||||
from reflex.constants.colors import Color, format_color
|
from reflex.constants.colors import Color, format_color
|
||||||
from reflex.utils import types
|
from reflex.utils import types
|
||||||
@ -269,6 +266,9 @@ def serialize_base(value: Base) -> dict:
|
|||||||
return {k: v for k, v in value.dict().items() if not callable(v)}
|
return {k: v for k, v in value.dict().items() if not callable(v)}
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
from pydantic.v1 import BaseModel as BaseModelV1
|
||||||
|
|
||||||
@serializer(to=dict)
|
@serializer(to=dict)
|
||||||
def serialize_base_model_v1(model: BaseModelV1) -> dict:
|
def serialize_base_model_v1(model: BaseModelV1) -> dict:
|
||||||
"""Serialize a pydantic v1 BaseModel instance.
|
"""Serialize a pydantic v1 BaseModel instance.
|
||||||
@ -281,8 +281,9 @@ def serialize_base_model_v1(model: BaseModelV1) -> dict:
|
|||||||
"""
|
"""
|
||||||
return model.dict()
|
return model.dict()
|
||||||
|
|
||||||
|
from pydantic import BaseModel as BaseModelV2
|
||||||
|
|
||||||
if BaseModelV2 is not BaseModelV1:
|
if BaseModelV1 is not BaseModelV2:
|
||||||
|
|
||||||
@serializer(to=dict)
|
@serializer(to=dict)
|
||||||
def serialize_base_model_v2(model: BaseModelV2) -> dict:
|
def serialize_base_model_v2(model: BaseModelV2) -> dict:
|
||||||
@ -295,6 +296,21 @@ if BaseModelV2 is not BaseModelV1:
|
|||||||
The serialized BaseModel.
|
The serialized BaseModel.
|
||||||
"""
|
"""
|
||||||
return model.model_dump()
|
return model.model_dump()
|
||||||
|
except ImportError:
|
||||||
|
# Older pydantic v1 import
|
||||||
|
from pydantic import BaseModel as BaseModelV1
|
||||||
|
|
||||||
|
@serializer(to=dict)
|
||||||
|
def serialize_base_model_v1(model: BaseModelV1) -> dict:
|
||||||
|
"""Serialize a pydantic v1 BaseModel instance.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
model: The BaseModel to serialize.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
The serialized BaseModel.
|
||||||
|
"""
|
||||||
|
return model.dict()
|
||||||
|
|
||||||
|
|
||||||
@serializer
|
@serializer
|
||||||
|
Loading…
Reference in New Issue
Block a user