diff --git a/libs/checkpoint/langgraph/checkpoint/serde/jsonplus.py b/libs/checkpoint/langgraph/checkpoint/serde/jsonplus.py index eb1d5dce5..f9362089b 100644 --- a/libs/checkpoint/langgraph/checkpoint/serde/jsonplus.py +++ b/libs/checkpoint/langgraph/checkpoint/serde/jsonplus.py @@ -47,6 +47,11 @@ EMPTY_BYTES = b"" logger = logging.getLogger(__name__) +def _is_diff_delta(obj: Any) -> bool: + from langgraph.checkpoint.base import DiffDelta # lazy import avoids circular dep + return isinstance(obj, DiffDelta) + + class JsonPlusSerializer(SerializerProtocol): """Serializer that uses ormsgpack, with optional fallbacks. @@ -239,11 +244,7 @@ class JsonPlusSerializer(SerializerProtocol): return "bytes", obj elif isinstance(obj, bytearray): return "bytearray", obj - elif ( - type(obj).__name__ == "DiffDelta" - and hasattr(obj, "delta") - and hasattr(obj, "prev_version") - ): + elif _is_diff_delta(obj): return "diff", _msgpack_enc({"d": obj.delta, "p": obj.prev_version}) else: try: