vellum-ai 0.14.60__py3-none-any.whl → 0.14.62__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_ai-0.14.60.dist-info → vellum_ai-0.14.62.dist-info}/METADATA +1 -1
- {vellum_ai-0.14.60.dist-info → vellum_ai-0.14.62.dist-info}/RECORD +15 -15
- vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py +9 -4
- vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py +2 -0
- vellum_ee/workflows/display/nodes/vellum/tests/test_tool_calling_node.py +7 -1
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py +1 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py +1 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py +337 -18
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py +12 -3
- vellum_ee/workflows/display/utils/expressions.py +7 -1
- vellum_ee/workflows/display/workflows/tests/test_workflow_display.py +18 -2
- {vellum_ai-0.14.60.dist-info → vellum_ai-0.14.62.dist-info}/LICENSE +0 -0
- {vellum_ai-0.14.60.dist-info → vellum_ai-0.14.62.dist-info}/WHEEL +0 -0
- {vellum_ai-0.14.60.dist-info → vellum_ai-0.14.62.dist-info}/entry_points.txt +0 -0
@@ -18,7 +18,7 @@ class BaseClientWrapper:
|
|
18
18
|
headers: typing.Dict[str, str] = {
|
19
19
|
"X-Fern-Language": "Python",
|
20
20
|
"X-Fern-SDK-Name": "vellum-ai",
|
21
|
-
"X-Fern-SDK-Version": "0.14.
|
21
|
+
"X-Fern-SDK-Version": "0.14.62",
|
22
22
|
}
|
23
23
|
headers["X-API-KEY"] = self.api_key
|
24
24
|
return headers
|
@@ -45,7 +45,7 @@ vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=fQV5o
|
|
45
45
|
vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=CiklGf5_tDbqE1XQm2mnbtoL01_2JYjcnB4FDTpMImQ,3824
|
46
46
|
vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=yBWeN4T_lOsDVnNOKWRiT7JYKu0IR5Fx2z99iq6QKSA,3273
|
47
47
|
vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=3E0UqmgVYdtbj4nyq8gKju8EpMsRHMCQ0KLrJhug3XU,1084
|
48
|
-
vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=
|
48
|
+
vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=1NxFddxWCFtMe_je1cutP7qnoASoG94LJqKhRkoQwvw,3535
|
49
49
|
vellum_ee/workflows/display/nodes/vellum/retry_node.py,sha256=X3xnlAU5JisL0jRvaG_V9RvTF7ZlGufTO8tXLLVhGIg,3280
|
50
50
|
vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=3n1qa-zWIk0p_H94u0hjfDtGkanldC6EXVhg0xgLmE4,9544
|
51
51
|
vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=MWLZBXHsmj5vKgqOgI2HHcHAJzLS0sqybn6idhwug8Y,2669
|
@@ -55,11 +55,11 @@ vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py,sha25
|
|
55
55
|
vellum_ee/workflows/display/nodes/vellum/tests/test_error_node.py,sha256=540FoWMpJ3EN_DPjHsr9ODJWCRVcUa5hZBn-5T2GiHU,1665
|
56
56
|
vellum_ee/workflows/display/nodes/vellum/tests/test_note_node.py,sha256=uiMB0cOxKZzos7YKnj4ef4DFa2bOvZJWIv-hfbUV6Go,1218
|
57
57
|
vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_deployment_node.py,sha256=G-qJyTNJkpqJiEZ3kCJl86CXJINLeFyf2lM0bQHCCOs,3822
|
58
|
-
vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py,sha256=
|
58
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py,sha256=TtzUj3Zk3ZhwtXE_WyctCC-CmcLB1RxntyF7u-a3i6I,10077
|
59
59
|
vellum_ee/workflows/display/nodes/vellum/tests/test_retry_node.py,sha256=h93ysolmbo2viisyhRnXKHPxiDK0I_dSAbYoHFYIoO4,1953
|
60
60
|
vellum_ee/workflows/display/nodes/vellum/tests/test_subworkflow_deployment_node.py,sha256=BUzHJgjdWnPeZxjFjHfDBKnbFjYjnbXPjc-1hne1B2Y,3965
|
61
61
|
vellum_ee/workflows/display/nodes/vellum/tests/test_templating_node.py,sha256=LSk2gx9TpGXbAqKe8dggQW8yJZqj-Cf0EGJFeGGlEcw,3321
|
62
|
-
vellum_ee/workflows/display/nodes/vellum/tests/test_tool_calling_node.py,sha256=
|
62
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_tool_calling_node.py,sha256=NewHcTseNE2ogPzEDJ6KEDD9EYLn9RBZIClMwijIs0I,4581
|
63
63
|
vellum_ee/workflows/display/nodes/vellum/tests/test_try_node.py,sha256=Khjsb53PKpZuyhKoRMgKAL45eGp5hZqXvHmVeQWRw4w,2289
|
64
64
|
vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=3LS1O4DGPWit05oj_ubeW8AlHGnoBxdUMferGQuAiZs,4851
|
65
65
|
vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=z9Omo676RRc7mQjLoL7hjiHhUj0OWVLhrrb97YTN4QA,4086
|
@@ -70,7 +70,7 @@ vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DE
|
|
70
70
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
71
71
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py,sha256=XOQDDRiG46etxTC7-_RUEutoNumXc02fo7oho4GYM0c,1900
|
72
72
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py,sha256=tsjGM-jOurPSkDIbrDFdjNLmkI1fPNPAw3J9-l9knCw,12848
|
73
|
-
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py,sha256=
|
73
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py,sha256=MdjWgD8yZhv0MnpI-Ak5EqMzh2joVz3z5WFqr42PgZc,21508
|
74
74
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py,sha256=s6_mnk0pkztU59wYpSfOFpMhAJaRjmyfxM6WJGtnD4Y,6456
|
75
75
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py,sha256=PkSgghJDz0fpDB72HHPjLjo8LkZk-HpUkCQzRLX-iVw,40611
|
76
76
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py,sha256=dsJr8I9AdPwMOGszirfNDzZP2Ychd94aAKuPXAzknMk,4632
|
@@ -81,29 +81,29 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_stat
|
|
81
81
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=MNnQ51ZWOQGVfBdpIqvr4OZF0tWdfrh2bsHP3xkTwQw,5841
|
82
82
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py,sha256=kLOnUNn-r1w1JXNQcVKe-Vp-fKhSfuDBuDqrjGkFZ3U,5544
|
83
83
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=v07cILUzS5iFYDrSOAXK93yz50-FtxLaMYMwoaPOv20,7374
|
84
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py,sha256=
|
84
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py,sha256=THUDmsZJAOigJWs7pCiVik-STA5zvQtUZxgW7XkUBl8,11556
|
85
85
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=u2nquKoO3o2xIkU_uFPOb_s5YoLmULiq09vb6Ee0Cqw,21415
|
86
86
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=3gZuNM8sT6ovVaeoAvd2JoyKwuxokvowlhH8kwDUoZ8,16559
|
87
87
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=IIJt7YZBzkhNtbmaMwCX4ENs58QtSIIoBHlMR6OwGU8,8342
|
88
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=
|
88
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=QXiRjwtiTPeMUl40Pvh_geeU99C3mv1aVS85oeIUwY4,21052
|
89
89
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py,sha256=K0mECBUyTNX4I468goeaRf93N7Qfizoc1ctCH5_nNys,12936
|
90
90
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=KkYZc_bZuq1lmDcvUz3QxIqJLpQPCZioD1FHUNsMJY8,11211
|
91
91
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=aZaqRDrkO3ytcmdM2eKJqHSt60MF070NMj6M2vgzOKc,7711
|
92
92
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=r748dpS13HtwY7t_KQFExFssxRy0xI2d-wxmhiUHRe0,3850
|
93
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py,sha256=
|
93
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py,sha256=RPv0bJGwgzBDK_f16VrplPjSZbTisANSH08BGzaHwmk,8341
|
94
94
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=EL5kfakuoEcwD85dGjhMta-J-PpCHRSDoc80SdbBrQk,2769
|
95
95
|
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=RmFUDx8dYdfsOE2CGLvdXqNNRtLLpVzXDN8dqZyMcZ8,5822
|
96
96
|
vellum_ee/workflows/display/types.py,sha256=i4T7ElU5b5h-nA1i3scmEhO1BqmNDc4eJDHavATD88w,2821
|
97
97
|
vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
98
98
|
vellum_ee/workflows/display/utils/exceptions.py,sha256=LSwwxCYNxFkf5XMUcFkaZKpQ13OSrI7y_bpEUwbKVk0,169
|
99
|
-
vellum_ee/workflows/display/utils/expressions.py,sha256=
|
99
|
+
vellum_ee/workflows/display/utils/expressions.py,sha256=u-sIH_hDxJdSjq_0BTP3QmbIDvA-OI1GxyPtmNvxxKc,12595
|
100
100
|
vellum_ee/workflows/display/utils/registry.py,sha256=fWIm5Jj-10gNFjgn34iBu4RWv3Vd15ijtSN0V97bpW8,1513
|
101
101
|
vellum_ee/workflows/display/utils/vellum.py,sha256=mtoXmSYwR7rvrq-d6CzCW_auaJXTct0Mi1F0xpRCiNQ,5627
|
102
102
|
vellum_ee/workflows/display/vellum.py,sha256=o7mq_vk2Yapu9DDKRz5l76h8EmCAypWGQYe6pryrbB8,3576
|
103
103
|
vellum_ee/workflows/display/workflows/__init__.py,sha256=kapXsC67VJcgSuiBMa86FdePG5A9kMB5Pi4Uy1O2ob4,207
|
104
104
|
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=dVOe3TOV00uvllxsDziM3pFfL2HYTkWRq9iKDlj_xyU,33162
|
105
105
|
vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=gxz76AeCqgAZ9D2lZeTiZzxY9eMgn3qOSfVgiqYcOh8,2028
|
106
|
-
vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=
|
106
|
+
vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=o0bHG9gi6RKlyccuCyow-YbCY8ejcvS1f4VJ6ozjUVA,30234
|
107
107
|
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=aaKdmWrgEe5YyV4zuDY_4E3y-l59rIHQnNGiPj2OWxQ,359
|
108
108
|
vellum_ee/workflows/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
109
109
|
vellum_ee/workflows/server/virtual_file_loader.py,sha256=7JphJcSO3H85qiC2DpFfBWjC3JjrbRmoynBC6KKHVsA,2710
|
@@ -134,7 +134,7 @@ vellum/client/README.md,sha256=qmaVIP42MnxAu8jV7u-CsgVFfs3-pHQODrXdZdFxtaw,4749
|
|
134
134
|
vellum/client/__init__.py,sha256=AYopGv2ZRVn3zsU8_km6KOvEHDbXiTPCVuYVI7bWvdA,120166
|
135
135
|
vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
|
136
136
|
vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
137
|
-
vellum/client/core/client_wrapper.py,sha256=
|
137
|
+
vellum/client/core/client_wrapper.py,sha256=6Ws3Z7WyEV9P2j-NicrbyppAaPyLzK4wAJ5mxUvUdJ4,1869
|
138
138
|
vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
139
139
|
vellum/client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
|
140
140
|
vellum/client/core/http_client.py,sha256=Z77OIxIbL4OAB2IDqjRq_sYa5yNYAWfmdhdCSSvh6Y4,19552
|
@@ -1712,8 +1712,8 @@ vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnad
|
|
1712
1712
|
vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1713
1713
|
vellum/workflows/workflows/tests/test_base_workflow.py,sha256=fROqff6AZpCIzaSwOKSdtYy4XR0UZQ6ejxL3RJOSJVs,20447
|
1714
1714
|
vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
|
1715
|
-
vellum_ai-0.14.
|
1716
|
-
vellum_ai-0.14.
|
1717
|
-
vellum_ai-0.14.
|
1718
|
-
vellum_ai-0.14.
|
1719
|
-
vellum_ai-0.14.
|
1715
|
+
vellum_ai-0.14.62.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
|
1716
|
+
vellum_ai-0.14.62.dist-info/METADATA,sha256=Bzub_INWkihzZyUxbedAO9QOhQmT-Ci17-6k_8JW5zE,5484
|
1717
|
+
vellum_ai-0.14.62.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
1718
|
+
vellum_ai-0.14.62.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
|
1719
|
+
vellum_ai-0.14.62.dist-info/RECORD,,
|
@@ -1,8 +1,7 @@
|
|
1
1
|
from uuid import UUID
|
2
|
-
from typing import Generic, Optional, TypeVar
|
2
|
+
from typing import Generic, Optional, TypeVar
|
3
3
|
|
4
4
|
from vellum.workflows.nodes.displayable.prompt_deployment_node import PromptDeploymentNode
|
5
|
-
from vellum.workflows.references import OutputReference
|
6
5
|
from vellum.workflows.types.core import JsonObject
|
7
6
|
from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
|
8
7
|
from vellum_ee.workflows.display.nodes.utils import raise_if_descriptor
|
@@ -40,8 +39,9 @@ class BasePromptDeploymentNodeDisplay(BaseNodeDisplay[_PromptDeploymentNodeType]
|
|
40
39
|
else []
|
41
40
|
)
|
42
41
|
|
43
|
-
|
44
|
-
|
42
|
+
output_display = self.output_display[node.Outputs.text]
|
43
|
+
array_display = self.output_display[node.Outputs.results]
|
44
|
+
json_display = self.output_display[node.Outputs.json]
|
45
45
|
|
46
46
|
deployment = display_context.client.deployments.retrieve(
|
47
47
|
id=str(raise_if_descriptor(node.deployment)),
|
@@ -68,4 +68,9 @@ class BasePromptDeploymentNodeDisplay(BaseNodeDisplay[_PromptDeploymentNodeType]
|
|
68
68
|
"base": self.get_base().dict(),
|
69
69
|
"definition": self.get_definition().dict(),
|
70
70
|
"ports": self.serialize_ports(display_context),
|
71
|
+
"outputs": [
|
72
|
+
{"id": str(json_display.id), "name": "json", "type": "JSON", "value": None},
|
73
|
+
{"id": str(output_display.id), "name": "text", "type": "STRING", "value": None},
|
74
|
+
{"id": str(array_display.id), "name": "results", "type": "ARRAY", "value": None},
|
75
|
+
],
|
71
76
|
}
|
@@ -196,6 +196,7 @@ def test_serialize_node__prompt_inputs__state_reference():
|
|
196
196
|
"type": "DICTIONARY_REFERENCE",
|
197
197
|
"entries": [
|
198
198
|
{
|
199
|
+
"id": "feadab18-07c6-4790-adf0-28be20a5447a",
|
199
200
|
"key": "foo",
|
200
201
|
"value": {
|
201
202
|
"type": "WORKFLOW_STATE",
|
@@ -203,6 +204,7 @@ def test_serialize_node__prompt_inputs__state_reference():
|
|
203
204
|
},
|
204
205
|
},
|
205
206
|
{
|
207
|
+
"id": "4f252277-d0a5-48ad-8cc5-be03bf0dbd19",
|
206
208
|
"key": "bar",
|
207
209
|
"value": {
|
208
210
|
"type": "CONSTANT_VALUE",
|
@@ -68,6 +68,7 @@ def test_serialize_node__prompt_inputs__input_reference():
|
|
68
68
|
"type": "DICTIONARY_REFERENCE",
|
69
69
|
"entries": [
|
70
70
|
{
|
71
|
+
"id": "ab7902ef-de14-4edc-835c-366d3ef6a70e",
|
71
72
|
"key": "foo",
|
72
73
|
"value": {"type": "WORKFLOW_INPUT", "input_variable_id": "e3657390-fd3c-4fea-8cdd-fc5ea79f3278"},
|
73
74
|
}
|
@@ -108,8 +109,13 @@ def test_serialize_node__prompt_inputs__mixed_values():
|
|
108
109
|
"value": {
|
109
110
|
"type": "DICTIONARY_REFERENCE",
|
110
111
|
"entries": [
|
111
|
-
{"key": "foo", "value": {"type": "CONSTANT_VALUE", "value": {"type": "STRING", "value": "bar"}}},
|
112
112
|
{
|
113
|
+
"id": "0fc7e25e-075c-4849-b89b-9729d1aeada1",
|
114
|
+
"key": "foo",
|
115
|
+
"value": {"type": "CONSTANT_VALUE", "value": {"type": "STRING", "value": "bar"}},
|
116
|
+
},
|
117
|
+
{
|
118
|
+
"id": "bba42c89-fa7b-4cb7-bc16-0d21ce060a4b",
|
113
119
|
"key": "baz",
|
114
120
|
"value": {"type": "WORKFLOW_INPUT", "input_variable_id": "8d57cf1d-147c-427b-9a5e-e5f6ab76e2eb"},
|
115
121
|
},
|
@@ -7,6 +7,9 @@ from vellum import DeploymentRead
|
|
7
7
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
8
8
|
|
9
9
|
from tests.workflows.basic_text_prompt_deployment.workflow import BasicTextPromptDeployment
|
10
|
+
from tests.workflows.basic_text_prompt_deployment.workflow_with_prompt_deployment_json_reference import (
|
11
|
+
WorkflowWithPromptDeploymentJsonReferenceWorkflow,
|
12
|
+
)
|
10
13
|
|
11
14
|
|
12
15
|
def test_serialize_workflow(vellum_client):
|
@@ -103,30 +106,26 @@ def test_serialize_workflow(vellum_client):
|
|
103
106
|
"id": "947d7ead-0fad-4e5f-aa3a-d06029ac94bc",
|
104
107
|
"key": "city",
|
105
108
|
"value": {
|
106
|
-
"combinator": "OR",
|
107
109
|
"rules": [
|
108
110
|
{
|
109
111
|
"type": "INPUT_VARIABLE",
|
110
|
-
"data": {
|
111
|
-
|
112
|
-
},
|
113
|
-
},
|
112
|
+
"data": {"input_variable_id": "52995b50-84c9-465f-8a4b-a4ee2a92e388"},
|
113
|
+
}
|
114
114
|
],
|
115
|
+
"combinator": "OR",
|
115
116
|
},
|
116
117
|
},
|
117
118
|
{
|
118
119
|
"id": "3deebdd7-2900-4d8c-93f2-e5b90649ac42",
|
119
120
|
"key": "date",
|
120
121
|
"value": {
|
121
|
-
"combinator": "OR",
|
122
122
|
"rules": [
|
123
123
|
{
|
124
124
|
"type": "INPUT_VARIABLE",
|
125
|
-
"data": {
|
126
|
-
|
127
|
-
},
|
128
|
-
},
|
125
|
+
"data": {"input_variable_id": "aa3ca842-250c-4a3f-853f-23928c28d0f8"},
|
126
|
+
}
|
129
127
|
],
|
128
|
+
"combinator": "OR",
|
130
129
|
},
|
131
130
|
},
|
132
131
|
],
|
@@ -142,21 +141,21 @@ def test_serialize_workflow(vellum_client):
|
|
142
141
|
"release_tag": "LATEST",
|
143
142
|
"ml_model_fallbacks": ["gpt-4o", "gemini-1.5-pro"],
|
144
143
|
},
|
145
|
-
"display_data": {
|
146
|
-
"position": {
|
147
|
-
"x": 0.0,
|
148
|
-
"y": 0.0,
|
149
|
-
},
|
150
|
-
},
|
144
|
+
"display_data": {"position": {"x": 0.0, "y": 0.0}},
|
151
145
|
"base": {
|
152
|
-
"module": ["vellum", "workflows", "nodes", "displayable", "prompt_deployment_node", "node"],
|
153
146
|
"name": "PromptDeploymentNode",
|
147
|
+
"module": ["vellum", "workflows", "nodes", "displayable", "prompt_deployment_node", "node"],
|
154
148
|
},
|
155
149
|
"definition": {
|
156
|
-
"module": ["tests", "workflows", "basic_text_prompt_deployment", "workflow"],
|
157
150
|
"name": "ExamplePromptDeploymentNode",
|
151
|
+
"module": ["tests", "workflows", "basic_text_prompt_deployment", "workflow"],
|
158
152
|
},
|
159
153
|
"ports": [{"id": "2f26c7e0-283d-4f04-b639-adebb56bc679", "name": "default", "type": "DEFAULT"}],
|
154
|
+
"outputs": [
|
155
|
+
{"id": "180355a8-e67c-4ce6-9ac3-e5dbb75a6629", "name": "json", "type": "JSON", "value": None},
|
156
|
+
{"id": "4d38b850-79e3-4b85-9158-a41d0c535410", "name": "text", "type": "STRING", "value": None},
|
157
|
+
{"id": "0cf47d33-6d5f-466f-b826-e814f1d0348b", "name": "results", "type": "ARRAY", "value": None},
|
158
|
+
],
|
160
159
|
}
|
161
160
|
|
162
161
|
final_output_node = workflow_raw_data["nodes"][2]
|
@@ -251,3 +250,323 @@ def test_serialize_workflow(vellum_client):
|
|
251
250
|
"workflow",
|
252
251
|
],
|
253
252
|
}
|
253
|
+
|
254
|
+
|
255
|
+
def test_serialize_workflow_with_prompt_and_templating(vellum_client):
|
256
|
+
# GIVEN a Workflow with stubbed out API calls
|
257
|
+
deployment = DeploymentRead(
|
258
|
+
id=str(uuid4()),
|
259
|
+
created=datetime.now(),
|
260
|
+
label="JSON Prompt Deployment",
|
261
|
+
name="json_prompt_deployment",
|
262
|
+
last_deployed_on=datetime.now(),
|
263
|
+
input_variables=[],
|
264
|
+
active_model_version_ids=[],
|
265
|
+
last_deployed_history_item_id=str(uuid4()),
|
266
|
+
)
|
267
|
+
vellum_client.deployments.retrieve.return_value = deployment
|
268
|
+
|
269
|
+
# WHEN we serialize it
|
270
|
+
workflow_display = get_workflow_display(workflow_class=WorkflowWithPromptDeploymentJsonReferenceWorkflow)
|
271
|
+
serialized_workflow: dict = workflow_display.serialize()
|
272
|
+
|
273
|
+
# THEN we should get a serialized representation of the Workflow
|
274
|
+
assert serialized_workflow.keys() == {
|
275
|
+
"workflow_raw_data",
|
276
|
+
"input_variables",
|
277
|
+
"state_variables",
|
278
|
+
"output_variables",
|
279
|
+
}
|
280
|
+
|
281
|
+
# AND its input variables should be what we expect
|
282
|
+
input_variables = serialized_workflow["input_variables"]
|
283
|
+
assert len(input_variables) == 2
|
284
|
+
assert not DeepDiff(
|
285
|
+
[
|
286
|
+
{
|
287
|
+
"id": "ad577aca-0797-4deb-a484-574ef1a1f0c7",
|
288
|
+
"key": "city",
|
289
|
+
"type": "STRING",
|
290
|
+
"default": None,
|
291
|
+
"required": True,
|
292
|
+
"extensions": {"color": None},
|
293
|
+
},
|
294
|
+
{
|
295
|
+
"id": "066124c4-42bd-4764-aa75-6f230dbbed4a",
|
296
|
+
"key": "date",
|
297
|
+
"type": "STRING",
|
298
|
+
"default": None,
|
299
|
+
"required": True,
|
300
|
+
"extensions": {"color": None},
|
301
|
+
},
|
302
|
+
],
|
303
|
+
input_variables,
|
304
|
+
ignore_order=True,
|
305
|
+
)
|
306
|
+
|
307
|
+
# AND its output variables should be what we expect
|
308
|
+
output_variables = serialized_workflow["output_variables"]
|
309
|
+
assert len(output_variables) == 1
|
310
|
+
assert output_variables == [{"id": "a7e4b449-5879-4d0c-8f00-d5d4985eb65c", "key": "text", "type": "STRING"}]
|
311
|
+
|
312
|
+
# AND its raw data should be what we expect
|
313
|
+
workflow_raw_data = serialized_workflow["workflow_raw_data"]
|
314
|
+
assert len(workflow_raw_data["edges"]) == 3
|
315
|
+
assert len(workflow_raw_data["nodes"]) == 4
|
316
|
+
|
317
|
+
# AND each node should be serialized correctly
|
318
|
+
entrypoint_node = workflow_raw_data["nodes"][0]
|
319
|
+
assert entrypoint_node == {
|
320
|
+
"id": "32c7f398-277c-456b-9279-aa1f867fb637",
|
321
|
+
"type": "ENTRYPOINT",
|
322
|
+
"inputs": [],
|
323
|
+
"data": {"label": "Entrypoint Node", "source_handle_id": "cc0f4028-1039-4063-971d-7dacbb01b379"},
|
324
|
+
"display_data": {"position": {"x": 0.0, "y": 0.0}},
|
325
|
+
"base": None,
|
326
|
+
"definition": None,
|
327
|
+
}
|
328
|
+
|
329
|
+
prompt_node = workflow_raw_data["nodes"][1]
|
330
|
+
assert prompt_node == {
|
331
|
+
"id": "56c74024-19a3-4c0d-a5f5-23e1e9f11b21",
|
332
|
+
"type": "PROMPT",
|
333
|
+
"inputs": [
|
334
|
+
{
|
335
|
+
"id": "947d7ead-0fad-4e5f-aa3a-d06029ac94bc",
|
336
|
+
"key": "city",
|
337
|
+
"value": {
|
338
|
+
"rules": [
|
339
|
+
{
|
340
|
+
"type": "INPUT_VARIABLE",
|
341
|
+
"data": {"input_variable_id": "ad577aca-0797-4deb-a484-574ef1a1f0c7"},
|
342
|
+
}
|
343
|
+
],
|
344
|
+
"combinator": "OR",
|
345
|
+
},
|
346
|
+
},
|
347
|
+
{
|
348
|
+
"id": "3deebdd7-2900-4d8c-93f2-e5b90649ac42",
|
349
|
+
"key": "date",
|
350
|
+
"value": {
|
351
|
+
"rules": [
|
352
|
+
{
|
353
|
+
"type": "INPUT_VARIABLE",
|
354
|
+
"data": {"input_variable_id": "066124c4-42bd-4764-aa75-6f230dbbed4a"},
|
355
|
+
}
|
356
|
+
],
|
357
|
+
"combinator": "OR",
|
358
|
+
},
|
359
|
+
},
|
360
|
+
],
|
361
|
+
"data": {
|
362
|
+
"label": "Example Prompt Deployment Node",
|
363
|
+
"output_id": "4d38b850-79e3-4b85-9158-a41d0c535410",
|
364
|
+
"error_output_id": None,
|
365
|
+
"array_output_id": "0cf47d33-6d5f-466f-b826-e814f1d0348b",
|
366
|
+
"source_handle_id": "2f26c7e0-283d-4f04-b639-adebb56bc679",
|
367
|
+
"target_handle_id": "b7605c48-0937-4ecc-914e-0d1058130e65",
|
368
|
+
"variant": "DEPLOYMENT",
|
369
|
+
"prompt_deployment_id": deployment.id,
|
370
|
+
"release_tag": "LATEST",
|
371
|
+
"ml_model_fallbacks": None,
|
372
|
+
},
|
373
|
+
"display_data": {"position": {"x": 0.0, "y": 0.0}},
|
374
|
+
"base": {
|
375
|
+
"name": "PromptDeploymentNode",
|
376
|
+
"module": ["vellum", "workflows", "nodes", "displayable", "prompt_deployment_node", "node"],
|
377
|
+
},
|
378
|
+
"definition": {
|
379
|
+
"name": "ExamplePromptDeploymentNode",
|
380
|
+
"module": [
|
381
|
+
"tests",
|
382
|
+
"workflows",
|
383
|
+
"basic_text_prompt_deployment",
|
384
|
+
"workflow_with_prompt_deployment_json_reference",
|
385
|
+
],
|
386
|
+
},
|
387
|
+
"ports": [{"id": "2f26c7e0-283d-4f04-b639-adebb56bc679", "name": "default", "type": "DEFAULT"}],
|
388
|
+
"outputs": [
|
389
|
+
{"id": "180355a8-e67c-4ce6-9ac3-e5dbb75a6629", "name": "json", "type": "JSON", "value": None},
|
390
|
+
{"id": "4d38b850-79e3-4b85-9158-a41d0c535410", "name": "text", "type": "STRING", "value": None},
|
391
|
+
{"id": "0cf47d33-6d5f-466f-b826-e814f1d0348b", "name": "results", "type": "ARRAY", "value": None},
|
392
|
+
],
|
393
|
+
}
|
394
|
+
|
395
|
+
templating_node = workflow_raw_data["nodes"][2]
|
396
|
+
assert templating_node == {
|
397
|
+
"id": "51cbe21d-0232-4362-bc54-5bc283297aa6",
|
398
|
+
"type": "TEMPLATING",
|
399
|
+
"inputs": [
|
400
|
+
{
|
401
|
+
"id": "7c775379-d589-4d79-b876-dcd224d72966",
|
402
|
+
"key": "template",
|
403
|
+
"value": {
|
404
|
+
"rules": [
|
405
|
+
{
|
406
|
+
"type": "CONSTANT_VALUE",
|
407
|
+
"data": {
|
408
|
+
"type": "STRING",
|
409
|
+
"value": "The weather in {{ city }} on {{ date }} is {{ weather }}.",
|
410
|
+
},
|
411
|
+
}
|
412
|
+
],
|
413
|
+
"combinator": "OR",
|
414
|
+
},
|
415
|
+
},
|
416
|
+
{
|
417
|
+
"id": "dec1317a-6900-4858-a5fb-c849254b2c91",
|
418
|
+
"key": "city",
|
419
|
+
"value": {
|
420
|
+
"rules": [
|
421
|
+
{
|
422
|
+
"type": "INPUT_VARIABLE",
|
423
|
+
"data": {"input_variable_id": "ad577aca-0797-4deb-a484-574ef1a1f0c7"},
|
424
|
+
}
|
425
|
+
],
|
426
|
+
"combinator": "OR",
|
427
|
+
},
|
428
|
+
},
|
429
|
+
{
|
430
|
+
"id": "4cc5b9f1-075d-45fd-a978-f530c29c5682",
|
431
|
+
"key": "date",
|
432
|
+
"value": {
|
433
|
+
"rules": [
|
434
|
+
{
|
435
|
+
"type": "INPUT_VARIABLE",
|
436
|
+
"data": {"input_variable_id": "066124c4-42bd-4764-aa75-6f230dbbed4a"},
|
437
|
+
}
|
438
|
+
],
|
439
|
+
"combinator": "OR",
|
440
|
+
},
|
441
|
+
},
|
442
|
+
{
|
443
|
+
"id": "77b352e0-1b77-4d48-9f6f-04ce17fe7286",
|
444
|
+
"key": "weather",
|
445
|
+
"value": {
|
446
|
+
"rules": [
|
447
|
+
{
|
448
|
+
"type": "NODE_OUTPUT",
|
449
|
+
"data": {
|
450
|
+
"node_id": "56c74024-19a3-4c0d-a5f5-23e1e9f11b21",
|
451
|
+
"output_id": "180355a8-e67c-4ce6-9ac3-e5dbb75a6629",
|
452
|
+
},
|
453
|
+
}
|
454
|
+
],
|
455
|
+
"combinator": "OR",
|
456
|
+
},
|
457
|
+
},
|
458
|
+
],
|
459
|
+
"data": {
|
460
|
+
"label": "Example Templating Node",
|
461
|
+
"output_id": "6834cae4-8173-4fa6-88f7-bc09d335bdd1",
|
462
|
+
"error_output_id": None,
|
463
|
+
"source_handle_id": "39317827-df43-4f5a-bfbc-20bffc839748",
|
464
|
+
"target_handle_id": "58427684-3848-498a-8299-c6b0fc70265d",
|
465
|
+
"template_node_input_id": "7c775379-d589-4d79-b876-dcd224d72966",
|
466
|
+
"output_type": "STRING",
|
467
|
+
},
|
468
|
+
"display_data": {"position": {"x": 0.0, "y": 0.0}},
|
469
|
+
"base": {
|
470
|
+
"name": "TemplatingNode",
|
471
|
+
"module": ["vellum", "workflows", "nodes", "core", "templating_node", "node"],
|
472
|
+
},
|
473
|
+
"definition": {
|
474
|
+
"name": "ExampleTemplatingNode",
|
475
|
+
"module": [
|
476
|
+
"tests",
|
477
|
+
"workflows",
|
478
|
+
"basic_text_prompt_deployment",
|
479
|
+
"workflow_with_prompt_deployment_json_reference",
|
480
|
+
],
|
481
|
+
},
|
482
|
+
"ports": [{"id": "39317827-df43-4f5a-bfbc-20bffc839748", "name": "default", "type": "DEFAULT"}],
|
483
|
+
}
|
484
|
+
|
485
|
+
final_output_node = workflow_raw_data["nodes"][3]
|
486
|
+
assert final_output_node == {
|
487
|
+
"id": "53de824d-a41d-4294-b511-c969932b05af",
|
488
|
+
"type": "TERMINAL",
|
489
|
+
"data": {
|
490
|
+
"label": "Final Output",
|
491
|
+
"name": "text",
|
492
|
+
"target_handle_id": "fee3d395-38c3-485f-ab61-1a0fdf71c4ce",
|
493
|
+
"output_id": "a7e4b449-5879-4d0c-8f00-d5d4985eb65c",
|
494
|
+
"output_type": "STRING",
|
495
|
+
"node_input_id": "cf380f81-c5ee-4bc9-8e26-ecf1307733a9",
|
496
|
+
},
|
497
|
+
"inputs": [
|
498
|
+
{
|
499
|
+
"id": "cf380f81-c5ee-4bc9-8e26-ecf1307733a9",
|
500
|
+
"key": "node_input",
|
501
|
+
"value": {
|
502
|
+
"rules": [
|
503
|
+
{
|
504
|
+
"type": "NODE_OUTPUT",
|
505
|
+
"data": {
|
506
|
+
"node_id": "51cbe21d-0232-4362-bc54-5bc283297aa6",
|
507
|
+
"output_id": "6834cae4-8173-4fa6-88f7-bc09d335bdd1",
|
508
|
+
},
|
509
|
+
}
|
510
|
+
],
|
511
|
+
"combinator": "OR",
|
512
|
+
},
|
513
|
+
}
|
514
|
+
],
|
515
|
+
"display_data": {"position": {"x": 0.0, "y": 0.0}},
|
516
|
+
"base": {
|
517
|
+
"name": "FinalOutputNode",
|
518
|
+
"module": ["vellum", "workflows", "nodes", "displayable", "final_output_node", "node"],
|
519
|
+
},
|
520
|
+
"definition": None,
|
521
|
+
}
|
522
|
+
|
523
|
+
# AND each edge should be serialized correctly
|
524
|
+
serialized_edges = workflow_raw_data["edges"]
|
525
|
+
assert serialized_edges == [
|
526
|
+
{
|
527
|
+
"id": "2c49ffa6-7b9a-49a0-a932-009534556480",
|
528
|
+
"source_node_id": "32c7f398-277c-456b-9279-aa1f867fb637",
|
529
|
+
"source_handle_id": "cc0f4028-1039-4063-971d-7dacbb01b379",
|
530
|
+
"target_node_id": "56c74024-19a3-4c0d-a5f5-23e1e9f11b21",
|
531
|
+
"target_handle_id": "b7605c48-0937-4ecc-914e-0d1058130e65",
|
532
|
+
"type": "DEFAULT",
|
533
|
+
},
|
534
|
+
{
|
535
|
+
"id": "a46909ec-9572-43c6-a134-0bd7e2c09f99",
|
536
|
+
"source_node_id": "56c74024-19a3-4c0d-a5f5-23e1e9f11b21",
|
537
|
+
"source_handle_id": "2f26c7e0-283d-4f04-b639-adebb56bc679",
|
538
|
+
"target_node_id": "51cbe21d-0232-4362-bc54-5bc283297aa6",
|
539
|
+
"target_handle_id": "58427684-3848-498a-8299-c6b0fc70265d",
|
540
|
+
"type": "DEFAULT",
|
541
|
+
},
|
542
|
+
{
|
543
|
+
"id": "1f720900-e5e1-49b7-9910-6ede79f6afd2",
|
544
|
+
"source_node_id": "51cbe21d-0232-4362-bc54-5bc283297aa6",
|
545
|
+
"source_handle_id": "39317827-df43-4f5a-bfbc-20bffc839748",
|
546
|
+
"target_node_id": "53de824d-a41d-4294-b511-c969932b05af",
|
547
|
+
"target_handle_id": "fee3d395-38c3-485f-ab61-1a0fdf71c4ce",
|
548
|
+
"type": "DEFAULT",
|
549
|
+
},
|
550
|
+
]
|
551
|
+
|
552
|
+
# AND the display data should be what we expect
|
553
|
+
display_data = workflow_raw_data["display_data"]
|
554
|
+
assert display_data == {
|
555
|
+
"viewport": {
|
556
|
+
"x": 0.0,
|
557
|
+
"y": 0.0,
|
558
|
+
"zoom": 1.0,
|
559
|
+
}
|
560
|
+
}
|
561
|
+
|
562
|
+
# AND the definition should be what we expect
|
563
|
+
definition = workflow_raw_data["definition"]
|
564
|
+
assert definition == {
|
565
|
+
"name": "WorkflowWithPromptDeploymentJsonReferenceWorkflow",
|
566
|
+
"module": [
|
567
|
+
"tests",
|
568
|
+
"workflows",
|
569
|
+
"basic_text_prompt_deployment",
|
570
|
+
"workflow_with_prompt_deployment_json_reference",
|
571
|
+
],
|
572
|
+
}
|
@@ -21,7 +21,7 @@ def test_serialize_workflow():
|
|
21
21
|
|
22
22
|
# AND its input variables should be what we expect
|
23
23
|
input_variables = serialized_workflow["input_variables"]
|
24
|
-
assert len(input_variables) ==
|
24
|
+
assert len(input_variables) == 1
|
25
25
|
|
26
26
|
# AND its output variables should be what we expect
|
27
27
|
output_variables = serialized_workflow["output_variables"]
|
@@ -154,8 +154,17 @@ def test_serialize_workflow():
|
|
154
154
|
"id": "0f6dc102-3460-4963-91fa-7ba85d65ef7a",
|
155
155
|
"name": "prompt_inputs",
|
156
156
|
"value": {
|
157
|
-
"type": "
|
158
|
-
"
|
157
|
+
"type": "DICTIONARY_REFERENCE",
|
158
|
+
"entries": [
|
159
|
+
{
|
160
|
+
"id": "b6d4427d-16dd-478a-9780-f88d60d2263d",
|
161
|
+
"key": "question",
|
162
|
+
"value": {
|
163
|
+
"type": "WORKFLOW_INPUT",
|
164
|
+
"input_variable_id": "a70e0597-0076-4a17-a8d2-c8d6b4a05bac",
|
165
|
+
},
|
166
|
+
}
|
167
|
+
],
|
159
168
|
},
|
160
169
|
},
|
161
170
|
{
|
@@ -38,6 +38,7 @@ from vellum.workflows.references.state_value import StateValueReference
|
|
38
38
|
from vellum.workflows.references.vellum_secret import VellumSecretReference
|
39
39
|
from vellum.workflows.references.workflow_input import WorkflowInputReference
|
40
40
|
from vellum.workflows.types.core import JsonArray, JsonObject
|
41
|
+
from vellum.workflows.utils.uuids import uuid4_from_hash
|
41
42
|
from vellum_ee.workflows.display.utils.exceptions import UnsupportedSerializationException
|
42
43
|
|
43
44
|
if TYPE_CHECKING:
|
@@ -264,7 +265,12 @@ def serialize_value(display_context: "WorkflowDisplayContext", value: Any) -> Js
|
|
264
265
|
|
265
266
|
if isinstance(value, dict):
|
266
267
|
serialized_entries = [
|
267
|
-
{
|
268
|
+
{
|
269
|
+
"id": str(uuid4_from_hash(f"{key}|{val}")),
|
270
|
+
"key": key,
|
271
|
+
"value": serialize_value(display_context, val),
|
272
|
+
}
|
273
|
+
for key, val in value.items()
|
268
274
|
]
|
269
275
|
|
270
276
|
# Check if all entries have constant values
|
@@ -700,8 +700,13 @@ def test_serialize_workflow__dict_reference():
|
|
700
700
|
assert mixed_dict_output["value"] == {
|
701
701
|
"type": "DICTIONARY_REFERENCE",
|
702
702
|
"entries": [
|
703
|
-
{"key": "key1", "value": {"type": "CONSTANT_VALUE", "value": {"type": "STRING", "value": "constant1"}}},
|
704
703
|
{
|
704
|
+
"id": "b528ce26-68ee-42ba-828d-199441810685",
|
705
|
+
"key": "key1",
|
706
|
+
"value": {"type": "CONSTANT_VALUE", "value": {"type": "STRING", "value": "constant1"}},
|
707
|
+
},
|
708
|
+
{
|
709
|
+
"id": "a7acccfe-2f80-42ee-a307-c1eb0b137c2b",
|
705
710
|
"key": "key2",
|
706
711
|
"value": {
|
707
712
|
"type": "NODE_OUTPUT",
|
@@ -709,8 +714,13 @@ def test_serialize_workflow__dict_reference():
|
|
709
714
|
"node_output_id": "50a6bc11-afb3-49f2-879c-b28f5e16d974",
|
710
715
|
},
|
711
716
|
},
|
712
|
-
{"key": "key3", "value": {"type": "CONSTANT_VALUE", "value": {"type": "STRING", "value": "constant2"}}},
|
713
717
|
{
|
718
|
+
"id": "8f41013e-7a9f-4659-ac17-c25c6ec6fe99",
|
719
|
+
"key": "key3",
|
720
|
+
"value": {"type": "CONSTANT_VALUE", "value": {"type": "STRING", "value": "constant2"}},
|
721
|
+
},
|
722
|
+
{
|
723
|
+
"id": "609e84e8-573a-44ea-b3aa-82c3f3cc2c36",
|
714
724
|
"key": "key4",
|
715
725
|
"value": {
|
716
726
|
"type": "NODE_OUTPUT",
|
@@ -730,15 +740,18 @@ def test_serialize_workflow__dict_reference():
|
|
730
740
|
"type": "DICTIONARY_REFERENCE",
|
731
741
|
"entries": [
|
732
742
|
{
|
743
|
+
"id": "02abe9d0-bf93-4eea-b34a-902dae7c2b90",
|
733
744
|
"key": "key1",
|
734
745
|
"value": {
|
735
746
|
"type": "DICTIONARY_REFERENCE",
|
736
747
|
"entries": [
|
737
748
|
{
|
749
|
+
"id": "b528ce26-68ee-42ba-828d-199441810685",
|
738
750
|
"key": "key1",
|
739
751
|
"value": {"type": "CONSTANT_VALUE", "value": {"type": "STRING", "value": "constant1"}},
|
740
752
|
},
|
741
753
|
{
|
754
|
+
"id": "a7acccfe-2f80-42ee-a307-c1eb0b137c2b",
|
742
755
|
"key": "key2",
|
743
756
|
"value": {
|
744
757
|
"type": "NODE_OUTPUT",
|
@@ -750,15 +763,18 @@ def test_serialize_workflow__dict_reference():
|
|
750
763
|
},
|
751
764
|
},
|
752
765
|
{
|
766
|
+
"id": "c8640477-13cc-412e-82cc-35cbe9e78ff2",
|
753
767
|
"key": "key2",
|
754
768
|
"value": {
|
755
769
|
"type": "DICTIONARY_REFERENCE",
|
756
770
|
"entries": [
|
757
771
|
{
|
772
|
+
"id": "86709f21-a811-4351-993e-a8e9f1c7774f",
|
758
773
|
"key": "key1",
|
759
774
|
"value": {"type": "CONSTANT_VALUE", "value": {"type": "STRING", "value": "constant2"}},
|
760
775
|
},
|
761
776
|
{
|
777
|
+
"id": "a7acccfe-2f80-42ee-a307-c1eb0b137c2b",
|
762
778
|
"key": "key2",
|
763
779
|
"value": {
|
764
780
|
"type": "NODE_OUTPUT",
|
File without changes
|
File without changes
|
File without changes
|