Spaces:
Running
Running
| import pytest | |
| from langflow.components.agents import AgentComponent | |
| from langflow.components.crewai import CrewAIAgentComponent, SequentialTaskComponent | |
| from langflow.components.inputs import ChatInput | |
| from langflow.components.models import OpenAIModelComponent | |
| from langflow.components.outputs import ChatOutput | |
| from langflow.template import Output | |
| def test_set_invalid_output(): | |
| chatinput = ChatInput() | |
| chatoutput = ChatOutput() | |
| with pytest.raises(ValueError, match="Method build_config is not a valid output of ChatInput"): | |
| chatoutput.set(input_value=chatinput.build_config) | |
| def test_set_component(): | |
| crewai_agent = CrewAIAgentComponent() | |
| task = SequentialTaskComponent() | |
| task.set(agent=crewai_agent) | |
| assert task._edges[0]["source"] == crewai_agent._id | |
| assert crewai_agent in task._components | |
| def _output_required_inputs_are_in_inputs(output: Output, inputs: list[str]): | |
| return all(input_type in inputs for input_type in output.required_inputs) | |
| def _assert_all_outputs_have_different_required_inputs(outputs: list[Output]): | |
| required_inputs = [tuple(output.required_inputs) for output in outputs] | |
| assert len(required_inputs) == len(set(required_inputs)), "All outputs must have different required inputs" | |
| return True | |
| def test_set_required_inputs(): | |
| chatinput = ChatInput() | |
| assert all(_output_required_inputs_are_in_inputs(output, chatinput._inputs) for output in chatinput.outputs) | |
| assert _assert_all_outputs_have_different_required_inputs(chatinput.outputs) | |
| def test_set_required_inputs_various_components(): | |
| chatinput = ChatInput() | |
| chatoutput = ChatOutput() | |
| task = SequentialTaskComponent() | |
| agent = AgentComponent() | |
| openai_component = OpenAIModelComponent() | |
| assert all(_output_required_inputs_are_in_inputs(output, chatinput._inputs) for output in chatinput.outputs) | |
| assert all(_output_required_inputs_are_in_inputs(output, chatoutput._inputs) for output in chatoutput.outputs) | |
| assert all(_output_required_inputs_are_in_inputs(output, task._inputs) for output in task.outputs) | |
| assert all(_output_required_inputs_are_in_inputs(output, agent._inputs) for output in agent.outputs) | |
| assert all( | |
| _output_required_inputs_are_in_inputs(output, openai_component._inputs) for output in openai_component.outputs | |
| ) | |
| assert _assert_all_outputs_have_different_required_inputs(chatinput.outputs) | |
| assert _assert_all_outputs_have_different_required_inputs(chatoutput.outputs) | |
| assert _assert_all_outputs_have_different_required_inputs(task.outputs) | |
| assert _assert_all_outputs_have_different_required_inputs(agent.outputs) | |