From 4717ff07673cc94a8a62bdb7705b984146abd296 Mon Sep 17 00:00:00 2001 From: ogabrielluiz Date: Mon, 17 Jun 2024 10:35:31 -0300 Subject: [PATCH] Refactor Component class to improve input mapping and validation --- .../base/langflow/custom/custom_component/component.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/backend/base/langflow/custom/custom_component/component.py b/src/backend/base/langflow/custom/custom_component/component.py index 1bbc6fa0a..1a6374972 100644 --- a/src/backend/base/langflow/custom/custom_component/component.py +++ b/src/backend/base/langflow/custom/custom_component/component.py @@ -4,7 +4,6 @@ from uuid import UUID import yaml from git import TYPE_CHECKING -from loguru import logger from pydantic import BaseModel from langflow.inputs.inputs import InputTypes @@ -52,18 +51,20 @@ class Component(CustomComponent): self.map_inputs(self.inputs) def map_inputs(self, inputs: List[Input]): + self._inputs = {} self.inputs = inputs for input_ in inputs: self._inputs[input_.name] = input_ def _validate_inputs(self, params: dict): # Params keys are the `name` attribute of the Input objects - for key, value in params.items(): + for key, value in params.copy().items(): if key not in self._inputs: continue input_ = self._inputs[key] # BaseInputMixin has a `validate_assignment=True` input_.value = value + params[input_.name] = input_.value def set_attributes(self, params: dict): self._validate_inputs(params) @@ -71,10 +72,6 @@ class Component(CustomComponent): if key in self.__dict__: raise ValueError(f"Key {key} already exists in {self.__class__.__name__}") setattr(self, key, value) - for input_ in self.inputs: - if input_.name not in params: - setattr(self, input_.name, input_.value) - logger.warning(f"Input {input_.name} not found in arguments") self._arguments = params def _set_outputs(self, outputs: List[dict]):