diff --git a/src/backend/base/langflow/api/v1/chat.py b/src/backend/base/langflow/api/v1/chat.py index a58b667fb..143937d1d 100644 --- a/src/backend/base/langflow/api/v1/chat.py +++ b/src/backend/base/langflow/api/v1/chat.py @@ -370,6 +370,7 @@ async def build_flow( try: await asyncio.gather(*tasks) except asyncio.CancelledError: + background_tasks.add_task(graph.end_all_traces) for task in tasks: task.cancel() return diff --git a/src/backend/base/langflow/graph/graph/base.py b/src/backend/base/langflow/graph/graph/base.py index 42de21ac9..d1dbe1c71 100644 --- a/src/backend/base/langflow/graph/graph/base.py +++ b/src/backend/base/langflow/graph/graph/base.py @@ -7,6 +7,7 @@ from datetime import datetime, timezone from functools import partial from itertools import chain from typing import TYPE_CHECKING, Any, Dict, Generator, List, Optional, Tuple, Type, Union +import warnings import nest_asyncio from loguru import logger @@ -1425,7 +1426,7 @@ class Graph: new_edge = self.build_edge(edge) edges.add(new_edge) if self.vertices and not edges: - raise ValueError("Graph has vertices but no edges") + warnings.warn("Graph has vertices but no edges") return list(edges) def build_edge(self, edge: EdgeData) -> ContractEdge: diff --git a/src/backend/tests/unit/graph/graph/test_base.py b/src/backend/tests/unit/graph/graph/test_base.py index 45be6c609..59908d9dc 100644 --- a/src/backend/tests/unit/graph/graph/test_base.py +++ b/src/backend/tests/unit/graph/graph/test_base.py @@ -32,7 +32,7 @@ async def test_graph(): graph = Graph() graph.add_component("chat_input", chat_input) graph.add_component("chat_output", chat_output) - with pytest.raises(ValueError, match="Graph has vertices but no edges"): + with pytest.warns(UserWarning, match="Graph has vertices but no edges"): graph.prepare() diff --git a/src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py b/src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py index 587c65779..e216c0c56 100644 --- a/src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py +++ b/src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py @@ -212,7 +212,7 @@ def test_vector_store_rag_dump_components_and_edges(ingestion_graph, rag_graph): assert (source, target) in expected_rag_edges, f"Edge {source} -> {target} not found" -def test_vector_store_rag_add(ingestion_graph, rag_graph): +def test_vector_store_rag_add(ingestion_graph: Graph, rag_graph: Graph): ingestion_graph_copy = copy.deepcopy(ingestion_graph) rag_graph_copy = copy.deepcopy(rag_graph) ingestion_graph_copy += rag_graph_copy diff --git a/src/backend/tests/unit/test_database.py b/src/backend/tests/unit/test_database.py index aebdef327..44e347f1e 100644 --- a/src/backend/tests/unit/test_database.py +++ b/src/backend/tests/unit/test_database.py @@ -212,7 +212,7 @@ def test_create_flows(client: TestClient, session: Session, json_flow: str, logg # Check response data response_data = response.json() assert len(response_data) == 2 - assert response_data[0]["name"] == "Flow 1" + assert "Flow 1" in response_data[0]["name"] assert response_data[0]["description"] == "description" assert response_data[0]["data"] == data assert response_data[1]["name"] == "Flow 2" @@ -241,7 +241,7 @@ def test_upload_file(client: TestClient, session: Session, json_flow: str, logge # Check response data response_data = response.json() assert len(response_data) == 2 - assert response_data[0]["name"] == "Flow 1" + assert "Flow 1" in response_data[0]["name"] assert response_data[0]["description"] == "description" assert response_data[0]["data"] == data assert response_data[1]["name"] == "Flow 2"