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,
|
||||
)
|
||||
|
||||
from pydantic import BaseModel as BaseModelV2
|
||||
from pydantic.v1 import BaseModel as BaseModelV1
|
||||
from sqlalchemy.orm import DeclarativeBase
|
||||
from typing_extensions import Self
|
||||
|
||||
@ -63,6 +61,13 @@ try:
|
||||
except ModuleNotFoundError:
|
||||
import pydantic
|
||||
|
||||
from pydantic import BaseModel as BaseModelV2
|
||||
|
||||
try:
|
||||
from pydantic.v1 import BaseModel as BaseModelV1
|
||||
except ModuleNotFoundError:
|
||||
BaseModelV1 = BaseModelV2
|
||||
|
||||
import wrapt
|
||||
from redis.asyncio import Redis
|
||||
from redis.exceptions import ResponseError
|
||||
|
@ -24,9 +24,6 @@ from typing import (
|
||||
overload,
|
||||
)
|
||||
|
||||
from pydantic import BaseModel as BaseModelV2
|
||||
from pydantic.v1 import BaseModel as BaseModelV1
|
||||
|
||||
from reflex.base import Base
|
||||
from reflex.constants.colors import Color, format_color
|
||||
from reflex.utils import types
|
||||
@ -269,24 +266,12 @@ def serialize_base(value: Base) -> dict:
|
||||
return {k: v for k, v in value.dict().items() if not callable(v)}
|
||||
|
||||
|
||||
@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()
|
||||
|
||||
|
||||
if BaseModelV2 is not BaseModelV1:
|
||||
try:
|
||||
from pydantic.v1 import BaseModel as BaseModelV1
|
||||
|
||||
@serializer(to=dict)
|
||||
def serialize_base_model_v2(model: BaseModelV2) -> dict:
|
||||
"""Serialize a pydantic v2 BaseModel instance.
|
||||
def serialize_base_model_v1(model: BaseModelV1) -> dict:
|
||||
"""Serialize a pydantic v1 BaseModel instance.
|
||||
|
||||
Args:
|
||||
model: The BaseModel to serialize.
|
||||
@ -294,7 +279,38 @@ if BaseModelV2 is not BaseModelV1:
|
||||
Returns:
|
||||
The serialized BaseModel.
|
||||
"""
|
||||
return model.model_dump()
|
||||
return model.dict()
|
||||
|
||||
from pydantic import BaseModel as BaseModelV2
|
||||
|
||||
if BaseModelV1 is not BaseModelV2:
|
||||
|
||||
@serializer(to=dict)
|
||||
def serialize_base_model_v2(model: BaseModelV2) -> dict:
|
||||
"""Serialize a pydantic v2 BaseModel instance.
|
||||
|
||||
Args:
|
||||
model: The BaseModel to serialize.
|
||||
|
||||
Returns:
|
||||
The serialized BaseModel.
|
||||
"""
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user