From 1ce8a16e1cf1985f23d6ba1d1bc6c4a459b82326 Mon Sep 17 00:00:00 2001 From: Nuno Campos Date: Wed, 29 May 2024 07:14:07 -0700 Subject: [PATCH] Change pydantic detection --- langgraph/serde/jsonplus.py | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/langgraph/serde/jsonplus.py b/langgraph/serde/jsonplus.py index c6aa15184..e2e836689 100644 --- a/langgraph/serde/jsonplus.py +++ b/langgraph/serde/jsonplus.py @@ -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)):