From d07d1d4bd9a2b2c5f0be151decc75a42e27e55a7 Mon Sep 17 00:00:00 2001 From: Edwin Jose Date: Fri, 16 May 2025 13:21:22 -0400 Subject: [PATCH] chore: update to component utils logic (#8086) * update to component utils logic * Update data_operations.py * [autofix.ci] apply automated fixes * Update component_utils.py --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- .../components/processing/data_operations.py | 4 ++- .../base/langflow/utils/component_utils.py | 31 ++++++++++++------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/backend/base/langflow/components/processing/data_operations.py b/src/backend/base/langflow/components/processing/data_operations.py index 852429fbf..dc930d690 100644 --- a/src/backend/base/langflow/components/processing/data_operations.py +++ b/src/backend/base/langflow/components/processing/data_operations.py @@ -7,7 +7,7 @@ from langflow.io import DataInput, Output from langflow.logging import logger from langflow.schema import Data from langflow.schema.dotdict import dotdict -from langflow.utils.component_utils import set_current_fields +from langflow.utils.component_utils import set_current_fields, set_field_display if TYPE_CHECKING: from collections.abc import Callable @@ -385,6 +385,7 @@ class DataOperationsComponent(Component): action_fields=self.actions_data, selected_action=action, default_fields=self.default_keys, + func=set_field_display, ) # Handle no operations case @@ -395,6 +396,7 @@ class DataOperationsComponent(Component): action_fields=self.actions_data, selected_action=None, default_fields=self.default_keys, + func=set_field_display, ) return build_config diff --git a/src/backend/base/langflow/utils/component_utils.py b/src/backend/base/langflow/utils/component_utils.py index 6f9c2ee4e..2b2dad3a2 100644 --- a/src/backend/base/langflow/utils/component_utils.py +++ b/src/backend/base/langflow/utils/component_utils.py @@ -1,3 +1,4 @@ +from collections.abc import Callable from typing import Any from langflow.schema.dotdict import dotdict @@ -52,17 +53,17 @@ def update_input_types(build_config: dotdict) -> dotdict: return build_config -def set_field_display(build_config: dotdict, field: str, is_visible: bool | None = None) -> dotdict: +def set_field_display(build_config: dotdict, field: str, value: bool | None = None) -> dotdict: """Set whether a field should be displayed in the UI.""" if field in build_config and isinstance(build_config[field], dict) and "show" in build_config[field]: - build_config[field]["show"] = is_visible + build_config[field]["show"] = value return build_config def set_multiple_field_display( build_config: dotdict, fields: dict[str, bool] | None = None, - is_visible: bool | None = None, + value: bool | None = None, field_list: list[str] | None = None, ) -> dotdict: """Set display property for multiple fields at once.""" @@ -71,21 +72,23 @@ def set_multiple_field_display( build_config = set_field_display(build_config, field, visibility) elif field_list is not None: for field in field_list: - build_config = set_field_display(build_config, field, is_visible) + build_config = set_field_display(build_config, field, value) return build_config -def set_field_advanced(build_config: dotdict, field: str, is_advanced: bool | None = None) -> dotdict: +def set_field_advanced(build_config: dotdict, field: str, value: bool | None = None) -> dotdict: """Set whether a field is considered 'advanced' in the UI.""" + if value is None: + value = False if field in build_config and isinstance(build_config[field], dict): - build_config[field]["advanced"] = is_advanced + build_config[field]["advanced"] = value return build_config def set_multiple_field_advanced( build_config: dotdict, fields: dict[str, bool] | None = None, - is_advanced: bool | None = None, + value: bool | None = None, field_list: list[str] | None = None, ) -> dotdict: """Set advanced property for multiple fields at once.""" @@ -94,7 +97,7 @@ def set_multiple_field_advanced( build_config = set_field_advanced(build_config, field, advanced) elif field_list is not None: for field in field_list: - build_config = set_field_advanced(build_config, field, is_advanced) + build_config = set_field_advanced(build_config, field, value) return build_config @@ -116,22 +119,26 @@ def set_current_fields( action_fields: dict[str, list[str]], selected_action: str | None = None, default_fields: list[str] = DEFAULT_FIELDS, + func: Callable[[dotdict, str, bool], dotdict] = set_field_display, + default_value: bool | None = None, ) -> dotdict: """Set the current fields for a selected action.""" # action_fields = {action1: [field1, field2], action2: [field3, field4]} # we need to show action of one field and disable the rest + if default_value is None: + default_value = False if selected_action in action_fields: for field in action_fields[selected_action]: - build_config = set_field_display(build_config=build_config, field=field, is_visible=True) + build_config = func(build_config, field, not default_value) for key, value in action_fields.items(): if key != selected_action: for field in value: - build_config = set_field_display(build_config=build_config, field=field, is_visible=False) + build_config = func(build_config, field, default_value) if selected_action is None: for value in action_fields.values(): for field in value: - build_config = set_field_display(build_config=build_config, field=field, is_visible=False) + build_config = func(build_config, field, default_value) if default_fields is not None: for field in default_fields: - build_config = set_field_display(build_config=build_config, field=field, is_visible=True) + build_config = func(build_config, field, not default_value) return build_config