vellum-workflow-server 0.14.71.post3__tar.gz → 0.14.71.post5__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.
Potentially problematic release.
This version of vellum-workflow-server might be problematic. Click here for more details.
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/PKG-INFO +1 -1
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/pyproject.toml +1 -1
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/api/tests/test_workflow_view.py +9 -17
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/api/workflow_view.py +4 -3
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/README.md +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/__init__.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/api/__init__.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/api/auth_middleware.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/api/healthz_view.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/api/tests/__init__.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/api/tests/test_input_display_mapping.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/api/tests/test_workflow_view_stream_workflow_route.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/code_exec_runner.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/config.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/core/__init__.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/core/cancel_workflow.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/core/events.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/core/executor.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/core/workflow_executor_context.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/server.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/start.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/utils/__init__.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/utils/exit_handler.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/utils/log_proxy.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/utils/oom_killer.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/utils/sentry.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/utils/system_utils.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/utils/tests/__init__.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/utils/tests/test_system_utils.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/utils/tests/test_utils.py +0 -0
- {vellum_workflow_server-0.14.71.post3 → vellum_workflow_server-0.14.71.post5}/src/workflow_server/utils/utils.py +0 -0
|
@@ -31,7 +31,6 @@ class TestNode(BaseNode):
|
|
|
31
31
|
|
|
32
32
|
This is a detailed description of what the node does.
|
|
33
33
|
\"""
|
|
34
|
-
label = "Test Node"
|
|
35
34
|
"""
|
|
36
35
|
)
|
|
37
36
|
|
|
@@ -51,7 +50,7 @@ class TestNode(BaseNode):
|
|
|
51
50
|
# AND the node should have the correct metadata
|
|
52
51
|
node = nodes[0]
|
|
53
52
|
assert UUID(node["id"])
|
|
54
|
-
assert node["module"] == "vellum_custom_nodes"
|
|
53
|
+
assert node["module"] == ["vellum_custom_nodes"]
|
|
55
54
|
assert node["name"] == "TestNode"
|
|
56
55
|
assert node["label"] == "Test Node"
|
|
57
56
|
assert "A test node for processing data." in node["description"]
|
|
@@ -71,7 +70,6 @@ from vellum.workflows.nodes import BaseNode
|
|
|
71
70
|
|
|
72
71
|
class SomeNode(BaseNode):
|
|
73
72
|
\"""This is Some Node.\"""
|
|
74
|
-
label = "Some node"
|
|
75
73
|
"""
|
|
76
74
|
)
|
|
77
75
|
|
|
@@ -83,7 +81,6 @@ from vellum.workflows.nodes import BaseNode
|
|
|
83
81
|
|
|
84
82
|
class SomeOtherNode(BaseNode):
|
|
85
83
|
\"""This is Some Other Node.\"""
|
|
86
|
-
label = "Some other node"
|
|
87
84
|
"""
|
|
88
85
|
)
|
|
89
86
|
|
|
@@ -102,17 +99,17 @@ class SomeOtherNode(BaseNode):
|
|
|
102
99
|
|
|
103
100
|
# AND the first node should have correct metadata
|
|
104
101
|
some_node = nodes[0]
|
|
105
|
-
assert some_node["label"] == "Some
|
|
102
|
+
assert some_node["label"] == "Some Node"
|
|
106
103
|
assert some_node["description"] == "This is Some Node."
|
|
107
104
|
assert UUID(some_node["id"])
|
|
108
|
-
assert some_node["module"] == "vellum_custom_nodes"
|
|
105
|
+
assert some_node["module"] == ["vellum_custom_nodes"]
|
|
109
106
|
|
|
110
107
|
# AND the second node should have correct metadata
|
|
111
108
|
some_other_node = nodes[1]
|
|
112
|
-
assert some_other_node["label"] == "Some
|
|
109
|
+
assert some_other_node["label"] == "Some Other Node"
|
|
113
110
|
assert some_other_node["description"] == "This is Some Other Node."
|
|
114
111
|
assert UUID(some_other_node["id"])
|
|
115
|
-
assert some_other_node["module"] == "vellum_custom_nodes"
|
|
112
|
+
assert some_other_node["module"] == ["vellum_custom_nodes"]
|
|
116
113
|
|
|
117
114
|
|
|
118
115
|
def test_version_route__no_custom_nodes_dir(tmp_path):
|
|
@@ -143,11 +140,9 @@ from vellum.workflows.nodes import BaseNode
|
|
|
143
140
|
|
|
144
141
|
class ProcessingNode(BaseNode):
|
|
145
142
|
\"""Processes input data.\"""
|
|
146
|
-
label = "Processing Node"
|
|
147
143
|
|
|
148
144
|
class TransformationNode(BaseNode):
|
|
149
145
|
\"""Transforms data format.\"""
|
|
150
|
-
label = "Transformation Node"
|
|
151
146
|
|
|
152
147
|
# This class should not be discovered
|
|
153
148
|
class HelperClass:
|
|
@@ -185,7 +180,6 @@ from vellum.workflows.nodes import BaseNode
|
|
|
185
180
|
|
|
186
181
|
class SomeNode(BaseNode):
|
|
187
182
|
\"\"\"This is Some Node.\"\"\"
|
|
188
|
-
label = "Some node"
|
|
189
183
|
"""
|
|
190
184
|
)
|
|
191
185
|
|
|
@@ -197,7 +191,6 @@ from vellum.workflows.nodes import BaseNode
|
|
|
197
191
|
|
|
198
192
|
class BrokenNode(BaseNode)
|
|
199
193
|
\"\"\"This node has a syntax error.\"\"\"
|
|
200
|
-
label = "Broken Node"
|
|
201
194
|
"""
|
|
202
195
|
)
|
|
203
196
|
|
|
@@ -216,10 +209,10 @@ class BrokenNode(BaseNode)
|
|
|
216
209
|
|
|
217
210
|
# AND the valid node should have correct metadata
|
|
218
211
|
valid_node = nodes[0]
|
|
219
|
-
assert valid_node["label"] == "Some
|
|
212
|
+
assert valid_node["label"] == "Some Node"
|
|
220
213
|
assert valid_node["description"] == "This is Some Node."
|
|
221
214
|
assert UUID(valid_node["id"])
|
|
222
|
-
assert valid_node["module"] == "vellum_custom_nodes"
|
|
215
|
+
assert valid_node["module"] == ["vellum_custom_nodes"]
|
|
223
216
|
|
|
224
217
|
# AND the error should be logged with full traceback
|
|
225
218
|
assert len(caplog.records) > 0
|
|
@@ -248,7 +241,6 @@ class Inputs(BaseInputs):
|
|
|
248
241
|
|
|
249
242
|
class MyAdditionNode(BaseNode):
|
|
250
243
|
\"\"\"Custom node that performs simple addition.\"\"\"
|
|
251
|
-
label = "Addition Node"
|
|
252
244
|
arg1: int = Inputs.arg1
|
|
253
245
|
arg2: int = Inputs.arg2
|
|
254
246
|
|
|
@@ -276,8 +268,8 @@ class MyAdditionNode(BaseNode):
|
|
|
276
268
|
|
|
277
269
|
# AND the node should have the correct metadata
|
|
278
270
|
node = nodes[0]
|
|
279
|
-
assert node["label"] == "Addition Node"
|
|
271
|
+
assert node["label"] == "My Addition Node"
|
|
280
272
|
assert node["description"] == "Custom node that performs simple addition."
|
|
281
273
|
assert UUID(node["id"])
|
|
282
|
-
assert node["module"] == "vellum_custom_nodes"
|
|
274
|
+
assert node["module"] == ["vellum_custom_nodes"]
|
|
283
275
|
assert node["name"] == "MyAdditionNode"
|
|
@@ -17,6 +17,7 @@ from flask import Blueprint, Response, current_app as app, request, stream_with_
|
|
|
17
17
|
from pydantic import ValidationError
|
|
18
18
|
|
|
19
19
|
from vellum.workflows.nodes import BaseNode
|
|
20
|
+
from vellum.workflows.utils.names import pascal_to_title_case
|
|
20
21
|
from workflow_server.config import MEMORY_LIMIT_MB
|
|
21
22
|
from workflow_server.core.events import (
|
|
22
23
|
STREAM_FINISHED_EVENT,
|
|
@@ -370,15 +371,15 @@ def get_version_route() -> tuple[dict, int]:
|
|
|
370
371
|
for _, name, _ in pkgutil.iter_modules([custom_nodes_path]):
|
|
371
372
|
try:
|
|
372
373
|
module = importlib.import_module(f"{CUSTOM_NODES_DIRECTORY}.{name}")
|
|
373
|
-
for
|
|
374
|
+
for label, obj in inspect.getmembers(module):
|
|
374
375
|
# Look for classes that inherit from BaseNode
|
|
375
376
|
if inspect.isclass(obj) and obj != BaseNode and issubclass(obj, BaseNode):
|
|
376
377
|
nodes.append(
|
|
377
378
|
{
|
|
378
379
|
"id": str(uuid4()),
|
|
379
|
-
"module": CUSTOM_NODES_DIRECTORY,
|
|
380
|
+
"module": CUSTOM_NODES_DIRECTORY.split("/"),
|
|
380
381
|
"name": obj.__name__,
|
|
381
|
-
"label":
|
|
382
|
+
"label": pascal_to_title_case(label),
|
|
382
383
|
"description": inspect.getdoc(obj) or "",
|
|
383
384
|
}
|
|
384
385
|
)
|
|
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
|