From ee37ce04ef25b4b005f282e11522b2a67217cc1f Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Sat, 30 Nov 2024 15:15:03 -0300 Subject: [PATCH] fix: Handle DataFrame serialization and export in langflow.io (#4956) --- src/backend/base/langflow/io/__init__.py | 2 ++ src/backend/base/langflow/schema/schema.py | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/backend/base/langflow/io/__init__.py b/src/backend/base/langflow/io/__init__.py index 6a9bf3fae..10a4b4225 100644 --- a/src/backend/base/langflow/io/__init__.py +++ b/src/backend/base/langflow/io/__init__.py @@ -1,6 +1,7 @@ from langflow.inputs import ( BoolInput, CodeInput, + DataFrameInput, DataInput, DefaultPromptField, DictInput, @@ -50,4 +51,5 @@ __all__ = [ "SliderInput", "StrInput", "TableInput", + "DataFrameInput", ] diff --git a/src/backend/base/langflow/schema/schema.py b/src/backend/base/langflow/schema/schema.py index 875200655..a991b8f20 100644 --- a/src/backend/base/langflow/schema/schema.py +++ b/src/backend/base/langflow/schema/schema.py @@ -6,6 +6,7 @@ from pydantic import BaseModel from typing_extensions import TypedDict from langflow.schema.data import Data +from langflow.schema.dataframe import DataFrame from langflow.schema.message import Message from langflow.schema.serialize import recursive_serialize_or_str @@ -51,7 +52,7 @@ def get_type(payload): case dict(): result = LogType.OBJECT - case list(): + case list() | DataFrame(): result = LogType.ARRAY case str(): @@ -107,6 +108,8 @@ def build_output_logs(vertex, result) -> dict: message = "" case LogType.ARRAY: + if isinstance(message, DataFrame): + message = message.to_dict(orient="records") message = [recursive_serialize_or_str(item) for item in message] name = output.get("name", f"output_{index}") outputs |= {name: OutputValue(message=message, type=_type).model_dump()}