vectorvein 0.2.34__tar.gz → 0.2.35__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.
- {vectorvein-0.2.34 → vectorvein-0.2.35}/PKG-INFO +1 -1
- {vectorvein-0.2.34 → vectorvein-0.2.35}/pyproject.toml +1 -1
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/graph/node.py +34 -3
- {vectorvein-0.2.34 → vectorvein-0.2.35}/README.md +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/__init__.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/api/__init__.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/api/client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/api/exceptions.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/api/models.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/__init__.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/anthropic_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/baichuan_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/base_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/deepseek_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/ernie_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/gemini_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/groq_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/local_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/minimax_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/mistral_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/moonshot_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/openai_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/openai_compatible_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/py.typed +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/qwen_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/stepfun_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/utils.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/xai_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/yi_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/zhipuai_client.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/py.typed +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/server/token_server.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/settings/__init__.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/settings/py.typed +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/types/__init__.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/types/defaults.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/types/enums.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/types/exception.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/types/llm_parameters.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/types/py.typed +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/types/settings.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/utilities/media_processing.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/utilities/rate_limiter.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/utilities/retry.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/graph/edge.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/graph/port.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/graph/workflow.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/nodes/__init__.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/nodes/audio_generation.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/nodes/control_flows.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/nodes/file_processing.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/nodes/image_generation.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/nodes/llms.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/nodes/media_editing.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/nodes/media_processing.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/nodes/output.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/nodes/relational_db.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/nodes/text_processing.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/nodes/tools.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/nodes/triggers.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/nodes/vector_db.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/nodes/video_generation.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/nodes/web_crawlers.py +0 -0
- {vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/workflow/utils/json_to_code.py +0 -0
@@ -4,6 +4,32 @@ from typing import Dict, Any, Optional, List, Union
|
|
4
4
|
from .port import PortType, Port, InputPort, OutputPort
|
5
5
|
|
6
6
|
|
7
|
+
class PortsDict(Dict[str, Port]):
|
8
|
+
"""自定义字典类,用于管理节点的端口,并强制执行端口添加权限。"""
|
9
|
+
|
10
|
+
def __init__(self, owner_node: "Node", *args, **kwargs):
|
11
|
+
super().__init__(*args, **kwargs)
|
12
|
+
self._owner_node = owner_node
|
13
|
+
|
14
|
+
def __setitem__(self, key: str, value: Port) -> None:
|
15
|
+
# 如果端口已存在,允许更新
|
16
|
+
if key in self:
|
17
|
+
super().__setitem__(key, value)
|
18
|
+
return
|
19
|
+
|
20
|
+
# 对于新端口,检查添加权限
|
21
|
+
if isinstance(value, OutputPort) and not self._owner_node.can_add_output_ports:
|
22
|
+
raise ValueError(
|
23
|
+
f"Node<{self._owner_node.id}> '{self._owner_node.type}' does not allow adding output ports"
|
24
|
+
)
|
25
|
+
elif isinstance(value, InputPort) and not self._owner_node.can_add_input_ports:
|
26
|
+
raise ValueError(
|
27
|
+
f"Node<{self._owner_node.id}> '{self._owner_node.type}' does not allow adding input ports"
|
28
|
+
)
|
29
|
+
|
30
|
+
super().__setitem__(key, value)
|
31
|
+
|
32
|
+
|
7
33
|
class Node:
|
8
34
|
def __init__(
|
9
35
|
self,
|
@@ -25,7 +51,14 @@ class Node:
|
|
25
51
|
self.category: str = category
|
26
52
|
self.task_name: str = task_name
|
27
53
|
self.description: str = description
|
28
|
-
self.
|
54
|
+
self.can_add_input_ports: bool = can_add_input_ports
|
55
|
+
self.can_add_output_ports: bool = can_add_output_ports
|
56
|
+
# 初始化自定义PortsDict
|
57
|
+
self.ports = PortsDict(self)
|
58
|
+
# 如果提供了初始端口,将它们添加到字典中
|
59
|
+
if ports:
|
60
|
+
for name, port in ports.items():
|
61
|
+
self.ports[name] = port
|
29
62
|
self.position: Dict[str, float] = position or {"x": 0, "y": 0}
|
30
63
|
self.seleted_workflow_title: str = seleted_workflow_title
|
31
64
|
self.is_template: bool = is_template
|
@@ -33,8 +66,6 @@ class Node:
|
|
33
66
|
self.ignored: bool = False
|
34
67
|
self.lock: bool = False
|
35
68
|
self.shadow: bool = False
|
36
|
-
self.can_add_input_ports: bool = can_add_input_ports
|
37
|
-
self.can_add_output_ports: bool = can_add_output_ports
|
38
69
|
|
39
70
|
def add_port(
|
40
71
|
self,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{vectorvein-0.2.34 → vectorvein-0.2.35}/src/vectorvein/chat_clients/openai_compatible_client.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|