vellum-ai 0.14.39__py3-none-any.whl → 0.14.41__py3-none-any.whl
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.
- vellum/client/core/client_wrapper.py +1 -1
- vellum/client/reference.md +138 -1
- vellum/client/resources/ad_hoc/client.py +311 -1
- vellum/client/resources/deployments/client.py +2 -2
- vellum/workflows/nodes/bases/tests/test_base_node.py +24 -0
- vellum/workflows/nodes/core/try_node/node.py +1 -2
- vellum/workflows/nodes/experimental/tool_calling_node/__init__.py +3 -0
- vellum/workflows/nodes/experimental/tool_calling_node/node.py +125 -0
- vellum/workflows/nodes/experimental/tool_calling_node/utils.py +128 -0
- vellum/workflows/nodes/utils.py +4 -2
- vellum/workflows/outputs/base.py +3 -2
- vellum/workflows/references/output.py +20 -0
- vellum/workflows/state/base.py +36 -14
- vellum/workflows/state/tests/test_state.py +5 -2
- vellum/workflows/types/stack.py +11 -0
- vellum/workflows/workflows/base.py +5 -0
- vellum/workflows/workflows/tests/test_base_workflow.py +96 -9
- {vellum_ai-0.14.39.dist-info → vellum_ai-0.14.41.dist-info}/METADATA +1 -1
- {vellum_ai-0.14.39.dist-info → vellum_ai-0.14.41.dist-info}/RECORD +84 -80
- vellum_cli/push.py +0 -2
- vellum_ee/workflows/display/base.py +14 -1
- vellum_ee/workflows/display/nodes/base_node_display.py +91 -19
- vellum_ee/workflows/display/nodes/get_node_display_class.py +9 -15
- vellum_ee/workflows/display/nodes/tests/test_base_node_display.py +54 -0
- vellum_ee/workflows/display/nodes/vellum/api_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/base_adornment_node.py +4 -4
- vellum_ee/workflows/display/nodes/vellum/code_execution_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/conditional_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/error_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/final_output_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/guardrail_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/merge_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/note_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py +2 -4
- vellum_ee/workflows/display/nodes/vellum/retry_node.py +1 -2
- vellum_ee/workflows/display/nodes/vellum/search_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/templating_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py +1 -2
- vellum_ee/workflows/display/nodes/vellum/tests/test_error_node.py +1 -2
- vellum_ee/workflows/display/nodes/vellum/tests/test_note_node.py +1 -2
- vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py +55 -3
- vellum_ee/workflows/display/nodes/vellum/tests/test_retry_node.py +1 -2
- vellum_ee/workflows/display/nodes/vellum/tests/test_templating_node.py +1 -2
- vellum_ee/workflows/display/nodes/vellum/tests/test_try_node.py +1 -2
- vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py +4 -4
- vellum_ee/workflows/display/nodes/vellum/try_node.py +1 -2
- vellum_ee/workflows/display/nodes/vellum/utils.py +7 -1
- vellum_ee/workflows/display/tests/{test_vellum_workflow_display.py → test_base_workflow_display.py} +10 -22
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py +4 -6
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py +7 -16
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py +2 -6
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py +1 -2
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py +3 -10
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +4 -5
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py +2 -5
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py +7 -5
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +1 -2
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py +7 -5
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py +1 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py +2 -5
- vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py +2 -7
- vellum_ee/workflows/display/types.py +5 -4
- vellum_ee/workflows/display/utils/exceptions.py +7 -0
- vellum_ee/workflows/display/utils/registry.py +37 -0
- vellum_ee/workflows/display/utils/vellum.py +2 -1
- vellum_ee/workflows/display/workflows/base_workflow_display.py +277 -47
- vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py +34 -21
- vellum_ee/workflows/display/workflows/tests/test_workflow_display.py +58 -20
- vellum_ee/workflows/display/workflows/vellum_workflow_display.py +4 -257
- vellum_ee/workflows/tests/local_workflow/display/workflow.py +2 -2
- vellum_ee/workflows/display/nodes/base_node_vellum_display.py +0 -40
- {vellum_ai-0.14.39.dist-info → vellum_ai-0.14.41.dist-info}/LICENSE +0 -0
- {vellum_ai-0.14.39.dist-info → vellum_ai-0.14.41.dist-info}/WHEEL +0 -0
- {vellum_ai-0.14.39.dist-info → vellum_ai-0.14.41.dist-info}/entry_points.txt +0 -0
@@ -8,6 +8,7 @@ from vellum.workflows.references import NodeReference
|
|
8
8
|
from vellum.workflows.references.lazy import LazyReference
|
9
9
|
from vellum.workflows.utils.uuids import uuid4_from_hash
|
10
10
|
from vellum_ee.workflows.display.types import WorkflowDisplayContext
|
11
|
+
from vellum_ee.workflows.display.utils.exceptions import UnsupportedSerializationException
|
11
12
|
from vellum_ee.workflows.display.utils.expressions import get_child_descriptor
|
12
13
|
from vellum_ee.workflows.display.utils.vellum import (
|
13
14
|
ConstantValuePointer,
|
@@ -76,7 +77,12 @@ def create_node_input_value_pointer_rules(
|
|
76
77
|
node_input_value_pointer_rules.extend(rhs_rules)
|
77
78
|
else:
|
78
79
|
# Non-CoalesceExpression case
|
79
|
-
|
80
|
+
try:
|
81
|
+
rule = create_node_input_value_pointer_rule(value, display_context)
|
82
|
+
except UnsupportedSerializationException:
|
83
|
+
return node_input_value_pointer_rules
|
84
|
+
|
85
|
+
node_input_value_pointer_rules.append(rule)
|
80
86
|
else:
|
81
87
|
pointer = create_pointer(value, pointer_type)
|
82
88
|
node_input_value_pointer_rules.append(pointer)
|
vellum_ee/workflows/display/tests/{test_vellum_workflow_display.py → test_base_workflow_display.py}
RENAMED
@@ -6,19 +6,16 @@ from vellum.workflows.nodes import BaseNode
|
|
6
6
|
from vellum.workflows.state import BaseState
|
7
7
|
from vellum.workflows.workflows.base import BaseWorkflow
|
8
8
|
from vellum_ee.workflows.display.vellum import WorkflowInputsVellumDisplayOverrides
|
9
|
+
from vellum_ee.workflows.display.workflows.base_workflow_display import BaseWorkflowDisplay
|
9
10
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
10
|
-
from vellum_ee.workflows.display.workflows.vellum_workflow_display import VellumWorkflowDisplay
|
11
11
|
|
12
12
|
|
13
|
-
def
|
13
|
+
def test_base_workflow_display__serialize_empty_workflow():
|
14
14
|
# GIVEN an empty workflow
|
15
15
|
class ExampleWorkflow(BaseWorkflow):
|
16
16
|
pass
|
17
17
|
|
18
|
-
display = get_workflow_display(
|
19
|
-
base_display_class=VellumWorkflowDisplay,
|
20
|
-
workflow_class=ExampleWorkflow,
|
21
|
-
)
|
18
|
+
display = get_workflow_display(workflow_class=ExampleWorkflow)
|
22
19
|
|
23
20
|
# WHEN serializing the workflow
|
24
21
|
exec_config = display.serialize()
|
@@ -30,18 +27,18 @@ def test_vellum_workflow_display__serialize_empty_workflow():
|
|
30
27
|
"output_variables": [],
|
31
28
|
"workflow_raw_data": {
|
32
29
|
"definition": {
|
33
|
-
"module": ["vellum_ee", "workflows", "display", "tests", "
|
30
|
+
"module": ["vellum_ee", "workflows", "display", "tests", "test_base_workflow_display"],
|
34
31
|
"name": "ExampleWorkflow",
|
35
32
|
},
|
36
33
|
"display_data": {"viewport": {"x": 0.0, "y": 0.0, "zoom": 1.0}},
|
37
34
|
"edges": [],
|
38
35
|
"nodes": [
|
39
36
|
{
|
40
|
-
"data": {"label": "Entrypoint Node", "source_handle_id": "
|
37
|
+
"data": {"label": "Entrypoint Node", "source_handle_id": "0af025a4-3b25-457d-a7ae-e3a7ba15c86c"},
|
41
38
|
"base": None,
|
42
39
|
"definition": None,
|
43
40
|
"display_data": {"position": {"x": 0.0, "y": 0.0}},
|
44
|
-
"id": "
|
41
|
+
"id": "3c41cdd9-999a-48b8-9088-f6dfa1369bfd",
|
45
42
|
"inputs": [],
|
46
43
|
"type": "ENTRYPOINT",
|
47
44
|
}
|
@@ -62,7 +59,7 @@ def test_vellum_workflow_display__serialize_input_variables_with_capitalized_var
|
|
62
59
|
class ExampleWorkflow(BaseWorkflow[Inputs, BaseState]):
|
63
60
|
graph = StartNode
|
64
61
|
|
65
|
-
class ExampleWorkflowDisplay(
|
62
|
+
class ExampleWorkflowDisplay(BaseWorkflowDisplay[ExampleWorkflow]):
|
66
63
|
inputs_display = {
|
67
64
|
Inputs.foo: WorkflowInputsVellumDisplayOverrides(
|
68
65
|
id=UUID("97b63d71-5413-417f-9cf5-49e1b4fd56e4"), name="Foo", required=True
|
@@ -108,10 +105,7 @@ def test_vellum_workflow_display_serialize_valid_handle_ids_for_base_nodes():
|
|
108
105
|
final_value = EndNode.Outputs.hello
|
109
106
|
|
110
107
|
# AND a display class for this workflow
|
111
|
-
workflow_display = get_workflow_display(
|
112
|
-
base_display_class=VellumWorkflowDisplay,
|
113
|
-
workflow_class=Workflow,
|
114
|
-
)
|
108
|
+
workflow_display = get_workflow_display(workflow_class=Workflow)
|
115
109
|
|
116
110
|
# WHEN we serialize the workflow
|
117
111
|
exec_config = workflow_display.serialize()
|
@@ -169,10 +163,7 @@ def test_vellum_workflow_display__serialize_with_unused_nodes_and_edges():
|
|
169
163
|
final = NodeA.Outputs.result
|
170
164
|
|
171
165
|
# WHEN we serialize it
|
172
|
-
workflow_display = get_workflow_display(
|
173
|
-
base_display_class=VellumWorkflowDisplay,
|
174
|
-
workflow_class=Workflow,
|
175
|
-
)
|
166
|
+
workflow_display = get_workflow_display(workflow_class=Workflow)
|
176
167
|
|
177
168
|
# WHEN we serialize the workflow
|
178
169
|
exec_config = workflow_display.serialize()
|
@@ -245,10 +236,7 @@ def test_vellum_workflow_display__serialize_with_parse_json_expression():
|
|
245
236
|
final = JsonNode.Outputs.json_result
|
246
237
|
|
247
238
|
# AND a display class for this workflow
|
248
|
-
workflow_display = get_workflow_display(
|
249
|
-
base_display_class=VellumWorkflowDisplay,
|
250
|
-
workflow_class=Workflow,
|
251
|
-
)
|
239
|
+
workflow_display = get_workflow_display(workflow_class=Workflow)
|
252
240
|
|
253
241
|
# WHEN we serialize the workflow
|
254
242
|
exec_config = workflow_display.serialize()
|
@@ -1,11 +1,10 @@
|
|
1
1
|
import pytest
|
2
2
|
from uuid import uuid4
|
3
|
-
from typing import
|
3
|
+
from typing import Type
|
4
4
|
|
5
5
|
from vellum.workflows.types.core import JsonObject
|
6
6
|
from vellum.workflows.types.generics import NodeType
|
7
7
|
from vellum_ee.workflows.display.editor.types import NodeDisplayData
|
8
|
-
from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
|
9
8
|
from vellum_ee.workflows.display.nodes.get_node_display_class import get_node_display_class
|
10
9
|
from vellum_ee.workflows.display.types import (
|
11
10
|
NodeDisplays,
|
@@ -15,24 +14,23 @@ from vellum_ee.workflows.display.types import (
|
|
15
14
|
WorkflowInputsDisplays,
|
16
15
|
)
|
17
16
|
from vellum_ee.workflows.display.vellum import WorkflowMetaVellumDisplay
|
18
|
-
from vellum_ee.workflows.display.workflows.
|
17
|
+
from vellum_ee.workflows.display.workflows.base_workflow_display import BaseWorkflowDisplay
|
19
18
|
|
20
19
|
|
21
20
|
@pytest.fixture()
|
22
21
|
def serialize_node():
|
23
22
|
def _serialize_node(
|
24
23
|
node_class: Type[NodeType],
|
25
|
-
base_class: type[BaseNodeDisplay[Any]] = BaseNodeDisplay,
|
26
24
|
global_workflow_input_displays: WorkflowInputsDisplays = {},
|
27
25
|
global_state_value_displays: StateValueDisplays = {},
|
28
26
|
global_node_displays: NodeDisplays = {},
|
29
27
|
global_node_output_displays: NodeOutputDisplays = {},
|
30
28
|
) -> JsonObject:
|
31
|
-
node_display_class = get_node_display_class(
|
29
|
+
node_display_class = get_node_display_class(node_class)
|
32
30
|
node_display = node_display_class()
|
33
31
|
|
34
32
|
context: WorkflowDisplayContext = WorkflowDisplayContext(
|
35
|
-
workflow_display_class=
|
33
|
+
workflow_display_class=BaseWorkflowDisplay,
|
36
34
|
workflow_display=WorkflowMetaVellumDisplay(
|
37
35
|
entrypoint_node_id=uuid4(),
|
38
36
|
entrypoint_node_source_handle_id=uuid4(),
|
@@ -10,11 +10,9 @@ from vellum.workflows.outputs.base import BaseOutputs
|
|
10
10
|
from vellum.workflows.workflows.base import BaseWorkflow
|
11
11
|
from vellum_ee.workflows.display.base import WorkflowInputsDisplay
|
12
12
|
from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
|
13
|
-
from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
|
14
13
|
from vellum_ee.workflows.display.nodes.vellum.retry_node import BaseRetryNodeDisplay
|
15
14
|
from vellum_ee.workflows.display.nodes.vellum.try_node import BaseTryNodeDisplay
|
16
15
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
17
|
-
from vellum_ee.workflows.display.workflows.vellum_workflow_display import VellumWorkflowDisplay
|
18
16
|
|
19
17
|
|
20
18
|
class Inputs(BaseInputs):
|
@@ -124,10 +122,7 @@ def test_serialize_node__retry__no_display():
|
|
124
122
|
graph = StartNode
|
125
123
|
|
126
124
|
# WHEN we serialize the workflow
|
127
|
-
workflow_display = get_workflow_display(
|
128
|
-
base_display_class=VellumWorkflowDisplay,
|
129
|
-
workflow_class=MyWorkflow,
|
130
|
-
)
|
125
|
+
workflow_display = get_workflow_display(workflow_class=MyWorkflow)
|
131
126
|
exec_config = workflow_display.serialize()
|
132
127
|
|
133
128
|
# THEN the workflow display is created successfully
|
@@ -148,7 +143,6 @@ def test_serialize_node__try(serialize_node):
|
|
148
143
|
|
149
144
|
input_id = uuid4()
|
150
145
|
serialized_node = serialize_node(
|
151
|
-
base_class=BaseNodeVellumDisplay,
|
152
146
|
node_class=InnerTryGenericNode,
|
153
147
|
global_workflow_input_displays={Inputs.input: WorkflowInputsDisplay(id=input_id)},
|
154
148
|
global_node_displays={
|
@@ -220,10 +214,7 @@ def test_serialize_node__try__no_display():
|
|
220
214
|
graph = StartNode
|
221
215
|
|
222
216
|
# WHEN we serialize the workflow
|
223
|
-
workflow_display = get_workflow_display(
|
224
|
-
base_display_class=VellumWorkflowDisplay,
|
225
|
-
workflow_class=MyWorkflow,
|
226
|
-
)
|
217
|
+
workflow_display = get_workflow_display(workflow_class=MyWorkflow)
|
227
218
|
|
228
219
|
exec_config = workflow_display.serialize()
|
229
220
|
|
@@ -242,10 +233,7 @@ def test_serialize_node__stacked():
|
|
242
233
|
graph = InnerStackedGenericNode
|
243
234
|
|
244
235
|
# WHEN we serialize the workflow
|
245
|
-
workflow_display = get_workflow_display(
|
246
|
-
base_display_class=VellumWorkflowDisplay,
|
247
|
-
workflow_class=StackedWorkflow,
|
248
|
-
)
|
236
|
+
workflow_display = get_workflow_display(workflow_class=StackedWorkflow)
|
249
237
|
exec_config = workflow_display.serialize()
|
250
238
|
|
251
239
|
# THEN the workflow display is created successfully
|
@@ -283,7 +271,10 @@ def test_serialize_node__stacked():
|
|
283
271
|
"test_adornments_serialization",
|
284
272
|
],
|
285
273
|
},
|
286
|
-
"trigger": {
|
274
|
+
"trigger": {
|
275
|
+
"id": "6e4af17f-bbee-4777-b10d-af042cd6e16a",
|
276
|
+
"merge_behavior": "AWAIT_ATTRIBUTES",
|
277
|
+
},
|
287
278
|
"ports": [{"id": "408cd5fb-3a3e-4eb2-9889-61111bd6a129", "name": "default", "type": "DEFAULT"}],
|
288
279
|
"adornments": [
|
289
280
|
{
|
@@ -16,7 +16,6 @@ from vellum_ee.workflows.display.base import WorkflowInputsDisplay
|
|
16
16
|
from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
|
17
17
|
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay
|
18
18
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
19
|
-
from vellum_ee.workflows.display.workflows.vellum_workflow_display import VellumWorkflowDisplay
|
20
19
|
|
21
20
|
|
22
21
|
class Inputs(BaseInputs):
|
@@ -169,7 +168,7 @@ def test_serialize_node__lazy_reference_with_string():
|
|
169
168
|
graph = LazyReferenceGenericNode >> OtherNode
|
170
169
|
|
171
170
|
# WHEN the workflow is serialized
|
172
|
-
workflow_display = get_workflow_display(
|
171
|
+
workflow_display = get_workflow_display(workflow_class=Workflow)
|
173
172
|
serialized_workflow: dict = workflow_display.serialize()
|
174
173
|
|
175
174
|
# THEN the node should properly serialize the attribute reference
|
@@ -257,10 +256,7 @@ def test_serialize_node__workflow_input_as_nested_chat_history():
|
|
257
256
|
graph = GenericNode
|
258
257
|
|
259
258
|
# WHEN the workflow is serialized
|
260
|
-
workflow_display = get_workflow_display(
|
261
|
-
base_display_class=VellumWorkflowDisplay,
|
262
|
-
workflow_class=Workflow,
|
263
|
-
)
|
259
|
+
workflow_display = get_workflow_display(workflow_class=Workflow)
|
264
260
|
with pytest.raises(Exception) as exc_info:
|
265
261
|
workflow_display.serialize()
|
266
262
|
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py
CHANGED
@@ -4,7 +4,6 @@ from uuid import uuid4
|
|
4
4
|
from deepdiff import DeepDiff
|
5
5
|
|
6
6
|
from vellum import WorkspaceSecretRead
|
7
|
-
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
8
7
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
9
8
|
|
10
9
|
from tests.workflows.basic_api_node.workflow import SimpleAPIWorkflow
|
@@ -24,7 +23,7 @@ def test_serialize_workflow(vellum_client):
|
|
24
23
|
vellum_client.workspace_secrets.retrieve.return_value = workspace_secret
|
25
24
|
|
26
25
|
# WHEN we serialize it
|
27
|
-
workflow_display = get_workflow_display(
|
26
|
+
workflow_display = get_workflow_display(workflow_class=SimpleAPIWorkflow)
|
28
27
|
|
29
28
|
serialized_workflow: dict = workflow_display.serialize()
|
30
29
|
|
@@ -1,7 +1,6 @@
|
|
1
1
|
from deepdiff import DeepDiff
|
2
2
|
|
3
3
|
from vellum.workflows.nodes.utils import ADORNMENT_MODULE_NAME
|
4
|
-
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
5
4
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
6
5
|
|
7
6
|
from tests.workflows.basic_code_execution_node.try_workflow import TrySimpleCodeExecutionWorkflow
|
@@ -12,9 +11,7 @@ from tests.workflows.basic_code_execution_node.workflow_with_code import SimpleC
|
|
12
11
|
def test_serialize_workflow_with_filepath():
|
13
12
|
# GIVEN a Workflow with a code execution node
|
14
13
|
# WHEN we serialize it
|
15
|
-
workflow_display = get_workflow_display(
|
16
|
-
base_display_class=VellumWorkflowDisplay, workflow_class=SimpleCodeExecutionWithFilepathWorkflow
|
17
|
-
)
|
14
|
+
workflow_display = get_workflow_display(workflow_class=SimpleCodeExecutionWithFilepathWorkflow)
|
18
15
|
serialized_workflow: dict = workflow_display.serialize()
|
19
16
|
|
20
17
|
# THEN we should get a serialized representation of the Workflow
|
@@ -253,9 +250,7 @@ def test_serialize_workflow_with_filepath():
|
|
253
250
|
def test_serialize_workflow_with_code():
|
254
251
|
# GIVEN a Workflow with a code execution node
|
255
252
|
# WHEN we serialize it
|
256
|
-
workflow_display = get_workflow_display(
|
257
|
-
base_display_class=VellumWorkflowDisplay, workflow_class=SimpleCodeExecutionWithCodeWorkflow
|
258
|
-
)
|
253
|
+
workflow_display = get_workflow_display(workflow_class=SimpleCodeExecutionWithCodeWorkflow)
|
259
254
|
serialized_workflow: dict = workflow_display.serialize()
|
260
255
|
|
261
256
|
# THEN we should get a serialized representation of the Workflow
|
@@ -482,9 +477,7 @@ def test_serialize_workflow_with_code():
|
|
482
477
|
def test_serialize_workflow__try_wrapped():
|
483
478
|
# GIVEN a Workflow with a code execution node
|
484
479
|
# WHEN we serialize it
|
485
|
-
workflow_display = get_workflow_display(
|
486
|
-
base_display_class=VellumWorkflowDisplay, workflow_class=TrySimpleCodeExecutionWorkflow
|
487
|
-
)
|
480
|
+
workflow_display = get_workflow_display(workflow_class=TrySimpleCodeExecutionWorkflow)
|
488
481
|
serialized_workflow: dict = workflow_display.serialize()
|
489
482
|
|
490
483
|
# THEN we should get a serialized representation of the Workflow
|
@@ -20,7 +20,6 @@ from vellum.workflows.expressions.less_than import LessThanExpression
|
|
20
20
|
from vellum.workflows.expressions.less_than_or_equal_to import LessThanOrEqualToExpression
|
21
21
|
from vellum.workflows.expressions.not_between import NotBetweenExpression
|
22
22
|
from vellum.workflows.expressions.not_in import NotInExpression
|
23
|
-
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
24
23
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
25
24
|
|
26
25
|
from tests.workflows.basic_conditional_node.workflow import CategoryWorkflow
|
@@ -30,7 +29,7 @@ from tests.workflows.basic_conditional_node.workflow_with_only_one_conditional_n
|
|
30
29
|
def test_serialize_workflow():
|
31
30
|
# GIVEN a Workflow that uses a ConditionalNode
|
32
31
|
# WHEN we serialize it
|
33
|
-
workflow_display = get_workflow_display(
|
32
|
+
workflow_display = get_workflow_display(workflow_class=CategoryWorkflow)
|
34
33
|
serialized_workflow: dict = workflow_display.serialize()
|
35
34
|
|
36
35
|
# THEN we should get a serialized representation of the Workflow
|
@@ -779,7 +778,7 @@ def test_conditional_node_serialize_all_operators_with_lhs_and_rhs(descriptor, o
|
|
779
778
|
# GIVEN a simple workflow with one conditional node
|
780
779
|
workflow_cls = create_simple_workflow(descriptor)
|
781
780
|
|
782
|
-
workflow_display = get_workflow_display(
|
781
|
+
workflow_display = get_workflow_display(workflow_class=workflow_cls)
|
783
782
|
serialized_workflow: dict = workflow_display.serialize()
|
784
783
|
|
785
784
|
# THEN we should get a serialized representation of the Workflow
|
@@ -885,7 +884,7 @@ def test_conditional_node_serialize_all_operators_with_expression(descriptor, op
|
|
885
884
|
# GIVEN a simple workflow with one conditional node
|
886
885
|
workflow_cls = create_simple_workflow(descriptor)
|
887
886
|
|
888
|
-
workflow_display = get_workflow_display(
|
887
|
+
workflow_display = get_workflow_display(workflow_class=workflow_cls)
|
889
888
|
serialized_workflow: dict = workflow_display.serialize()
|
890
889
|
|
891
890
|
# THEN we should get a serialized representation of the Workflow
|
@@ -978,7 +977,7 @@ def test_conditional_node_serialize_all_operators_with_value_and_start_and_end(d
|
|
978
977
|
# GIVEN a simple workflow with one conditional node
|
979
978
|
workflow_cls = create_simple_workflow(descriptor)
|
980
979
|
|
981
|
-
workflow_display = get_workflow_display(
|
980
|
+
workflow_display = get_workflow_display(workflow_class=workflow_cls)
|
982
981
|
serialized_workflow: dict = workflow_display.serialize()
|
983
982
|
|
984
983
|
# THEN we should get a serialized representation of the Workflow
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
from deepdiff import DeepDiff
|
2
2
|
|
3
|
-
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
4
3
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
5
4
|
|
6
5
|
from tests.workflows.basic_default_state.workflow import BasicDefaultStateWorkflow
|
@@ -9,9 +8,7 @@ from tests.workflows.basic_default_state.workflow import BasicDefaultStateWorkfl
|
|
9
8
|
def test_serialize_workflow():
|
10
9
|
# GIVEN a Workflow that has a simple state definition
|
11
10
|
# WHEN we serialize it
|
12
|
-
workflow_display = get_workflow_display(
|
13
|
-
base_display_class=VellumWorkflowDisplay, workflow_class=BasicDefaultStateWorkflow
|
14
|
-
)
|
11
|
+
workflow_display = get_workflow_display(workflow_class=BasicDefaultStateWorkflow)
|
15
12
|
|
16
13
|
serialized_workflow: dict = workflow_display.serialize()
|
17
14
|
# THEN we should get a serialized representation of the Workflow
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
from deepdiff import DeepDiff
|
2
2
|
|
3
|
-
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
4
3
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
5
4
|
|
6
5
|
from tests.workflows.basic_error_node.workflow import BasicErrorNodeWorkflow
|
@@ -9,9 +8,7 @@ from tests.workflows.basic_error_node.workflow import BasicErrorNodeWorkflow
|
|
9
8
|
def test_serialize_workflow():
|
10
9
|
# GIVEN a Workflow with an error node
|
11
10
|
# WHEN we serialize it
|
12
|
-
workflow_display = get_workflow_display(
|
13
|
-
base_display_class=VellumWorkflowDisplay, workflow_class=BasicErrorNodeWorkflow
|
14
|
-
)
|
11
|
+
workflow_display = get_workflow_display(workflow_class=BasicErrorNodeWorkflow)
|
15
12
|
|
16
13
|
serialized_workflow: dict = workflow_display.serialize()
|
17
14
|
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py
CHANGED
@@ -1,17 +1,14 @@
|
|
1
1
|
from deepdiff import DeepDiff
|
2
2
|
|
3
|
-
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
4
3
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
5
4
|
|
6
5
|
from tests.workflows.basic_generic_node.workflow import BasicGenericNodeWorkflow
|
7
6
|
|
8
7
|
|
9
|
-
def test_serialize_workflow(
|
8
|
+
def test_serialize_workflow():
|
10
9
|
# GIVEN a Workflow that uses a generic node
|
11
10
|
# WHEN we serialize it
|
12
|
-
workflow_display = get_workflow_display(
|
13
|
-
base_display_class=VellumWorkflowDisplay, workflow_class=BasicGenericNodeWorkflow
|
14
|
-
)
|
11
|
+
workflow_display = get_workflow_display(workflow_class=BasicGenericNodeWorkflow)
|
15
12
|
|
16
13
|
serialized_workflow: dict = workflow_display.serialize()
|
17
14
|
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
from deepdiff import DeepDiff
|
2
2
|
|
3
|
-
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
4
3
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
5
4
|
|
6
5
|
from tests.workflows.basic_guardrail_node.workflow import BasicGuardrailNodeWorkflow
|
@@ -9,14 +8,17 @@ from tests.workflows.basic_guardrail_node.workflow import BasicGuardrailNodeWork
|
|
9
8
|
def test_serialize_workflow():
|
10
9
|
# GIVEN a workflow that uses a guardrail node
|
11
10
|
# WHEN we serialize it
|
12
|
-
workflow_display = get_workflow_display(
|
13
|
-
base_display_class=VellumWorkflowDisplay, workflow_class=BasicGuardrailNodeWorkflow
|
14
|
-
)
|
11
|
+
workflow_display = get_workflow_display(workflow_class=BasicGuardrailNodeWorkflow)
|
15
12
|
|
16
13
|
serialized_workflow: dict = workflow_display.serialize()
|
17
14
|
|
18
15
|
# THEN we should get a serialized representation of the workflow
|
19
|
-
assert serialized_workflow.keys() == {
|
16
|
+
assert serialized_workflow.keys() == {
|
17
|
+
"workflow_raw_data",
|
18
|
+
"input_variables",
|
19
|
+
"state_variables",
|
20
|
+
"output_variables",
|
21
|
+
}
|
20
22
|
|
21
23
|
# AND its input variables should be what we expect
|
22
24
|
input_variables = serialized_workflow["input_variables"]
|
@@ -1,4 +1,3 @@
|
|
1
|
-
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
2
1
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
3
2
|
|
4
3
|
from tests.workflows.basic_inline_prompt_node_with_functions.workflow import BasicInlinePromptWithFunctionsWorkflow
|
@@ -6,9 +5,7 @@ from tests.workflows.basic_inline_prompt_node_with_functions.workflow import Bas
|
|
6
5
|
|
7
6
|
def test_serialize_workflow():
|
8
7
|
# WHEN we serialize it
|
9
|
-
workflow_display = get_workflow_display(
|
10
|
-
base_display_class=VellumWorkflowDisplay, workflow_class=BasicInlinePromptWithFunctionsWorkflow
|
11
|
-
)
|
8
|
+
workflow_display = get_workflow_display(workflow_class=BasicInlinePromptWithFunctionsWorkflow)
|
12
9
|
serialized_workflow: dict = workflow_display.serialize()
|
13
10
|
assert (
|
14
11
|
serialized_workflow["workflow_raw_data"]["nodes"][-2]["data"]["exec_config"]["prompt_template_block_data"][
|
@@ -1,6 +1,5 @@
|
|
1
1
|
from deepdiff import DeepDiff
|
2
2
|
|
3
|
-
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
4
3
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
5
4
|
|
6
5
|
from tests.workflows.basic_inline_subworkflow.workflow import BasicInlineSubworkflowWorkflow
|
@@ -9,9 +8,7 @@ from tests.workflows.basic_inline_subworkflow.workflow import BasicInlineSubwork
|
|
9
8
|
def test_serialize_workflow():
|
10
9
|
# GIVEN a Workflow
|
11
10
|
# WHEN we serialize it
|
12
|
-
workflow_display = get_workflow_display(
|
13
|
-
base_display_class=VellumWorkflowDisplay, workflow_class=BasicInlineSubworkflowWorkflow
|
14
|
-
)
|
11
|
+
workflow_display = get_workflow_display(workflow_class=BasicInlineSubworkflowWorkflow)
|
15
12
|
serialized_workflow: dict = workflow_display.serialize()
|
16
13
|
|
17
14
|
# THEN we should get a serialized representation of the Workflow
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
from deepdiff import DeepDiff
|
2
2
|
|
3
|
-
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
4
3
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
5
4
|
|
6
5
|
from tests.workflows.basic_map_node.workflow import SimpleMapExample
|
@@ -9,7 +8,7 @@ from tests.workflows.basic_map_node.workflow import SimpleMapExample
|
|
9
8
|
def test_serialize_workflow():
|
10
9
|
# GIVEN a Workflow that uses a MapNode
|
11
10
|
# WHEN we serialize it
|
12
|
-
workflow_display = get_workflow_display(
|
11
|
+
workflow_display = get_workflow_display(workflow_class=SimpleMapExample)
|
13
12
|
serialized_workflow: dict = workflow_display.serialize()
|
14
13
|
|
15
14
|
# THEN we should get a serialized representation of the Workflow
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
from deepdiff import DeepDiff
|
2
2
|
|
3
|
-
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
4
3
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
5
4
|
|
6
5
|
from tests.workflows.basic_merge_node.await_all_workflow import AwaitAllPassingWorkflow
|
@@ -9,9 +8,7 @@ from tests.workflows.basic_merge_node.await_all_workflow import AwaitAllPassingW
|
|
9
8
|
def test_serialize_workflow__await_all():
|
10
9
|
# GIVEN a Workflow that uses an await all merge node
|
11
10
|
# WHEN we serialize it
|
12
|
-
workflow_display = get_workflow_display(
|
13
|
-
base_display_class=VellumWorkflowDisplay, workflow_class=AwaitAllPassingWorkflow
|
14
|
-
)
|
11
|
+
workflow_display = get_workflow_display(workflow_class=AwaitAllPassingWorkflow)
|
15
12
|
serialized_workflow: dict = workflow_display.serialize()
|
16
13
|
|
17
14
|
# THEN we should get a serialized representation of the Workflow
|
@@ -4,7 +4,6 @@ from uuid import uuid4
|
|
4
4
|
from deepdiff import DeepDiff
|
5
5
|
|
6
6
|
from vellum import DeploymentRead
|
7
|
-
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
8
7
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
9
8
|
|
10
9
|
from tests.workflows.basic_text_prompt_deployment.workflow import BasicTextPromptDeployment
|
@@ -25,9 +24,7 @@ def test_serialize_workflow(vellum_client):
|
|
25
24
|
vellum_client.deployments.retrieve.return_value = deployment
|
26
25
|
|
27
26
|
# WHEN we serialize it
|
28
|
-
workflow_display = get_workflow_display(
|
29
|
-
base_display_class=VellumWorkflowDisplay, workflow_class=BasicTextPromptDeployment
|
30
|
-
)
|
27
|
+
workflow_display = get_workflow_display(workflow_class=BasicTextPromptDeployment)
|
31
28
|
serialized_workflow: dict = workflow_display.serialize()
|
32
29
|
|
33
30
|
# THEN we should get a serialized representation of the Workflow
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
2
1
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
3
2
|
|
4
3
|
from tests.workflows.basic_search_node.workflow import BasicSearchWorkflow
|
@@ -8,14 +7,17 @@ def test_serialize_workflow():
|
|
8
7
|
# GIVEN a Workflow with a search node
|
9
8
|
# WHEN we serialize it
|
10
9
|
|
11
|
-
workflow_display = get_workflow_display(
|
12
|
-
base_display_class=VellumWorkflowDisplay, workflow_class=BasicSearchWorkflow
|
13
|
-
)
|
10
|
+
workflow_display = get_workflow_display(workflow_class=BasicSearchWorkflow)
|
14
11
|
|
15
12
|
serialized_workflow: dict = workflow_display.serialize()
|
16
13
|
|
17
14
|
# THEN we should get a serialized representation of the workflow
|
18
|
-
assert serialized_workflow.keys() == {
|
15
|
+
assert serialized_workflow.keys() == {
|
16
|
+
"workflow_raw_data",
|
17
|
+
"input_variables",
|
18
|
+
"state_variables",
|
19
|
+
"output_variables",
|
20
|
+
}
|
19
21
|
|
20
22
|
# AND its input variables should be what we expect
|
21
23
|
input_variables = serialized_workflow["input_variables"]
|
@@ -4,7 +4,6 @@ from uuid import uuid4
|
|
4
4
|
from deepdiff import DeepDiff
|
5
5
|
|
6
6
|
from vellum import WorkflowDeploymentRead
|
7
|
-
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
8
7
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
9
8
|
|
10
9
|
from tests.workflows.basic_subworkflow_deployment.workflow import BasicSubworkflowDeploymentWorkflow
|
@@ -25,9 +24,7 @@ def test_serialize_workflow(vellum_client):
|
|
25
24
|
vellum_client.workflow_deployments.retrieve.return_value = deployment
|
26
25
|
|
27
26
|
# WHEN we serialize it
|
28
|
-
workflow_display = get_workflow_display(
|
29
|
-
base_display_class=VellumWorkflowDisplay, workflow_class=BasicSubworkflowDeploymentWorkflow
|
30
|
-
)
|
27
|
+
workflow_display = get_workflow_display(workflow_class=BasicSubworkflowDeploymentWorkflow)
|
31
28
|
serialized_workflow: dict = workflow_display.serialize()
|
32
29
|
|
33
30
|
# THEN we should get a serialized representation of the Workflow
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
from deepdiff import DeepDiff
|
2
2
|
|
3
|
-
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
4
3
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
5
4
|
|
6
5
|
from tests.workflows.basic_templating_node.workflow_with_json_input import BasicTemplatingNodeWorkflowWithJson
|
@@ -10,9 +9,7 @@ def test_serialize_workflow():
|
|
10
9
|
# GIVEN a Workflow that uses a vellum templating node",
|
11
10
|
|
12
11
|
# WHEN we serialize it
|
13
|
-
workflow_display = get_workflow_display(
|
14
|
-
base_display_class=VellumWorkflowDisplay, workflow_class=BasicTemplatingNodeWorkflowWithJson
|
15
|
-
)
|
12
|
+
workflow_display = get_workflow_display(workflow_class=BasicTemplatingNodeWorkflowWithJson)
|
16
13
|
|
17
14
|
serialized_workflow: dict = workflow_display.serialize()
|
18
15
|
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
2
1
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
3
2
|
|
4
3
|
from tests.workflows.basic_final_output_node.workflow import BasicFinalOutputNodeWorkflow
|
@@ -7,9 +6,7 @@ from tests.workflows.basic_final_output_node.workflow import BasicFinalOutputNod
|
|
7
6
|
def test_serialize_workflow():
|
8
7
|
# GIVEN a Workflow that uses a Final Output Node
|
9
8
|
# WHEN we serialize it
|
10
|
-
workflow_display = get_workflow_display(
|
11
|
-
base_display_class=VellumWorkflowDisplay, workflow_class=BasicFinalOutputNodeWorkflow
|
12
|
-
)
|
9
|
+
workflow_display = get_workflow_display(workflow_class=BasicFinalOutputNodeWorkflow)
|
13
10
|
serialized_workflow: dict = workflow_display.serialize()
|
14
11
|
|
15
12
|
# THEN we should get a serialized representation of the Workflow
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py
CHANGED
@@ -2,7 +2,6 @@ import pytest
|
|
2
2
|
|
3
3
|
from deepdiff import DeepDiff
|
4
4
|
|
5
|
-
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
6
5
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
7
6
|
|
8
7
|
from tests.workflows.basic_try_node.workflow import SimpleTryExample, StandaloneTryExample
|
@@ -11,7 +10,7 @@ from tests.workflows.basic_try_node.workflow import SimpleTryExample, Standalone
|
|
11
10
|
def test_serialize_workflow():
|
12
11
|
# GIVEN a Workflow with a TryNode
|
13
12
|
# WHEN we serialize it
|
14
|
-
workflow_display = get_workflow_display(
|
13
|
+
workflow_display = get_workflow_display(workflow_class=SimpleTryExample)
|
15
14
|
serialized_workflow: dict = workflow_display.serialize()
|
16
15
|
|
17
16
|
# THEN we should get a serialized representation of the Workflow
|
@@ -77,9 +76,7 @@ def test_serialize_workflow__standalone():
|
|
77
76
|
# GIVEN a Workflow with a standalone TryNode
|
78
77
|
# WHEN we serialize it
|
79
78
|
with pytest.raises(NotImplementedError) as exc:
|
80
|
-
workflow_display = get_workflow_display(
|
81
|
-
base_display_class=VellumWorkflowDisplay, workflow_class=StandaloneTryExample
|
82
|
-
)
|
79
|
+
workflow_display = get_workflow_display(workflow_class=StandaloneTryExample)
|
83
80
|
workflow_display.serialize()
|
84
81
|
|
85
82
|
# THEN we should get an error
|