From 69a1c16e823487a5e110d31dfca7cfea0435a55b Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Fri, 8 Nov 2024 22:23:01 -0300 Subject: [PATCH] fix: serialize BaseModel subclasses and avoid calling methods on types (#4479) Fix serialization for BaseModel subclasses by handling type objects separately --- src/backend/base/langflow/schema/serialize.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/backend/base/langflow/schema/serialize.py b/src/backend/base/langflow/schema/serialize.py index d2ed1790ab88..345b4591410a 100644 --- a/src/backend/base/langflow/schema/serialize.py +++ b/src/backend/base/langflow/schema/serialize.py @@ -8,6 +8,9 @@ def recursive_serialize_or_str(obj): try: + if isinstance(obj, type) and issubclass(obj, BaseModel): + # This a type BaseModel and not an instance of it + return repr(obj) if isinstance(obj, str): return obj if isinstance(obj, datetime): @@ -30,13 +33,10 @@ def recursive_serialize_or_str(obj): # return f"{obj}" this generates '' # it is not useful return "Unconsumed Stream" - if hasattr(obj, "dict"): + if hasattr(obj, "dict") and not isinstance(obj, type): return {k: recursive_serialize_or_str(v) for k, v in obj.dict().items()} - if hasattr(obj, "model_dump"): + if hasattr(obj, "model_dump") and not isinstance(obj, type): return {k: recursive_serialize_or_str(v) for k, v in obj.model_dump().items()} - if isinstance(obj, type) and issubclass(obj, BaseModel): - # This a type BaseModel and not an instance of it - return repr(obj) return str(obj) except Exception: # noqa: BLE001 logger.debug(f"Cannot serialize object {obj}")