From 8b87c0ef92856a3fb777ce83562e58e606481963 Mon Sep 17 00:00:00 2001 From: ogabrielluiz Date: Wed, 12 Jun 2024 13:54:04 -0300 Subject: [PATCH] refactor: Update field input classes and module structure --- src/backend/base/langflow/inputs/__init__.py | 25 +++++++++++++++++++ .../{template/field => inputs}/input_mixin.py | 0 .../{template/field => inputs}/inputs.py | 23 +++++++++-------- .../base/langflow/template/__init__.py | 1 + .../base/langflow/template/template/base.py | 3 ++- 5 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 src/backend/base/langflow/inputs/__init__.py rename src/backend/base/langflow/{template/field => inputs}/input_mixin.py (100%) rename src/backend/base/langflow/{template/field => inputs}/inputs.py (61%) diff --git a/src/backend/base/langflow/inputs/__init__.py b/src/backend/base/langflow/inputs/__init__.py new file mode 100644 index 000000000..09461df91 --- /dev/null +++ b/src/backend/base/langflow/inputs/__init__.py @@ -0,0 +1,25 @@ +from .inputs import ( + BoolInput, + DictInput, + DropdownInput, + FileInput, + FloatInput, + IntInput, + NestedDictInput, + PromptInput, + SecretStrInput, + StrInput, +) + +__all__ = [ + "SecretStrInput", + "StrInput", + "IntInput", + "FloatInput", + "BoolInput", + "NestedDictInput", + "DictInput", + "DropdownInput", + "FileInput", + "PromptInput", +] diff --git a/src/backend/base/langflow/template/field/input_mixin.py b/src/backend/base/langflow/inputs/input_mixin.py similarity index 100% rename from src/backend/base/langflow/template/field/input_mixin.py rename to src/backend/base/langflow/inputs/input_mixin.py diff --git a/src/backend/base/langflow/template/field/inputs.py b/src/backend/base/langflow/inputs/inputs.py similarity index 61% rename from src/backend/base/langflow/template/field/inputs.py rename to src/backend/base/langflow/inputs/inputs.py index 859ee8de3..d60d63d0b 100644 --- a/src/backend/base/langflow/template/field/inputs.py +++ b/src/backend/base/langflow/inputs/inputs.py @@ -2,7 +2,7 @@ from typing import Callable, Optional, Union from pydantic import Field -from langflow.template.field.input_mixin import ( +from .input_mixin import ( BaseInputMixin, DatabaseLoadMixin, DropDownMixin, @@ -10,50 +10,51 @@ from langflow.template.field.input_mixin import ( FileMixin, ListableInputMixin, RangeMixin, + SerializableFieldTypes, ) class PromptInput(BaseInputMixin, ListableInputMixin): - field_type = FieldTypes.PROMPT + field_type: Optional[SerializableFieldTypes] = FieldTypes.PROMPT # Applying mixins to a specific input type class StrInput(BaseInputMixin, ListableInputMixin): # noqa: F821 - field_type = FieldTypes.TEXT + field_type: Optional[SerializableFieldTypes] = FieldTypes.TEXT multiline: bool = Field(default=False) """Defines if the field will allow the user to open a text editor. Default is False.""" class SecretStrInput(BaseInputMixin, DatabaseLoadMixin): - field_type = FieldTypes.PASSWORD + field_type: Optional[SerializableFieldTypes] = FieldTypes.PASSWORD password: bool = Field(default=True) class IntInput(BaseInputMixin, ListableInputMixin, RangeMixin): - field_type = FieldTypes.INTEGER + field_type: Optional[SerializableFieldTypes] = FieldTypes.INTEGER class FloatInput(BaseInputMixin, ListableInputMixin, RangeMixin): - field_type = FieldTypes.FLOAT + field_type: Optional[SerializableFieldTypes] = FieldTypes.FLOAT class BoolInput(BaseInputMixin, ListableInputMixin): - field_type = FieldTypes.BOOLEAN + field_type: Optional[SerializableFieldTypes] = FieldTypes.BOOLEAN class NestedDictInput(BaseInputMixin, ListableInputMixin): - field_type = FieldTypes.NESTED_DICT + field_type: Optional[SerializableFieldTypes] = FieldTypes.NESTED_DICT class DictInput(BaseInputMixin, ListableInputMixin): - field_type = FieldTypes.DICT + field_type: Optional[SerializableFieldTypes] = FieldTypes.DICT class DropdownInput(BaseInputMixin, DropDownMixin): - field_type = FieldTypes.TEXT + field_type: Optional[SerializableFieldTypes] = FieldTypes.TEXT options: Optional[Union[list[str], Callable]] = None """List of options for the field. Only used when is_list=True. Default is an empty list.""" class FileInput(BaseInputMixin, ListableInputMixin, FileMixin): - field_type = FieldTypes.FILE + field_type: Optional[SerializableFieldTypes] = FieldTypes.FILE diff --git a/src/backend/base/langflow/template/__init__.py b/src/backend/base/langflow/template/__init__.py index b6afea9ef..6518b9689 100644 --- a/src/backend/base/langflow/template/__init__.py +++ b/src/backend/base/langflow/template/__init__.py @@ -2,6 +2,7 @@ from langflow.template.field.base import Input, Output from langflow.template.frontend_node.base import FrontendNode from langflow.template.template.base import Template + __all__ = [ "Input", "Output", diff --git a/src/backend/base/langflow/template/template/base.py b/src/backend/base/langflow/template/template/base.py index 01ae4a43f..c706f6c80 100644 --- a/src/backend/base/langflow/template/template/base.py +++ b/src/backend/base/langflow/template/template/base.py @@ -2,13 +2,14 @@ from typing import Callable, Union from pydantic import BaseModel, model_serializer +from langflow.inputs.input_mixin import BaseInputMixin from langflow.template.field.base import Input from langflow.utils.constants import DIRECT_TYPES class Template(BaseModel): type_name: str - fields: list[Input] + fields: list[Input | BaseInputMixin] def process_fields( self,