fix: Solves Issues with Set Function in Component Class and Enhance Input Handling (#4258)
* Enhance Component Input Handling and Add Unit Tests Enhance component input handling and add unit tests for mixed input scenarios. * [autofix.ci] apply automated fixes * fix: handle JSON serialization for lists and dicts in _process_connection_or_parameters - Updated the _process_connection_or_parameters function to handle lists and dictionaries properly. - Ensured that each element in a list is checked for serializability and converted to a string if necessary. - Added logic to convert dictionaries to JSON strings, handling non-serializable contents by converting them to strings. - This change prevents JSON serialization errors when processing component parameters. * reverting the changes * [autofix.ci] apply automated fixes * Update component.py updates _process_connection_or_parameters to handles situations where the list is not all component. Also handles any serialisation isseus caused by _process_connection_or_parameters * [autofix.ci] apply automated fixes * Update component.py update make sure it is not a list str | int | float | bool | type(None) Serialisation removed --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
5be41ae13e
commit
78e6ee1a8a
3 changed files with 53 additions and 1 deletions
|
|
@ -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
|
||||
Loading…
Add table
Add a link
Reference in a new issue