Spaces:
Running
Running
| from langflow.custom import Component | |
| from langflow.helpers.data import data_to_text, data_to_text_list | |
| from langflow.io import DataInput, MultilineInput, Output, StrInput | |
| from langflow.schema import Data | |
| from langflow.schema.message import Message | |
| class ParseDataComponent(Component): | |
| display_name = "Parse Data" | |
| description = "Convert Data into plain text following a specified template." | |
| icon = "braces" | |
| name = "ParseData" | |
| inputs = [ | |
| DataInput(name="data", display_name="Data", info="The data to convert to text.", is_list=True), | |
| MultilineInput( | |
| name="template", | |
| display_name="Template", | |
| info="The template to use for formatting the data. " | |
| "It can contain the keys {text}, {data} or any other key in the Data.", | |
| value="{text}", | |
| ), | |
| StrInput(name="sep", display_name="Separator", advanced=True, value="\n"), | |
| ] | |
| outputs = [ | |
| Output( | |
| display_name="Text", | |
| name="text", | |
| info="Data as a single Message, with each input Data separated by Separator", | |
| method="parse_data", | |
| ), | |
| Output( | |
| display_name="Data List", | |
| name="data_list", | |
| info="Data as a list of new Data, each having `text` formatted by Template", | |
| method="parse_data_as_list", | |
| ), | |
| ] | |
| def _clean_args(self) -> tuple[list[Data], str, str]: | |
| data = self.data if isinstance(self.data, list) else [self.data] | |
| template = self.template | |
| sep = self.sep | |
| return data, template, sep | |
| def parse_data(self) -> Message: | |
| data, template, sep = self._clean_args() | |
| result_string = data_to_text(template, data, sep) | |
| self.status = result_string | |
| return Message(text=result_string) | |
| def parse_data_as_list(self) -> list[Data]: | |
| data, template, _ = self._clean_args() | |
| text_list, data_list = data_to_text_list(template, data) | |
| for item, text in zip(data_list, text_list, strict=True): | |
| item.set_text(text) | |
| self.status = data_list | |
| return data_list | |