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()}