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>
This commit is contained in:
Edwin Jose 2025-05-16 13:21:22 -04:00 committed by GitHub
commit d07d1d4bd9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 22 additions and 13 deletions

View file

@ -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

View file

@ -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