fix(edge): Handle invalid input types when creating TargetHandle (#3368)
* fix(edge): Handle invalid input types when creating TargetHandle * test(edge): add test for raising error on invalid target handle * fix: mypy error union-attr --------- Co-authored-by: italojohnny <italojohnnydosanjos@gmail.com>
This commit is contained in:
parent
8de100eae3
commit
c4d2dc56c7
2 changed files with 52 additions and 1 deletions
|
|
@ -23,7 +23,23 @@ class Edge:
|
|||
self._target_handle = cast(TargetHandleDict, data.get("targetHandle", {}))
|
||||
self.source_handle: SourceHandle = SourceHandle(**self._source_handle)
|
||||
if isinstance(self._target_handle, dict):
|
||||
self.target_handle: TargetHandle = TargetHandle(**self._target_handle)
|
||||
try:
|
||||
self.target_handle: TargetHandle = TargetHandle(**self._target_handle)
|
||||
except Exception as e:
|
||||
if "inputTypes" in self._target_handle and self._target_handle["inputTypes"] is None:
|
||||
# Check if self._target_handle['fieldName']
|
||||
if hasattr(target, "_custom_component"):
|
||||
display_name = getattr(target._custom_component, "display_name", "")
|
||||
raise ValueError(
|
||||
f"Component {display_name} field '{self._target_handle['fieldName']}' might not be a valid input."
|
||||
) from e
|
||||
else:
|
||||
raise ValueError(
|
||||
f"Field '{self._target_handle['fieldName']}' on {target.display_name} might not be a valid input."
|
||||
) from e
|
||||
else:
|
||||
raise e
|
||||
|
||||
else:
|
||||
raise ValueError("Target handle is not a dictionary")
|
||||
self.target_param = self.target_handle.field_name
|
||||
|
|
|
|||
35
src/backend/tests/unit/graph/edge/test_edge_base.py
Normal file
35
src/backend/tests/unit/graph/edge/test_edge_base.py
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
import pytest
|
||||
|
||||
from langflow.components.inputs.ChatInput import ChatInput
|
||||
from langflow.components.models.OpenAIModel import OpenAIModelComponent
|
||||
from langflow.components.outputs.ChatOutput import ChatOutput
|
||||
from langflow.components.prompts.Prompt import PromptComponent
|
||||
from langflow.graph.graph.base import Graph
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def client():
|
||||
pass
|
||||
|
||||
|
||||
def test_edge_raises_error_on_invalid_target_handle(client):
|
||||
template = """Answer the user as if you were a pirate.
|
||||
|
||||
User: {user_input}
|
||||
|
||||
Answer:
|
||||
"""
|
||||
chat_input = ChatInput()
|
||||
prompt_component = PromptComponent()
|
||||
prompt_component.set(
|
||||
template=template,
|
||||
user_input=chat_input.message_response,
|
||||
)
|
||||
|
||||
openai_component = OpenAIModelComponent()
|
||||
openai_component.set(input_values=prompt_component.build_prompt)
|
||||
|
||||
chat_output = ChatOutput()
|
||||
chat_output.set(input_value=openai_component.text_response)
|
||||
with pytest.raises(ValueError, match="Component OpenAI field 'input_values' might not be a valid input."):
|
||||
Graph(start=chat_input, end=chat_output)
|
||||
Loading…
Add table
Add a link
Reference in a new issue