vellum-ai 0.13.19__py3-none-any.whl → 0.13.20__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 (33) hide show
  1. vellum/__init__.py +2 -0
  2. vellum/client/core/client_wrapper.py +1 -1
  3. vellum/client/resources/test_suites/client.py +44 -8
  4. vellum/client/types/__init__.py +2 -0
  5. vellum/client/types/container_image_container_image_tag.py +21 -0
  6. vellum/client/types/container_image_read.py +2 -1
  7. vellum/types/container_image_container_image_tag.py +3 -0
  8. vellum/workflows/nodes/core/inline_subworkflow_node/node.py +48 -3
  9. {vellum_ai-0.13.19.dist-info → vellum_ai-0.13.20.dist-info}/METADATA +1 -1
  10. {vellum_ai-0.13.19.dist-info → vellum_ai-0.13.20.dist-info}/RECORD +33 -31
  11. vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py +2 -3
  12. vellum_ee/workflows/display/nodes/vellum/utils.py +1 -1
  13. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py +9 -30
  14. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py +22 -36
  15. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +35 -70
  16. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py +2 -2
  17. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py +2 -2
  18. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py +2 -2
  19. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +24 -57
  20. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +4 -4
  21. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py +2 -2
  22. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py +2 -2
  23. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py +2 -2
  24. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py +4 -4
  25. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py +2 -2
  26. vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py +2 -2
  27. vellum_ee/workflows/display/utils/vellum.py +0 -2
  28. vellum_ee/workflows/display/vellum.py +0 -2
  29. vellum_ee/workflows/display/workflows/vellum_workflow_display.py +1 -8
  30. vellum_ee/workflows/tests/local_workflow/display/workflow.py +0 -2
  31. {vellum_ai-0.13.19.dist-info → vellum_ai-0.13.20.dist-info}/LICENSE +0 -0
  32. {vellum_ai-0.13.19.dist-info → vellum_ai-0.13.20.dist-info}/WHEEL +0 -0
  33. {vellum_ai-0.13.19.dist-info → vellum_ai-0.13.20.dist-info}/entry_points.txt +0 -0
@@ -178,7 +178,7 @@ def test_serialize_workflow(vellum_client):
178
178
  "definition": None,
179
179
  "inputs": [
180
180
  {
181
- "id": "5f0fdd0f-63fe-4437-bc1b-cd6a84bb84c5",
181
+ "id": "78aeb65b-3491-4d2a-8c47-401d4cb3d560",
182
182
  "key": "node_input",
183
183
  "value": {
184
184
  "combinator": "OR",
@@ -197,7 +197,7 @@ def test_serialize_workflow(vellum_client):
197
197
  "data": {
198
198
  "label": "Final Output",
199
199
  "name": "text",
200
- "node_input_id": "5f0fdd0f-63fe-4437-bc1b-cd6a84bb84c5",
200
+ "node_input_id": "78aeb65b-3491-4d2a-8c47-401d4cb3d560",
201
201
  "output_id": "a609ab19-db1b-4cd0-bdb0-aee5ed31dc28",
202
202
  "output_type": "STRING",
203
203
  "target_handle_id": "dced939a-9122-4290-8482-7daa9525dad6",
@@ -249,11 +249,11 @@ def test_serialize_workflow():
249
249
  "target_handle_id": "cd8c736f-1b77-493d-b857-d8feb5c03b15",
250
250
  "output_id": "27424f7d-9767-4059-bdcf-c2be8b798fd7",
251
251
  "output_type": "STRING",
252
- "node_input_id": "008eaf1d-98c0-4098-8839-5b94121394d7",
252
+ "node_input_id": "39c7f674-a794-4525-8a04-f22a40ed0914",
253
253
  },
254
254
  "inputs": [
255
255
  {
256
- "id": "008eaf1d-98c0-4098-8839-5b94121394d7",
256
+ "id": "39c7f674-a794-4525-8a04-f22a40ed0914",
257
257
  "key": "node_input",
258
258
  "value": {
259
259
  "rules": [
@@ -181,11 +181,11 @@ def test_serialize_workflow(vellum_client):
181
181
  "target_handle_id": "23117248-df28-4519-bebc-abcb24f966b3",
182
182
  "output_id": "3f487916-126f-4d6c-95b4-fa72d875b793",
183
183
  "output_type": "NUMBER",
184
- "node_input_id": "29e10bd7-eb39-4e0f-a406-c3a55b834d6f",
184
+ "node_input_id": "6f4955d8-8a3f-4db7-8293-7affc5877dcd",
185
185
  },
186
186
  "inputs": [
187
187
  {
188
- "id": "29e10bd7-eb39-4e0f-a406-c3a55b834d6f",
188
+ "id": "6f4955d8-8a3f-4db7-8293-7affc5877dcd",
189
189
  "key": "node_input",
190
190
  "value": {
191
191
  "rules": [
@@ -224,11 +224,11 @@ def test_serialize_workflow(vellum_client):
224
224
  "target_handle_id": "c3aeba92-4faf-4814-9842-eec7436ee555",
225
225
  "output_id": "45d53a1e-26e8-4c43-a010-80d141acc249",
226
226
  "output_type": "STRING",
227
- "node_input_id": "daaf0664-0aca-4619-af30-07caa1486b90",
227
+ "node_input_id": "74337307-3fcb-42c5-9aed-98bd4a79caef",
228
228
  },
229
229
  "inputs": [
230
230
  {
231
- "id": "daaf0664-0aca-4619-af30-07caa1486b90",
231
+ "id": "74337307-3fcb-42c5-9aed-98bd4a79caef",
232
232
  "key": "node_input",
233
233
  "value": {
234
234
  "rules": [
@@ -130,11 +130,11 @@ def test_serialize_workflow():
130
130
  "target_handle_id": "16ba108e-61a8-4338-8a5b-4f1278d7fd7b",
131
131
  "output_id": "62ec9b08-6437-4f8d-bc20-983d317bc348",
132
132
  "output_type": "JSON",
133
- "node_input_id": "310072db-6d07-4d29-8e5c-9c6909300925",
133
+ "node_input_id": "da51bb91-227c-481c-84d7-69c64322b485",
134
134
  },
135
135
  "inputs": [
136
136
  {
137
- "id": "310072db-6d07-4d29-8e5c-9c6909300925",
137
+ "id": "da51bb91-227c-481c-84d7-69c64322b485",
138
138
  "key": "node_input",
139
139
  "value": {
140
140
  "rules": [
@@ -132,11 +132,11 @@ def test_serialize_workflow__missing_final_output_node():
132
132
  "target_handle_id": "5e337b19-cef6-45af-802b-46da4ad7e794",
133
133
  "output_id": "5e6d3ea6-ef91-4937-8fff-f33e07446e6a",
134
134
  "output_type": "STRING",
135
- "node_input_id": "47ba0ee9-4725-4065-a178-c929ac556be9",
135
+ "node_input_id": "590161f1-20ed-4339-9ce3-61aade3a142a",
136
136
  },
137
137
  "inputs": [
138
138
  {
139
- "id": "47ba0ee9-4725-4065-a178-c929ac556be9",
139
+ "id": "590161f1-20ed-4339-9ce3-61aade3a142a",
140
140
  "key": "node_input",
141
141
  "value": {
142
142
  "rules": [
@@ -85,8 +85,6 @@ def create_node_input_value_pointer_rule(
85
85
  workflow_input_display = display_context.global_workflow_input_displays[value]
86
86
  return InputVariablePointer(data=InputVariableData(input_variable_id=str(workflow_input_display.id)))
87
87
  if isinstance(value, VellumSecretReference):
88
- # TODO: Pass through the name instead of retrieving the ID
89
- # https://app.shortcut.com/vellum/story/5072
90
88
  vellum_client = create_vellum_client()
91
89
  workspace_secret = vellum_client.workspace_secrets.retrieve(
92
90
  id=value.name,
@@ -113,10 +113,8 @@ class WorkflowOutputVellumDisplayOverrides(WorkflowOutputDisplay, WorkflowOutput
113
113
  name: str
114
114
  label: str
115
115
  node_id: UUID
116
- node_input_id: UUID
117
116
  target_handle_id: UUID
118
117
  display_data: NodeDisplayData
119
- edge_id: UUID
120
118
 
121
119
 
122
120
  @dataclass
@@ -135,7 +135,6 @@ class VellumWorkflowDisplay(
135
135
  # This is currently the wrapper node's output, but we want the wrapped node
136
136
  workflow_output.instance,
137
137
  self.display_context,
138
- workflow_output_display.node_input_id,
139
138
  )
140
139
 
141
140
  source_node_display: Optional[BaseNodeDisplay]
@@ -182,7 +181,7 @@ class VellumWorkflowDisplay(
182
181
 
183
182
  synthetic_output_edges.append(
184
183
  {
185
- "id": str(workflow_output_display.edge_id),
184
+ "id": str(uuid4_from_hash(f"{self.workflow_id}|edge_id|{workflow_output_display.name}")),
186
185
  "source_node_id": str(source_node_display.node_id),
187
186
  "source_handle_id": str(source_handle_id),
188
187
  "target_node_id": str(workflow_output_display.node_id),
@@ -323,26 +322,20 @@ class VellumWorkflowDisplay(
323
322
  name=overrides.name,
324
323
  label=overrides.label,
325
324
  node_id=overrides.node_id,
326
- node_input_id=overrides.node_input_id,
327
325
  target_handle_id=overrides.target_handle_id,
328
- edge_id=overrides.edge_id,
329
326
  display_data=overrides.display_data,
330
327
  )
331
328
 
332
329
  output_id = uuid4_from_hash(f"{self.workflow_id}|id|{output.name}")
333
- edge_id = uuid4_from_hash(f"{self.workflow_id}|edge_id|{output.name}")
334
330
  node_id = uuid4_from_hash(f"{self.workflow_id}|node_id|{output.name}")
335
- node_input_id = uuid4_from_hash(f"{self.workflow_id}|node_input_id|{output.name}")
336
331
  target_handle_id = uuid4_from_hash(f"{self.workflow_id}|target_handle_id|{output.name}")
337
332
 
338
333
  return WorkflowOutputVellumDisplay(
339
334
  id=output_id,
340
335
  node_id=node_id,
341
- node_input_id=node_input_id,
342
336
  name=output.name,
343
337
  label="Final Output",
344
338
  target_handle_id=target_handle_id,
345
- edge_id=edge_id,
346
339
  display_data=NodeDisplayData(),
347
340
  )
348
341
 
@@ -48,11 +48,9 @@ class WorkflowDisplay(VellumWorkflowDisplay[Workflow]):
48
48
  Workflow.Outputs.final_output: WorkflowOutputVellumDisplayOverrides(
49
49
  id=UUID("5469b810-6ea6-4362-9e79-e360d44a1405"),
50
50
  node_id=UUID("f3ef4b2b-fec9-4026-9cc6-e5eac295307f"),
51
- node_input_id=UUID("fe6cba85-2423-4b5e-8f85-06311a8be5fb"),
52
51
  name="final-output",
53
52
  label="Final Output",
54
53
  target_handle_id=UUID("3ec34f6e-da48-40d5-a65b-a48fefa75763"),
55
54
  display_data=NodeDisplayData(position=NodeDisplayPosition(x=2750, y=210), width=459, height=234),
56
- edge_id=UUID("417c56a4-cdc1-4f9d-a10c-b535163f51e8"),
57
55
  )
58
56
  }