From d1946fa351d04aa5bc09d251e4e58d5b623837d5 Mon Sep 17 00:00:00 2001 From: ogabrielluiz Date: Thu, 13 Jun 2024 00:27:06 -0300 Subject: [PATCH] feat: Add FilterDataComponent for filtering Message objects based on a list of strings --- .../langflow/components/helpers/FilterData.py | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/backend/base/langflow/components/helpers/FilterData.py diff --git a/src/backend/base/langflow/components/helpers/FilterData.py b/src/backend/base/langflow/components/helpers/FilterData.py new file mode 100644 index 000000000..db402502d --- /dev/null +++ b/src/backend/base/langflow/components/helpers/FilterData.py @@ -0,0 +1,33 @@ +from typing import List + +from langflow.custom import Component +from langflow.inputs import StrInput +from langflow.schema import Data +from langflow.template import Input, Output + + +class FilterDataComponent(Component): + display_name = "Filter Message" + description = "Filters a Message object based on a list of strings." + icon = "filter" + + inputs = [ + Input(name="message", display_name="Message", info="Message object to filter.", input_types=["Message"]), + StrInput( + name="filter_criteria", display_name="Filter Criteria", info="List of strings to filter by.", is_list=True + ), + ] + + outputs = [ + Output(display_name="Filtered Data", name="filtered_data", method="filter_data"), + ] + + def filter_data(self) -> Data: + filter_criteria: List[str] = self.filter_criteria + + # Filter the data + filtered = {key: value for key, value in self.message.data.items() if key == filter_criteria} + + # Create a new Data object with the filtered data + self.status = filtered + return filtered