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.logging import logger
from langflow.schema import Data from langflow.schema import Data
from langflow.schema.dotdict import dotdict 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: if TYPE_CHECKING:
from collections.abc import Callable from collections.abc import Callable
@ -385,6 +385,7 @@ class DataOperationsComponent(Component):
action_fields=self.actions_data, action_fields=self.actions_data,
selected_action=action, selected_action=action,
default_fields=self.default_keys, default_fields=self.default_keys,
func=set_field_display,
) )
# Handle no operations case # Handle no operations case
@ -395,6 +396,7 @@ class DataOperationsComponent(Component):
action_fields=self.actions_data, action_fields=self.actions_data,
selected_action=None, selected_action=None,
default_fields=self.default_keys, default_fields=self.default_keys,
func=set_field_display,
) )
return build_config return build_config

View file

@ -1,3 +1,4 @@
from collections.abc import Callable
from typing import Any from typing import Any
from langflow.schema.dotdict import dotdict from langflow.schema.dotdict import dotdict
@ -52,17 +53,17 @@ def update_input_types(build_config: dotdict) -> dotdict:
return build_config 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.""" """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]: 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 return build_config
def set_multiple_field_display( def set_multiple_field_display(
build_config: dotdict, build_config: dotdict,
fields: dict[str, bool] | None = None, fields: dict[str, bool] | None = None,
is_visible: bool | None = None, value: bool | None = None,
field_list: list[str] | None = None, field_list: list[str] | None = None,
) -> dotdict: ) -> dotdict:
"""Set display property for multiple fields at once.""" """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) build_config = set_field_display(build_config, field, visibility)
elif field_list is not None: elif field_list is not None:
for field in field_list: 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 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.""" """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): 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 return build_config
def set_multiple_field_advanced( def set_multiple_field_advanced(
build_config: dotdict, build_config: dotdict,
fields: dict[str, bool] | None = None, fields: dict[str, bool] | None = None,
is_advanced: bool | None = None, value: bool | None = None,
field_list: list[str] | None = None, field_list: list[str] | None = None,
) -> dotdict: ) -> dotdict:
"""Set advanced property for multiple fields at once.""" """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) build_config = set_field_advanced(build_config, field, advanced)
elif field_list is not None: elif field_list is not None:
for field in field_list: 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 return build_config
@ -116,22 +119,26 @@ def set_current_fields(
action_fields: dict[str, list[str]], action_fields: dict[str, list[str]],
selected_action: str | None = None, selected_action: str | None = None,
default_fields: list[str] = DEFAULT_FIELDS, default_fields: list[str] = DEFAULT_FIELDS,
func: Callable[[dotdict, str, bool], dotdict] = set_field_display,
default_value: bool | None = None,
) -> dotdict: ) -> dotdict:
"""Set the current fields for a selected action.""" """Set the current fields for a selected action."""
# action_fields = {action1: [field1, field2], action2: [field3, field4]} # action_fields = {action1: [field1, field2], action2: [field3, field4]}
# we need to show action of one field and disable the rest # 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: if selected_action in action_fields:
for field in action_fields[selected_action]: 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(): for key, value in action_fields.items():
if key != selected_action: if key != selected_action:
for field in value: 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: if selected_action is None:
for value in action_fields.values(): for value in action_fields.values():
for field in value: 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: if default_fields is not None:
for field in default_fields: 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 return build_config