vellum-ai 0.13.9__py3-none-any.whl → 0.13.11__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/workflows/descriptors/utils.py +1 -1
- vellum/workflows/errors/types.py +21 -0
- vellum/workflows/nodes/bases/base.py +1 -1
- vellum/workflows/nodes/displayable/api_node/node.py +4 -1
- vellum/workflows/nodes/displayable/bases/api_node/node.py +4 -1
- vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +18 -2
- vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +4 -0
- vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +4 -0
- vellum/workflows/nodes/displayable/bases/search_node.py +4 -0
- vellum/workflows/nodes/displayable/bases/tests/test_utils.py +18 -0
- vellum/workflows/nodes/displayable/bases/utils.py +8 -1
- vellum/workflows/nodes/displayable/code_execution_node/node.py +4 -1
- vellum/workflows/nodes/displayable/conditional_node/node.py +4 -0
- vellum/workflows/nodes/displayable/final_output_node/node.py +4 -0
- vellum/workflows/nodes/displayable/guardrail_node/node.py +4 -1
- vellum/workflows/nodes/displayable/inline_prompt_node/node.py +4 -0
- vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py +55 -0
- vellum/workflows/nodes/displayable/merge_node/node.py +3 -1
- vellum/workflows/nodes/displayable/note_node/node.py +4 -0
- vellum/workflows/nodes/displayable/prompt_deployment_node/node.py +4 -0
- vellum/workflows/nodes/displayable/search_node/node.py +4 -0
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py +4 -1
- {vellum_ai-0.13.9.dist-info → vellum_ai-0.13.11.dist-info}/METADATA +1 -1
- {vellum_ai-0.13.9.dist-info → vellum_ai-0.13.11.dist-info}/RECORD +59 -59
- vellum_cli/__init__.py +9 -1
- vellum_cli/config.py +29 -1
- vellum_cli/push.py +24 -3
- vellum_cli/tests/conftest.py +3 -0
- vellum_cli/tests/test_pull.py +6 -0
- vellum_cli/tests/test_push.py +88 -1
- vellum_ee/workflows/display/nodes/base_node_display.py +207 -3
- vellum_ee/workflows/display/nodes/base_node_vellum_display.py +16 -1
- vellum_ee/workflows/display/nodes/get_node_display_class.py +6 -4
- vellum_ee/workflows/display/nodes/vellum/__init__.py +0 -2
- vellum_ee/workflows/display/nodes/vellum/conditional_node.py +2 -1
- vellum_ee/workflows/display/nodes/vellum/error_node.py +9 -3
- vellum_ee/workflows/display/nodes/vellum/tests/test_error_node.py +44 -0
- vellum_ee/workflows/display/nodes/vellum/try_node.py +8 -2
- vellum_ee/workflows/display/nodes/vellum/utils.py +0 -69
- vellum_ee/workflows/display/tests/test_vellum_workflow_display.py +56 -0
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py +4 -3
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py +146 -26
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py +11 -11
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py +7 -7
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py +33 -35
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py +4 -4
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +5 -5
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py +15 -1
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py +1 -1
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +6 -3
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +6 -3
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py +3 -3
- vellum_ee/workflows/display/utils/vellum.py +74 -4
- vellum_ee/workflows/display/workflows/base_workflow_display.py +6 -4
- vellum_ee/workflows/display/workflows/vellum_workflow_display.py +26 -14
- vellum_ee/workflows/display/nodes/vellum/base_node.py +0 -192
- {vellum_ai-0.13.9.dist-info → vellum_ai-0.13.11.dist-info}/LICENSE +0 -0
- {vellum_ai-0.13.9.dist-info → vellum_ai-0.13.11.dist-info}/WHEEL +0 -0
- {vellum_ai-0.13.9.dist-info → vellum_ai-0.13.11.dist-info}/entry_points.txt +0 -0
@@ -1,39 +1,38 @@
|
|
1
1
|
vellum_cli/CONTRIBUTING.md,sha256=FtDC7BGxSeMnwCXAUssFsAIElXtmJE-O5Z7BpolcgvI,2935
|
2
2
|
vellum_cli/README.md,sha256=2NudRoLzWxNKqnuVy1JuQ7DerIaxWGYkrH8kMd-asIE,90
|
3
|
-
vellum_cli/__init__.py,sha256=
|
3
|
+
vellum_cli/__init__.py,sha256=tRcOi6oLzT3EXORlHwGzo0Sn1-npf8Jf7mMi90NDUh0,10035
|
4
4
|
vellum_cli/aliased_group.py,sha256=ugW498j0yv4ALJ8vS9MsO7ctDW7Jlir9j6nE_uHAP8c,3363
|
5
|
-
vellum_cli/config.py,sha256=
|
5
|
+
vellum_cli/config.py,sha256=LVRB-SEJcpQYfg2QGcjKHmRSAijdSFADbS90gDY4AI8,6829
|
6
6
|
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=zf0y22XptUYI_hMP_4Q1CEo9s2wALsTJcCXNd-_ibd8,7551
|
10
|
-
vellum_cli/push.py,sha256=
|
10
|
+
vellum_cli/push.py,sha256=0Q3Of25KzqDq0KTgkXQ22nAhSH4_JI424hKwKkj3RWs,8627
|
11
11
|
vellum_cli/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
|
-
vellum_cli/tests/conftest.py,sha256=
|
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
|
-
vellum_cli/tests/test_pull.py,sha256=
|
17
|
-
vellum_cli/tests/test_push.py,sha256=
|
16
|
+
vellum_cli/tests/test_pull.py,sha256=KRvQ_fwsFH6tBU49O-KOOAzcHxdB-DPbUkdIdahjuTs,19841
|
17
|
+
vellum_cli/tests/test_push.py,sha256=3to7bOOVoWB888ee7TIAVl2VgXCsJhP_aPcrXwF9c_c,14023
|
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
|
21
21
|
vellum_ee/workflows/display/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
22
|
vellum_ee/workflows/display/base.py,sha256=3ZFUYRNKL24fBqXhKpa_Dq2W1a-a86J20dmJYA3H2eY,1755
|
23
23
|
vellum_ee/workflows/display/nodes/__init__.py,sha256=5XOcZJXYUgaLS55QgRJzyQ_W1tpeprjnYAeYVezqoGw,160
|
24
|
-
vellum_ee/workflows/display/nodes/base_node_display.py,sha256=
|
25
|
-
vellum_ee/workflows/display/nodes/base_node_vellum_display.py,sha256=
|
26
|
-
vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=
|
24
|
+
vellum_ee/workflows/display/nodes/base_node_display.py,sha256=AnACr-QfL4Hwc3JEN9tUDmr0c8DE9uAjP8w7NyXAfj4,15413
|
25
|
+
vellum_ee/workflows/display/nodes/base_node_vellum_display.py,sha256=pLO0dORfRu--Ne9NgoyFT_CNjfpr5fGCsgbsMkUF5GM,2845
|
26
|
+
vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=VpGL-tnMM9wEOkuHNxX74RHAFhz5jcVXvmBkKciOBg0,1367
|
27
27
|
vellum_ee/workflows/display/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
28
28
|
vellum_ee/workflows/display/nodes/tests/test_base_node_display.py,sha256=QqR3Ly0RNrXwOeLdW5nERDFt0gRPf76n1bPES6o5UN4,1093
|
29
29
|
vellum_ee/workflows/display/nodes/types.py,sha256=St1BB6no528OyELGiyRabWao0GGw6mLhstQAvEACbGk,247
|
30
30
|
vellum_ee/workflows/display/nodes/utils.py,sha256=sloya5TpXsnot1HURc9L51INwflRqUzHxRVnCS9Cd-4,973
|
31
|
-
vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=
|
31
|
+
vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=nmPLj8vkbVCS46XQqmHq8Xj8Mr36wCK_vWf26A9KIkw,1505
|
32
32
|
vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=hoV-cUtS6H9kmRQXHd2py95GRWI_dAnnaPwvlNBkDOQ,8571
|
33
|
-
vellum_ee/workflows/display/nodes/vellum/base_node.py,sha256=mZSeZpolPZg1OEe3xsLbAiYT9aTSfdw0LhiUsHNBRXY,8029
|
34
33
|
vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=z00Z3L0d4PsUQo4S8FRDTtOFLtjdi17TJbatNVF4nM8,4288
|
35
|
-
vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=
|
36
|
-
vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=
|
34
|
+
vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=ybLIa4uclqVIy3VAQvI1ivg2tnK5Ug_1R5a69DFqL7E,11104
|
35
|
+
vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=I1Jkp2htRINJATtv1e-zs9BrReFX842djpiVgBPHDYg,2186
|
37
36
|
vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=p-PvlnxpBQ7IKskZi2A19jKAtKnSxJ8LPbGMA83VkFk,2805
|
38
37
|
vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=aYZSJTxknU4LMiQdWk9LcK6CkhdozeDEMiRxfAyUNEc,2202
|
39
38
|
vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=h8K183cZsU2b86WYQlqFtwMkwIHydnNr4ZaaQcWnFWo,7316
|
@@ -46,29 +45,30 @@ vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=TxcAGZDl_hvJ7Y1hU
|
|
46
45
|
vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=lfevlHpGEX14dEDym6qmnkw3nvzQPTB1_D2ch12B_Rk,2701
|
47
46
|
vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=JVIMPR3WpveOCWZubHKZkE04mavnTdb_9QY_r3XliRg,3424
|
48
47
|
vellum_ee/workflows/display/nodes/vellum/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
48
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_error_node.py,sha256=ulrpoYUW-5kIxfG4Lf5F2p0k_EoYKhmahEbF3P_eruM,1648
|
49
49
|
vellum_ee/workflows/display/nodes/vellum/tests/test_try_node.py,sha256=mtzB8LJlFCHVFM4H5AanLp29gQfaVmnN4A4iaRGJHoI,2427
|
50
50
|
vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=3uT7Gbc0f_mQ3u8uZuCWd0mJ4GtWbz2gbUMySYaVlNE,3774
|
51
|
-
vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=
|
52
|
-
vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=
|
51
|
+
vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=EoU1J7HfcszAZr7ROy_xsNhaDBRiI95-wTK-OzgBwvg,5861
|
52
|
+
vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=aBmTg9pJloG1BxhYcqzxs5JOA-IixncLVr1XiDzANnA,4313
|
53
53
|
vellum_ee/workflows/display/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
54
|
-
vellum_ee/workflows/display/tests/test_vellum_workflow_display.py,sha256=
|
54
|
+
vellum_ee/workflows/display/tests/test_vellum_workflow_display.py,sha256=h4bE187MyM0eT_elFnOxwsCeMHeuzSK0orjgAy8kV1k,4952
|
55
55
|
vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
56
56
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
57
|
-
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py,sha256=
|
58
|
-
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py,sha256=
|
59
|
-
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py,sha256=
|
60
|
-
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py,sha256
|
61
|
-
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py,sha256=
|
62
|
-
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py,sha256=
|
57
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py,sha256=EenmEdBtHUFQ0OS-kE7Vboax3JnDdj-K4Qixt5oR0Po,2253
|
58
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py,sha256=pYBubuTzwNczAGFTYhaMCwvMLAcoJfCLkn5PMPbrlMI,7187
|
59
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py,sha256=9CV44pY33cL_RF9cKmNVwn5hDGEZbPIETavOrvIL3oY,10229
|
60
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py,sha256=-12ZkZb3f5gyoNASV2yeQtMo5HmNsVEo8nXwL6IC-I8,6261
|
61
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py,sha256=6th6kCwzql6lddjkTQx4Jbvvs4ChqtJwctW-B4QuBhI,37352
|
62
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py,sha256=EbVgg_3_ipTt3MOop4RARX0fmNjwqZtkhIXzx9nGw7Y,4487
|
63
63
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=bXZWxOKAVjZlbP3iLHPHGA4aPs0EguKlQqmYPNGv3cU,16391
|
64
64
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=uvABhpstyxNNOz50-XJMAr3SKp8gluPp1mUtJjvRL0c,29410
|
65
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=
|
66
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=
|
67
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py,sha256=
|
65
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=n3F_Eyru0DYOszBH4jplz7Mzt2FfBNxGlCkTFqvrX-M,48399
|
66
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=8LhQgW0uzVOhzz0AwdM-EYugVO-0mGWglxWo_lON4D8,6079
|
67
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py,sha256=yWDykoHUjuiVYdevcJxWmYDDmbIszpHKYBu19vqR-I8,5746
|
68
68
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=mEkvKUrt8U6e9bN65QRG7Zd3KdCdoMvHm96LjGwy96k,7427
|
69
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256
|
70
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=
|
71
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=
|
69
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=CxbnZ3tB8gir9xopixjvT0hNYyjMHvT_m8BzY5kl8Dg,21497
|
70
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=5xXLoUNgGkZvRFPJrdPiD0fErgwdPk-ikI3rP9sCAA4,16145
|
71
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=ON3TQiIFDiCvasQiNEyuAZDwpTYGOtitdLDLj2kejL8,8422
|
72
72
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=W_d-hsjSqbqR5BA3aF3KFoEyfLV6x_yhNKmLA1ai2QY,8622
|
73
73
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py,sha256=azUVSdXWoYyAjKuM8m9ikOoJPb5JlEvJtR5nSRR0eaA,12989
|
74
74
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=yq98DHxetpbqYnGVTDmcokU0A4XAD7E-NcKhrEMP66M,11295
|
@@ -78,12 +78,12 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_ser
|
|
78
78
|
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=wQ97k-y9rZwKYlZSA6Z9XGUnGRaJ5BvCFu5QnhuEp4A,7404
|
79
79
|
vellum_ee/workflows/display/types.py,sha256=jWTpfQv3baEWjbP12duc3MBz3TK03Ja1UI5458PVQVY,4211
|
80
80
|
vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
81
|
-
vellum_ee/workflows/display/utils/vellum.py,sha256=
|
81
|
+
vellum_ee/workflows/display/utils/vellum.py,sha256=0H-c3OaQYZ_sGdI4YmyxEcZ77oWn_Rfts-MLs_QWqls,7289
|
82
82
|
vellum_ee/workflows/display/vellum.py,sha256=8xXRI8b8Tt661H-iZreTQTvLNEKUr4lf-XaKhE7_yUY,8147
|
83
83
|
vellum_ee/workflows/display/workflows/__init__.py,sha256=kapXsC67VJcgSuiBMa86FdePG5A9kMB5Pi4Uy1O2ob4,207
|
84
|
-
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=
|
84
|
+
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=x4C621UTH_SZLJYmVBiC1q-D-wadJlTiSGlKAI6CUbA,14082
|
85
85
|
vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=kp0u8LN_2IwshLrhMImhpZx1hRyAcD5gXY-kDuuaGMQ,1269
|
86
|
-
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=
|
86
|
+
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=wij6U6-20QSDlfLMCeHjmpkWWuSA8fWYWJV17dw6L98,17187
|
87
87
|
vellum_ee/workflows/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
88
88
|
vellum_ee/workflows/server/virtual_file_loader.py,sha256=X_DdNK7MfyOjKWekk6YQpOSCT6klKcdjT6nVJcBH1sM,1481
|
89
89
|
vellum_ee/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -112,7 +112,7 @@ vellum/client/README.md,sha256=JkCJjmMZl4jrPj46pkmL9dpK4gSzQQmP5I7z4aME4LY,4749
|
|
112
112
|
vellum/client/__init__.py,sha256=8nZt88C9SVwWanjLbIQMU3rzb32h5UZfFMBx3VPHB50,111887
|
113
113
|
vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
|
114
114
|
vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
115
|
-
vellum/client/core/client_wrapper.py,sha256=
|
115
|
+
vellum/client/core/client_wrapper.py,sha256=WdGHbGL6B-WAReI6C1XsH60HY57mtWSg-jZ-2xz4eiQ,1869
|
116
116
|
vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
117
117
|
vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
|
118
118
|
vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
|
@@ -1252,7 +1252,7 @@ vellum/workflows/context.py,sha256=R8qdsFbD_0p7B6PWnyvSrZ_aOgMtGw-_uk0P0UAmwLA,1
|
|
1252
1252
|
vellum/workflows/descriptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1253
1253
|
vellum/workflows/descriptors/base.py,sha256=gSib3vJpcI_UC8y8jhdp-hOK3_TGTF-SuwdhxF6x5iQ,14332
|
1254
1254
|
vellum/workflows/descriptors/tests/test_utils.py,sha256=63w1P6PELNhWzpg1BqL8y2XQZ8XRt0RUkHgLcsXyOQE,4592
|
1255
|
-
vellum/workflows/descriptors/utils.py,sha256=
|
1255
|
+
vellum/workflows/descriptors/utils.py,sha256=nE51MR0KMy3SVHPBg0wjJ3CSJBTLM3tZnVUC_enQEIw,3826
|
1256
1256
|
vellum/workflows/edges/__init__.py,sha256=wSkmAnz9xyi4vZwtDbKxwlplt2skD7n3NsxkvR_pUus,50
|
1257
1257
|
vellum/workflows/edges/edge.py,sha256=N0SnY3gKVuxImPAdCbPMPlHJIXbkQ3fwq_LbJRvVMFc,677
|
1258
1258
|
vellum/workflows/emitters/__init__.py,sha256=YyOgaoLtVW8eFNEWODzCYb0HzL0PoSeNRf4diJ1Y0dk,80
|
@@ -1260,7 +1260,7 @@ vellum/workflows/emitters/base.py,sha256=D5SADKIvnbgKwIBgYm77jaqvpo1o0rz4MmuX_mu
|
|
1260
1260
|
vellum/workflows/environment/__init__.py,sha256=wGHslgSEZ7Octe4C-hNtl84EFelNimgmWQoi7px4-uw,71
|
1261
1261
|
vellum/workflows/environment/environment.py,sha256=IwcVSwA51jW1JTN_MAN22UbeAtZhiAVa_JRV4rmpAAs,219
|
1262
1262
|
vellum/workflows/errors/__init__.py,sha256=tWGPu5xyAU8gRb8_bl0fL7OfU3wxQ9UH6qVwy4X4P_Q,113
|
1263
|
-
vellum/workflows/errors/types.py,sha256
|
1263
|
+
vellum/workflows/errors/types.py,sha256=-Ls41oM4HN28b78Ou13FoZnaWRuaxBgTarKgSoBlCKc,3413
|
1264
1264
|
vellum/workflows/events/__init__.py,sha256=6pxxceJo2dcaRkWtkDAYlUQZ-PHBQSZytIoyuUK48Qw,759
|
1265
1265
|
vellum/workflows/events/node.py,sha256=uHT6If0esgZ3nLjrjmUPTKf3qbjGhoV_x5YKpjDBDcU,5280
|
1266
1266
|
vellum/workflows/events/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1306,7 +1306,7 @@ vellum/workflows/inputs/base.py,sha256=1kMgr0WqCYdWUqgFvgSoAMw2067FAlgwhGXLgbIOr
|
|
1306
1306
|
vellum/workflows/logging.py,sha256=_a217XogktV4Ncz6xKFz7WfYmZAzkfVRVuC0rWob8ls,437
|
1307
1307
|
vellum/workflows/nodes/__init__.py,sha256=aVdQVv7Y3Ro3JlqXGpxwaU2zrI06plDHD2aumH5WUIs,1157
|
1308
1308
|
vellum/workflows/nodes/bases/__init__.py,sha256=cniHuz_RXdJ4TQgD8CBzoiKDiPxg62ErdVpCbWICX64,58
|
1309
|
-
vellum/workflows/nodes/bases/base.py,sha256=
|
1309
|
+
vellum/workflows/nodes/bases/base.py,sha256=iYn8XmKZKj43vCx_xs5AbnnLgBydmjlElwjb-0xe63I,14459
|
1310
1310
|
vellum/workflows/nodes/bases/base_adornment_node.py,sha256=eFTgsPCYb3eyGS0-kw7C6crFnwFx437R5wh9-8bWYts,2905
|
1311
1311
|
vellum/workflows/nodes/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1312
1312
|
vellum/workflows/nodes/bases/tests/test_base_node.py,sha256=51CueFVty9XYASC0rKr1cXWejho5WElmhfhp6cCONy0,3811
|
@@ -1334,50 +1334,50 @@ vellum/workflows/nodes/core/try_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW
|
|
1334
1334
|
vellum/workflows/nodes/core/try_node/tests/test_node.py,sha256=Wc2kLl-MkffsBxl3IiFaqLd16e2Iosxhk7qBnojPvQg,4092
|
1335
1335
|
vellum/workflows/nodes/displayable/__init__.py,sha256=6F_4DlSwvHuilWnIalp8iDjjDXl0Nmz4QzJV2PYe5RI,1023
|
1336
1336
|
vellum/workflows/nodes/displayable/api_node/__init__.py,sha256=MoxdQSnidIj1Nf_d-hTxlOxcZXaZnsWFDbE-PkTK24o,56
|
1337
|
-
vellum/workflows/nodes/displayable/api_node/node.py,sha256=
|
1337
|
+
vellum/workflows/nodes/displayable/api_node/node.py,sha256=KHuDTzOeXO3lCQm3lQqusAEhj84dhvszVpO1Xsx4qPM,2175
|
1338
1338
|
vellum/workflows/nodes/displayable/bases/__init__.py,sha256=0mWIx3qUrzllV7jqt7wN03vWGMuI1WrrLZeMLT2Cl2c,304
|
1339
1339
|
vellum/workflows/nodes/displayable/bases/api_node/__init__.py,sha256=1jwx4WC358CLA1jgzl_UD-rZmdMm2v9Mps39ndwCD7U,64
|
1340
|
-
vellum/workflows/nodes/displayable/bases/api_node/node.py,sha256=
|
1340
|
+
vellum/workflows/nodes/displayable/bases/api_node/node.py,sha256=kKiwrz8XGJkvFjipBthxs9h1e2ndWPgmpEzZiYs0I5I,2579
|
1341
1341
|
vellum/workflows/nodes/displayable/bases/base_prompt_node/__init__.py,sha256=Org3xTvgp1pA0uUXFfnJr29D3HzCey2lEdYF4zbIUgo,70
|
1342
|
-
vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=
|
1342
|
+
vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=r_gOmeGFQQfzhAc1_bmzcwUvH-Xllc93gE7miTV4rQE,2824
|
1343
1343
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/__init__.py,sha256=Hl35IAoepRpE-j4cALaXVJIYTYOF3qszyVbxTj4kS1s,82
|
1344
1344
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/constants.py,sha256=fnjiRWLoRlC4Puo5oQcpZD5Hd-EesxsAo9l5tGAkpZQ,270
|
1345
|
-
vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=
|
1346
|
-
vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=
|
1347
|
-
vellum/workflows/nodes/displayable/bases/search_node.py,sha256=
|
1345
|
+
vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=j6AKAVIl_uU77a6JMGnMTyFnnK-jsfPVthxrgbltQRE,6453
|
1346
|
+
vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=FAY6cR3rlIWsufprA6WXefOaU2J1LK0HFfQkBxCQ-yI,5181
|
1347
|
+
vellum/workflows/nodes/displayable/bases/search_node.py,sha256=3UtbqY3QO4kzfJHbmUNZGnEEfJmaoiF892u8H6TGjp8,5381
|
1348
1348
|
vellum/workflows/nodes/displayable/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1349
|
-
vellum/workflows/nodes/displayable/bases/tests/test_utils.py,sha256=
|
1349
|
+
vellum/workflows/nodes/displayable/bases/tests/test_utils.py,sha256=eqdqbKNRWVMDPevgwLg1i6YK0g4L4bCy-7xCBN5yYZI,3156
|
1350
1350
|
vellum/workflows/nodes/displayable/bases/types.py,sha256=C37B2Qh2YP7s7pUjd-EYKc2Zl1TbnCgI_mENuUSb8bo,1706
|
1351
|
-
vellum/workflows/nodes/displayable/bases/utils.py,sha256=
|
1351
|
+
vellum/workflows/nodes/displayable/bases/utils.py,sha256=ckMUenSsNkiYmSw6FmjSMHYaCk8Y8_sUjL6lkFFEqts,5412
|
1352
1352
|
vellum/workflows/nodes/displayable/code_execution_node/__init__.py,sha256=0FLWMMktpzSnmBMizQglBpcPrP80fzVsoJwJgf822Cg,76
|
1353
|
-
vellum/workflows/nodes/displayable/code_execution_node/node.py,sha256=
|
1353
|
+
vellum/workflows/nodes/displayable/code_execution_node/node.py,sha256=Hzc0h9sogX8DfFbJqdDLxGU2CMY1WvGosZ7taJC4sPE,8754
|
1354
1354
|
vellum/workflows/nodes/displayable/code_execution_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1355
1355
|
vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1356
1356
|
vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/main.py,sha256=5QsbmkzSlSbcbWTG_JmIqcP-JNJzOPTKxGzdHos19W4,79
|
1357
1357
|
vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py,sha256=s93M_EnU-4n60iSKv3FCf0kppwzFH5FNi9o9E58fQ3I,7510
|
1358
1358
|
vellum/workflows/nodes/displayable/code_execution_node/utils.py,sha256=LfI3kj2zQz6UGMld_uA9z2LjZobqRcgxQO4jdUWkg7o,376
|
1359
1359
|
vellum/workflows/nodes/displayable/conditional_node/__init__.py,sha256=AS_EIqFdU1F9t8aLmbZU-rLh9ry6LCJ0uj0D8F0L5Uw,72
|
1360
|
-
vellum/workflows/nodes/displayable/conditional_node/node.py,sha256=
|
1360
|
+
vellum/workflows/nodes/displayable/conditional_node/node.py,sha256=Qjfl33gZ3JEgxBA1EgzSUebboGvsARthIxxcQyvx5Gg,1152
|
1361
1361
|
vellum/workflows/nodes/displayable/final_output_node/__init__.py,sha256=G7VXM4OWpubvSJtVkGmMNeqgb9GkM7qZT838eL18XU4,72
|
1362
|
-
vellum/workflows/nodes/displayable/final_output_node/node.py,sha256=
|
1362
|
+
vellum/workflows/nodes/displayable/final_output_node/node.py,sha256=TFbDZLGEtmg2cOQeJ56pUQdAkuHRa_qjBRIOGZU7Fy4,1990
|
1363
1363
|
vellum/workflows/nodes/displayable/guardrail_node/__init__.py,sha256=Ab5eXmOoBhyV4dMWdzh32HLUmnPIBEK_zFCT38C4Fng,68
|
1364
|
-
vellum/workflows/nodes/displayable/guardrail_node/node.py,sha256=
|
1364
|
+
vellum/workflows/nodes/displayable/guardrail_node/node.py,sha256=h5nIBzQxbXTrdTq1wjDcekk1RV4-rKUNCshqdBAiJJY,4025
|
1365
1365
|
vellum/workflows/nodes/displayable/inline_prompt_node/__init__.py,sha256=gSUOoEZLlrx35-tQhSAd3An8WDwBqyiQh-sIebLU9wU,74
|
1366
|
-
vellum/workflows/nodes/displayable/inline_prompt_node/node.py,sha256=
|
1366
|
+
vellum/workflows/nodes/displayable/inline_prompt_node/node.py,sha256=UWOxIa3kizhDa5joAmEDlh0P66EaqatqxzLLbvbUybw,2294
|
1367
1367
|
vellum/workflows/nodes/displayable/inline_prompt_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1368
|
-
vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py,sha256=
|
1368
|
+
vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py,sha256=BEKdts18soB6gaW_d3VbhDy7IFzFmC76j5lRYiTOj44,6643
|
1369
1369
|
vellum/workflows/nodes/displayable/merge_node/__init__.py,sha256=J8IC08dSH7P76wKlNuxe1sn7toNGtSQdFirUbtPDEs0,60
|
1370
|
-
vellum/workflows/nodes/displayable/merge_node/node.py,sha256=
|
1370
|
+
vellum/workflows/nodes/displayable/merge_node/node.py,sha256=nZtGGVAvY4fvGg8vwV6sTQ8_QLRnigeXt0vf2FL272A,450
|
1371
1371
|
vellum/workflows/nodes/displayable/note_node/__init__.py,sha256=KWA3P4fyYJ-fOTky8qNGlcOotQ-HeHJ9AjZt6mRQmCE,58
|
1372
|
-
vellum/workflows/nodes/displayable/note_node/node.py,sha256=
|
1372
|
+
vellum/workflows/nodes/displayable/note_node/node.py,sha256=sIN1VBQ7zeT3GhN0kupXbFfdpvgedWV79k4woJNp5IQ,394
|
1373
1373
|
vellum/workflows/nodes/displayable/prompt_deployment_node/__init__.py,sha256=krX1Hds-TSVYZsx0wJFX4wsAKkEFYOX1ifwRGiIM-EA,82
|
1374
|
-
vellum/workflows/nodes/displayable/prompt_deployment_node/node.py,sha256=
|
1374
|
+
vellum/workflows/nodes/displayable/prompt_deployment_node/node.py,sha256=ruOgvpg_9KV_HkovPQeu6TKpur9DT_J4CYQo50tULCY,2680
|
1375
1375
|
vellum/workflows/nodes/displayable/search_node/__init__.py,sha256=hpBpvbrDYf43DElRZFLzieSn8weXiwNiiNOJurERQbs,62
|
1376
|
-
vellum/workflows/nodes/displayable/search_node/node.py,sha256=
|
1376
|
+
vellum/workflows/nodes/displayable/search_node/node.py,sha256=_VHHuTNN4icZBgc7O5U9SVKrv1zgKipU72fOtxTyrQU,1453
|
1377
1377
|
vellum/workflows/nodes/displayable/search_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1378
1378
|
vellum/workflows/nodes/displayable/search_node/tests/test_node.py,sha256=2-QCV7Vk_-YMls33p0GOUtCv3f2uPNZCjkB2CRjek7o,6562
|
1379
1379
|
vellum/workflows/nodes/displayable/subworkflow_deployment_node/__init__.py,sha256=9yYM6001YZeqI1VOk1QuEM_yrffk_EdsO7qaPzINKds,92
|
1380
|
-
vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=
|
1380
|
+
vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=rDBB94bs9k-I9zmf3C0L_5wO3wW4WBuRXi5ry0rTGRY,7328
|
1381
1381
|
vellum/workflows/nodes/displayable/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1382
1382
|
vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py,sha256=CI7iMyyIlnds1rkVSjICOFg2UY0yV51NTKtKpfeEME4,4677
|
1383
1383
|
vellum/workflows/nodes/displayable/tests/test_search_node_wth_text_output.py,sha256=VepO5z1277c1y5N6LLIC31nnWD1aak2m5oPFplfJHHs,6935
|
@@ -1441,8 +1441,8 @@ vellum/workflows/vellum_client.py,sha256=ODrq_TSl-drX2aezXegf7pizpWDVJuTXH-j6528
|
|
1441
1441
|
vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
|
1442
1442
|
vellum/workflows/workflows/base.py,sha256=k0kUWWko4fHyCqLSU_1cBK_pXZpl9MXekWiG-bdOAo0,18353
|
1443
1443
|
vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnadGsrSZGa7t7LpJA,2008
|
1444
|
-
vellum_ai-0.13.
|
1445
|
-
vellum_ai-0.13.
|
1446
|
-
vellum_ai-0.13.
|
1447
|
-
vellum_ai-0.13.
|
1448
|
-
vellum_ai-0.13.
|
1444
|
+
vellum_ai-0.13.11.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
|
1445
|
+
vellum_ai-0.13.11.dist-info/METADATA,sha256=NHPCibqYzo79FZeV0pFNsUB0dbOubh76GZRnzEJAc74,5335
|
1446
|
+
vellum_ai-0.13.11.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
1447
|
+
vellum_ai-0.13.11.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
|
1448
|
+
vellum_ai-0.13.11.dist-info/RECORD,,
|
vellum_cli/__init__.py
CHANGED
@@ -37,13 +37,15 @@ class PushGroup(ClickAliasedGroup):
|
|
37
37
|
|
38
38
|
@main.group(invoke_without_command=True, cls=PushGroup)
|
39
39
|
@click.pass_context
|
40
|
+
@click.option("--workspace", type=str, help="The specific Workspace config to use when pushing")
|
40
41
|
def push(
|
41
42
|
ctx: click.Context,
|
43
|
+
workspace: Optional[str],
|
42
44
|
) -> None:
|
43
45
|
"""Push Resources to Vellum"""
|
44
46
|
|
45
47
|
if ctx.invoked_subcommand is None:
|
46
|
-
push_command()
|
48
|
+
push_command(workspace=workspace)
|
47
49
|
|
48
50
|
|
49
51
|
@main.group()
|
@@ -69,6 +71,7 @@ def workflows():
|
|
69
71
|
is_flag=True,
|
70
72
|
help="Raises an error if we detect an unexpected discrepancy in the generated artifact.",
|
71
73
|
)
|
74
|
+
@click.option("--workspace", type=str, help="The specific Workspace config to use when pushing")
|
72
75
|
def workflows_push(
|
73
76
|
module: Optional[str],
|
74
77
|
deploy: Optional[bool],
|
@@ -78,6 +81,7 @@ def workflows_push(
|
|
78
81
|
release_tag: Optional[List[str]],
|
79
82
|
dry_run: Optional[bool],
|
80
83
|
strict: Optional[bool],
|
84
|
+
workspace: Optional[str],
|
81
85
|
) -> None:
|
82
86
|
"""
|
83
87
|
Push Workflows to Vellum. If a module is provided, only the Workflow for that module will be pushed.
|
@@ -93,6 +97,7 @@ def workflows_push(
|
|
93
97
|
release_tags=release_tag,
|
94
98
|
dry_run=dry_run,
|
95
99
|
strict=strict,
|
100
|
+
workspace=workspace,
|
96
101
|
)
|
97
102
|
|
98
103
|
|
@@ -113,6 +118,7 @@ def workflows_push(
|
|
113
118
|
is_flag=True,
|
114
119
|
help="Raises an error if we detect an unexpected discrepancy in the generated artifact.",
|
115
120
|
)
|
121
|
+
@click.option("--workspace", type=str, help="The specific Workspace config to use when pushing")
|
116
122
|
def push_module(
|
117
123
|
ctx: click.Context,
|
118
124
|
deploy: Optional[bool],
|
@@ -122,6 +128,7 @@ def push_module(
|
|
122
128
|
release_tag: Optional[List[str]],
|
123
129
|
dry_run: Optional[bool],
|
124
130
|
strict: Optional[bool],
|
131
|
+
workspace: Optional[str],
|
125
132
|
) -> None:
|
126
133
|
"""Push a specific module to Vellum"""
|
127
134
|
|
@@ -135,6 +142,7 @@ def push_module(
|
|
135
142
|
release_tags=release_tag,
|
136
143
|
dry_run=dry_run,
|
137
144
|
strict=strict,
|
145
|
+
workspace=workspace,
|
138
146
|
)
|
139
147
|
|
140
148
|
|
vellum_cli/config.py
CHANGED
@@ -13,6 +13,17 @@ LOCKFILE_PATH = "vellum.lock.json"
|
|
13
13
|
PYPROJECT_TOML_PATH = "pyproject.toml"
|
14
14
|
|
15
15
|
|
16
|
+
class WorkspaceConfig(UniversalBaseModel):
|
17
|
+
name: str
|
18
|
+
api_key: str
|
19
|
+
|
20
|
+
def merge(self, other: "WorkspaceConfig") -> "WorkspaceConfig":
|
21
|
+
return WorkspaceConfig(name=self.name or other.name, api_key=self.api_key or other.api_key)
|
22
|
+
|
23
|
+
|
24
|
+
DEFAULT_WORKSPACE_CONFIG = WorkspaceConfig(name="default", api_key="VELLUM_API_KEY")
|
25
|
+
|
26
|
+
|
16
27
|
class WorkflowDeploymentConfig(UniversalBaseModel):
|
17
28
|
id: Optional[UUID] = None
|
18
29
|
label: Optional[str] = None
|
@@ -37,6 +48,7 @@ class WorkflowConfig(UniversalBaseModel):
|
|
37
48
|
deployments: List[WorkflowDeploymentConfig] = field(default_factory=list)
|
38
49
|
container_image_name: Optional[str] = None
|
39
50
|
container_image_tag: Optional[str] = None
|
51
|
+
workspace: str = DEFAULT_WORKSPACE_CONFIG.name
|
40
52
|
|
41
53
|
def merge(self, other: "WorkflowConfig") -> "WorkflowConfig":
|
42
54
|
self_deployment_by_id = {
|
@@ -72,12 +84,14 @@ class WorkflowConfig(UniversalBaseModel):
|
|
72
84
|
deployments=merged_deployments,
|
73
85
|
container_image_tag=self.container_image_tag or other.container_image_tag,
|
74
86
|
container_image_name=self.container_image_name or other.container_image_name,
|
87
|
+
workspace=self.workspace or other.workspace,
|
75
88
|
)
|
76
89
|
|
77
90
|
|
78
91
|
class VellumCliConfig(UniversalBaseModel):
|
79
92
|
version: Literal["1.0"] = "1.0"
|
80
93
|
workflows: List[WorkflowConfig] = field(default_factory=list)
|
94
|
+
workspaces: List[WorkspaceConfig] = field(default_factory=list)
|
81
95
|
|
82
96
|
def save(self) -> None:
|
83
97
|
lockfile_path = os.path.join(os.getcwd(), LOCKFILE_PATH)
|
@@ -102,7 +116,21 @@ class VellumCliConfig(UniversalBaseModel):
|
|
102
116
|
elif other_workflow:
|
103
117
|
merged_workflows.append(other_workflow)
|
104
118
|
|
105
|
-
|
119
|
+
self_workspace_by_name = {workspace.name: workspace for workspace in self.workspaces}
|
120
|
+
other_workspace_by_name = {workspace.name: workspace for workspace in other.workspaces}
|
121
|
+
all_names = sorted(set(self_workspace_by_name.keys()).union(set(other_workspace_by_name.keys())))
|
122
|
+
merged_workspaces = []
|
123
|
+
for name in all_names:
|
124
|
+
self_workspace = self_workspace_by_name.get(name)
|
125
|
+
other_workspace = other_workspace_by_name.get(name)
|
126
|
+
if self_workspace and other_workspace:
|
127
|
+
merged_workspaces.append(self_workspace.merge(other_workspace))
|
128
|
+
elif self_workspace:
|
129
|
+
merged_workspaces.append(self_workspace)
|
130
|
+
elif other_workspace:
|
131
|
+
merged_workspaces.append(other_workspace)
|
132
|
+
|
133
|
+
return VellumCliConfig(workflows=merged_workflows, workspaces=merged_workspaces, version=self.version)
|
106
134
|
|
107
135
|
|
108
136
|
def load_vellum_cli_config(root_dir: Optional[str] = None) -> VellumCliConfig:
|
vellum_cli/push.py
CHANGED
@@ -15,7 +15,7 @@ from vellum.types import WorkflowPushDeploymentConfigRequest
|
|
15
15
|
from vellum.workflows.utils.names import snake_to_title_case
|
16
16
|
from vellum.workflows.vellum_client import create_vellum_client
|
17
17
|
from vellum.workflows.workflows.base import BaseWorkflow
|
18
|
-
from vellum_cli.config import WorkflowDeploymentConfig, load_vellum_cli_config
|
18
|
+
from vellum_cli.config import DEFAULT_WORKSPACE_CONFIG, WorkflowConfig, WorkflowDeploymentConfig, load_vellum_cli_config
|
19
19
|
from vellum_cli.logger import load_cli_logger
|
20
20
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
21
21
|
from vellum_ee.workflows.display.workflows.vellum_workflow_display import VellumWorkflowDisplay
|
@@ -30,8 +30,9 @@ def push_command(
|
|
30
30
|
release_tags: Optional[List[str]] = None,
|
31
31
|
dry_run: Optional[bool] = None,
|
32
32
|
strict: Optional[bool] = None,
|
33
|
+
workspace: Optional[str] = None,
|
33
34
|
) -> None:
|
34
|
-
load_dotenv()
|
35
|
+
load_dotenv(dotenv_path=os.path.join(os.getcwd(), ".env"))
|
35
36
|
logger = load_cli_logger()
|
36
37
|
config = load_vellum_cli_config()
|
37
38
|
|
@@ -46,7 +47,27 @@ def push_command(
|
|
46
47
|
raise ValueError(f"No workflow config for '{module}' found in project to push.")
|
47
48
|
|
48
49
|
logger.info(f"Loading workflow from {workflow_config.module}")
|
49
|
-
|
50
|
+
resolved_workspace = workspace or workflow_config.workspace or DEFAULT_WORKSPACE_CONFIG.name
|
51
|
+
workspace_config = (
|
52
|
+
next((w for w in config.workspaces if w.name == resolved_workspace), DEFAULT_WORKSPACE_CONFIG)
|
53
|
+
if workspace
|
54
|
+
else DEFAULT_WORKSPACE_CONFIG
|
55
|
+
)
|
56
|
+
api_key = os.getenv(workspace_config.api_key)
|
57
|
+
if not api_key:
|
58
|
+
raise ValueError(f"No API key value found in environment for workspace '{workspace_config.name}'.")
|
59
|
+
|
60
|
+
if workspace_config.name != workflow_config.workspace:
|
61
|
+
# We are pushing to a new workspace, so we need a new workflow config
|
62
|
+
workflow_config = WorkflowConfig(
|
63
|
+
module=workflow_config.module,
|
64
|
+
workspace=workspace_config.name,
|
65
|
+
)
|
66
|
+
config.workflows.append(workflow_config)
|
67
|
+
|
68
|
+
client = create_vellum_client(
|
69
|
+
api_key=api_key,
|
70
|
+
)
|
50
71
|
sys.path.insert(0, os.getcwd())
|
51
72
|
|
52
73
|
# Remove this once we could serialize using the artifact in Vembda
|
vellum_cli/tests/conftest.py
CHANGED
vellum_cli/tests/test_pull.py
CHANGED
@@ -124,6 +124,7 @@ def test_pull__sandbox_id_with_no_config(vellum_client):
|
|
124
124
|
lock_data = json.loads(f.read())
|
125
125
|
assert lock_data == {
|
126
126
|
"version": "1.0",
|
127
|
+
"workspaces": [],
|
127
128
|
"workflows": [
|
128
129
|
{
|
129
130
|
"module": "workflow_87654321",
|
@@ -132,6 +133,7 @@ def test_pull__sandbox_id_with_no_config(vellum_client):
|
|
132
133
|
"deployments": [],
|
133
134
|
"container_image_tag": None,
|
134
135
|
"container_image_name": None,
|
136
|
+
"workspace": "default",
|
135
137
|
}
|
136
138
|
],
|
137
139
|
}
|
@@ -208,8 +210,10 @@ def test_pull__workflow_deployment_with_no_config(vellum_client):
|
|
208
210
|
"deployments": [],
|
209
211
|
"container_image_tag": None,
|
210
212
|
"container_image_name": None,
|
213
|
+
"workspace": "default",
|
211
214
|
}
|
212
215
|
],
|
216
|
+
"workspaces": [],
|
213
217
|
}
|
214
218
|
|
215
219
|
|
@@ -449,6 +453,7 @@ def test_pull__sandbox_id_with_other_workflow_deployment_in_lock(vellum_client,
|
|
449
453
|
],
|
450
454
|
"container_image_name": None,
|
451
455
|
"container_image_tag": None,
|
456
|
+
"workspace": "default",
|
452
457
|
},
|
453
458
|
{
|
454
459
|
"module": "workflow_87654321",
|
@@ -457,6 +462,7 @@ def test_pull__sandbox_id_with_other_workflow_deployment_in_lock(vellum_client,
|
|
457
462
|
"deployments": [],
|
458
463
|
"container_image_name": "test",
|
459
464
|
"container_image_tag": "1.0",
|
465
|
+
"workspace": "default",
|
460
466
|
},
|
461
467
|
]
|
462
468
|
|
vellum_cli/tests/test_push.py
CHANGED
@@ -3,6 +3,7 @@ import io
|
|
3
3
|
import json
|
4
4
|
import os
|
5
5
|
import tarfile
|
6
|
+
from unittest import mock
|
6
7
|
from uuid import uuid4
|
7
8
|
|
8
9
|
from click.testing import CliRunner
|
@@ -194,7 +195,7 @@ def test_push__dry_run_option_returns_report(mock_module, vellum_client):
|
|
194
195
|
from typing import Dict
|
195
196
|
from vellum.workflows import BaseWorkflow
|
196
197
|
from vellum.workflows.nodes import BaseNode
|
197
|
-
from vellum_ee.workflows.display.nodes import BaseNodeDisplay
|
198
|
+
from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
|
198
199
|
|
199
200
|
class NotSupportedNode(BaseNode):
|
200
201
|
pass
|
@@ -318,3 +319,89 @@ Files that were different between the original project and the generated artifac
|
|
318
319
|
\x1b[0m
|
319
320
|
"""
|
320
321
|
)
|
322
|
+
|
323
|
+
|
324
|
+
def test_push__workspace_option__uses_different_api_key(mock_module, vellum_client_class):
|
325
|
+
# GIVEN a single workflow configured
|
326
|
+
temp_dir = mock_module.temp_dir
|
327
|
+
module = mock_module.module
|
328
|
+
workflow_sandbox_id = mock_module.workflow_sandbox_id
|
329
|
+
set_pyproject_toml = mock_module.set_pyproject_toml
|
330
|
+
|
331
|
+
# AND a different workspace is set in the pyproject.toml
|
332
|
+
set_pyproject_toml(
|
333
|
+
{
|
334
|
+
"workflows": [
|
335
|
+
{
|
336
|
+
"module": module,
|
337
|
+
"workflow_sandbox_id": workflow_sandbox_id,
|
338
|
+
}
|
339
|
+
],
|
340
|
+
"workspaces": [
|
341
|
+
{
|
342
|
+
"name": "my_other_workspace",
|
343
|
+
"api_key": "MY_OTHER_VELLUM_API_KEY",
|
344
|
+
}
|
345
|
+
],
|
346
|
+
}
|
347
|
+
)
|
348
|
+
|
349
|
+
# AND the .env file has the other api key stored
|
350
|
+
with open(os.path.join(temp_dir, ".env"), "w") as f:
|
351
|
+
f.write(
|
352
|
+
"""\
|
353
|
+
VELLUM_API_KEY=abcdef123456
|
354
|
+
MY_OTHER_VELLUM_API_KEY=aaabbbcccddd
|
355
|
+
"""
|
356
|
+
)
|
357
|
+
|
358
|
+
# AND a workflow exists in the module successfully
|
359
|
+
base_dir = os.path.join(temp_dir, *module.split("."))
|
360
|
+
os.makedirs(base_dir, exist_ok=True)
|
361
|
+
workflow_py_file_content = """\
|
362
|
+
from vellum.workflows import BaseWorkflow
|
363
|
+
|
364
|
+
class ExampleWorkflow(BaseWorkflow):
|
365
|
+
pass
|
366
|
+
"""
|
367
|
+
with open(os.path.join(temp_dir, *module.split("."), "workflow.py"), "w") as f:
|
368
|
+
f.write(workflow_py_file_content)
|
369
|
+
|
370
|
+
# AND the push API call returns a new workflow sandbox id
|
371
|
+
new_workflow_sandbox_id = str(uuid4())
|
372
|
+
vellum_client_class.return_value.workflows.push.return_value = WorkflowPushResponse(
|
373
|
+
workflow_sandbox_id=new_workflow_sandbox_id,
|
374
|
+
)
|
375
|
+
|
376
|
+
# WHEN calling `vellum push` on strict mode
|
377
|
+
runner = CliRunner()
|
378
|
+
result = runner.invoke(cli_main, ["push", module, "--workspace", "my_other_workspace"])
|
379
|
+
|
380
|
+
# THEN it should succeed
|
381
|
+
assert result.exit_code == 0, result.output
|
382
|
+
|
383
|
+
# AND we should have called the push API once
|
384
|
+
vellum_client_class.return_value.workflows.push.assert_called_once()
|
385
|
+
|
386
|
+
# AND the workflow sandbox id arg passed in should be `None`
|
387
|
+
call_args = vellum_client_class.return_value.workflows.push.call_args.kwargs
|
388
|
+
assert call_args["workflow_sandbox_id"] is None
|
389
|
+
|
390
|
+
# AND with the correct api key
|
391
|
+
vellum_client_class.assert_called_once_with(
|
392
|
+
api_key="aaabbbcccddd",
|
393
|
+
environment=mock.ANY,
|
394
|
+
)
|
395
|
+
|
396
|
+
# AND the vellum lock file should have been updated with the correct workspace
|
397
|
+
with open(os.path.join(temp_dir, "vellum.lock.json")) as f:
|
398
|
+
lock_file_content = json.load(f)
|
399
|
+
assert lock_file_content["workflows"][1] == {
|
400
|
+
"module": module,
|
401
|
+
"workflow_sandbox_id": new_workflow_sandbox_id,
|
402
|
+
"workspace": "my_other_workspace",
|
403
|
+
"container_image_name": None,
|
404
|
+
"container_image_tag": None,
|
405
|
+
"deployments": [],
|
406
|
+
"ignore": None,
|
407
|
+
}
|