from langflow.custom import Component from langflow.io import DataInput, Output, StrInput from langflow.schema import Data class ExtractDataKeyComponent(Component): display_name = "Extract Key" description = ( "Extract a specific key from a Data object or a list of " "Data objects and return the extracted value(s) as Data object(s)." ) icon = "key" name = "ExtractaKey" legacy = True inputs = [ DataInput( name="data_input", display_name="Data Input", info="The Data object or list of Data objects to extract the key from.", ), StrInput( name="key", display_name="Key to Extract", info="The key in the Data object(s) to extract.", ), ] outputs = [ Output(display_name="Extracted Data", name="extracted_data", method="extract_key"), ] def extract_key(self) -> Data | list[Data]: key = self.key if isinstance(self.data_input, list): result = [] for item in self.data_input: if isinstance(item, Data) and key in item.data: extracted_value = item.data[key] result.append(Data(data={key: extracted_value})) self.status = result return result if isinstance(self.data_input, Data): if key in self.data_input.data: extracted_value = self.data_input.data[key] result = Data(data={key: extracted_value}) self.status = result return result self.status = f"Key '{key}' not found in Data object." return Data(data={"error": f"Key '{key}' not found in Data object."}) self.status = "Invalid input. Expected Data object or list of Data objects." return Data(data={"error": "Invalid input. Expected Data object or list of Data objects."})