vellum-ai 0.12.14__py3-none-any.whl → 0.12.15__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- vellum/__init__.py +6 -0
- vellum/client/__init__.py +2 -6
- vellum/client/core/client_wrapper.py +1 -1
- vellum/client/environment.py +3 -3
- vellum/client/resources/ad_hoc/client.py +2 -6
- vellum/client/resources/container_images/client.py +0 -8
- vellum/client/resources/metric_definitions/client.py +2 -6
- vellum/client/resources/workflows/client.py +8 -8
- vellum/client/types/__init__.py +6 -0
- vellum/client/types/audio_prompt_block.py +29 -0
- vellum/client/types/function_call_prompt_block.py +30 -0
- vellum/client/types/image_prompt_block.py +29 -0
- vellum/client/types/prompt_block.py +12 -1
- vellum/client/types/workflow_push_response.py +1 -0
- vellum/types/audio_prompt_block.py +3 -0
- vellum/types/function_call_prompt_block.py +3 -0
- vellum/types/image_prompt_block.py +3 -0
- {vellum_ai-0.12.14.dist-info → vellum_ai-0.12.15.dist-info}/METADATA +2 -2
- {vellum_ai-0.12.14.dist-info → vellum_ai-0.12.15.dist-info}/RECORD +36 -28
- vellum_cli/config.py +4 -0
- vellum_cli/pull.py +20 -5
- vellum_cli/push.py +7 -0
- vellum_cli/tests/test_pull.py +19 -1
- vellum_ee/workflows/display/nodes/vellum/__init__.py +2 -0
- vellum_ee/workflows/display/nodes/vellum/base_node.py +18 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +10 -41
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py +4 -14
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py +174 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +2 -10
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +2 -10
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py +5 -19
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py +2 -8
- vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py +14 -25
- {vellum_ai-0.12.14.dist-info → vellum_ai-0.12.15.dist-info}/LICENSE +0 -0
- {vellum_ai-0.12.14.dist-info → vellum_ai-0.12.15.dist-info}/WHEEL +0 -0
- {vellum_ai-0.12.14.dist-info → vellum_ai-0.12.15.dist-info}/entry_points.txt +0 -0
@@ -2,16 +2,16 @@ vellum_cli/CONTRIBUTING.md,sha256=FtDC7BGxSeMnwCXAUssFsAIElXtmJE-O5Z7BpolcgvI,29
|
|
2
2
|
vellum_cli/README.md,sha256=2NudRoLzWxNKqnuVy1JuQ7DerIaxWGYkrH8kMd-asIE,90
|
3
3
|
vellum_cli/__init__.py,sha256=iims87aL6HbwggCAh8JfLBNf3C7tN3TGDmlg7V5W9Lg,8506
|
4
4
|
vellum_cli/aliased_group.py,sha256=ugW498j0yv4ALJ8vS9MsO7ctDW7Jlir9j6nE_uHAP8c,3363
|
5
|
-
vellum_cli/config.py,sha256=
|
5
|
+
vellum_cli/config.py,sha256=998IZbvkrw2avjbvs8bw6NrbEgGz5UBKRbvKAcastJg,5493
|
6
6
|
vellum_cli/image_push.py,sha256=SJwhwWJsLjwGNezNVd_oCVpFMfPsAB3dfLWmriZZUtw,4419
|
7
7
|
vellum_cli/logger.py,sha256=PuRFa0WCh4sAGFS5aqWB0QIYpS6nBWwPJrIXpWxugV4,1022
|
8
|
-
vellum_cli/pull.py,sha256=
|
9
|
-
vellum_cli/push.py,sha256=
|
8
|
+
vellum_cli/pull.py,sha256=hYQBe2_-Y4Ieh_Jo54EwBUpqPYq6UYitUBPgqyOVba0,7499
|
9
|
+
vellum_cli/push.py,sha256=00VHNlUc41UdO59gwIhSuk3AFL3kDITNQdWCdnYAtxc,5633
|
10
10
|
vellum_cli/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
11
|
vellum_cli/tests/conftest.py,sha256=eFGwBxib3Nki830lIFintB0b6r4x8T_KMnmzhlTY5x0,1337
|
12
12
|
vellum_cli/tests/test_config.py,sha256=uvKGDc8BoVyT9_H0Z-g8469zVxomn6Oi3Zj-vK7O_wU,2631
|
13
13
|
vellum_cli/tests/test_main.py,sha256=qDZG-aQauPwBwM6A2DIu1494n47v3pL28XakTbLGZ-k,272
|
14
|
-
vellum_cli/tests/test_pull.py,sha256=
|
14
|
+
vellum_cli/tests/test_pull.py,sha256=6gbASF6ASy5YcdWjOCt6b5K0u2VWsFegdrTWu6sEVKs,19613
|
15
15
|
vellum_cli/tests/test_push.py,sha256=NpwGXuZSzrR7B6hBO1UF9O8im13_LlpSqncVSdzYDiQ,5812
|
16
16
|
vellum_ee/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
17
17
|
vellum_ee/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -26,8 +26,9 @@ vellum_ee/workflows/display/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5J
|
|
26
26
|
vellum_ee/workflows/display/nodes/tests/test_base_node_display.py,sha256=QqR3Ly0RNrXwOeLdW5nERDFt0gRPf76n1bPES6o5UN4,1093
|
27
27
|
vellum_ee/workflows/display/nodes/types.py,sha256=St1BB6no528OyELGiyRabWao0GGw6mLhstQAvEACbGk,247
|
28
28
|
vellum_ee/workflows/display/nodes/utils.py,sha256=sloya5TpXsnot1HURc9L51INwflRqUzHxRVnCS9Cd-4,973
|
29
|
-
vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=
|
29
|
+
vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=_raKY9eKi_OvIFn6nGvf9xKSboKtYLHCWaWCwDQFbOc,1567
|
30
30
|
vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=4SSQGecKWHuoGy5YIGJeOZVHGKwTs_8Y-gf3GvsHb0M,8506
|
31
|
+
vellum_ee/workflows/display/nodes/vellum/base_node.py,sha256=CBE-4tgQhk5zEcQqGQ0R6ZqZbtNuxAaJ5tDD8jDLOfY,672
|
31
32
|
vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=qrf2Ne8n2aaoa2xgK3ExCEGI9BA-2g1zmvjSHyzCWmQ,4230
|
32
33
|
vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=EtdqJfhYw03PuT2iyJ6mSAZK4RsQqDie_2AnJAtMelk,13625
|
33
34
|
vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=ygTjSjYDI4DtkxADWub5rhBnRWItMKWF6fezBrgpOKA,1979
|
@@ -51,19 +52,20 @@ vellum_ee/workflows/display/tests/test_vellum_workflow_display.py,sha256=TEg3Qbd
|
|
51
52
|
vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
52
53
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=e__ae2yepB5vlgVT08sr1DDB8pYjax6VQLo5FtRk-nA,17934
|
53
54
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=F822H2tM3Fvmc2PvunrVCRhtSKQLLpi5y2L1gyJKa78,31576
|
54
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=
|
55
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=
|
55
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=T8gYYFd4jxOnrNp3Qhz4KH7ifvDPgyZxJJE7G9xt03U,52569
|
56
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=zQ0MYjHeXR7sx4vGWEH6761DEEZ8RYMNr6ocRmLEAG0,6460
|
57
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py,sha256=YkgtdubGOl00kusqkADQ-YoTk6dCW83ShoV3DG9Pvuo,6182
|
56
58
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=vA8cd7PJYhf949OUGeYP_moKtMogSyfHN2Z-qzNQLwM,8294
|
57
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=
|
58
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=
|
59
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=
|
59
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=6z7WJ0GLhG7dhilenw7JTq1O8XUVeYmjJHHvgHBtQeU,21725
|
60
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=iFbqXQr-4VyaqAYbldzRS4jt6G8f1Eoa1lTlMgJQO-Y,15599
|
61
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=7f9sr8nv4pCqdic8E7RHDrbaOiExelIh7CZYAJ8QNus,9649
|
60
62
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=NkpgaTbu6nLr3iwgsSNtiHyiNDCUaFakd1JaoW6CC6Y,9489
|
61
63
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py,sha256=9R6ELHBn9tsp3cy15q1qp1OByyCxFOVdrM67EwCYY50,12984
|
62
64
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=8bz0vm_EyQKSjnwS5vqqgnjE9ygvm-CaPKcwCfeOrlo,12704
|
63
65
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=6LrGPS7e9CWpjFq2hpliSzP9kDpZ9KqvBNlNO3sq8cs,8063
|
64
66
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=xG8nKA1iKXxUe1fnD2X6qm7cUGW14iq2P-L16zhcKC8,4271
|
65
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=
|
66
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=
|
67
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=Y_-JNnPI9nAK6cLWxGaxz9ngo0_Dr0j2VNqreFk4CtE,2659
|
68
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=jvjQju7DYUFQ3FffVVA7RXUO0UB7-Fhq_qH7MiT0XcI,8522
|
67
69
|
vellum_ee/workflows/display/types.py,sha256=FSPg3TO8iNE2gnl1vn-nsMfit2V6yeBXW0Igh089A9w,2011
|
68
70
|
vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
69
71
|
vellum_ee/workflows/display/utils/vellum.py,sha256=-cz3xB-_-r1O9TBdLQPBvlpptg9CrZVNQ50QimmJFnA,5032
|
@@ -74,12 +76,12 @@ vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha25
|
|
74
76
|
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=GhIviEMDWNw1p8z20ta08T5PeNCVJs5p2hrOX1uyNxg,17066
|
75
77
|
vellum_ee/workflows/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
76
78
|
vellum_ee/workflows/server/virtual_file_loader.py,sha256=sQQFqn7xI0GfUlypWkVFl-X5ShXTh9bXq8N6qlQvSoE,1452
|
77
|
-
vellum/__init__.py,sha256=
|
79
|
+
vellum/__init__.py,sha256=wO2rKMEtIjNEb53CstEj-0qkUDiKKmGb_uxXEl-jS8c,35776
|
78
80
|
vellum/client/README.md,sha256=JkCJjmMZl4jrPj46pkmL9dpK4gSzQQmP5I7z4aME4LY,4749
|
79
|
-
vellum/client/__init__.py,sha256=
|
81
|
+
vellum/client/__init__.py,sha256=7yb5YnhvHQUJusa1WyUZcAKGol3z-Lfu07EfD03eEW4,111291
|
80
82
|
vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
|
81
83
|
vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
82
|
-
vellum/client/core/client_wrapper.py,sha256=
|
84
|
+
vellum/client/core/client_wrapper.py,sha256=_Cf6x5JgwTAjYASLdfDJqsyFst0nGh8_6WqQT-DbLkk,1869
|
83
85
|
vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
84
86
|
vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
|
85
87
|
vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
|
@@ -89,7 +91,7 @@ vellum/client/core/query_encoder.py,sha256=ekulqNd0j8TgD7ox-Qbz7liqX8-KP9blvT9Ds
|
|
89
91
|
vellum/client/core/remove_none_from_dict.py,sha256=EU9SGgYidWq7SexuJbNs4-PZ-5Bl3Vppd864mS6vQZw,342
|
90
92
|
vellum/client/core/request_options.py,sha256=5cCGt5AEGgtP5xifDl4oVQUmSjlIA8FmRItAlJawM18,1417
|
91
93
|
vellum/client/core/serialization.py,sha256=D9h_t-RQON3-CHWs1C4ESY9B-Yd5d-l5lnTLb_X896g,9601
|
92
|
-
vellum/client/environment.py,sha256=
|
94
|
+
vellum/client/environment.py,sha256=bcAFjoE9XXd7tiysYS90Os669IJmUMZS2JZ_ZQn0Dpg,498
|
93
95
|
vellum/client/errors/__init__.py,sha256=HZB8vVqzDNx0M2uFJ05S5RcGTH95iVDl4v3rQ4xRqSw,343
|
94
96
|
vellum/client/errors/bad_request_error.py,sha256=_EbO8mWqN9kFZPvIap8qa1lL_EWkRcsZe1HKV9GDWJY,264
|
95
97
|
vellum/client/errors/forbidden_error.py,sha256=QO1kKlhClAPES6zsEK7g9pglWnxn3KWaOCAawWOg6Aw,263
|
@@ -97,9 +99,9 @@ vellum/client/errors/internal_server_error.py,sha256=8USCagXyJJ1MOm9snpcXIUt6eNX
|
|
97
99
|
vellum/client/errors/not_found_error.py,sha256=tBVCeBC8n3C811WHRj_n-hs3h8MqwR5gp0vLiobk7W8,262
|
98
100
|
vellum/client/resources/__init__.py,sha256=2B6Oim7PG4IxSUNSzDY1EruQHsaZ7konj3j_WSTydCs,1378
|
99
101
|
vellum/client/resources/ad_hoc/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
100
|
-
vellum/client/resources/ad_hoc/client.py,sha256=
|
102
|
+
vellum/client/resources/ad_hoc/client.py,sha256=_liorv4AsoJ55kVu0a5oWB3Qeff0iUKXqoHEIyDWLxc,14173
|
101
103
|
vellum/client/resources/container_images/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
102
|
-
vellum/client/resources/container_images/client.py,sha256=
|
104
|
+
vellum/client/resources/container_images/client.py,sha256=g8X3IkWFj43-sJMvirjDrh1-yjOFYV2C9xsGC20Xfjo,15003
|
103
105
|
vellum/client/resources/deployments/__init__.py,sha256=m64MNuPx3qVazOnTNwOY8oEeDrAkNwMJvUEe5xoMDvs,239
|
104
106
|
vellum/client/resources/deployments/client.py,sha256=ssXaHJXBxO_I8JLuijusDVWwsfYadTw3j7o41ICYtrY,38777
|
105
107
|
vellum/client/resources/deployments/types/__init__.py,sha256=29GVdoLOJsADSSSqZwb6CQPeEmPjkKrbsWfru1bemj8,321
|
@@ -116,7 +118,7 @@ vellum/client/resources/folder_entities/client.py,sha256=ep5dnfJmEuEyrOSUftEVwKa
|
|
116
118
|
vellum/client/resources/folder_entities/types/__init__.py,sha256=cHabrupjC-HL3kj-UZ9WdVzqHoQHCu6QsLFB3wlOs7k,212
|
117
119
|
vellum/client/resources/folder_entities/types/folder_entities_list_request_entity_status.py,sha256=nK9b9fRSeCfjn2V2Hifl1IbhFeVsNkoeXJ8rCAPADFg,183
|
118
120
|
vellum/client/resources/metric_definitions/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
119
|
-
vellum/client/resources/metric_definitions/client.py,sha256=
|
121
|
+
vellum/client/resources/metric_definitions/client.py,sha256=WfR2f9YtDIdb9yXD_xvJf4pfRr0jVH7QKiiUrPAaeLs,9870
|
120
122
|
vellum/client/resources/ml_models/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
121
123
|
vellum/client/resources/ml_models/client.py,sha256=XIYapTEY6GRNr7V0Kjy5bEeKmrhv9ul8qlQY2A5LFqQ,3872
|
122
124
|
vellum/client/resources/sandboxes/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
@@ -133,12 +135,12 @@ vellum/client/resources/workflow_deployments/types/workflow_deployments_list_req
|
|
133
135
|
vellum/client/resources/workflow_sandboxes/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
134
136
|
vellum/client/resources/workflow_sandboxes/client.py,sha256=3wVQxkjrJ5bIS8fB5FpKXCP2dX38299ghWrJ8YmXxwQ,7435
|
135
137
|
vellum/client/resources/workflows/__init__.py,sha256=Z4xi8Nxd9U4t35FQSepTt1p-ns0X1xtdNs168kUcuBk,153
|
136
|
-
vellum/client/resources/workflows/client.py,sha256=
|
138
|
+
vellum/client/resources/workflows/client.py,sha256=4TOVbNauZ7x84rot3FBo8KKqmjd1mMGKLLXE7BRFEK0,11179
|
137
139
|
vellum/client/resources/workflows/types/__init__.py,sha256=-uFca4ypncAOvfsg6sjD-5C9zWdA5qNvU6m675GphVg,177
|
138
140
|
vellum/client/resources/workflows/types/workflows_pull_request_format.py,sha256=dOWE_jnDnniIJLoeseeCms23aklghyBkoPmBFzcqqZk,165
|
139
141
|
vellum/client/resources/workspace_secrets/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
140
142
|
vellum/client/resources/workspace_secrets/client.py,sha256=h7UzXLyTttPq1t-JZGMg1BWxypxJvBGUdqg7KGT7MK4,8027
|
141
|
-
vellum/client/types/__init__.py,sha256=
|
143
|
+
vellum/client/types/__init__.py,sha256=NzUZ2aXt94v1CqcvgIA3vrSUVLDMM39rVeHm3_YqREw,54062
|
142
144
|
vellum/client/types/ad_hoc_execute_prompt_event.py,sha256=bCjujA2XsOgyF3bRZbcEqV2rOIymRgsLoIRtZpB14xg,607
|
143
145
|
vellum/client/types/ad_hoc_expand_meta.py,sha256=1gv-NCsy_6xBYupLvZH979yf2VMdxAU-l0y0ynMKZaw,1331
|
144
146
|
vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py,sha256=Bfvf1d_dkmshxRACVM5vcxbH_7AQY23RmrrnPc0ytYY,939
|
@@ -159,6 +161,7 @@ vellum/client/types/array_vellum_value.py,sha256=6ZDizIzijUFX29JD4lnNv1mOH-venLD
|
|
159
161
|
vellum/client/types/array_vellum_value_request.py,sha256=SUIfUTeJTDcsH76mb_PfQv3q0GEUkVr4Gk-dqn2Qr-I,951
|
160
162
|
vellum/client/types/audio_chat_message_content.py,sha256=159ELbeifFmAOvqPKaVSemHytSJ6OR0kOCtspCj4Lmc,725
|
161
163
|
vellum/client/types/audio_chat_message_content_request.py,sha256=0iy-fv_AYp_3FIJUNza3aqCZrnHBsYN-IwQO690qeUk,754
|
164
|
+
vellum/client/types/audio_prompt_block.py,sha256=4gbzRmZfT_crv3YcGTq265LE-HnzB_bxxtK0aUKzEJY,1013
|
162
165
|
vellum/client/types/audio_variable_value.py,sha256=GLZMcQ_2IicejsXhvQz0kVNfIKmjLHqwa27qYOo881Y,747
|
163
166
|
vellum/client/types/audio_vellum_value.py,sha256=8tbwNkj5UtnjZhFIQZ18O233yCt4fK3BhXpR7S5VEt4,745
|
164
167
|
vellum/client/types/audio_vellum_value_request.py,sha256=KnEyYDvTVqNdYcb4v2AGs5nLbcWFSj351_A9nM2ad8Y,774
|
@@ -269,6 +272,7 @@ vellum/client/types/function_call_chat_message_content_request.py,sha256=HVGxHs6
|
|
269
272
|
vellum/client/types/function_call_chat_message_content_value.py,sha256=DHRZYAMc4Y5MerUS_6CIxQBtORftKn-gBx8Skgivm_A,736
|
270
273
|
vellum/client/types/function_call_chat_message_content_value_request.py,sha256=67EZ3qSR9zO5akOgloswRE0Pv8BcjtWhdTRJIwuQU04,743
|
271
274
|
vellum/client/types/function_call_input.py,sha256=Iiqk2-IX6xUI2UnRj3bum5C0OlQn9jRmBwatUzJQQt8,820
|
275
|
+
vellum/client/types/function_call_prompt_block.py,sha256=TFs-XtVM7F-Mg-KwVctOyOcSloVI1vIfsMEeEeLuu7Y,1052
|
272
276
|
vellum/client/types/function_call_request.py,sha256=udGEdk66q1zTpEFE2xq-cu6w_ahMpfQv_9lIey9x1G0,720
|
273
277
|
vellum/client/types/function_call_variable_value.py,sha256=VQKCiEtJsmIK3i7CtFV_2ZpxeX70rqpUViXIvAci8L0,702
|
274
278
|
vellum/client/types/function_call_vellum_value.py,sha256=lLJb-S_-S_UXm6una1BMyCbqLpMhbbMcaVIYNO45h5o,759
|
@@ -293,6 +297,7 @@ vellum/client/types/hkunlp_instructor_xl_vectorizer.py,sha256=0wDZyilAQD3SQYIOBx
|
|
293
297
|
vellum/client/types/hkunlp_instructor_xl_vectorizer_request.py,sha256=Mtg_hl-IIfa134LWBonkxOQ1dhjXkGkz7maDZ57o_d4,832
|
294
298
|
vellum/client/types/image_chat_message_content.py,sha256=1jHmNuLY2kuuSgJCqNmc4wUMw5aot6GLU6_hQ_99r2g,725
|
295
299
|
vellum/client/types/image_chat_message_content_request.py,sha256=b0K1NnY-NneG_V3JAnyr4H2jrPGOC1OQ-OcCmS1GCvE,754
|
300
|
+
vellum/client/types/image_prompt_block.py,sha256=JIcfWZAWYcOm04Y6XjmxPG58SaoXwIjuZwnVypEVahU,1008
|
296
301
|
vellum/client/types/image_variable_value.py,sha256=njfgKYFU5lTCeosINThWziVE_jpuBjcgntZ3xAALT58,750
|
297
302
|
vellum/client/types/image_vellum_value.py,sha256=69XnqE9m-bd3dOdMD73WtfDm_kDrVg-y3fi35akuqsk,748
|
298
303
|
vellum/client/types/image_vellum_value_request.py,sha256=-Q66T8M6fAf9K_v0LeRwZjB_6pkBUSyMUQc6plRRK5E,777
|
@@ -397,7 +402,7 @@ vellum/client/types/pdf_search_result_meta_source_request.py,sha256=nUhaD2Kw1paG
|
|
397
402
|
vellum/client/types/plain_text_prompt_block.py,sha256=cqEN-B4mcvMw_9lBN7FQG8pk9b5LBJ9xpM6PTgkGiqs,930
|
398
403
|
vellum/client/types/price.py,sha256=ewzXDBVLaleuXMVQ-gQ3G1Nl5J2OWOVEMEFfnQIpiTk,610
|
399
404
|
vellum/client/types/processing_failure_reason_enum.py,sha256=R_KIW7TcQejhc-vLhtNf9SdkYADgoZCn4ch4_RRIvsI,195
|
400
|
-
vellum/client/types/prompt_block.py,sha256=
|
405
|
+
vellum/client/types/prompt_block.py,sha256=PK3NMPLg0NSmrr7JpMQcbNzCo8DjTP9xvg6ENd2bJZk,747
|
401
406
|
vellum/client/types/prompt_block_state.py,sha256=BRAzTYARoSU36IVZGWMeeqhl5fgFMXCyhJ8rCbfB-f0,163
|
402
407
|
vellum/client/types/prompt_deployment_expand_meta_request.py,sha256=agsiAaHB6lDoZPlnfJ2nmhB4Ud4EiJJTX05YmduyCPo,1910
|
403
408
|
vellum/client/types/prompt_deployment_input_request.py,sha256=KrT4-Ew2VvTWXEkYQz2oyHn5EDOgrMW7FzRFaPH3ARg,353
|
@@ -611,7 +616,7 @@ vellum/client/types/workflow_output_search_results.py,sha256=r3RRGVVrH2H9NAuxA7q
|
|
611
616
|
vellum/client/types/workflow_output_string.py,sha256=_jclzbQ-Wlf-7FEVTWXhs9h5FWfj4xGpiODZBOzT43w,810
|
612
617
|
vellum/client/types/workflow_push_deployment_config_request.py,sha256=pG6bZtlw7S0TcXtNRQNa7y_2NodZe7dp5SchIrgRUVU,745
|
613
618
|
vellum/client/types/workflow_push_exec_config.py,sha256=6TaVMVqhSOz4DnY46l8axPDtytSioXDl9nHvFXSxH1g,94
|
614
|
-
vellum/client/types/workflow_push_response.py,sha256=
|
619
|
+
vellum/client/types/workflow_push_response.py,sha256=1vUSZmZ1GK1242dAkNwJnJI0rL3pBT3_0HOLLjdiutw,724
|
615
620
|
vellum/client/types/workflow_release_tag_read.py,sha256=S7ekl01oVDetL8R7MdBTb4cDhHN0W0iHGNJ1-ZpY3Tc,1155
|
616
621
|
vellum/client/types/workflow_release_tag_workflow_deployment_history_item.py,sha256=pjWobdk9mZD3Px86rwFHfs_PYJBGXDKQUkxsgNEe6EA,825
|
617
622
|
vellum/client/types/workflow_request_chat_history_input_request.py,sha256=WCZvwDuNS8ylWOOoKD3t7fHLSYB0h-fVCqeDRzqPoPA,898
|
@@ -733,6 +738,7 @@ vellum/types/array_vellum_value.py,sha256=7_gccasRhEX_dekrfpiM6sqGVXxnT6f5sLB904
|
|
733
738
|
vellum/types/array_vellum_value_request.py,sha256=-tnyAoCArVJRaTQFPDqgTHuzec1UgWpXqjEbUbhZbyI,164
|
734
739
|
vellum/types/audio_chat_message_content.py,sha256=beZpZqUrJQHis0bkhiPnJO9qbl8c2DZyv74dd1OZf8o,164
|
735
740
|
vellum/types/audio_chat_message_content_request.py,sha256=ySZZ8IARXUocjczLZ27CHEmRX3uY2UhBfTzaOE8CeRo,172
|
741
|
+
vellum/types/audio_prompt_block.py,sha256=zpQcvY3Fic82mPlPyOLCjZBBq0dFyCyKuGRkYNDWQko,156
|
736
742
|
vellum/types/audio_variable_value.py,sha256=lDlablFV78mXIRI7IJU1Pyj4SsACLTnwnRBw0UJO3RU,158
|
737
743
|
vellum/types/audio_vellum_value.py,sha256=-9HkLXeBD-IMh_TwKdmQVfAD_F0et2gYKT2ykb_jaAM,156
|
738
744
|
vellum/types/audio_vellum_value_request.py,sha256=YuwrbVZK1EuUKkir5H9-ipeLTPfSF8h6Yy5lS_pAZg4,164
|
@@ -843,6 +849,7 @@ vellum/types/function_call_chat_message_content_request.py,sha256=Pe-BkV1-7hTxkY
|
|
843
849
|
vellum/types/function_call_chat_message_content_value.py,sha256=KETBajaPRZGjpNc4H09C0xauVhKkf-mDy6yPFmqKFn0,178
|
844
850
|
vellum/types/function_call_chat_message_content_value_request.py,sha256=nVlQJdvM5mo4z52l8GodiPvoFydUv6X35s83pEvI7Nk,186
|
845
851
|
vellum/types/function_call_input.py,sha256=Ec31jaPDp9ljRe_XBSH0HwtxdJUUNkbK3kBscOhI6UY,157
|
852
|
+
vellum/types/function_call_prompt_block.py,sha256=n4gHkUbUsihmlxN-bt_4B-CUpFZjl7Ammusqv_LB648,164
|
846
853
|
vellum/types/function_call_request.py,sha256=Dz9jMUgEjX0Bhv-amoRLKR_oPlq_dcWcr0VFGA0Yi70,159
|
847
854
|
vellum/types/function_call_variable_value.py,sha256=61qbXVPjRivofXeKmdP-3dLhH1tkzKAorxBQlBft_-U,166
|
848
855
|
vellum/types/function_call_vellum_value.py,sha256=IEFGHcyjmksr0fbttwF8URV75jGRbs8WCpg5Kw-PEW4,164
|
@@ -867,6 +874,7 @@ vellum/types/hkunlp_instructor_xl_vectorizer.py,sha256=JRH8sgsDEfVUF9H-83eoirSU4
|
|
867
874
|
vellum/types/hkunlp_instructor_xl_vectorizer_request.py,sha256=zb2L8_LUSxtOQOWjr9tDU_mK2a_azmKO8DqNQi52EQM,177
|
868
875
|
vellum/types/image_chat_message_content.py,sha256=hNVlrv_xoUm1-euBK5DkZDInoMfL0eXb4Klx3juCWYU,164
|
869
876
|
vellum/types/image_chat_message_content_request.py,sha256=-_twjYRyGrsbc79xyd0vZ2xkt3Z4rsjJb2Ts0xRX-dY,172
|
877
|
+
vellum/types/image_prompt_block.py,sha256=K5eXoltiu3ifZqeLtNUTz6DUKu-aqnK0hUyWNvPGByg,156
|
870
878
|
vellum/types/image_variable_value.py,sha256=AqrNSw5yXLkQ3c3rsxhnQEenUoxyx_NXfiN26lwBNBg,158
|
871
879
|
vellum/types/image_vellum_value.py,sha256=aCrL399s9TeVKI5dvF7_qus43IgGYoy1erUqOk_iHB8,156
|
872
880
|
vellum/types/image_vellum_value_request.py,sha256=dEXmHRhRYDhWuUMHJ0VjwUc5RLVBCEeoW-QSBKc8LEg,164
|
@@ -1404,8 +1412,8 @@ vellum/workflows/vellum_client.py,sha256=ODrq_TSl-drX2aezXegf7pizpWDVJuTXH-j6528
|
|
1404
1412
|
vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
|
1405
1413
|
vellum/workflows/workflows/base.py,sha256=qdZYQq-jjdr0fYT0FCfmFuI5ypE3pANupgYcOqqML0o,18884
|
1406
1414
|
vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnadGsrSZGa7t7LpJA,2008
|
1407
|
-
vellum_ai-0.12.
|
1408
|
-
vellum_ai-0.12.
|
1409
|
-
vellum_ai-0.12.
|
1410
|
-
vellum_ai-0.12.
|
1411
|
-
vellum_ai-0.12.
|
1415
|
+
vellum_ai-0.12.15.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
|
1416
|
+
vellum_ai-0.12.15.dist-info/METADATA,sha256=vXfKfASRTSAbS23j4YTI7V_hDRYglGisCWULazWGJfo,5168
|
1417
|
+
vellum_ai-0.12.15.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
1418
|
+
vellum_ai-0.12.15.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
|
1419
|
+
vellum_ai-0.12.15.dist-info/RECORD,,
|
vellum_cli/config.py
CHANGED
@@ -35,6 +35,8 @@ class WorkflowConfig(UniversalBaseModel):
|
|
35
35
|
workflow_sandbox_id: Optional[str] = None
|
36
36
|
ignore: Optional[Union[str, List[str]]] = None
|
37
37
|
deployments: List[WorkflowDeploymentConfig] = field(default_factory=list)
|
38
|
+
container_image_name: Optional[str] = None
|
39
|
+
container_image_tag: Optional[str] = None
|
38
40
|
|
39
41
|
def merge(self, other: "WorkflowConfig") -> "WorkflowConfig":
|
40
42
|
self_deployment_by_id = {
|
@@ -68,6 +70,8 @@ class WorkflowConfig(UniversalBaseModel):
|
|
68
70
|
workflow_sandbox_id=self.workflow_sandbox_id or other.workflow_sandbox_id,
|
69
71
|
ignore=self.ignore or other.ignore,
|
70
72
|
deployments=merged_deployments,
|
73
|
+
container_image_tag=self.container_image_tag or other.container_image_tag,
|
74
|
+
container_image_name=self.container_image_name or other.container_image_name,
|
71
75
|
)
|
72
76
|
|
73
77
|
|
vellum_cli/pull.py
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import io
|
2
|
+
import json
|
2
3
|
import os
|
3
4
|
from pathlib import Path
|
4
5
|
from uuid import UUID
|
@@ -14,6 +15,7 @@ from vellum_cli.config import VellumCliConfig, WorkflowConfig, load_vellum_cli_c
|
|
14
15
|
from vellum_cli.logger import load_cli_logger
|
15
16
|
|
16
17
|
ERROR_LOG_FILE_NAME = "error.log"
|
18
|
+
METADATA_FILE_NAME = "metadata.json"
|
17
19
|
|
18
20
|
|
19
21
|
def _is_valid_uuid(val: Union[str, UUID, None]) -> bool:
|
@@ -109,6 +111,7 @@ def pull_command(
|
|
109
111
|
logger.info(f"Pulling workflow into {workflow_config.module}")
|
110
112
|
client = create_vellum_client()
|
111
113
|
query_parameters = {}
|
114
|
+
|
112
115
|
if include_json:
|
113
116
|
query_parameters["include_json"] = include_json
|
114
117
|
if exclude_code:
|
@@ -128,6 +131,8 @@ def pull_command(
|
|
128
131
|
|
129
132
|
target_dir = os.path.join(os.getcwd(), *workflow_config.module.split("."))
|
130
133
|
error_content = ""
|
134
|
+
metadata_json: Optional[dict] = None
|
135
|
+
|
131
136
|
with zipfile.ZipFile(zip_buffer) as zip_file:
|
132
137
|
# Delete files in target_dir that aren't in the zip file
|
133
138
|
if os.path.exists(target_dir):
|
@@ -152,16 +157,26 @@ def pull_command(
|
|
152
157
|
os.remove(file_path)
|
153
158
|
|
154
159
|
for file_name in zip_file.namelist():
|
155
|
-
|
156
|
-
os.makedirs(os.path.dirname(target_file), exist_ok=True)
|
157
|
-
with zip_file.open(file_name) as source, open(target_file, "w") as target:
|
160
|
+
with zip_file.open(file_name) as source:
|
158
161
|
content = source.read().decode("utf-8")
|
159
162
|
if file_name == ERROR_LOG_FILE_NAME:
|
160
163
|
error_content = content
|
161
164
|
continue
|
165
|
+
if file_name == METADATA_FILE_NAME:
|
166
|
+
metadata_json = json.loads(content)
|
167
|
+
continue
|
162
168
|
|
163
|
-
|
164
|
-
|
169
|
+
target_file = os.path.join(target_dir, file_name)
|
170
|
+
os.makedirs(os.path.dirname(target_file), exist_ok=True)
|
171
|
+
with open(target_file, "w") as target:
|
172
|
+
logger.info(f"Writing to {target_file}...")
|
173
|
+
target.write(content)
|
174
|
+
|
175
|
+
if metadata_json:
|
176
|
+
workflow_config.container_image_name = metadata_json.get("runner_config", {}).get("container_image_name")
|
177
|
+
workflow_config.container_image_tag = metadata_json.get("runner_config", {}).get("container_image_tag")
|
178
|
+
if workflow_config.container_image_name and not workflow_config.container_image_tag:
|
179
|
+
workflow_config.container_image_tag = "latest"
|
165
180
|
|
166
181
|
if include_json:
|
167
182
|
logger.warning(
|
vellum_cli/push.py
CHANGED
@@ -51,8 +51,15 @@ def push_command(
|
|
51
51
|
workflow = BaseWorkflow.load_from_module(workflow_config.module)
|
52
52
|
workflow_display = get_workflow_display(base_display_class=VellumWorkflowDisplay, workflow_class=workflow)
|
53
53
|
exec_config = workflow_display.serialize()
|
54
|
+
|
55
|
+
container_tag = workflow_config.container_image_tag
|
56
|
+
if workflow_config.container_image_name and not workflow_config.container_image_tag:
|
57
|
+
container_tag = "latest"
|
58
|
+
|
54
59
|
exec_config["runner_config"] = {
|
55
60
|
"sdk_version": metadata.version("vellum-ai"),
|
61
|
+
"container_image_tag": container_tag,
|
62
|
+
"container_image_name": workflow_config.container_image_name,
|
56
63
|
}
|
57
64
|
|
58
65
|
label = snake_to_title_case(workflow_config.module.split(".")[-1])
|
vellum_cli/tests/test_pull.py
CHANGED
@@ -130,6 +130,8 @@ def test_pull__sandbox_id_with_no_config(vellum_client):
|
|
130
130
|
"workflow_sandbox_id": "87654321-0000-0000-0000-000000000000",
|
131
131
|
"ignore": None,
|
132
132
|
"deployments": [],
|
133
|
+
"container_image_tag": None,
|
134
|
+
"container_image_name": None,
|
133
135
|
}
|
134
136
|
],
|
135
137
|
}
|
@@ -204,6 +206,8 @@ def test_pull__workflow_deployment_with_no_config(vellum_client):
|
|
204
206
|
"workflow_sandbox_id": None,
|
205
207
|
"ignore": None,
|
206
208
|
"deployments": [],
|
209
|
+
"container_image_tag": None,
|
210
|
+
"container_image_name": None,
|
207
211
|
}
|
208
212
|
],
|
209
213
|
}
|
@@ -407,7 +411,17 @@ def test_pull__sandbox_id_with_other_workflow_deployment_in_lock(vellum_client,
|
|
407
411
|
new_workflow_sandbox_id = "87654321-0000-0000-0000-000000000000"
|
408
412
|
|
409
413
|
# AND the workflow pull API call returns a zip file
|
410
|
-
vellum_client.workflows.pull.return_value = iter(
|
414
|
+
vellum_client.workflows.pull.return_value = iter(
|
415
|
+
[
|
416
|
+
_zip_file_map(
|
417
|
+
{
|
418
|
+
"workflow.py": "print('hello')",
|
419
|
+
"metadata.json": '{"runner_config": { "container_image_name": "test", '
|
420
|
+
'"container_image_tag": "1.0" } }',
|
421
|
+
}
|
422
|
+
)
|
423
|
+
]
|
424
|
+
)
|
411
425
|
|
412
426
|
# WHEN the user runs the pull command with the new workflow sandbox id
|
413
427
|
runner = CliRunner()
|
@@ -433,12 +447,16 @@ def test_pull__sandbox_id_with_other_workflow_deployment_in_lock(vellum_client,
|
|
433
447
|
"release_tags": None,
|
434
448
|
},
|
435
449
|
],
|
450
|
+
"container_image_name": None,
|
451
|
+
"container_image_tag": None,
|
436
452
|
},
|
437
453
|
{
|
438
454
|
"module": "workflow_87654321",
|
439
455
|
"workflow_sandbox_id": new_workflow_sandbox_id,
|
440
456
|
"ignore": None,
|
441
457
|
"deployments": [],
|
458
|
+
"container_image_name": "test",
|
459
|
+
"container_image_tag": "1.0",
|
442
460
|
},
|
443
461
|
]
|
444
462
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
from .api_node import BaseAPINodeDisplay
|
2
|
+
from .base_node import BaseNodeDisplay
|
2
3
|
from .code_execution_node import BaseCodeExecutionNodeDisplay
|
3
4
|
from .conditional_node import BaseConditionalNodeDisplay
|
4
5
|
from .error_node import BaseErrorNodeDisplay
|
@@ -27,6 +28,7 @@ __all__ = [
|
|
27
28
|
"BaseInlineSubworkflowNodeDisplay",
|
28
29
|
"BaseMapNodeDisplay",
|
29
30
|
"BaseMergeNodeDisplay",
|
31
|
+
"BaseNodeDisplay",
|
30
32
|
"BaseNoteNodeDisplay",
|
31
33
|
"BasePromptDeploymentNodeDisplay",
|
32
34
|
"BaseSearchNodeDisplay",
|
@@ -0,0 +1,18 @@
|
|
1
|
+
from typing import Any, Generic, TypeVar
|
2
|
+
|
3
|
+
from vellum.workflows.nodes.bases.base import BaseNode
|
4
|
+
from vellum.workflows.types.core import JsonObject
|
5
|
+
from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
|
6
|
+
from vellum_ee.workflows.display.types import WorkflowDisplayContext
|
7
|
+
|
8
|
+
_BaseNodeType = TypeVar("_BaseNodeType", bound=BaseNode)
|
9
|
+
|
10
|
+
|
11
|
+
class BaseNodeDisplay(BaseNodeVellumDisplay[_BaseNodeType], Generic[_BaseNodeType]):
|
12
|
+
def serialize(self, display_context: WorkflowDisplayContext, **kwargs: Any) -> JsonObject:
|
13
|
+
node_id = self.node_id
|
14
|
+
|
15
|
+
return {
|
16
|
+
"id": str(node_id),
|
17
|
+
"type": "GENERIC",
|
18
|
+
}
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import pytest
|
2
|
-
from unittest import mock
|
3
2
|
|
4
3
|
from deepdiff import DeepDiff
|
5
4
|
|
@@ -21,7 +20,6 @@ from vellum.workflows.expressions.less_than import LessThanExpression
|
|
21
20
|
from vellum.workflows.expressions.less_than_or_equal_to import LessThanOrEqualToExpression
|
22
21
|
from vellum.workflows.expressions.not_between import NotBetweenExpression
|
23
22
|
from vellum.workflows.expressions.not_in import NotInExpression
|
24
|
-
from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
|
25
23
|
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
26
24
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
27
25
|
|
@@ -33,12 +31,7 @@ def test_serialize_workflow():
|
|
33
31
|
# GIVEN a Workflow that uses a ConditionalNode
|
34
32
|
# WHEN we serialize it
|
35
33
|
workflow_display = get_workflow_display(base_display_class=VellumWorkflowDisplay, workflow_class=CategoryWorkflow)
|
36
|
-
|
37
|
-
# TODO: Support serialization of BaseNode
|
38
|
-
# https://app.shortcut.com/vellum/story/4871/support-serialization-of-base-node
|
39
|
-
with mock.patch.object(BaseNodeVellumDisplay, "serialize") as mocked_serialize:
|
40
|
-
mocked_serialize.return_value = {"type": "MOCKED"}
|
41
|
-
serialized_workflow: dict = workflow_display.serialize()
|
34
|
+
serialized_workflow: dict = workflow_display.serialize()
|
42
35
|
|
43
36
|
# THEN we should get a serialized representation of the Workflow
|
44
37
|
assert serialized_workflow.keys() == {
|
@@ -457,23 +450,14 @@ def test_serialize_workflow():
|
|
457
450
|
|
458
451
|
assert not DeepDiff(
|
459
452
|
[
|
460
|
-
{
|
461
|
-
|
462
|
-
},
|
463
|
-
{
|
464
|
-
|
465
|
-
},
|
466
|
-
{
|
467
|
-
"type": "MOCKED",
|
468
|
-
},
|
469
|
-
{
|
470
|
-
"type": "MOCKED",
|
471
|
-
},
|
472
|
-
{
|
473
|
-
"type": "MOCKED",
|
474
|
-
},
|
453
|
+
{"id": "148c61bd-e8b0-4d4b-8734-b043a72b90ed", "type": "GENERIC"},
|
454
|
+
{"id": "ed7caf01-9ae7-47a3-b15a-16697abaf486", "type": "GENERIC"},
|
455
|
+
{"id": "0d959311-c836-4641-a867-58f63df9dfea", "type": "GENERIC"},
|
456
|
+
{"id": "8df781b1-ff28-48a5-98a2-d7d796b932b0", "type": "GENERIC"},
|
457
|
+
{"id": "68c02b7c-5077-4087-803d-841474a8081f", "type": "GENERIC"},
|
475
458
|
],
|
476
459
|
workflow_raw_data["nodes"][2:7],
|
460
|
+
ignore_order=True,
|
477
461
|
)
|
478
462
|
|
479
463
|
assert not DeepDiff(
|
@@ -917,12 +901,7 @@ def test_conditional_node_serialize_all_operators_with_lhs_and_rhs(descriptor, o
|
|
917
901
|
workflow_cls = create_simple_workflow(descriptor)
|
918
902
|
|
919
903
|
workflow_display = get_workflow_display(base_display_class=VellumWorkflowDisplay, workflow_class=workflow_cls)
|
920
|
-
|
921
|
-
# TODO: Support serialization of BaseNode
|
922
|
-
# https://app.shortcut.com/vellum/story/4871/support-serialization-of-base-node
|
923
|
-
with mock.patch.object(BaseNodeVellumDisplay, "serialize") as mocked_serialize:
|
924
|
-
mocked_serialize.return_value = {"type": "MOCKED"}
|
925
|
-
serialized_workflow: dict = workflow_display.serialize()
|
904
|
+
serialized_workflow: dict = workflow_display.serialize()
|
926
905
|
|
927
906
|
# THEN we should get a serialized representation of the Workflow
|
928
907
|
assert serialized_workflow.keys() == {
|
@@ -1041,12 +1020,7 @@ def test_conditional_node_serialize_all_operators_with_expression(descriptor, op
|
|
1041
1020
|
workflow_cls = create_simple_workflow(descriptor)
|
1042
1021
|
|
1043
1022
|
workflow_display = get_workflow_display(base_display_class=VellumWorkflowDisplay, workflow_class=workflow_cls)
|
1044
|
-
|
1045
|
-
# TODO: Support serialization of BaseNode
|
1046
|
-
# https://app.shortcut.com/vellum/story/4871/support-serialization-of-base-node
|
1047
|
-
with mock.patch.object(BaseNodeVellumDisplay, "serialize") as mocked_serialize:
|
1048
|
-
mocked_serialize.return_value = {"type": "MOCKED"}
|
1049
|
-
serialized_workflow: dict = workflow_display.serialize()
|
1023
|
+
serialized_workflow: dict = workflow_display.serialize()
|
1050
1024
|
|
1051
1025
|
# THEN we should get a serialized representation of the Workflow
|
1052
1026
|
assert serialized_workflow.keys() == {
|
@@ -1152,12 +1126,7 @@ def test_conditional_node_serialize_all_operators_with_value_and_start_and_end(d
|
|
1152
1126
|
workflow_cls = create_simple_workflow(descriptor)
|
1153
1127
|
|
1154
1128
|
workflow_display = get_workflow_display(base_display_class=VellumWorkflowDisplay, workflow_class=workflow_cls)
|
1155
|
-
|
1156
|
-
# TODO: Support serialization of BaseNode
|
1157
|
-
# https://app.shortcut.com/vellum/story/4871/support-serialization-of-base-node
|
1158
|
-
with mock.patch.object(BaseNodeVellumDisplay, "serialize") as mocked_serialize:
|
1159
|
-
mocked_serialize.return_value = {"type": "MOCKED"}
|
1160
|
-
serialized_workflow: dict = workflow_display.serialize()
|
1129
|
+
serialized_workflow: dict = workflow_display.serialize()
|
1161
1130
|
|
1162
1131
|
# THEN we should get a serialized representation of the Workflow
|
1163
1132
|
assert serialized_workflow.keys() == {
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py
CHANGED
@@ -1,8 +1,5 @@
|
|
1
|
-
from unittest import mock
|
2
|
-
|
3
1
|
from deepdiff import DeepDiff
|
4
2
|
|
5
|
-
from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
|
6
3
|
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
7
4
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
8
5
|
|
@@ -16,11 +13,7 @@ def test_serialize_workflow():
|
|
16
13
|
base_display_class=VellumWorkflowDisplay, workflow_class=BasicErrorNodeWorkflow
|
17
14
|
)
|
18
15
|
|
19
|
-
|
20
|
-
# https://app.shortcut.com/vellum/story/4871/support-serialization-of-base-node
|
21
|
-
with mock.patch.object(BaseNodeVellumDisplay, "serialize") as mocked_serialize:
|
22
|
-
mocked_serialize.return_value = {"type": "MOCKED"}
|
23
|
-
serialized_workflow: dict = workflow_display.serialize()
|
16
|
+
serialized_workflow: dict = workflow_display.serialize()
|
24
17
|
|
25
18
|
# THEN we should get a serialized representation of the Workflow
|
26
19
|
assert serialized_workflow.keys() == {
|
@@ -137,14 +130,11 @@ def test_serialize_workflow():
|
|
137
130
|
|
138
131
|
assert not DeepDiff(
|
139
132
|
[
|
140
|
-
{
|
141
|
-
|
142
|
-
},
|
143
|
-
{
|
144
|
-
"type": "MOCKED",
|
145
|
-
},
|
133
|
+
{"id": "1381c078-efa2-4255-89a1-7b4cb742c7fc", "type": "GENERIC"},
|
134
|
+
{"id": "1eee9b4e-531f-45f2-a4b9-42207fac2c33", "type": "GENERIC"},
|
146
135
|
],
|
147
136
|
mocked_base_nodes,
|
137
|
+
ignore_order=True,
|
148
138
|
)
|
149
139
|
|
150
140
|
terminal_node = workflow_raw_data["nodes"][-1]
|