Refactor code and fix minor issues
This commit is contained in:
parent
ea47b44ac7
commit
dbf0a2a920
7 changed files with 20 additions and 56 deletions
|
|
@ -28,23 +28,14 @@ def ungroup_node(group_node_data, base_flow):
|
||||||
g_edges = flow["data"]["edges"]
|
g_edges = flow["data"]["edges"]
|
||||||
|
|
||||||
# Redirect edges to the correct proxy node
|
# Redirect edges to the correct proxy node
|
||||||
updated_edges = get_updated_edges(
|
updated_edges = get_updated_edges(base_flow, g_nodes, g_edges, group_node_data["id"])
|
||||||
base_flow, g_nodes, g_edges, group_node_data["id"]
|
|
||||||
)
|
|
||||||
|
|
||||||
# Update template values
|
# Update template values
|
||||||
update_template(template, g_nodes)
|
update_template(template, g_nodes)
|
||||||
|
|
||||||
nodes = [
|
nodes = [n for n in base_flow["nodes"] if n["id"] != group_node_data["id"]] + g_nodes
|
||||||
n for n in base_flow["nodes"] if n["id"] != group_node_data["id"]
|
|
||||||
] + g_nodes
|
|
||||||
edges = (
|
edges = (
|
||||||
[
|
[e for e in base_flow["edges"] if e["target"] != group_node_data["id"] and e["source"] != group_node_data["id"]]
|
||||||
e
|
|
||||||
for e in base_flow["edges"]
|
|
||||||
if e["target"] != group_node_data["id"]
|
|
||||||
and e["source"] != group_node_data["id"]
|
|
||||||
]
|
|
||||||
+ g_edges
|
+ g_edges
|
||||||
+ updated_edges
|
+ updated_edges
|
||||||
)
|
)
|
||||||
|
|
@ -66,11 +57,7 @@ def process_flow(flow_object):
|
||||||
if node_id in processed_nodes:
|
if node_id in processed_nodes:
|
||||||
return
|
return
|
||||||
|
|
||||||
if (
|
if node.get("data") and node["data"].get("node") and node["data"]["node"].get("flow"):
|
||||||
node.get("data")
|
|
||||||
and node["data"].get("node")
|
|
||||||
and node["data"]["node"].get("flow")
|
|
||||||
):
|
|
||||||
process_flow(node["data"]["node"]["flow"]["data"])
|
process_flow(node["data"]["node"]["flow"]["data"])
|
||||||
new_nodes = ungroup_node(node["data"], cloned_flow)
|
new_nodes = ungroup_node(node["data"], cloned_flow)
|
||||||
# Add new nodes to the queue for future processing
|
# Add new nodes to the queue for future processing
|
||||||
|
|
@ -108,26 +95,16 @@ def update_template(template, g_nodes):
|
||||||
if node_index != -1:
|
if node_index != -1:
|
||||||
display_name = None
|
display_name = None
|
||||||
show = g_nodes[node_index]["data"]["node"]["template"][field]["show"]
|
show = g_nodes[node_index]["data"]["node"]["template"][field]["show"]
|
||||||
advanced = g_nodes[node_index]["data"]["node"]["template"][field][
|
advanced = g_nodes[node_index]["data"]["node"]["template"][field]["advanced"]
|
||||||
"advanced"
|
|
||||||
]
|
|
||||||
if "display_name" in g_nodes[node_index]["data"]["node"]["template"][field]:
|
if "display_name" in g_nodes[node_index]["data"]["node"]["template"][field]:
|
||||||
display_name = g_nodes[node_index]["data"]["node"]["template"][field][
|
display_name = g_nodes[node_index]["data"]["node"]["template"][field]["display_name"]
|
||||||
"display_name"
|
|
||||||
]
|
|
||||||
else:
|
else:
|
||||||
display_name = g_nodes[node_index]["data"]["node"]["template"][field][
|
display_name = g_nodes[node_index]["data"]["node"]["template"][field]["name"]
|
||||||
"name"
|
|
||||||
]
|
|
||||||
|
|
||||||
g_nodes[node_index]["data"]["node"]["template"][field] = value
|
g_nodes[node_index]["data"]["node"]["template"][field] = value
|
||||||
g_nodes[node_index]["data"]["node"]["template"][field]["show"] = show
|
g_nodes[node_index]["data"]["node"]["template"][field]["show"] = show
|
||||||
g_nodes[node_index]["data"]["node"]["template"][field][
|
g_nodes[node_index]["data"]["node"]["template"][field]["advanced"] = advanced
|
||||||
"advanced"
|
g_nodes[node_index]["data"]["node"]["template"][field]["display_name"] = display_name
|
||||||
] = advanced
|
|
||||||
g_nodes[node_index]["data"]["node"]["template"][field][
|
|
||||||
"display_name"
|
|
||||||
] = display_name
|
|
||||||
|
|
||||||
|
|
||||||
def update_target_handle(new_edge, g_nodes, group_node_id):
|
def update_target_handle(new_edge, g_nodes, group_node_id):
|
||||||
|
|
|
||||||
|
|
@ -80,6 +80,7 @@ class Vertex:
|
||||||
# If the Vertex.type is a power component
|
# If the Vertex.type is a power component
|
||||||
# then we need to return the built object
|
# then we need to return the built object
|
||||||
# instead of the result dict
|
# instead of the result dict
|
||||||
|
|
||||||
if isinstance(self._built_result, UnbuiltResult):
|
if isinstance(self._built_result, UnbuiltResult):
|
||||||
return {}
|
return {}
|
||||||
return self._built_result if isinstance(self._built_result, dict) else {"result": self._built_result}
|
return self._built_result if isinstance(self._built_result, dict) else {"result": self._built_result}
|
||||||
|
|
|
||||||
|
|
@ -141,7 +141,9 @@ class SeriesCharacterChainNode(FrontendNode):
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
description: str = "SeriesCharacterChain is a chain you can use to have a conversation with a character from a series." # noqa
|
description: str = (
|
||||||
|
"SeriesCharacterChain is a chain you can use to have a conversation with a character from a series." # noqa
|
||||||
|
)
|
||||||
base_classes: list[str] = [
|
base_classes: list[str] = [
|
||||||
"LLMChain",
|
"LLMChain",
|
||||||
"BaseCustomChain",
|
"BaseCustomChain",
|
||||||
|
|
|
||||||
|
|
@ -66,9 +66,7 @@ class NameTest(FastHttpUser):
|
||||||
result1, session_id = self.process(name, self.flow_id, payload1)
|
result1, session_id = self.process(name, self.flow_id, payload1)
|
||||||
|
|
||||||
payload2 = {
|
payload2 = {
|
||||||
"inputs": {
|
"inputs": {"text": "What is my name? Please, answer like this: Your name is <name>"},
|
||||||
"text": "What is my name? Please, answer like this: Your name is <name>"
|
|
||||||
},
|
|
||||||
"session_id": session_id,
|
"session_id": session_id,
|
||||||
"sync": False,
|
"sync": False,
|
||||||
}
|
}
|
||||||
|
|
@ -88,9 +86,7 @@ class NameTest(FastHttpUser):
|
||||||
logged_in_headers = {"Authorization": f"Bearer {a_token}"}
|
logged_in_headers = {"Authorization": f"Bearer {a_token}"}
|
||||||
print("Logged in")
|
print("Logged in")
|
||||||
with open(
|
with open(
|
||||||
Path(__file__).parent.parent
|
Path(__file__).parent.parent / "data" / "BasicChatwithPromptandHistory.json",
|
||||||
/ "data"
|
|
||||||
/ "BasicChatwithPromptandHistory.json",
|
|
||||||
"r",
|
"r",
|
||||||
) as f:
|
) as f:
|
||||||
json_flow = f.read()
|
json_flow = f.read()
|
||||||
|
|
@ -115,11 +111,7 @@ class NameTest(FastHttpUser):
|
||||||
)
|
)
|
||||||
print(response.json())
|
print(response.json())
|
||||||
user_id = next(
|
user_id = next(
|
||||||
(
|
(user["id"] for user in response.json()["users"] if user["username"] == "superuser"),
|
||||||
user["id"]
|
|
||||||
for user in response.json()["users"]
|
|
||||||
if user["username"] == "superuser"
|
|
||||||
),
|
|
||||||
None,
|
None,
|
||||||
)
|
)
|
||||||
# Create api key
|
# Create api key
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,7 @@ from langflow.services.database.models.api_key import ApiKeyCreate
|
||||||
def api_key(client, logged_in_headers, active_user):
|
def api_key(client, logged_in_headers, active_user):
|
||||||
api_key = ApiKeyCreate(name="test-api-key")
|
api_key = ApiKeyCreate(name="test-api-key")
|
||||||
|
|
||||||
response = client.post(
|
response = client.post("api/v1/api_key", data=api_key.json(), headers=logged_in_headers)
|
||||||
"api/v1/api_key", data=api_key.json(), headers=logged_in_headers
|
|
||||||
)
|
|
||||||
assert response.status_code == 200, response.text
|
assert response.status_code == 200, response.text
|
||||||
return response.json()
|
return response.json()
|
||||||
|
|
||||||
|
|
@ -28,9 +26,7 @@ def test_get_api_keys(client, logged_in_headers, api_key):
|
||||||
|
|
||||||
def test_create_api_key(client, logged_in_headers):
|
def test_create_api_key(client, logged_in_headers):
|
||||||
api_key_name = "test-api-key"
|
api_key_name = "test-api-key"
|
||||||
response = client.post(
|
response = client.post("api/v1/api_key", json={"name": api_key_name}, headers=logged_in_headers)
|
||||||
"api/v1/api_key", json={"name": api_key_name}, headers=logged_in_headers
|
|
||||||
)
|
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
data = response.json()
|
data = response.json()
|
||||||
assert "name" in data and data["name"] == api_key_name
|
assert "name" in data and data["name"] == api_key_name
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,7 @@ def test_python_function_tool():
|
||||||
with pytest.raises(SyntaxError):
|
with pytest.raises(SyntaxError):
|
||||||
code = pytest.CODE_WITH_SYNTAX_ERROR
|
code = pytest.CODE_WITH_SYNTAX_ERROR
|
||||||
func = get_function(code)
|
func = get_function(code)
|
||||||
func = PythonFunctionTool(
|
func = PythonFunctionTool(name="Test", description="Testing", code=code, func=func)
|
||||||
name="Test", description="Testing", code=code, func=func
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_python_function():
|
def test_python_function():
|
||||||
|
|
|
||||||
|
|
@ -31,9 +31,7 @@ def test_websocket_endpoint(client: TestClient, active_user, logged_in_headers):
|
||||||
# Assuming your websocket_endpoint uses chat_service which caches data from stream_build
|
# Assuming your websocket_endpoint uses chat_service which caches data from stream_build
|
||||||
access_token = logged_in_headers["Authorization"].split(" ")[1]
|
access_token = logged_in_headers["Authorization"].split(" ")[1]
|
||||||
with pytest.raises(WebSocketDisconnect):
|
with pytest.raises(WebSocketDisconnect):
|
||||||
with client.websocket_connect(
|
with client.websocket_connect(f"api/v1/chat/non_existing_client_id?token={access_token}") as websocket:
|
||||||
f"api/v1/chat/non_existing_client_id?token={access_token}"
|
|
||||||
) as websocket:
|
|
||||||
websocket.send_json({"type": "test"})
|
websocket.send_json({"type": "test"})
|
||||||
data = websocket.receive_json()
|
data = websocket.receive_json()
|
||||||
assert "Please, build the flow before sending messages" in data["message"]
|
assert "Please, build the flow before sending messages" in data["message"]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue