vellum-ai 0.13.0__py3-none-any.whl → 0.13.2__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.
Files changed (53) hide show
  1. vellum/client/core/client_wrapper.py +1 -1
  2. vellum/client/core/pydantic_utilities.py +5 -0
  3. vellum/client/resources/workflows/client.py +8 -0
  4. vellum/client/types/logical_operator.py +2 -0
  5. vellum/workflows/descriptors/base.py +1 -1
  6. vellum/workflows/descriptors/tests/test_utils.py +3 -0
  7. vellum/workflows/expressions/accessor.py +8 -2
  8. vellum/workflows/nodes/core/map_node/node.py +49 -24
  9. vellum/workflows/nodes/core/map_node/tests/test_node.py +4 -4
  10. vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +1 -1
  11. vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +5 -3
  12. vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +3 -0
  13. vellum/workflows/nodes/displayable/bases/search_node.py +37 -2
  14. vellum/workflows/nodes/displayable/bases/tests/__init__.py +0 -0
  15. vellum/workflows/nodes/displayable/bases/tests/test_utils.py +61 -0
  16. vellum/workflows/nodes/displayable/bases/types.py +42 -0
  17. vellum/workflows/nodes/displayable/bases/utils.py +112 -0
  18. vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py +0 -1
  19. vellum/workflows/nodes/displayable/search_node/tests/__init__.py +0 -0
  20. vellum/workflows/nodes/displayable/search_node/tests/test_node.py +164 -0
  21. vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py +2 -3
  22. vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py +0 -1
  23. vellum/workflows/runner/runner.py +37 -4
  24. vellum/workflows/types/tests/test_utils.py +5 -2
  25. vellum/workflows/types/utils.py +4 -0
  26. vellum/workflows/workflows/base.py +14 -0
  27. {vellum_ai-0.13.0.dist-info → vellum_ai-0.13.2.dist-info}/METADATA +1 -1
  28. {vellum_ai-0.13.0.dist-info → vellum_ai-0.13.2.dist-info}/RECORD +53 -42
  29. vellum_cli/__init__.py +24 -0
  30. vellum_cli/ping.py +28 -0
  31. vellum_cli/push.py +62 -12
  32. vellum_cli/tests/test_ping.py +47 -0
  33. vellum_cli/tests/test_push.py +76 -0
  34. vellum_ee/workflows/display/nodes/vellum/base_node.py +59 -11
  35. vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py +3 -0
  36. vellum_ee/workflows/display/nodes/vellum/map_node.py +1 -1
  37. vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py +14 -10
  38. vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py +2 -2
  39. vellum_ee/workflows/display/nodes/vellum/utils.py +8 -1
  40. vellum_ee/workflows/display/tests/test_vellum_workflow_display.py +48 -0
  41. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py +67 -0
  42. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py +286 -0
  43. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py +177 -0
  44. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py +666 -14
  45. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py +7 -8
  46. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +35 -2
  47. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +29 -2
  48. vellum_ee/workflows/display/utils/vellum.py +4 -42
  49. vellum_ee/workflows/display/vellum.py +7 -36
  50. vellum_ee/workflows/display/workflows/vellum_workflow_display.py +5 -2
  51. {vellum_ai-0.13.0.dist-info → vellum_ai-0.13.2.dist-info}/LICENSE +0 -0
  52. {vellum_ai-0.13.0.dist-info → vellum_ai-0.13.2.dist-info}/WHEEL +0 -0
  53. {vellum_ai-0.13.0.dist-info → vellum_ai-0.13.2.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,177 @@
1
+ from uuid import uuid4
2
+
3
+ from deepdiff import DeepDiff
4
+
5
+ from vellum.workflows.inputs.base import BaseInputs
6
+ from vellum.workflows.nodes.bases.base import BaseNode
7
+ from vellum_ee.workflows.display.base import WorkflowInputsDisplay
8
+ from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay
9
+ from vellum_ee.workflows.display.nodes.vellum.base_node import BaseNodeDisplay
10
+
11
+
12
+ class Inputs(BaseInputs):
13
+ input: str
14
+
15
+
16
+ class AnnotatedOutputGenericNode(BaseNode):
17
+ class Outputs(BaseNode.Outputs):
18
+ output: int
19
+
20
+
21
+ def test_serialize_node__annotated_output(serialize_node):
22
+ serialized_node = serialize_node(AnnotatedOutputGenericNode)
23
+
24
+ assert not DeepDiff(
25
+ {
26
+ "id": "c0b71cfa-0d9e-4329-bde0-967c44be5c3c",
27
+ "label": "AnnotatedOutputGenericNode",
28
+ "type": "GENERIC",
29
+ "display_data": {"position": {"x": 0.0, "y": 0.0}},
30
+ "base": {"name": "BaseNode", "module": ["vellum", "workflows", "nodes", "bases", "base"]},
31
+ "definition": {
32
+ "name": "AnnotatedOutputGenericNode",
33
+ "module": [
34
+ "vellum_ee",
35
+ "workflows",
36
+ "display",
37
+ "tests",
38
+ "workflow_serialization",
39
+ "generic_nodes",
40
+ "test_outputs_serialization",
41
+ ],
42
+ },
43
+ "trigger": {"id": "256ef76c-39a6-4a8f-8bda-922f5972a1d4", "merge_behavior": "AWAIT_ANY"},
44
+ "ports": [{"id": "378d8939-7a0f-4c87-a849-7fd00067cd2d", "type": "DEFAULT", "name": "default"}],
45
+ "adornments": None,
46
+ "attributes": [],
47
+ "outputs": [
48
+ {
49
+ "id": "8c3c9aff-e1d5-49f4-af75-3ec2fcbb4af2",
50
+ "name": "output",
51
+ "type": "NUMBER",
52
+ "value": None,
53
+ }
54
+ ],
55
+ },
56
+ serialized_node,
57
+ ignore_order=True,
58
+ )
59
+
60
+
61
+ class WorkflowInputGenericNode(BaseNode):
62
+ class Outputs(BaseNode.Outputs):
63
+ output = Inputs.input
64
+
65
+
66
+ def test_serialize_node__workflow_input(serialize_node):
67
+ input_id = uuid4()
68
+ serialized_node = serialize_node(
69
+ node_class=WorkflowInputGenericNode,
70
+ global_workflow_input_displays={Inputs.input: WorkflowInputsDisplay(id=input_id)},
71
+ )
72
+
73
+ assert not DeepDiff(
74
+ {
75
+ "id": "ddfa947f-0830-476b-b07e-ac573968f9a7",
76
+ "label": "WorkflowInputGenericNode",
77
+ "type": "GENERIC",
78
+ "display_data": {"position": {"x": 0.0, "y": 0.0}},
79
+ "base": {"name": "BaseNode", "module": ["vellum", "workflows", "nodes", "bases", "base"]},
80
+ "definition": {
81
+ "name": "WorkflowInputGenericNode",
82
+ "module": [
83
+ "vellum_ee",
84
+ "workflows",
85
+ "display",
86
+ "tests",
87
+ "workflow_serialization",
88
+ "generic_nodes",
89
+ "test_outputs_serialization",
90
+ ],
91
+ },
92
+ "trigger": {"id": "b1a5d749-bac0-4f11-8427-191febb2198e", "merge_behavior": "AWAIT_ANY"},
93
+ "ports": [{"id": "f013bf3f-49f6-41cd-ac13-7439b71a304a", "type": "DEFAULT", "name": "default"}],
94
+ "adornments": None,
95
+ "attributes": [],
96
+ "outputs": [
97
+ {
98
+ "id": "2c4a85c0-b017-4cea-a261-e8e8498570c9",
99
+ "name": "output",
100
+ "type": "STRING",
101
+ "value": {
102
+ "type": "WORKFLOW_INPUT",
103
+ "input_variable_id": str(input_id),
104
+ },
105
+ }
106
+ ],
107
+ },
108
+ serialized_node,
109
+ ignore_order=True,
110
+ )
111
+
112
+
113
+ class NodeWithOutput(BaseNode):
114
+ class Outputs(BaseNode.Outputs):
115
+ output = Inputs.input
116
+
117
+
118
+ class NodeWithOutputDisplay(BaseNodeDisplay[NodeWithOutput]):
119
+ pass
120
+
121
+
122
+ class GenericNodeReferencingOutput(BaseNode):
123
+ class Outputs(BaseNode.Outputs):
124
+ output = NodeWithOutput.Outputs.output
125
+
126
+
127
+ def test_serialize_node__node_output_reference(serialize_node):
128
+ workflow_input_id = uuid4()
129
+ node_output_id = uuid4()
130
+ serialized_node = serialize_node(
131
+ node_class=GenericNodeReferencingOutput,
132
+ global_workflow_input_displays={Inputs.input: WorkflowInputsDisplay(id=workflow_input_id)},
133
+ global_node_displays={NodeWithOutput: NodeWithOutputDisplay()},
134
+ global_node_output_displays={
135
+ NodeWithOutput.Outputs.output: (NodeWithOutput, NodeOutputDisplay(id=node_output_id, name="output"))
136
+ },
137
+ )
138
+
139
+ assert not DeepDiff(
140
+ {
141
+ "id": "c1e2ce60-ac3a-4b17-915e-abe861734e03",
142
+ "label": "GenericNodeReferencingOutput",
143
+ "type": "GENERIC",
144
+ "display_data": {"position": {"x": 0.0, "y": 0.0}},
145
+ "base": {"name": "BaseNode", "module": ["vellum", "workflows", "nodes", "bases", "base"]},
146
+ "definition": {
147
+ "name": "GenericNodeReferencingOutput",
148
+ "module": [
149
+ "vellum_ee",
150
+ "workflows",
151
+ "display",
152
+ "tests",
153
+ "workflow_serialization",
154
+ "generic_nodes",
155
+ "test_outputs_serialization",
156
+ ],
157
+ },
158
+ "trigger": {"id": "449072ba-f7b6-4314-ac96-682123f225e5", "merge_behavior": "AWAIT_ANY"},
159
+ "ports": [{"id": "ec9a79b8-65c3-4de8-bd29-42c914d72d4f", "type": "DEFAULT", "name": "default"}],
160
+ "adornments": None,
161
+ "attributes": [],
162
+ "outputs": [
163
+ {
164
+ "id": "db010db3-7076-4df9-ae1b-069caa16fa20",
165
+ "name": "output",
166
+ "type": "STRING",
167
+ "value": {
168
+ "type": "NODE_OUTPUT",
169
+ "node_id": "cd954d76-0b0a-4d9b-9bdf-347179c38cb6",
170
+ "node_output_id": str(node_output_id),
171
+ },
172
+ }
173
+ ],
174
+ },
175
+ serialized_node,
176
+ ignore_order=True,
177
+ )