From daad3bb4e74a02e0ea0f1a0ae874972aff1f1d85 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Fri, 7 Jul 2023 00:42:16 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(custom.py):=20add=20support?= =?UTF-8?q?=20for=20parsing=20annotated=20assignments=20in=20CustomCompone?= =?UTF-8?q?nt=20class=20=F0=9F=90=9B=20fix(custom=5Fcomponents.py):=20upda?= =?UTF-8?q?te=20import=20statement=20for=20DEFAULT=5FCUSTOM=5FCOMPONENT=5F?= =?UTF-8?q?CODE=20constant=20=F0=9F=90=9B=20fix(tools.py):=20update=20impo?= =?UTF-8?q?rt=20statement=20for=20DEFAULT=5FCUSTOM=5FCOMPONENT=5FCODE=20co?= =?UTF-8?q?nstant?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `CustomComponent` class now supports parsing annotated assignments, allowing attributes with annotated values to be added to the `attributes` dictionary. This improves the flexibility and extensibility of the class. The import statement for the `DEFAULT_CUSTOM_COMPONENT_CODE` constant in `custom_components.py` and `tools.py` has been updated to reflect the correct location of the constant in the `langflow.interface.custom.constants` module. This ensures that the correct value is imported and used in the code. --- src/backend/langflow/interface/custom/custom.py | 6 ++++++ .../langflow/template/frontend_node/custom_components.py | 2 +- src/backend/langflow/template/frontend_node/tools.py | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/backend/langflow/interface/custom/custom.py b/src/backend/langflow/interface/custom/custom.py index c47e67edd..8985945a9 100644 --- a/src/backend/langflow/interface/custom/custom.py +++ b/src/backend/langflow/interface/custom/custom.py @@ -46,6 +46,10 @@ class CustomComponent(BaseModel): if isinstance(target, ast.Name): # A simple variable # Add the attribute and its value to the dictionary attributes[target.id] = ast.unparse(inner_node.value) + elif isinstance(inner_node, ast.AnnAssign): # An annotated assignment + if isinstance(inner_node.target, ast.Name) and inner_node.value: + attributes[inner_node.target.id] = ast.unparse(inner_node.value) + elif isinstance(inner_node, ast.FunctionDef): self._handle_function(inner_node) @@ -134,6 +138,8 @@ class CustomComponent(BaseModel): template_config["display_name"] = ast.literal_eval( attributes["display_name"] ) + if "description" in attributes: + template_config["description"] = ast.literal_eval(attributes["description"]) return template_config def _class_template_validation(self, code: dict): diff --git a/src/backend/langflow/template/frontend_node/custom_components.py b/src/backend/langflow/template/frontend_node/custom_components.py index 6d360ce96..8a3474d24 100644 --- a/src/backend/langflow/template/frontend_node/custom_components.py +++ b/src/backend/langflow/template/frontend_node/custom_components.py @@ -1,7 +1,7 @@ from langflow.template.field.base import TemplateField from langflow.template.frontend_node.base import FrontendNode from langflow.template.template.base import Template -from langflow.utils.constants import DEFAULT_CUSTOM_COMPONENT_CODE +from langflow.interface.custom.constants import DEFAULT_CUSTOM_COMPONENT_CODE class CustomComponentFrontendNode(FrontendNode): diff --git a/src/backend/langflow/template/frontend_node/tools.py b/src/backend/langflow/template/frontend_node/tools.py index f2e77eb9f..07db16e3c 100644 --- a/src/backend/langflow/template/frontend_node/tools.py +++ b/src/backend/langflow/template/frontend_node/tools.py @@ -1,9 +1,9 @@ +from langflow.interface.custom.constants import DEFAULT_CUSTOM_COMPONENT_CODE from langflow.template.field.base import TemplateField from langflow.template.frontend_node.base import FrontendNode from langflow.template.template.base import Template from langflow.utils.constants import ( DEFAULT_PYTHON_FUNCTION, - DEFAULT_CUSTOM_COMPONENT_CODE, )