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)):