vellum-ai 0.13.21__py3-none-any.whl → 0.13.22__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/__init__.py +12 -0
- vellum/client/__init__.py +170 -5
- vellum/client/core/client_wrapper.py +1 -1
- vellum/client/types/__init__.py +12 -0
- vellum/client/types/execute_api_request_bearer_token.py +6 -0
- vellum/client/types/execute_api_request_body.py +5 -0
- vellum/client/types/execute_api_request_headers_value.py +6 -0
- vellum/client/types/execute_api_response.py +24 -0
- vellum/client/types/method_enum.py +5 -0
- vellum/client/types/vellum_secret.py +19 -0
- vellum/plugins/pydantic.py +13 -1
- vellum/types/execute_api_request_bearer_token.py +3 -0
- vellum/types/execute_api_request_body.py +3 -0
- vellum/types/execute_api_request_headers_value.py +3 -0
- vellum/types/execute_api_response.py +3 -0
- vellum/types/method_enum.py +3 -0
- vellum/types/vellum_secret.py +3 -0
- vellum/workflows/nodes/core/inline_subworkflow_node/node.py +1 -0
- vellum/workflows/nodes/core/map_node/node.py +1 -0
- vellum/workflows/nodes/core/retry_node/node.py +1 -0
- vellum/workflows/nodes/core/try_node/node.py +11 -7
- vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +11 -3
- vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +16 -10
- vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py +49 -0
- vellum/workflows/nodes/displayable/prompt_deployment_node/tests/__init__.py +0 -0
- vellum/workflows/nodes/displayable/prompt_deployment_node/tests/test_node.py +93 -0
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py +19 -4
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/__init__.py +0 -0
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/test_node.py +128 -0
- vellum/workflows/nodes/mocks.py +17 -0
- vellum/workflows/runner/runner.py +14 -34
- vellum/workflows/state/context.py +29 -1
- vellum/workflows/workflows/base.py +9 -6
- {vellum_ai-0.13.21.dist-info → vellum_ai-0.13.22.dist-info}/METADATA +1 -1
- {vellum_ai-0.13.21.dist-info → vellum_ai-0.13.22.dist-info}/RECORD +43 -26
- vellum_cli/push.py +5 -6
- vellum_cli/tests/test_push.py +81 -1
- vellum_ee/workflows/display/types.py +1 -31
- vellum_ee/workflows/display/workflows/base_workflow_display.py +46 -2
- vellum_ee/workflows/tests/test_server.py +9 -0
- vellum/workflows/types/cycle_map.py +0 -34
- {vellum_ai-0.13.21.dist-info → vellum_ai-0.13.22.dist-info}/LICENSE +0 -0
- {vellum_ai-0.13.21.dist-info → vellum_ai-0.13.22.dist-info}/WHEEL +0 -0
- {vellum_ai-0.13.21.dist-info → vellum_ai-0.13.22.dist-info}/entry_points.txt +0 -0
@@ -7,14 +7,14 @@ vellum_cli/image_push.py,sha256=SJwhwWJsLjwGNezNVd_oCVpFMfPsAB3dfLWmriZZUtw,4419
|
|
7
7
|
vellum_cli/logger.py,sha256=PuRFa0WCh4sAGFS5aqWB0QIYpS6nBWwPJrIXpWxugV4,1022
|
8
8
|
vellum_cli/ping.py,sha256=lWyJw6sziXjyTopTYRdFF5hV-sYPVDdX0yVbG5fzcY4,585
|
9
9
|
vellum_cli/pull.py,sha256=7yvg4oBOgsbBEsgXtCpYlNR4AOR8hPICamY-4HI-3kM,9031
|
10
|
-
vellum_cli/push.py,sha256=
|
10
|
+
vellum_cli/push.py,sha256=j4XLSircGX3aHz35i3HyJ4jynWiEH6xVm1uspavPeLM,9101
|
11
11
|
vellum_cli/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
12
|
vellum_cli/tests/conftest.py,sha256=AFYZryKA2qnUuCPBxBKmHLFoPiE0WhBFFej9tNwSHdc,1526
|
13
13
|
vellum_cli/tests/test_config.py,sha256=uvKGDc8BoVyT9_H0Z-g8469zVxomn6Oi3Zj-vK7O_wU,2631
|
14
14
|
vellum_cli/tests/test_main.py,sha256=qDZG-aQauPwBwM6A2DIu1494n47v3pL28XakTbLGZ-k,272
|
15
15
|
vellum_cli/tests/test_ping.py,sha256=QtbhYKMYn1DFnDyBij2mkQO32j9KOpZ5Pf0yek7k_Ao,1284
|
16
16
|
vellum_cli/tests/test_pull.py,sha256=JURmgGs5lSnpzefSx4K13eF2swv7O8OF86-4df81Zjo,25241
|
17
|
-
vellum_cli/tests/test_push.py,sha256=
|
17
|
+
vellum_cli/tests/test_push.py,sha256=e0nJlyRQjfRPjXlHm9uh5Z5eGZMzu1lnpEhO35nGlsc,21330
|
18
18
|
vellum_ee/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
19
|
vellum_ee/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
20
|
vellum_ee/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -77,12 +77,12 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_n
|
|
77
77
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=1HaEwIbxzWl2OEEVlsNcHFQKMhUKQPlsIMaHnjvMODI,3754
|
78
78
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=5eKEMwrKT5O8dPsOgQ89iZwzpA304jneimQeT9GlpLk,2428
|
79
79
|
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=xmKyOKqGRhWUXXbTbCAXX40qINcvK7mjpEfXz0Ny21s,7404
|
80
|
-
vellum_ee/workflows/display/types.py,sha256=
|
80
|
+
vellum_ee/workflows/display/types.py,sha256=s1w2KELKI2kde4G2M3iniOEdPObNKYgYtr31sAgZqRI,2644
|
81
81
|
vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
82
82
|
vellum_ee/workflows/display/utils/vellum.py,sha256=IGHobHz0QG8TWdJNxlQ81khCmJv7piLjE64l4zc33kI,7743
|
83
83
|
vellum_ee/workflows/display/vellum.py,sha256=-95xvit30nyP6Md29nHkfIrnFButZyCg8wz76oUHD0M,8105
|
84
84
|
vellum_ee/workflows/display/workflows/__init__.py,sha256=kapXsC67VJcgSuiBMa86FdePG5A9kMB5Pi4Uy1O2ob4,207
|
85
|
-
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=
|
85
|
+
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=8inuxnxeJbysEhJIGdxLZTvQ2aPJj-OSGmSeotwe7fo,15782
|
86
86
|
vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=kp0u8LN_2IwshLrhMImhpZx1hRyAcD5gXY-kDuuaGMQ,1269
|
87
87
|
vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=yl1ytpl9_lijOGeDPWSypWYRJ7aOEVA7NgUg81jTuCs,2229
|
88
88
|
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=IiHfMglir81cwPFYnwvgynp79cgzFyYVkMJAABIi3BQ,17035
|
@@ -108,13 +108,14 @@ vellum_ee/workflows/tests/local_workflow/nodes/final_output.py,sha256=ZX7zBv87zi
|
|
108
108
|
vellum_ee/workflows/tests/local_workflow/nodes/templating_node.py,sha256=NQwFN61QkHfI3Vssz-B0NKGfupK8PU0FDSAIAhYBLi0,325
|
109
109
|
vellum_ee/workflows/tests/local_workflow/workflow.py,sha256=A4qOzOPNwePYxWbcAgIPLsmrVS_aVEZEc-wULSv787Q,393
|
110
110
|
vellum_ee/workflows/tests/test_display_meta.py,sha256=pzdqND4KLWs7EUIbpXuqgso7BIRpoUsO3T_bgeENs0Q,2205
|
111
|
+
vellum_ee/workflows/tests/test_server.py,sha256=SvKUrUPmOf3sIInXcFjETekql60npb4cAn1GPbF0bPs,391
|
111
112
|
vellum_ee/workflows/tests/test_virtual_files.py,sha256=TJEcMR0v2S8CkloXNmCHA0QW0K6pYNGaIjraJz7sFvY,2762
|
112
|
-
vellum/__init__.py,sha256=
|
113
|
+
vellum/__init__.py,sha256=NPSLAe9-b6SSiyf-FrvMxVy-cKsAEerg8m_HhINTqmE,35794
|
113
114
|
vellum/client/README.md,sha256=JkCJjmMZl4jrPj46pkmL9dpK4gSzQQmP5I7z4aME4LY,4749
|
114
|
-
vellum/client/__init__.py,sha256=
|
115
|
+
vellum/client/__init__.py,sha256=j6zi0NZ4BMC6JrwckvzMWuG5x8KoOvO4KqsLhvVCa68,117624
|
115
116
|
vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
|
116
117
|
vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
117
|
-
vellum/client/core/client_wrapper.py,sha256=
|
118
|
+
vellum/client/core/client_wrapper.py,sha256=UHqsduK36o9isKel9Qci9hZN43L7ZADRoyzO7Xlx5Ws,1869
|
118
119
|
vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
119
120
|
vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
|
120
121
|
vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
|
@@ -177,7 +178,7 @@ vellum/client/resources/workspace_secrets/__init__.py,sha256=FTtvy8EDg9nNNg9WCat
|
|
177
178
|
vellum/client/resources/workspace_secrets/client.py,sha256=h7UzXLyTttPq1t-JZGMg1BWxypxJvBGUdqg7KGT7MK4,8027
|
178
179
|
vellum/client/resources/workspaces/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
179
180
|
vellum/client/resources/workspaces/client.py,sha256=RthwzN1o-Jxwg5yyNNodavFyNUSxfLoTv26w3mRR5g8,3595
|
180
|
-
vellum/client/types/__init__.py,sha256=
|
181
|
+
vellum/client/types/__init__.py,sha256=HsQa33k5NOOW9zQdCCxp6REWnFHvqqR-vJl0RlNmxh0,53975
|
181
182
|
vellum/client/types/ad_hoc_execute_prompt_event.py,sha256=bCjujA2XsOgyF3bRZbcEqV2rOIymRgsLoIRtZpB14xg,607
|
182
183
|
vellum/client/types/ad_hoc_expand_meta.py,sha256=1gv-NCsy_6xBYupLvZH979yf2VMdxAU-l0y0ynMKZaw,1331
|
183
184
|
vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py,sha256=Bfvf1d_dkmshxRACVM5vcxbH_7AQY23RmrrnPc0ytYY,939
|
@@ -266,6 +267,10 @@ vellum/client/types/ephemeral_prompt_cache_config_type_enum.py,sha256=houFyNbNr9
|
|
266
267
|
vellum/client/types/error_input.py,sha256=UiYDo7pxeCmW7REuk80ByzUp1hxEQwQCEA5isZc0ZUc,786
|
267
268
|
vellum/client/types/error_vellum_value.py,sha256=Y7yO8Y1eOlbRyOqbOh6MyPRNHYKH48gIhlZIRcw1UaA,726
|
268
269
|
vellum/client/types/error_vellum_value_request.py,sha256=o0aSn34dRcpnAwAfwW_sgwP7CkODGd5448w2Olg-spg,755
|
270
|
+
vellum/client/types/execute_api_request_bearer_token.py,sha256=agAhp9lzfzZcYGZdzg2jHAEHCaHlqzbgp6qeeNebcto,183
|
271
|
+
vellum/client/types/execute_api_request_body.py,sha256=MArsO_-H41lU8Lz0dB78MVcFupjWtRV7UBEljY3Dnwk,169
|
272
|
+
vellum/client/types/execute_api_request_headers_value.py,sha256=bHtGwOpknQDcQo6qtMKqJxaYpvbinDfwx2uaPzyuZ9s,184
|
273
|
+
vellum/client/types/execute_api_response.py,sha256=QpUDx-A2tBELMLjxhcHwJyoNm-I0d8QfdCb5f1TAOEE,804
|
269
274
|
vellum/client/types/execute_prompt_event.py,sha256=wq_TZBDJcmXQhSj25jR9nMTnN-mP8Ku5Vq3rLqmwE5Q,521
|
270
275
|
vellum/client/types/execute_prompt_response.py,sha256=n6ODveXcO8uWG-kr_B9wXziHH8JUaVTUcUAZKifClEo,334
|
271
276
|
vellum/client/types/execute_workflow_response.py,sha256=0Q-NGPv5jpxjq6xNlHa3qUNK7yOmkU8h6Z2vQb6bHsU,1022
|
@@ -357,6 +362,7 @@ vellum/client/types/metadata_filter_config_request.py,sha256=eFmoTIVv4RB6DRaxqyD
|
|
357
362
|
vellum/client/types/metadata_filter_rule_combinator.py,sha256=3Vpp1Mnv3As7efkxWTeV8qd4gdJ6OLoLhz_UeVBHAX8,165
|
358
363
|
vellum/client/types/metadata_filter_rule_request.py,sha256=Pcs0TsU7CRnsEUoH0DWb-c9DTP2UW67lJKXlsTLXV48,1135
|
359
364
|
vellum/client/types/metadata_filters_request.py,sha256=Yaiu7rkcrV2bCFk6HrZSjuF6V-6JYjZTpzxv7_MFe70,345
|
365
|
+
vellum/client/types/method_enum.py,sha256=PekC3BhlCbdqKHL-M8aMG7zEsHFOY9jrANNxysaKa5g,175
|
360
366
|
vellum/client/types/metric_definition_execution.py,sha256=uLi7Wj1b0f5tjiZWbLGLZMLiNOLZ3ofR57WHne116t8,907
|
361
367
|
vellum/client/types/metric_definition_history_item.py,sha256=oR0m0PG_NGpEBSwJ3n-CFi6TJo3o5Y4D_wfaqpk2VxI,1183
|
362
368
|
vellum/client/types/metric_definition_input.py,sha256=4nmwpPqbeNQYCzLkXCkc-FGV5K2Zfa22xqSUe_L6o5s,331
|
@@ -611,6 +617,7 @@ vellum/client/types/vellum_error_code_enum.py,sha256=OtW7fuM3RrRIDHbbJtk2FxPf70J
|
|
611
617
|
vellum/client/types/vellum_error_request.py,sha256=RacXJoIgR8MeXXWDMI76pkxLBhCRgHnbj-aIJytZtP4,650
|
612
618
|
vellum/client/types/vellum_image.py,sha256=wkFRgxOkxFPrmRdWTO58_41_vk0HYn5k4xsc-5ywxEs,637
|
613
619
|
vellum/client/types/vellum_image_request.py,sha256=_Gr4L7PSY8PNQINyTy04hPdwLc8_bR1RTUWZ73RQRYM,644
|
620
|
+
vellum/client/types/vellum_secret.py,sha256=jru3nBCquZHZ3wEdpgKZNmy2WFh26PVKrTNaXeVSsZQ,555
|
614
621
|
vellum/client/types/vellum_value.py,sha256=fpLQ84tTHb2OQK162TIqmfwa2_31M9NAmkzA1DIPAGY,969
|
615
622
|
vellum/client/types/vellum_value_logical_condition_group_request.py,sha256=vyr6lhHuS-6YtcFL5TTmPGtKRoNI9w63N7N2RPQwKVQ,1402
|
616
623
|
vellum/client/types/vellum_value_logical_condition_request.py,sha256=HkZfj4X48UHFrPDHgUi3lp0MUGBMfroC0noNqZ_rW8o,1177
|
@@ -693,7 +700,7 @@ vellum/evaluations/utils/env.py,sha256=Xj_nxsoU5ox06EOTjRopR4lrigQI6Le6qbWGltYoE
|
|
693
700
|
vellum/evaluations/utils/exceptions.py,sha256=dXMAkzqbHV_AP5FjjbegPlfUE0zQDlpA3qOsoOJUxfg,49
|
694
701
|
vellum/evaluations/utils/paginator.py,sha256=rEED_BJAXAM6tM1yMwHePNzszjq_tTq4NbQvi1jWQ_Q,697
|
695
702
|
vellum/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
696
|
-
vellum/plugins/pydantic.py,sha256=
|
703
|
+
vellum/plugins/pydantic.py,sha256=BMUwC4OkxtNf6hpLwb0T4MBUKgkGy55T_5Ww7GHpHYo,3068
|
697
704
|
vellum/plugins/utils.py,sha256=U9ZY9KdE3RRvbcG01hXxu9CvfJD6Fo7nJDgcHjQn0FI,606
|
698
705
|
vellum/plugins/vellum_mypy.py,sha256=QTuMSq6PiZW1dyTUZ5Bf1d4XkgFj0TKAgZLP8f4UgL4,27914
|
699
706
|
vellum/prompts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -840,6 +847,10 @@ vellum/types/ephemeral_prompt_cache_config_type_enum.py,sha256=2UZs7ueVFNQA-v_40
|
|
840
847
|
vellum/types/error_input.py,sha256=8ecGTnmZjqmxueqZyOjNkCasQ2Zg7qR0rzhDmFwLF4c,149
|
841
848
|
vellum/types/error_vellum_value.py,sha256=eALdKdSBCedvLdSjhg4xJeoTzjf2fNr-BqlhRG5fS5o,156
|
842
849
|
vellum/types/error_vellum_value_request.py,sha256=4wB0ZFHx9wEluEDqwY8aTYLK5Gy07Gxd6mfJ4YPsP9g,164
|
850
|
+
vellum/types/execute_api_request_bearer_token.py,sha256=Xu9SNdqkvilFOWuHnrA688biVOIeiRzuwidHflx5mPg,170
|
851
|
+
vellum/types/execute_api_request_body.py,sha256=ulfvgCNEXbzdnuwyRu2qMM93zIZSIGgq1PlB41pFvwQ,162
|
852
|
+
vellum/types/execute_api_request_headers_value.py,sha256=lAMglvqWdhpku8kfrNGYbA6QomWunvNS9xZ92sxnIEM,171
|
853
|
+
vellum/types/execute_api_response.py,sha256=NNFaOCwse1BGtN6XBTG1h9cU7Iy3ErdIrbgK_pQbs6c,158
|
843
854
|
vellum/types/execute_prompt_event.py,sha256=zLtvzIZijE-L7Nc3jNmvbu9UkKwjEILOs9RjHWYe7qs,158
|
844
855
|
vellum/types/execute_prompt_response.py,sha256=pSfHv_pQjYAudCsMDfsHdAXM0H-5MLAwdVv1145up2A,161
|
845
856
|
vellum/types/execute_workflow_response.py,sha256=zDo_qlLq83gciC7VL-O2C9vw0n4_15eE9iNCcOqUQxA,163
|
@@ -931,6 +942,7 @@ vellum/types/metadata_filter_config_request.py,sha256=uN2zNxSJxm-2Eehu1LibowL5w4
|
|
931
942
|
vellum/types/metadata_filter_rule_combinator.py,sha256=bHx8PgGv5n_3cC-blXV20DKekL6YV3_pidyMKkJ8r_I,169
|
932
943
|
vellum/types/metadata_filter_rule_request.py,sha256=LULGRo2_1WXc8GbFQioEzB1BfAfcOONwSgrRpwXlQig,166
|
933
944
|
vellum/types/metadata_filters_request.py,sha256=Czs4HD9ibSdtX026v3NMur6L6wKOYYkvd5Em1-UVI2o,162
|
945
|
+
vellum/types/method_enum.py,sha256=ZuFW7Kh-SyyBNT4Kkw3HCj1CL_GBrbLFbN-7XJxw2JM,149
|
934
946
|
vellum/types/metric_definition_execution.py,sha256=Yx5b1CygziiPLjlZDQF0lVVI7ubRLVJn16vT3N7zmHQ,165
|
935
947
|
vellum/types/metric_definition_history_item.py,sha256=OUGYJ9yHc60QiYh_C8-YuA1zHeQ9v5lShdaJ5KEl-1c,168
|
936
948
|
vellum/types/metric_definition_input.py,sha256=TwMwjC_MNiLdodsvT52D7aa_wRY-0kT047flY3sFxII,161
|
@@ -1185,6 +1197,7 @@ vellum/types/vellum_error_code_enum.py,sha256=as6FP8wBHB5lTQ80x1d_G_i3Vu7i5EWUuk
|
|
1185
1197
|
vellum/types/vellum_error_request.py,sha256=gjU_A4UWh91mirqIlPzX84iEmMT7JR3DoMPjDw9_2mQ,158
|
1186
1198
|
vellum/types/vellum_image.py,sha256=Aju40iIofNXNiPw0gBG1BuV6FR16ZecNDORCPPB4oio,150
|
1187
1199
|
vellum/types/vellum_image_request.py,sha256=ZNSTZub8Kuy0Arr3CriVgLojE5MZMnIongnx0Pq4QMA,158
|
1200
|
+
vellum/types/vellum_secret.py,sha256=-eRj7iUevkqFnRgVIjYTDGZUx9_zhY-olHzBVyWXuvs,151
|
1188
1201
|
vellum/types/vellum_value.py,sha256=me0nmquE3UPpT47q6kzRKFFrTzTw4-q9lR1eK-A-1ow,150
|
1189
1202
|
vellum/types/vellum_value_logical_condition_group_request.py,sha256=cdvckQ3IKVoxNIx2PGyGsBXxOGK39T4P_xEP9fDWJss,182
|
1190
1203
|
vellum/types/vellum_value_logical_condition_request.py,sha256=R3qtJZw6Uo3Qh9MHyIZxWXrVssI3QtQopktdVN2UdSQ,176
|
@@ -1318,22 +1331,22 @@ vellum/workflows/nodes/core/__init__.py,sha256=5zDMCmyt1v0HTJzlUBwq3U9L825yZGZhT
|
|
1318
1331
|
vellum/workflows/nodes/core/error_node/__init__.py,sha256=g7RRnlHhqu4qByfLjBwCunmgGA8dI5gNsjS3h6TwlSI,60
|
1319
1332
|
vellum/workflows/nodes/core/error_node/node.py,sha256=MFHU5vITYSK-L9CuMZ49In2ZeNLWnhZD0f8r5dWvb5Y,1270
|
1320
1333
|
vellum/workflows/nodes/core/inline_subworkflow_node/__init__.py,sha256=nKNEH1QTl-1PcvmYoqSWEl0-t6gAur8GLTXHzklRQfM,84
|
1321
|
-
vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=
|
1334
|
+
vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=q0uuS1Coen5_GgAUlZFKeYmCExjBbKxC74Ove-piTGI,5969
|
1322
1335
|
vellum/workflows/nodes/core/inline_subworkflow_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1323
1336
|
vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py,sha256=n0-821Ov9ZfRFX_lbzLy5o2rX8fEw2qoxz0aFWCOxVg,1547
|
1324
1337
|
vellum/workflows/nodes/core/map_node/__init__.py,sha256=MXpZYmGfhsMJHqqlpd64WiJRtbAtAMQz-_3fCU_cLV0,56
|
1325
|
-
vellum/workflows/nodes/core/map_node/node.py,sha256=
|
1338
|
+
vellum/workflows/nodes/core/map_node/node.py,sha256=zL0mN0CAJ8NL-Uaqn4o2kSiw3jYgxrwJraQdMdrz848,8159
|
1326
1339
|
vellum/workflows/nodes/core/map_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1327
1340
|
vellum/workflows/nodes/core/map_node/tests/test_node.py,sha256=P7ImQyeLcK-aEJUYCX1gPQyuOxdxnSPpI3mNPpKQ62Y,1919
|
1328
1341
|
vellum/workflows/nodes/core/retry_node/__init__.py,sha256=lN2bIy5a3Uzhs_FYCrooADyYU6ZGShtvLKFWpelwPvo,60
|
1329
|
-
vellum/workflows/nodes/core/retry_node/node.py,sha256=
|
1342
|
+
vellum/workflows/nodes/core/retry_node/node.py,sha256=loIZJUcCsN0y3mr4pw7f23l4eDY69IoTwA2TMnxJlxA,4292
|
1330
1343
|
vellum/workflows/nodes/core/retry_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1331
1344
|
vellum/workflows/nodes/core/retry_node/tests/test_node.py,sha256=RM_OHwxrHwyxvlQQBJPqVBxpedFuWQ9h2-Xa3kP75sc,4399
|
1332
1345
|
vellum/workflows/nodes/core/templating_node/__init__.py,sha256=GmyuYo81_A1_Bz6id69ozVFS6FKiuDsZTiA3I6MaL2U,70
|
1333
1346
|
vellum/workflows/nodes/core/templating_node/node.py,sha256=zCYhq88qLTvoC9LetVrD9sLXkwHZsaWekxMhru_nV70,3752
|
1334
1347
|
vellum/workflows/nodes/core/templating_node/tests/test_templating_node.py,sha256=5iZWQWdJKDHMXBY8bhpb-Dpy9FTfW1HXxGUTivykZAA,4621
|
1335
1348
|
vellum/workflows/nodes/core/try_node/__init__.py,sha256=JVD4DrldTIqFQQFrubs9KtWCCc0YCAc7Fzol5ZWIWeM,56
|
1336
|
-
vellum/workflows/nodes/core/try_node/node.py,sha256=
|
1349
|
+
vellum/workflows/nodes/core/try_node/node.py,sha256=bk2uhYUl10yaPJlOBWxiL7igTUrL_7mM9S2nvsdWB68,4242
|
1337
1350
|
vellum/workflows/nodes/core/try_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1338
1351
|
vellum/workflows/nodes/core/try_node/tests/test_node.py,sha256=Wc2kLl-MkffsBxl3IiFaqLd16e2Iosxhk7qBnojPvQg,4092
|
1339
1352
|
vellum/workflows/nodes/displayable/__init__.py,sha256=6F_4DlSwvHuilWnIalp8iDjjDXl0Nmz4QzJV2PYe5RI,1023
|
@@ -1346,8 +1359,8 @@ vellum/workflows/nodes/displayable/bases/base_prompt_node/__init__.py,sha256=Org
|
|
1346
1359
|
vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=r_gOmeGFQQfzhAc1_bmzcwUvH-Xllc93gE7miTV4rQE,2824
|
1347
1360
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/__init__.py,sha256=Hl35IAoepRpE-j4cALaXVJIYTYOF3qszyVbxTj4kS1s,82
|
1348
1361
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/constants.py,sha256=fnjiRWLoRlC4Puo5oQcpZD5Hd-EesxsAo9l5tGAkpZQ,270
|
1349
|
-
vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=
|
1350
|
-
vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=
|
1362
|
+
vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=UrmI8NkNJFGq9f59gD12S1e8D_R3ROHc934JmtfQk9I,6841
|
1363
|
+
vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=tOhBHKBdGAIfZWr5HcQdA3JE7GXvYZ7-YyX2x0ptwJc,5339
|
1351
1364
|
vellum/workflows/nodes/displayable/bases/search_node.py,sha256=3UtbqY3QO4kzfJHbmUNZGnEEfJmaoiF892u8H6TGjp8,5381
|
1352
1365
|
vellum/workflows/nodes/displayable/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1353
1366
|
vellum/workflows/nodes/displayable/bases/tests/test_utils.py,sha256=eqdqbKNRWVMDPevgwLg1i6YK0g4L4bCy-7xCBN5yYZI,3156
|
@@ -1369,19 +1382,23 @@ vellum/workflows/nodes/displayable/guardrail_node/node.py,sha256=h5nIBzQxbXTrdTq
|
|
1369
1382
|
vellum/workflows/nodes/displayable/inline_prompt_node/__init__.py,sha256=gSUOoEZLlrx35-tQhSAd3An8WDwBqyiQh-sIebLU9wU,74
|
1370
1383
|
vellum/workflows/nodes/displayable/inline_prompt_node/node.py,sha256=UWOxIa3kizhDa5joAmEDlh0P66EaqatqxzLLbvbUybw,2294
|
1371
1384
|
vellum/workflows/nodes/displayable/inline_prompt_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1372
|
-
vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py,sha256=
|
1385
|
+
vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py,sha256=BoUdteHm582tnVaWnums69uJ3GIbE7M-vgQSHl7VSJs,8539
|
1373
1386
|
vellum/workflows/nodes/displayable/merge_node/__init__.py,sha256=J8IC08dSH7P76wKlNuxe1sn7toNGtSQdFirUbtPDEs0,60
|
1374
1387
|
vellum/workflows/nodes/displayable/merge_node/node.py,sha256=nZtGGVAvY4fvGg8vwV6sTQ8_QLRnigeXt0vf2FL272A,450
|
1375
1388
|
vellum/workflows/nodes/displayable/note_node/__init__.py,sha256=KWA3P4fyYJ-fOTky8qNGlcOotQ-HeHJ9AjZt6mRQmCE,58
|
1376
1389
|
vellum/workflows/nodes/displayable/note_node/node.py,sha256=sIN1VBQ7zeT3GhN0kupXbFfdpvgedWV79k4woJNp5IQ,394
|
1377
1390
|
vellum/workflows/nodes/displayable/prompt_deployment_node/__init__.py,sha256=krX1Hds-TSVYZsx0wJFX4wsAKkEFYOX1ifwRGiIM-EA,82
|
1378
1391
|
vellum/workflows/nodes/displayable/prompt_deployment_node/node.py,sha256=ruOgvpg_9KV_HkovPQeu6TKpur9DT_J4CYQo50tULCY,2680
|
1392
|
+
vellum/workflows/nodes/displayable/prompt_deployment_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1393
|
+
vellum/workflows/nodes/displayable/prompt_deployment_node/tests/test_node.py,sha256=TO4wHNH1FASQxcM5-S8gMeC1k5HEISYcpzKy3cA0a6E,3772
|
1379
1394
|
vellum/workflows/nodes/displayable/search_node/__init__.py,sha256=hpBpvbrDYf43DElRZFLzieSn8weXiwNiiNOJurERQbs,62
|
1380
1395
|
vellum/workflows/nodes/displayable/search_node/node.py,sha256=_VHHuTNN4icZBgc7O5U9SVKrv1zgKipU72fOtxTyrQU,1453
|
1381
1396
|
vellum/workflows/nodes/displayable/search_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1382
1397
|
vellum/workflows/nodes/displayable/search_node/tests/test_node.py,sha256=2-QCV7Vk_-YMls33p0GOUtCv3f2uPNZCjkB2CRjek7o,6562
|
1383
1398
|
vellum/workflows/nodes/displayable/subworkflow_deployment_node/__init__.py,sha256=9yYM6001YZeqI1VOk1QuEM_yrffk_EdsO7qaPzINKds,92
|
1384
|
-
vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=
|
1399
|
+
vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=DAbSMN4GHBe-uTzJV-EcRfaRue113VrKl5m2SmA6Emc,7927
|
1400
|
+
vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1401
|
+
vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/test_node.py,sha256=U5Y0WbceRbCtfgX759gIsbK2htg3eVdSe1mOiwdUbjw,5278
|
1385
1402
|
vellum/workflows/nodes/displayable/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1386
1403
|
vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py,sha256=CI7iMyyIlnds1rkVSjICOFg2UY0yV51NTKtKpfeEME4,4677
|
1387
1404
|
vellum/workflows/nodes/displayable/tests/test_search_node_wth_text_output.py,sha256=VepO5z1277c1y5N6LLIC31nnWD1aak2m5oPFplfJHHs,6935
|
@@ -1390,6 +1407,7 @@ vellum/workflows/nodes/experimental/README.md,sha256=eF6DfIL8t-HbF9-mcofOMymKrra
|
|
1390
1407
|
vellum/workflows/nodes/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1391
1408
|
vellum/workflows/nodes/experimental/openai_chat_completion_node/__init__.py,sha256=lsyD9laR9p7kx5-BXGH2gUTM242UhKy8SMV0SR6S2iE,90
|
1392
1409
|
vellum/workflows/nodes/experimental/openai_chat_completion_node/node.py,sha256=1EGeiaT-Zoo6pttQFKKBcdf3dmhAbjKGaErYD5FFwlc,10185
|
1410
|
+
vellum/workflows/nodes/mocks.py,sha256=gvM2tyoe-V84jFbFdhQsyGAPyQBzmjn_CkhT_yxccgY,499
|
1393
1411
|
vellum/workflows/nodes/utils.py,sha256=T7krLipDSI007JkkH2zsfyQ-tfOBH4hyFzQ0YJKYpuw,4025
|
1394
1412
|
vellum/workflows/outputs/__init__.py,sha256=AyZ4pRh_ACQIGvkf0byJO46EDnSix1ZCAXfvh-ms1QE,94
|
1395
1413
|
vellum/workflows/outputs/base.py,sha256=Wu48tqyQoxpflBUcwzKeZjSVp1LPKrBwuIvnx__9H90,8459
|
@@ -1412,11 +1430,11 @@ vellum/workflows/references/workflow_input.py,sha256=86IuhlBz-9cGxeUzizyjdp482aj
|
|
1412
1430
|
vellum/workflows/resolvers/__init__.py,sha256=eH6hTvZO4IciDaf_cf7aM2vs-DkBDyJPycOQevJxQnI,82
|
1413
1431
|
vellum/workflows/resolvers/base.py,sha256=WHra9LRtlTuB1jmuNqkfVE2JUgB61Cyntn8f0b0WZg4,411
|
1414
1432
|
vellum/workflows/runner/__init__.py,sha256=i1iG5sAhtpdsrlvwgH6B-m49JsINkiWyPWs8vyT-bqM,72
|
1415
|
-
vellum/workflows/runner/runner.py,sha256=
|
1433
|
+
vellum/workflows/runner/runner.py,sha256=kgfNtVGMdx3nLM0K4upflz-k5iJMKQuwm9MkKDygSuE,28845
|
1416
1434
|
vellum/workflows/sandbox.py,sha256=GVJzVjMuYzOBnSrboB0_6MMRZWBluAyQ2o7syeaeBd0,2235
|
1417
1435
|
vellum/workflows/state/__init__.py,sha256=yUUdR-_Vl7UiixNDYQZ-GEM_kJI9dnOia75TtuNEsnE,60
|
1418
1436
|
vellum/workflows/state/base.py,sha256=IIl76sJtn0GfbFWBqMnpGuvtZyVyQMEXv0QKDfLy8Wg,14763
|
1419
|
-
vellum/workflows/state/context.py,sha256=
|
1437
|
+
vellum/workflows/state/context.py,sha256=80b7j11AuG6engdur-AH0dUPnbwu8QyzF_-crWmvUvI,2588
|
1420
1438
|
vellum/workflows/state/encoder.py,sha256=WdUidpOaBDx5lilJl8V8McFDHQYiCLCJR9dmktdzdZY,1836
|
1421
1439
|
vellum/workflows/state/store.py,sha256=VYGBQgN1bpd1as5eGiouV_7scg8QsRs4_1aqZAGIsRQ,793
|
1422
1440
|
vellum/workflows/state/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1425,7 +1443,6 @@ vellum/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
|
|
1425
1443
|
vellum/workflows/tests/test_sandbox.py,sha256=JKwaluI-lODQo7Ek9sjDstjL_WTdSqUlVik6ZVTfVOA,1826
|
1426
1444
|
vellum/workflows/types/__init__.py,sha256=KxUTMBGzuRCfiMqzzsykOeVvrrkaZmTTo1a7SLu8gRM,68
|
1427
1445
|
vellum/workflows/types/core.py,sha256=kMQremh_I8egXpiKmtMQbB6e3OczAWiRnnTq5V6xlD0,928
|
1428
|
-
vellum/workflows/types/cycle_map.py,sha256=-ZMQsKzZBpCi0bchJrkuN_dtCFuz9uFABy7Fq2PI58E,928
|
1429
1446
|
vellum/workflows/types/generics.py,sha256=9HzFvtcF8qpn1wcsly7er250MMwdS9r-BjSVco9UBj4,584
|
1430
1447
|
vellum/workflows/types/stack.py,sha256=RDSGLkcV612ge8UuAH9TZiEGXxJt0Av2-H5rfzrTVVI,1014
|
1431
1448
|
vellum/workflows/types/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1443,10 +1460,10 @@ vellum/workflows/utils/uuids.py,sha256=DFzPv9RCvsKhvdTEIQyfSek2A31D6S_QcmeLPbgrg
|
|
1443
1460
|
vellum/workflows/utils/vellum_variables.py,sha256=g5xHYB8etfHE32ek19nP6Anf8NyjhmUtOwO2KmQ5xZU,3111
|
1444
1461
|
vellum/workflows/vellum_client.py,sha256=ODrq_TSl-drX2aezXegf7pizpWDVJuTXH-j6528t75s,683
|
1445
1462
|
vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
|
1446
|
-
vellum/workflows/workflows/base.py,sha256=
|
1463
|
+
vellum/workflows/workflows/base.py,sha256=uYT0TQnEDtVaH3pErq785FhxxEEmk7C5ZGfuSO3QK8c,18537
|
1447
1464
|
vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnadGsrSZGa7t7LpJA,2008
|
1448
|
-
vellum_ai-0.13.
|
1449
|
-
vellum_ai-0.13.
|
1450
|
-
vellum_ai-0.13.
|
1451
|
-
vellum_ai-0.13.
|
1452
|
-
vellum_ai-0.13.
|
1465
|
+
vellum_ai-0.13.22.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
|
1466
|
+
vellum_ai-0.13.22.dist-info/METADATA,sha256=FKumzqZLqMjy0V1ohc4uZKBhxHBqQnoPPMXOR261yho,5335
|
1467
|
+
vellum_ai-0.13.22.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
1468
|
+
vellum_ai-0.13.22.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
|
1469
|
+
vellum_ai-0.13.22.dist-info/RECORD,,
|
vellum_cli/push.py
CHANGED
@@ -49,6 +49,9 @@ def push_command(
|
|
49
49
|
else config.workflows
|
50
50
|
)
|
51
51
|
|
52
|
+
if len(workflow_configs) > 1 and workspace:
|
53
|
+
workflow_configs = [w for w in workflow_configs if w.workspace == workspace]
|
54
|
+
|
52
55
|
if len(workflow_configs) == 0:
|
53
56
|
raise ValueError(f"No workflow config for '{module}' found in project to push.")
|
54
57
|
|
@@ -230,15 +233,11 @@ def push_command(
|
|
230
233
|
Visit at: https://app.vellum.ai/workflow-sandboxes/{response.workflow_sandbox_id}"""
|
231
234
|
)
|
232
235
|
|
233
|
-
requires_save = False
|
234
236
|
if not workflow_config.workflow_sandbox_id:
|
235
237
|
workflow_config.workflow_sandbox_id = response.workflow_sandbox_id
|
236
|
-
requires_save = True
|
237
238
|
|
238
239
|
if not workflow_config.deployments and response.workflow_deployment_id:
|
239
240
|
workflow_config.deployments.append(WorkflowDeploymentConfig(id=UUID(response.workflow_deployment_id)))
|
240
|
-
requires_save = True
|
241
241
|
|
242
|
-
|
243
|
-
|
244
|
-
logger.info("Updated vellum.lock file.")
|
242
|
+
config.save()
|
243
|
+
logger.info("Updated vellum.lock.json file.")
|
vellum_cli/tests/test_push.py
CHANGED
@@ -489,7 +489,7 @@ MY_OTHER_VELLUM_API_KEY=aaabbbcccddd
|
|
489
489
|
|
490
490
|
# AND the workflow sandbox id arg passed in should be `None`
|
491
491
|
call_args = vellum_client_class.return_value.workflows.push.call_args.kwargs
|
492
|
-
assert call_args["workflow_sandbox_id"] is None
|
492
|
+
assert call_args["workflow_sandbox_id"] is None, result.output
|
493
493
|
|
494
494
|
# AND with the correct api key
|
495
495
|
vellum_client_class.assert_called_once_with(
|
@@ -509,3 +509,83 @@ MY_OTHER_VELLUM_API_KEY=aaabbbcccddd
|
|
509
509
|
"deployments": [],
|
510
510
|
"ignore": None,
|
511
511
|
}
|
512
|
+
|
513
|
+
|
514
|
+
def test_push__workspace_option__both_options_already_configured(mock_module, vellum_client_class):
|
515
|
+
# GIVEN a single workflow configured
|
516
|
+
temp_dir = mock_module.temp_dir
|
517
|
+
module = mock_module.module
|
518
|
+
workflow_sandbox_id = mock_module.workflow_sandbox_id
|
519
|
+
set_pyproject_toml = mock_module.set_pyproject_toml
|
520
|
+
second_workflow_sandbox_id = str(uuid4())
|
521
|
+
|
522
|
+
# AND the module is configured twice
|
523
|
+
set_pyproject_toml(
|
524
|
+
{
|
525
|
+
"workflows": [
|
526
|
+
{
|
527
|
+
"module": module,
|
528
|
+
"workflow_sandbox_id": workflow_sandbox_id,
|
529
|
+
},
|
530
|
+
{
|
531
|
+
"module": module,
|
532
|
+
"workflow_sandbox_id": second_workflow_sandbox_id,
|
533
|
+
"workspace": "my_other_workspace",
|
534
|
+
},
|
535
|
+
],
|
536
|
+
"workspaces": [
|
537
|
+
{
|
538
|
+
"name": "my_other_workspace",
|
539
|
+
"api_key": "MY_OTHER_VELLUM_API_KEY",
|
540
|
+
}
|
541
|
+
],
|
542
|
+
}
|
543
|
+
)
|
544
|
+
|
545
|
+
# AND the .env file has the other api key stored
|
546
|
+
with open(os.path.join(temp_dir, ".env"), "w") as f:
|
547
|
+
f.write(
|
548
|
+
"""\
|
549
|
+
VELLUM_API_KEY=abcdef123456
|
550
|
+
MY_OTHER_VELLUM_API_KEY=aaabbbcccddd
|
551
|
+
"""
|
552
|
+
)
|
553
|
+
|
554
|
+
# AND a workflow exists in the module
|
555
|
+
_ensure_workflow_py(temp_dir, module)
|
556
|
+
|
557
|
+
# AND the push API call returns workflow sandbox id
|
558
|
+
vellum_client_class.return_value.workflows.push.return_value = WorkflowPushResponse(
|
559
|
+
workflow_sandbox_id=second_workflow_sandbox_id,
|
560
|
+
)
|
561
|
+
|
562
|
+
# WHEN calling `vellum push` on strict mode
|
563
|
+
runner = CliRunner()
|
564
|
+
result = runner.invoke(cli_main, ["push", module, "--workspace", "my_other_workspace"])
|
565
|
+
|
566
|
+
# THEN it should succeed
|
567
|
+
assert result.exit_code == 0, result.output
|
568
|
+
|
569
|
+
# AND we should have called the push API once
|
570
|
+
vellum_client_class.return_value.workflows.push.assert_called_once()
|
571
|
+
|
572
|
+
# AND the workflow sandbox id arg passed in should be `None`
|
573
|
+
call_args = vellum_client_class.return_value.workflows.push.call_args.kwargs
|
574
|
+
assert call_args["workflow_sandbox_id"] == second_workflow_sandbox_id
|
575
|
+
|
576
|
+
# AND with the correct api key
|
577
|
+
vellum_client_class.assert_called_once_with(
|
578
|
+
api_key="aaabbbcccddd",
|
579
|
+
environment=mock.ANY,
|
580
|
+
)
|
581
|
+
|
582
|
+
# AND the vellum lock file should have the same two workflows
|
583
|
+
with open(os.path.join(temp_dir, "vellum.lock.json")) as f:
|
584
|
+
lock_file_content = json.load(f)
|
585
|
+
assert len(lock_file_content["workflows"]) == 2
|
586
|
+
assert lock_file_content["workflows"][0]["module"] == module
|
587
|
+
assert lock_file_content["workflows"][0]["workflow_sandbox_id"] == workflow_sandbox_id
|
588
|
+
assert lock_file_content["workflows"][0]["workspace"] == "default"
|
589
|
+
assert lock_file_content["workflows"][1]["module"] == module
|
590
|
+
assert lock_file_content["workflows"][1]["workflow_sandbox_id"] == second_workflow_sandbox_id
|
591
|
+
assert lock_file_content["workflows"][1]["workspace"] == "my_other_workspace"
|
@@ -14,11 +14,10 @@ from vellum_ee.workflows.display.base import (
|
|
14
14
|
WorkflowMetaDisplayType,
|
15
15
|
WorkflowOutputDisplayType,
|
16
16
|
)
|
17
|
-
from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
|
18
|
-
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay, PortDisplay
|
19
17
|
|
20
18
|
if TYPE_CHECKING:
|
21
19
|
from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
|
20
|
+
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay, PortDisplay
|
22
21
|
from vellum_ee.workflows.display.workflows import BaseWorkflowDisplay
|
23
22
|
|
24
23
|
NodeDisplayType = TypeVar("NodeDisplayType", bound="BaseNodeDisplay")
|
@@ -63,32 +62,3 @@ class WorkflowDisplayContext(
|
|
63
62
|
workflow_output_displays: Dict[BaseDescriptor, WorkflowOutputDisplayType] = field(default_factory=dict)
|
64
63
|
edge_displays: Dict[Tuple[Port, Type[BaseNode]], EdgeDisplayType] = field(default_factory=dict)
|
65
64
|
port_displays: Dict[Port, "PortDisplay"] = field(default_factory=dict)
|
66
|
-
|
67
|
-
def build_event_display_context(self) -> WorkflowEventDisplayContext:
|
68
|
-
workflow_outputs = {
|
69
|
-
output.name: self.workflow_output_displays[output].id for output in self.workflow_output_displays
|
70
|
-
}
|
71
|
-
workflow_inputs = {input.name: self.workflow_input_displays[input].id for input in self.workflow_input_displays}
|
72
|
-
node_displays = {str(node.__id__): self.node_displays[node] for node in self.node_displays}
|
73
|
-
temp_node_displays = {}
|
74
|
-
for node in node_displays:
|
75
|
-
current_node = node_displays[node]
|
76
|
-
input_display = {}
|
77
|
-
if issubclass(current_node.__class__, BaseNodeVellumDisplay):
|
78
|
-
input_display = current_node.node_input_ids_by_name # type: ignore[attr-defined]
|
79
|
-
node_display_meta = {
|
80
|
-
output.name: current_node.output_display[output].id for output in current_node.output_display
|
81
|
-
}
|
82
|
-
port_display_meta = {port.name: current_node.port_displays[port].id for port in current_node.port_displays}
|
83
|
-
|
84
|
-
temp_node_displays[node] = NodeDisplay(
|
85
|
-
input_display=input_display,
|
86
|
-
output_display=node_display_meta,
|
87
|
-
port_display=port_display_meta,
|
88
|
-
)
|
89
|
-
display_meta = WorkflowEventDisplayContext(
|
90
|
-
workflow_outputs=workflow_outputs,
|
91
|
-
workflow_inputs=workflow_inputs,
|
92
|
-
node_displays=temp_node_displays,
|
93
|
-
)
|
94
|
-
return display_meta
|
@@ -29,9 +29,15 @@ from vellum_ee.workflows.display.base import (
|
|
29
29
|
WorkflowOutputDisplayOverridesType,
|
30
30
|
WorkflowOutputDisplayType,
|
31
31
|
)
|
32
|
+
from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
|
32
33
|
from vellum_ee.workflows.display.nodes.get_node_display_class import get_node_display_class
|
33
34
|
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay, PortDisplay, PortDisplayOverrides
|
34
|
-
from vellum_ee.workflows.display.types import
|
35
|
+
from vellum_ee.workflows.display.types import (
|
36
|
+
NodeDisplay,
|
37
|
+
NodeDisplayType,
|
38
|
+
WorkflowDisplayContext,
|
39
|
+
WorkflowEventDisplayContext,
|
40
|
+
)
|
35
41
|
|
36
42
|
logger = logging.getLogger(__name__)
|
37
43
|
|
@@ -343,4 +349,42 @@ class BaseWorkflowDisplay(
|
|
343
349
|
display_class = importlib.import_module(workflow_display_module)
|
344
350
|
except ModuleNotFoundError:
|
345
351
|
return None
|
346
|
-
|
352
|
+
|
353
|
+
display_context = display_class.WorkflowDisplay(workflow_class).display_context
|
354
|
+
if not isinstance(display_context, WorkflowDisplayContext):
|
355
|
+
return None
|
356
|
+
|
357
|
+
workflow_outputs = {
|
358
|
+
output.name: display_context.workflow_output_displays[output].id
|
359
|
+
for output in display_context.workflow_output_displays
|
360
|
+
}
|
361
|
+
workflow_inputs = {
|
362
|
+
input.name: display_context.workflow_input_displays[input].id
|
363
|
+
for input in display_context.workflow_input_displays
|
364
|
+
}
|
365
|
+
node_displays = {
|
366
|
+
str(node.__id__): display_context.node_displays[node] for node in display_context.node_displays
|
367
|
+
}
|
368
|
+
temp_node_displays = {}
|
369
|
+
for node in node_displays:
|
370
|
+
current_node = node_displays[node]
|
371
|
+
input_display = {}
|
372
|
+
if isinstance(current_node, BaseNodeVellumDisplay):
|
373
|
+
input_display = current_node.node_input_ids_by_name
|
374
|
+
node_display_meta = {
|
375
|
+
output.name: current_node.output_display[output].id for output in current_node.output_display
|
376
|
+
}
|
377
|
+
port_display_meta = {port.name: current_node.port_displays[port].id for port in current_node.port_displays}
|
378
|
+
|
379
|
+
temp_node_displays[node] = NodeDisplay(
|
380
|
+
input_display=input_display,
|
381
|
+
output_display=node_display_meta,
|
382
|
+
port_display=port_display_meta,
|
383
|
+
)
|
384
|
+
|
385
|
+
display_meta = WorkflowEventDisplayContext(
|
386
|
+
workflow_outputs=workflow_outputs,
|
387
|
+
workflow_inputs=workflow_inputs,
|
388
|
+
node_displays=temp_node_displays,
|
389
|
+
)
|
390
|
+
return display_meta
|
@@ -0,0 +1,9 @@
|
|
1
|
+
from vellum.client.core.pydantic_utilities import UniversalBaseModel
|
2
|
+
|
3
|
+
|
4
|
+
def test_load_workflow_event_display_context():
|
5
|
+
from vellum_ee.workflows.display.types import WorkflowEventDisplayContext
|
6
|
+
|
7
|
+
# We are actually just ensuring there are no circular dependencies when
|
8
|
+
# our Workflow Server imports this class.
|
9
|
+
assert issubclass(WorkflowEventDisplayContext, UniversalBaseModel)
|
@@ -1,34 +0,0 @@
|
|
1
|
-
from typing import Callable, Dict, Generic, List, TypeVar
|
2
|
-
|
3
|
-
_K = TypeVar("_K")
|
4
|
-
_T = TypeVar("_T")
|
5
|
-
|
6
|
-
|
7
|
-
class CycleMap(Generic[_K, _T]):
|
8
|
-
"""
|
9
|
-
A map that cycles through a list of items for each key.
|
10
|
-
"""
|
11
|
-
|
12
|
-
def __init__(self, items: List[_T], key_by: Callable[[_T], _K]):
|
13
|
-
self._items: Dict[_K, List[_T]] = {}
|
14
|
-
for item in items:
|
15
|
-
self._add_item(key_by(item), item)
|
16
|
-
|
17
|
-
def _add_item(self, key: _K, item: _T):
|
18
|
-
if key not in self._items:
|
19
|
-
self._items[key] = []
|
20
|
-
self._items[key].append(item)
|
21
|
-
|
22
|
-
def _get_item(self, key: _K) -> _T:
|
23
|
-
item = self._items[key].pop(0)
|
24
|
-
self._items[key].append(item)
|
25
|
-
return item
|
26
|
-
|
27
|
-
def __getitem__(self, key: _K) -> _T:
|
28
|
-
return self._get_item(key)
|
29
|
-
|
30
|
-
def __setitem__(self, key: _K, value: _T):
|
31
|
-
self._add_item(key, value)
|
32
|
-
|
33
|
-
def __contains__(self, key: _K) -> bool:
|
34
|
-
return key in self._items
|
File without changes
|
File without changes
|
File without changes
|