fix: Remove dataframe function (#8251)

remove dataframe function
This commit is contained in:
Yuqi Tang 2025-05-28 14:21:05 -07:00 committed by GitHub
commit e7e186a2ac
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
20 changed files with 22 additions and 47 deletions

View file

@ -5,7 +5,6 @@ from xml.etree.ElementTree import Element
from defusedxml.ElementTree import fromstring
from langflow.custom import Component
from langflow.helpers.data import data_to_dataframe
from langflow.io import DropdownInput, IntInput, MessageTextInput, Output
from langflow.schema import Data, DataFrame
@ -160,4 +159,4 @@ class ArXivComponent(Component):
DataFrame: A DataFrame containing the search results.
"""
data = self.search_papers()
return data_to_dataframe(data)
return DataFrame(data)

View file

@ -5,7 +5,6 @@ from langchain_community.utilities import BingSearchAPIWrapper
from langflow.base.langchain_utilities.model import LCToolComponent
from langflow.field_typing import Tool
from langflow.helpers.data import data_to_dataframe
from langflow.inputs import IntInput, MessageTextInput, MultilineInput, SecretStrInput
from langflow.io import Output
from langflow.schema import Data, DataFrame
@ -49,7 +48,7 @@ class BingSearchAPIComponent(LCToolComponent):
def fetch_content_dataframe(self) -> DataFrame:
data = self.fetch_content()
return data_to_dataframe(data)
return DataFrame(data)
def build_tool(self) -> Tool:
if self.bing_search_url:

View file

@ -1,7 +1,6 @@
from langchain_community.tools import DuckDuckGoSearchRun
from langflow.custom import Component
from langflow.helpers.data import data_to_dataframe
from langflow.inputs import IntInput, MessageTextInput
from langflow.io import Output
from langflow.schema import Data, DataFrame
@ -89,4 +88,4 @@ class DuckDuckGoSearchComponent(Component):
DataFrame: A DataFrame containing the search results.
"""
data = self.fetch_content()
return data_to_dataframe(data)
return DataFrame(data)

View file

@ -9,7 +9,6 @@ from pydantic.v1 import Field
from langflow.base.langchain_utilities.model import LCToolComponent
from langflow.field_typing import Tool
from langflow.helpers.data import data_to_dataframe
from langflow.inputs import IntInput, MultilineInput, NestedDictInput, SecretStrInput, StrInput
from langflow.io import Output
from langflow.schema import Data, DataFrame
@ -170,4 +169,4 @@ class GleanSearchAPIComponent(LCToolComponent):
DataFrame: A DataFrame containing the search results.
"""
data = self.fetch_content()
return data_to_dataframe(data)
return DataFrame(data)

View file

@ -3,7 +3,6 @@ from typing import Any
from langchain_community.utilities.searchapi import SearchApiAPIWrapper
from langflow.custom import Component
from langflow.helpers.data import data_to_dataframe
from langflow.inputs import DictInput, DropdownInput, IntInput, MultilineInput, SecretStrInput
from langflow.io import Output
from langflow.schema import Data, DataFrame
@ -76,4 +75,4 @@ class SearchComponent(Component):
DataFrame: A DataFrame containing the search results.
"""
data = self.fetch_content()
return data_to_dataframe(data)
return DataFrame(data)

View file

@ -3,7 +3,6 @@ from httpx import HTTPError
from langchain_core.tools import ToolException
from langflow.custom import Component
from langflow.helpers.data import data_to_dataframe
from langflow.io import MultilineInput, Output
from langflow.schema import Data, DataFrame
@ -82,4 +81,4 @@ class WikidataComponent(Component):
def fetch_content_dataframe(self) -> DataFrame:
data = self.fetch_content()
return data_to_dataframe(data)
return DataFrame(data)

View file

@ -1,7 +1,6 @@
from langchain_community.utilities.wikipedia import WikipediaAPIWrapper
from langflow.custom import Component
from langflow.helpers.data import data_to_dataframe
from langflow.inputs import BoolInput, IntInput, MessageTextInput, MultilineInput
from langflow.io import Output
from langflow.schema import Data, DataFrame
@ -50,4 +49,4 @@ class WikipediaComponent(Component):
def fetch_content_dataframe(self) -> DataFrame:
data = self.fetch_content()
return data_to_dataframe(data)
return DataFrame(data)

View file

@ -2,7 +2,6 @@ from langchain_community.utilities.wolfram_alpha import WolframAlphaAPIWrapper
from langflow.base.langchain_utilities.model import LCToolComponent
from langflow.field_typing import Tool
from langflow.helpers.data import data_to_dataframe
from langflow.inputs import MultilineInput, SecretStrInput
from langflow.io import Output
from langflow.schema import Data, DataFrame
@ -51,4 +50,4 @@ topics, delivering structured responses."""
DataFrame: A DataFrame containing the query results.
"""
data = self.fetch_content()
return data_to_dataframe(data)
return DataFrame(data)

View file

@ -8,7 +8,6 @@ from loguru import logger
from pydantic import BaseModel, Field
from langflow.custom import Component
from langflow.helpers.data import data_to_dataframe
from langflow.inputs import DropdownInput, IntInput, MessageTextInput
from langflow.io import Output
from langflow.schema import Data, DataFrame
@ -134,4 +133,4 @@ to access financial data and market information from Yahoo Finance."""
def fetch_content_dataframe(self) -> DataFrame:
data = self.fetch_content()
return data_to_dataframe(data)
return DataFrame(data)

View file

@ -2,7 +2,6 @@ import httpx
from loguru import logger
from langflow.custom import Component
from langflow.helpers.data import data_to_dataframe
from langflow.io import BoolInput, DropdownInput, MessageTextInput, Output, SecretStrInput
from langflow.schema import Data
from langflow.schema.dataframe import DataFrame
@ -115,4 +114,4 @@ class TavilyExtractComponent(Component):
def fetch_content_dataframe(self) -> DataFrame:
data = self.fetch_content()
return data_to_dataframe(data)
return DataFrame(data)

View file

@ -2,7 +2,6 @@ import httpx
from loguru import logger
from langflow.custom import Component
from langflow.helpers.data import data_to_dataframe
from langflow.io import BoolInput, DropdownInput, IntInput, MessageTextInput, Output, SecretStrInput
from langflow.schema import Data
from langflow.schema.dataframe import DataFrame
@ -209,4 +208,4 @@ class TavilySearchComponent(Component):
def fetch_content_dataframe(self) -> DataFrame:
data = self.fetch_content()
return data_to_dataframe(data)
return DataFrame(data)

View file

@ -2,7 +2,7 @@ from collections import defaultdict
from langchain_core.documents import Document
from langflow.schema import Data, DataFrame
from langflow.schema import Data
from langflow.schema.message import Message
@ -139,17 +139,3 @@ def messages_to_text(template: str, messages: Message | list[Message]) -> str:
formated_messages = [template.format(data=message.model_dump(), **message.model_dump()) for message in messages_]
return "\n".join(formated_messages)
def data_to_dataframe(data: Data | list[Data]) -> DataFrame:
"""Converts a Data object or a list of Data objects to a DataFrame.
Args:
data (Data | list[Data]): The Data object or list of Data objects to convert.
Returns:
DataFrame: The converted DataFrame.
"""
if isinstance(data, Data):
return DataFrame([data.data])
return DataFrame(data=[d.data for d in data])

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1462,7 +1462,7 @@
"show": true,
"title_case": false,
"type": "code",
"value": "from typing import Any\n\nfrom langchain_community.utilities.searchapi import SearchApiAPIWrapper\n\nfrom langflow.custom import Component\nfrom langflow.helpers.data import data_to_dataframe\nfrom langflow.inputs import DictInput, DropdownInput, IntInput, MultilineInput, SecretStrInput\nfrom langflow.io import Output\nfrom langflow.schema import Data, DataFrame\n\n\nclass SearchComponent(Component):\n display_name: str = \"Search API\"\n description: str = \"Call the searchapi.io API with result limiting\"\n documentation: str = \"https://www.searchapi.io/docs/google\"\n icon = \"SearchAPI\"\n\n inputs = [\n DropdownInput(name=\"engine\", display_name=\"Engine\", value=\"google\", options=[\"google\", \"bing\", \"duckduckgo\"]),\n SecretStrInput(name=\"api_key\", display_name=\"SearchAPI API Key\", required=True),\n MultilineInput(\n name=\"input_value\",\n display_name=\"Input\",\n tool_mode=True,\n ),\n DictInput(name=\"search_params\", display_name=\"Search parameters\", advanced=True, is_list=True),\n IntInput(name=\"max_results\", display_name=\"Max Results\", value=5, advanced=True),\n IntInput(name=\"max_snippet_length\", display_name=\"Max Snippet Length\", value=100, advanced=True),\n ]\n\n outputs = [\n Output(display_name=\"DataFrame\", name=\"dataframe\", method=\"fetch_content_dataframe\"),\n ]\n\n def _build_wrapper(self):\n return SearchApiAPIWrapper(engine=self.engine, searchapi_api_key=self.api_key)\n\n def run_model(self) -> DataFrame:\n return self.fetch_content_dataframe()\n\n def fetch_content(self) -> list[Data]:\n wrapper = self._build_wrapper()\n\n def search_func(\n query: str, params: dict[str, Any] | None = None, max_results: int = 5, max_snippet_length: int = 100\n ) -> list[Data]:\n params = params or {}\n full_results = wrapper.results(query=query, **params)\n organic_results = full_results.get(\"organic_results\", [])[:max_results]\n\n return [\n Data(\n text=result.get(\"snippet\", \"\"),\n data={\n \"title\": result.get(\"title\", \"\")[:max_snippet_length],\n \"link\": result.get(\"link\", \"\"),\n \"snippet\": result.get(\"snippet\", \"\")[:max_snippet_length],\n },\n )\n for result in organic_results\n ]\n\n results = search_func(\n self.input_value,\n self.search_params or {},\n self.max_results,\n self.max_snippet_length,\n )\n self.status = results\n return results\n\n def fetch_content_dataframe(self) -> DataFrame:\n \"\"\"Convert the search results to a DataFrame.\n\n Returns:\n DataFrame: A DataFrame containing the search results.\n \"\"\"\n data = self.fetch_content()\n return data_to_dataframe(data)\n"
"value": "from typing import Any\n\nfrom langchain_community.utilities.searchapi import SearchApiAPIWrapper\n\nfrom langflow.custom import Component\nfrom langflow.inputs import DictInput, DropdownInput, IntInput, MultilineInput, SecretStrInput\nfrom langflow.io import Output\nfrom langflow.schema import Data, DataFrame\n\n\nclass SearchComponent(Component):\n display_name: str = \"Search API\"\n description: str = \"Call the searchapi.io API with result limiting\"\n documentation: str = \"https://www.searchapi.io/docs/google\"\n icon = \"SearchAPI\"\n\n inputs = [\n DropdownInput(name=\"engine\", display_name=\"Engine\", value=\"google\", options=[\"google\", \"bing\", \"duckduckgo\"]),\n SecretStrInput(name=\"api_key\", display_name=\"SearchAPI API Key\", required=True),\n MultilineInput(\n name=\"input_value\",\n display_name=\"Input\",\n tool_mode=True,\n ),\n DictInput(name=\"search_params\", display_name=\"Search parameters\", advanced=True, is_list=True),\n IntInput(name=\"max_results\", display_name=\"Max Results\", value=5, advanced=True),\n IntInput(name=\"max_snippet_length\", display_name=\"Max Snippet Length\", value=100, advanced=True),\n ]\n\n outputs = [\n Output(display_name=\"DataFrame\", name=\"dataframe\", method=\"fetch_content_dataframe\"),\n ]\n\n def _build_wrapper(self):\n return SearchApiAPIWrapper(engine=self.engine, searchapi_api_key=self.api_key)\n\n def run_model(self) -> DataFrame:\n return self.fetch_content_dataframe()\n\n def fetch_content(self) -> list[Data]:\n wrapper = self._build_wrapper()\n\n def search_func(\n query: str, params: dict[str, Any] | None = None, max_results: int = 5, max_snippet_length: int = 100\n ) -> list[Data]:\n params = params or {}\n full_results = wrapper.results(query=query, **params)\n organic_results = full_results.get(\"organic_results\", [])[:max_results]\n\n return [\n Data(\n text=result.get(\"snippet\", \"\"),\n data={\n \"title\": result.get(\"title\", \"\")[:max_snippet_length],\n \"link\": result.get(\"link\", \"\"),\n \"snippet\": result.get(\"snippet\", \"\")[:max_snippet_length],\n },\n )\n for result in organic_results\n ]\n\n results = search_func(\n self.input_value,\n self.search_params or {},\n self.max_results,\n self.max_snippet_length,\n )\n self.status = results\n return results\n\n def fetch_content_dataframe(self) -> DataFrame:\n \"\"\"Convert the search results to a DataFrame.\n\n Returns:\n DataFrame: A DataFrame containing the search results.\n \"\"\"\n data = self.fetch_content()\n return DataFrame(data)\n"
},
"engine": {
"_input_type": "DropdownInput",