Change pydantic detection

This commit is contained in:
Nuno Campos
2024-05-29 07:14:07 -07:00
parent 53e7fab49f
commit 1ce8a16e1c
+4 -10
View File
@@ -8,8 +8,6 @@ from uuid import UUID
from langchain_core.load.load import Reviver
from langchain_core.load.serializable import Serializable
from langchain_core.pydantic_v1 import BaseModel as LcBaseModel
from pydantic import BaseModel
from langgraph.serde.base import SerializerProtocol
@@ -37,14 +35,10 @@ class JsonPlusSerializer(SerializerProtocol):
def _default(self, obj):
if isinstance(obj, Serializable):
return obj.to_json()
elif isinstance(obj, (BaseModel, LcBaseModel)):
# prefer non-deprecated method if available
if hasattr(obj, "model_dump"):
return self._encode_constructor_args(
obj.__class__, kwargs=obj.model_dump()
)
else:
return self._encode_constructor_args(obj.__class__, kwargs=obj.dict())
elif hasattr(obj, "model_dump") and callable(obj.model_dump):
return self._encode_constructor_args(obj.__class__, kwargs=obj.model_dump())
elif hasattr(obj, "dict") and callable(obj.dict):
return self._encode_constructor_args(obj.__class__, kwargs=obj.dict())
elif isinstance(obj, UUID):
return self._encode_constructor_args(UUID, args=[obj.hex])
elif isinstance(obj, (set, frozenset)):