| from langflow.custom import CustomComponent | |
| from langflow.schema import Data | |
| class ExtractKeyFromDataComponent(CustomComponent): | |
| display_name = "Extract Key From Data" | |
| description = "Extracts a key from a data." | |
| beta: bool = True | |
| name = "ExtractKeyFromData" | |
| field_config = { | |
| "data": {"display_name": "Data"}, | |
| "keys": { | |
| "display_name": "Keys", | |
| "info": "The keys to extract from the data.", | |
| "input_types": [], | |
| }, | |
| "silent_error": { | |
| "display_name": "Silent Errors", | |
| "info": "If True, errors will not be raised.", | |
| "advanced": True, | |
| }, | |
| } | |
| def build(self, data: Data, keys: list[str], *, silent_error: bool = True) -> Data: | |
| """Extracts the keys from a data. | |
| Args: | |
| data (Data): The data from which to extract the keys. | |
| keys (list[str]): The keys to extract from the data. | |
| silent_error (bool): If True, errors will not be raised. | |
| Returns: | |
| dict: The extracted keys. | |
| """ | |
| extracted_keys = {} | |
| for key in keys: | |
| try: | |
| extracted_keys[key] = getattr(data, key) | |
| except AttributeError as e: | |
| if not silent_error: | |
| msg = f"The key '{key}' does not exist in the data." | |
| raise KeyError(msg) from e | |
| return_data = Data(data=extracted_keys) | |
| self.status = return_data | |
| return return_data | |