Skip to content

Commit

Permalink
Merge branch 'main' into cz/mvp-components-flags
Browse files Browse the repository at this point in the history
  • Loading branch information
Cristhianzl authored Oct 24, 2024
2 parents 615732c + 78e6ee1 commit 5a0cd92
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 1 deletion.
2 changes: 2 additions & 0 deletions src/backend/base/langflow/base/tools/component_tool.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ def build_description(component: Component, output: Output) -> str:

def _build_output_function(component: Component, output_method: Callable):
def output_function(*args, **kwargs):
# set the component with the arguments
# set functionality was updatedto handle list of components and other values separately
component.set(*args, **kwargs)
return output_method()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -442,7 +442,8 @@ def _process_connection_or_parameter(self, key, value) -> None:

def _process_connection_or_parameters(self, key, value) -> None:
# if value is a list of components, we need to process each component
if isinstance(value, list):
# Note this update make sure it is not a list str | int | float | bool | type(None)
if isinstance(value, list) and not any(isinstance(val, str | int | float | bool | type(None)) for val in value):
for val in value:
self._process_connection_or_parameter(key, val)
else:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import pytest
from langflow.custom import Component
from langflow.inputs.inputs import MessageTextInput, StrInput


@pytest.fixture
def setup_component():
# Create a sample component for testing
component = Component()
# Define inputs for the component
component.inputs = [
MessageTextInput(name="list_message_input", is_list=True), # Input for a mock component
StrInput(name="mixed_input"), # Input for a mixed list
]
return component


def test_set_with_mixed_list_input(setup_component):
component = setup_component
# Create a mock component to include in the list
mock_component = Component()
message_input_1 = "message data1"
message_input_2 = "message data2"
data = {"mixed_input": [message_input_1, message_input_2], "list_message_input": [message_input_1, mock_component]}
component.set(**data)

# Assert that the mixed input was set correctly
assert hasattr(component, "mixed_input")
assert len(component.mixed_input) == 2
assert component.mixed_input[0] == message_input_1
assert component.mixed_input[1] == message_input_2
assert component.list_message_input[0] == message_input_1
assert component.list_message_input[1] == mock_component


def test_set_with_message_text_input_list(setup_component):
component = setup_component
# Create a list of MessageTextInput instances
message_input_1 = "message data1"
message_input_2 = "message data2"
data = {"mixed_input": [message_input_1, message_input_2], "list_message_input": [message_input_1, message_input_2]}
# Set a list containing MessageTextInput instances
component.set(**data)

# Assert that the mixed input was set correctly
assert hasattr(component, "mixed_input")
assert len(component.list_message_input) == 2
assert component.list_message_input[0] == message_input_1
assert component.list_message_input[1] == message_input_2

0 comments on commit 5a0cd92

Please sign in to comment.