vectorvein 0.1.85__tar.gz → 0.1.86__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. {vectorvein-0.1.85 → vectorvein-0.1.86}/PKG-INFO +1 -1
  2. {vectorvein-0.1.85 → vectorvein-0.1.86}/pyproject.toml +1 -1
  3. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/graph/node.py +9 -0
  4. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/graph/workflow.py +24 -0
  5. {vectorvein-0.1.85 → vectorvein-0.1.86}/README.md +0 -0
  6. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/__init__.py +0 -0
  7. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/__init__.py +0 -0
  8. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/anthropic_client.py +0 -0
  9. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/baichuan_client.py +0 -0
  10. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/base_client.py +0 -0
  11. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/deepseek_client.py +0 -0
  12. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/gemini_client.py +0 -0
  13. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/groq_client.py +0 -0
  14. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/local_client.py +0 -0
  15. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/minimax_client.py +0 -0
  16. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/mistral_client.py +0 -0
  17. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/moonshot_client.py +0 -0
  18. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/openai_client.py +0 -0
  19. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/openai_compatible_client.py +0 -0
  20. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/py.typed +0 -0
  21. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/qwen_client.py +0 -0
  22. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/stepfun_client.py +0 -0
  23. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/utils.py +0 -0
  24. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/xai_client.py +0 -0
  25. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/yi_client.py +0 -0
  26. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/chat_clients/zhipuai_client.py +0 -0
  27. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/py.typed +0 -0
  28. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/server/token_server.py +0 -0
  29. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/settings/__init__.py +0 -0
  30. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/settings/py.typed +0 -0
  31. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/types/defaults.py +0 -0
  32. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/types/enums.py +0 -0
  33. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/types/exception.py +0 -0
  34. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/types/llm_parameters.py +0 -0
  35. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/types/py.typed +0 -0
  36. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/utilities/media_processing.py +0 -0
  37. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/utilities/retry.py +0 -0
  38. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/graph/edge.py +0 -0
  39. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/graph/port.py +0 -0
  40. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/nodes/__init__.py +0 -0
  41. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/nodes/audio_generation.py +0 -0
  42. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/nodes/control_flows.py +0 -0
  43. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/nodes/file_processing.py +0 -0
  44. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/nodes/image_generation.py +0 -0
  45. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/nodes/llms.py +0 -0
  46. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/nodes/media_editing.py +0 -0
  47. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/nodes/media_processing.py +0 -0
  48. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/nodes/output.py +0 -0
  49. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/nodes/relational_db.py +0 -0
  50. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/nodes/text_processing.py +0 -0
  51. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/nodes/tools.py +0 -0
  52. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/nodes/triggers.py +0 -0
  53. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/nodes/vector_db.py +0 -0
  54. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/nodes/video_generation.py +0 -0
  55. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/nodes/web_crawlers.py +0 -0
  56. {vectorvein-0.1.85 → vectorvein-0.1.86}/src/vectorvein/workflow/utils/json_to_code.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vectorvein
3
- Version: 0.1.85
3
+ Version: 0.1.86
4
4
  Summary: VectorVein python SDK
5
5
  Author-Email: Anderson <andersonby@163.com>
6
6
  License: MIT
@@ -17,7 +17,7 @@ description = "VectorVein python SDK"
17
17
  name = "vectorvein"
18
18
  readme = "README.md"
19
19
  requires-python = ">=3.10"
20
- version = "0.1.85"
20
+ version = "0.1.86"
21
21
 
22
22
  [project.license]
23
23
  text = "MIT"
@@ -80,3 +80,12 @@ class Node:
80
80
  if isinstance(port, InputPort):
81
81
  return True
82
82
  return False
83
+
84
+ def has_port(self, port_name: str) -> bool:
85
+ return port_name in self.ports
86
+
87
+ def has_input_port(self, port_name: str) -> bool:
88
+ return port_name in self.ports and isinstance(self.ports[port_name], InputPort)
89
+
90
+ def has_output_port(self, port_name: str) -> bool:
91
+ return port_name in self.ports and isinstance(self.ports[port_name], OutputPort)
@@ -26,15 +26,39 @@ class Workflow:
26
26
  target_node: Union[str, Node],
27
27
  target_port: str,
28
28
  ):
29
+ # 获取源节点ID
29
30
  if isinstance(source_node, Node):
30
31
  source_node_id = source_node.id
31
32
  else:
32
33
  source_node_id = source_node
34
+
35
+ # 获取目标节点ID
33
36
  if isinstance(target_node, Node):
34
37
  target_node_id = target_node.id
35
38
  else:
36
39
  target_node_id = target_node
37
40
 
41
+ # 检查源节点是否存在
42
+ source_node_exists = any(node.id == source_node_id for node in self.nodes)
43
+ if not source_node_exists:
44
+ raise ValueError(f"源节点不存在: {source_node_id}")
45
+
46
+ # 检查目标节点是否存在
47
+ target_node_exists = any(node.id == target_node_id for node in self.nodes)
48
+ if not target_node_exists:
49
+ raise ValueError(f"目标节点不存在: {target_node_id}")
50
+
51
+ # 检查源节点的端口是否存在
52
+ source_node_obj = next(node for node in self.nodes if node.id == source_node_id)
53
+ if not source_node_obj.has_output_port(source_port):
54
+ raise ValueError(f"源节点 {source_node_id} 不存在输出端口: {source_port}")
55
+
56
+ # 检查目标节点的端口是否存在
57
+ target_node_obj = next(node for node in self.nodes if node.id == target_node_id)
58
+ if not target_node_obj.has_input_port(target_port):
59
+ raise ValueError(f"目标节点 {target_node_id} 不存在输入端口: {target_port}")
60
+
61
+ # 创建并添加边
38
62
  edge_id = f"vueflow__edge-{source_node_id}{source_port}-{target_node_id}{target_port}"
39
63
  edge = Edge(edge_id, source_node_id, source_port, target_node_id, target_port)
40
64
  self.add_edge(edge)
File without changes