vellum-ai 0.13.0__py3-none-any.whl → 0.13.2__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- vellum/client/core/client_wrapper.py +1 -1
- vellum/client/core/pydantic_utilities.py +5 -0
- vellum/client/resources/workflows/client.py +8 -0
- vellum/client/types/logical_operator.py +2 -0
- vellum/workflows/descriptors/base.py +1 -1
- vellum/workflows/descriptors/tests/test_utils.py +3 -0
- vellum/workflows/expressions/accessor.py +8 -2
- vellum/workflows/nodes/core/map_node/node.py +49 -24
- vellum/workflows/nodes/core/map_node/tests/test_node.py +4 -4
- vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +1 -1
- vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +5 -3
- vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +3 -0
- vellum/workflows/nodes/displayable/bases/search_node.py +37 -2
- vellum/workflows/nodes/displayable/bases/tests/__init__.py +0 -0
- vellum/workflows/nodes/displayable/bases/tests/test_utils.py +61 -0
- vellum/workflows/nodes/displayable/bases/types.py +42 -0
- vellum/workflows/nodes/displayable/bases/utils.py +112 -0
- vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py +0 -1
- vellum/workflows/nodes/displayable/search_node/tests/__init__.py +0 -0
- vellum/workflows/nodes/displayable/search_node/tests/test_node.py +164 -0
- vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py +2 -3
- vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py +0 -1
- vellum/workflows/runner/runner.py +37 -4
- vellum/workflows/types/tests/test_utils.py +5 -2
- vellum/workflows/types/utils.py +4 -0
- vellum/workflows/workflows/base.py +14 -0
- {vellum_ai-0.13.0.dist-info → vellum_ai-0.13.2.dist-info}/METADATA +1 -1
- {vellum_ai-0.13.0.dist-info → vellum_ai-0.13.2.dist-info}/RECORD +53 -42
- vellum_cli/__init__.py +24 -0
- vellum_cli/ping.py +28 -0
- vellum_cli/push.py +62 -12
- vellum_cli/tests/test_ping.py +47 -0
- vellum_cli/tests/test_push.py +76 -0
- vellum_ee/workflows/display/nodes/vellum/base_node.py +59 -11
- vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py +3 -0
- vellum_ee/workflows/display/nodes/vellum/map_node.py +1 -1
- vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py +14 -10
- vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/utils.py +8 -1
- vellum_ee/workflows/display/tests/test_vellum_workflow_display.py +48 -0
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py +67 -0
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py +286 -0
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py +177 -0
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py +666 -14
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py +7 -8
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +35 -2
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +29 -2
- vellum_ee/workflows/display/utils/vellum.py +4 -42
- vellum_ee/workflows/display/vellum.py +7 -36
- vellum_ee/workflows/display/workflows/vellum_workflow_display.py +5 -2
- {vellum_ai-0.13.0.dist-info → vellum_ai-0.13.2.dist-info}/LICENSE +0 -0
- {vellum_ai-0.13.0.dist-info → vellum_ai-0.13.2.dist-info}/WHEEL +0 -0
- {vellum_ai-0.13.0.dist-info → vellum_ai-0.13.2.dist-info}/entry_points.txt +0 -0
@@ -1,18 +1,20 @@
|
|
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=L8D7nVwC63WdAe6HTy7J_S3wCvjJBHDWaBkCrw76dtU,9573
|
4
4
|
vellum_cli/aliased_group.py,sha256=ugW498j0yv4ALJ8vS9MsO7ctDW7Jlir9j6nE_uHAP8c,3363
|
5
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/ping.py,sha256=lWyJw6sziXjyTopTYRdFF5hV-sYPVDdX0yVbG5fzcY4,585
|
8
9
|
vellum_cli/pull.py,sha256=zf0y22XptUYI_hMP_4Q1CEo9s2wALsTJcCXNd-_ibd8,7551
|
9
|
-
vellum_cli/push.py,sha256=
|
10
|
+
vellum_cli/push.py,sha256=KHakWiUwdeZff8QZSDF0l8xmCgMRo9ntan8kaLD02Lc,7677
|
10
11
|
vellum_cli/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
12
|
vellum_cli/tests/conftest.py,sha256=Jv-QUjXoCDhsvVvXEjOenNqRArO_xXhtNuCYt4wiOyE,1421
|
12
13
|
vellum_cli/tests/test_config.py,sha256=uvKGDc8BoVyT9_H0Z-g8469zVxomn6Oi3Zj-vK7O_wU,2631
|
13
14
|
vellum_cli/tests/test_main.py,sha256=qDZG-aQauPwBwM6A2DIu1494n47v3pL28XakTbLGZ-k,272
|
15
|
+
vellum_cli/tests/test_ping.py,sha256=QtbhYKMYn1DFnDyBij2mkQO32j9KOpZ5Pf0yek7k_Ao,1284
|
14
16
|
vellum_cli/tests/test_pull.py,sha256=6gbASF6ASy5YcdWjOCt6b5K0u2VWsFegdrTWu6sEVKs,19613
|
15
|
-
vellum_cli/tests/test_push.py,sha256=
|
17
|
+
vellum_cli/tests/test_push.py,sha256=PVxKwbWHjb1QwQ0n4tTqh2Tj6yg2cOGupOSXaXl08DI,11044
|
16
18
|
vellum_ee/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
17
19
|
vellum_ee/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
18
20
|
vellum_ee/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -28,40 +30,43 @@ vellum_ee/workflows/display/nodes/types.py,sha256=St1BB6no528OyELGiyRabWao0GGw6m
|
|
28
30
|
vellum_ee/workflows/display/nodes/utils.py,sha256=sloya5TpXsnot1HURc9L51INwflRqUzHxRVnCS9Cd-4,973
|
29
31
|
vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=_raKY9eKi_OvIFn6nGvf9xKSboKtYLHCWaWCwDQFbOc,1567
|
30
32
|
vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=hoV-cUtS6H9kmRQXHd2py95GRWI_dAnnaPwvlNBkDOQ,8571
|
31
|
-
vellum_ee/workflows/display/nodes/vellum/base_node.py,sha256=
|
33
|
+
vellum_ee/workflows/display/nodes/vellum/base_node.py,sha256=lbk6pWO2xRzjQmlh-3iWrc-6Hfa7cUycqCwLuVNFuW8,7623
|
32
34
|
vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=z00Z3L0d4PsUQo4S8FRDTtOFLtjdi17TJbatNVF4nM8,4288
|
33
35
|
vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=UJtdeppJFrrgJi48soO1-r5eaKTOExjYCrEx_YCsvtU,10486
|
34
36
|
vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=Tyx74dUmj_ef0slptoUXHtkjLbNd3f4hXeoEozFaFcw,2023
|
35
37
|
vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=p-PvlnxpBQ7IKskZi2A19jKAtKnSxJ8LPbGMA83VkFk,2805
|
36
38
|
vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=aYZSJTxknU4LMiQdWk9LcK6CkhdozeDEMiRxfAyUNEc,2202
|
37
|
-
vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=
|
39
|
+
vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=h8K183cZsU2b86WYQlqFtwMkwIHydnNr4ZaaQcWnFWo,7316
|
38
40
|
vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=9858pFzuhkAAmLcw4gkt5mPvsqWk5vqcX_vwHOg2xZw,5610
|
39
|
-
vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=
|
41
|
+
vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=VlO3UwkspCOdDQ-h3v8k16-7JZwWNSLpOLT4p-eirIs,3740
|
40
42
|
vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=HkNMgdQELiON42jdO-xDLmqrEKdGx1RVqrz2DXNTLS8,3239
|
41
43
|
vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=TMb8txILu2uWjzoxaghjgjlzeBAgzn4vkP_8zSh2qoE,1151
|
42
|
-
vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=
|
44
|
+
vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=LFjLUrH6sJ4czPnExdRqFr0PB_yKBMLXLvK5GAzIAgc,3273
|
43
45
|
vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=EaoYGbLMLogsP2JsRq1lSAM3AMNxeapXRBfMseNhCbE,9115
|
44
46
|
vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=lfevlHpGEX14dEDym6qmnkw3nvzQPTB1_D2ch12B_Rk,2701
|
45
47
|
vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=JVIMPR3WpveOCWZubHKZkE04mavnTdb_9QY_r3XliRg,3424
|
46
48
|
vellum_ee/workflows/display/nodes/vellum/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
47
|
-
vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=
|
49
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=Nqd6mxn0sgL4sp62wDYnQVc7COxrt5wXXIveRFoYQ8c,3913
|
48
50
|
vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=hB8dcGMGkuC95kk9hmZUgHsCLwEA37fHTFXj0JzbRjM,4692
|
49
|
-
vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=
|
51
|
+
vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=nIZ1DYTYPRaYsVKcel9a-Fm8EniJL0N7f5PowxVGTVU,8318
|
50
52
|
vellum_ee/workflows/display/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
51
|
-
vellum_ee/workflows/display/tests/test_vellum_workflow_display.py,sha256=
|
53
|
+
vellum_ee/workflows/display/tests/test_vellum_workflow_display.py,sha256=4jXe7Wyspw6CxghVqKAOu-_QunKFvY4U6--zOiuXvV0,3069
|
52
54
|
vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
53
55
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
54
56
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py,sha256=RatRmgd1O7OX1r2QfMLPs-WvGQpPLfXIjWNGE4s0yLE,2186
|
55
|
-
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/
|
56
|
-
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/
|
57
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py,sha256=MtKRKcPJsUJ3le7PLz9H6iH3vmRBZDRy6c-4LUF76zE,1987
|
58
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py,sha256=apGjJgH2KrUVA5LuD9b2etjVFFG1cqYTmNATfdkngWA,10193
|
59
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py,sha256=nouAROR-L9_u6BfPbKUl20QjbbRpwPeElGS2wIWozLc,6239
|
60
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py,sha256=wZekdhIZBwbBoFNAdC9bBLwUxVKk3EnFdNmMwYIdKGA,37308
|
61
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py,sha256=os6wCZjcOyig8EJu-pTAFWXa0odMxTaR0mrbL0SS_4Y,4480
|
57
62
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=bXZWxOKAVjZlbP3iLHPHGA4aPs0EguKlQqmYPNGv3cU,16391
|
58
63
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=UPLEQPwsLzOqZdkXrB5Jo1FdCx0iQNf7ekfcq1byoFw,29392
|
59
64
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=Xn8t-SpvQocKdxNofDeDETlFnkCbBxdLGiUG8m6fM6U,48399
|
60
65
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=QVlkczxzaKuOhwbRvVP70otPDNnJcSGDfN79j92lFyk,5534
|
61
66
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py,sha256=_gv7vPxBWSOSRKMlXYv8GKj9h1JAXjXIVWkCE_XhkYE,5746
|
62
67
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=mEkvKUrt8U6e9bN65QRG7Zd3KdCdoMvHm96LjGwy96k,7427
|
63
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256
|
64
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=
|
68
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=-e6svaclv068n66oLnha-CFzW4ihNnhyQuqAfUyI59k,21395
|
69
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=luj_PdJd8e13C4JO7dkbTlNPko6N7cPFM1iAljdElW8,16043
|
65
70
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=mGk21Wp9Gyr-rRwYqhLEyenJF-ArdXjAdj_qYqcldrE,8422
|
66
71
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=W_d-hsjSqbqR5BA3aF3KFoEyfLV6x_yhNKmLA1ai2QY,8622
|
67
72
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py,sha256=PKJAYaEnVYZATJibqXEDysDoTtjBL2CK__WE2YyOTN4,12817
|
@@ -72,12 +77,12 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_ser
|
|
72
77
|
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=wQ97k-y9rZwKYlZSA6Z9XGUnGRaJ5BvCFu5QnhuEp4A,7404
|
73
78
|
vellum_ee/workflows/display/types.py,sha256=-ninso8Yf2EBn_RkFhpOEOjRhX2bYgCeMWssHoEgPRg,2248
|
74
79
|
vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
75
|
-
vellum_ee/workflows/display/utils/vellum.py,sha256=
|
76
|
-
vellum_ee/workflows/display/vellum.py,sha256=
|
80
|
+
vellum_ee/workflows/display/utils/vellum.py,sha256=N5VSDYdtHUxvTeSj4zA8aMiAAKn4bAVgpKUDV_obNQ8,3632
|
81
|
+
vellum_ee/workflows/display/vellum.py,sha256=8xXRI8b8Tt661H-iZreTQTvLNEKUr4lf-XaKhE7_yUY,8147
|
77
82
|
vellum_ee/workflows/display/workflows/__init__.py,sha256=kapXsC67VJcgSuiBMa86FdePG5A9kMB5Pi4Uy1O2ob4,207
|
78
83
|
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=u5u_KnDp_ktLBlfkT5wiGHIloodSlUT3D3_DQXijtMA,13735
|
79
84
|
vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=kp0u8LN_2IwshLrhMImhpZx1hRyAcD5gXY-kDuuaGMQ,1269
|
80
|
-
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=
|
85
|
+
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=V0edhtohqAWbaHvHkj9Sth4ieaIVejsrsRIr7aCCoVc,16871
|
81
86
|
vellum_ee/workflows/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
82
87
|
vellum_ee/workflows/server/virtual_file_loader.py,sha256=X_DdNK7MfyOjKWekk6YQpOSCT6klKcdjT6nVJcBH1sM,1481
|
83
88
|
vellum/__init__.py,sha256=iwoL3PQsiTvtX79J4qlAJ2EIqZ77zYJm3q7o1Ei3Awo,35398
|
@@ -85,12 +90,12 @@ vellum/client/README.md,sha256=JkCJjmMZl4jrPj46pkmL9dpK4gSzQQmP5I7z4aME4LY,4749
|
|
85
90
|
vellum/client/__init__.py,sha256=8nZt88C9SVwWanjLbIQMU3rzb32h5UZfFMBx3VPHB50,111887
|
86
91
|
vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
|
87
92
|
vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
88
|
-
vellum/client/core/client_wrapper.py,sha256=
|
93
|
+
vellum/client/core/client_wrapper.py,sha256=AO_2SZDUQmHi5QG-jZCS2IRnrrOAOowR3Mx8RJ0wqe4,1868
|
89
94
|
vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
90
95
|
vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
|
91
96
|
vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
|
92
97
|
vellum/client/core/jsonable_encoder.py,sha256=qaF1gtgH-kQZb4kJskETwcCsOPUof-NnYVdszHkb-dM,3656
|
93
|
-
vellum/client/core/pydantic_utilities.py,sha256=
|
98
|
+
vellum/client/core/pydantic_utilities.py,sha256=vPw05-aAxUB_jinMTmP7m8dAjRurZ8XqNZruXZdWORs,12056
|
94
99
|
vellum/client/core/query_encoder.py,sha256=ekulqNd0j8TgD7ox-Qbz7liqX8-KP9blvT9DsRCenYM,2144
|
95
100
|
vellum/client/core/remove_none_from_dict.py,sha256=EU9SGgYidWq7SexuJbNs4-PZ-5Bl3Vppd864mS6vQZw,342
|
96
101
|
vellum/client/core/request_options.py,sha256=5cCGt5AEGgtP5xifDl4oVQUmSjlIA8FmRItAlJawM18,1417
|
@@ -141,7 +146,7 @@ vellum/client/resources/workflow_deployments/types/workflow_deployments_list_req
|
|
141
146
|
vellum/client/resources/workflow_sandboxes/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
142
147
|
vellum/client/resources/workflow_sandboxes/client.py,sha256=3wVQxkjrJ5bIS8fB5FpKXCP2dX38299ghWrJ8YmXxwQ,7435
|
143
148
|
vellum/client/resources/workflows/__init__.py,sha256=Z4xi8Nxd9U4t35FQSepTt1p-ns0X1xtdNs168kUcuBk,153
|
144
|
-
vellum/client/resources/workflows/client.py,sha256=
|
149
|
+
vellum/client/resources/workflows/client.py,sha256=9y2Tak0kduS0D1yu57FlgvV_svJZzJlRbGTJ6bz-QuA,11419
|
145
150
|
vellum/client/resources/workflows/types/__init__.py,sha256=-uFca4ypncAOvfsg6sjD-5C9zWdA5qNvU6m675GphVg,177
|
146
151
|
vellum/client/resources/workflows/types/workflows_pull_request_format.py,sha256=dOWE_jnDnniIJLoeseeCms23aklghyBkoPmBFzcqqZk,165
|
147
152
|
vellum/client/resources/workspace_secrets/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
@@ -317,7 +322,7 @@ vellum/client/types/json_input.py,sha256=ZUA2O9YueBCx0IMMdB8uYNSWJiSDZxMm5ogwbwC
|
|
317
322
|
vellum/client/types/json_input_request.py,sha256=x5sA-VXxF4QH-98xRcIKPZhsMVbnJNUQofiUQqyfGk4,768
|
318
323
|
vellum/client/types/json_vellum_value.py,sha256=8irlw6NkRRVafysfTc1Q5BFFhRrWJYzdwrDYTdJK4JY,689
|
319
324
|
vellum/client/types/json_vellum_value_request.py,sha256=IUlkdwFGgBeLl9sCmAJhoaxomWiEMpWgRcLa_WnlK8g,696
|
320
|
-
vellum/client/types/logical_operator.py,sha256=
|
325
|
+
vellum/client/types/logical_operator.py,sha256=3IJNJf8Esrq8-RzcgUJgeM6qns1RHdk01DG7gYs3Az8,596
|
321
326
|
vellum/client/types/logprobs_enum.py,sha256=D_458cZX2CAb6dX_ovrQ6HARlJkYcZRadKwsi1Cr-JM,151
|
322
327
|
vellum/client/types/map_node_result.py,sha256=e2YqEP-aKig2TbbZIlfn5LCeVEVhEJJBR7o7xTBKXaY,752
|
323
328
|
vellum/client/types/map_node_result_data.py,sha256=3xJXC1JrS9lo3-3_u1S79sYwLxMknNntDyspN24vQzY,699
|
@@ -1223,8 +1228,8 @@ vellum/workflows/__init__.py,sha256=CssPsbNvN6rDhoLuqpEv7MMKGa51vE6dvAh6U31Pcio,
|
|
1223
1228
|
vellum/workflows/constants.py,sha256=Z0W4YlqfSlSgWC11PrVUPs6ZOBeIaQ78E_90J1hohiw,789
|
1224
1229
|
vellum/workflows/context.py,sha256=R8qdsFbD_0p7B6PWnyvSrZ_aOgMtGw-_uk0P0UAmwLA,1230
|
1225
1230
|
vellum/workflows/descriptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1226
|
-
vellum/workflows/descriptors/base.py,sha256=
|
1227
|
-
vellum/workflows/descriptors/tests/test_utils.py,sha256=
|
1231
|
+
vellum/workflows/descriptors/base.py,sha256=gSib3vJpcI_UC8y8jhdp-hOK3_TGTF-SuwdhxF6x5iQ,14332
|
1232
|
+
vellum/workflows/descriptors/tests/test_utils.py,sha256=63w1P6PELNhWzpg1BqL8y2XQZ8XRt0RUkHgLcsXyOQE,4592
|
1228
1233
|
vellum/workflows/descriptors/utils.py,sha256=lO_dbr5g3PXpHPtVBkdguAK4-1qayZ7RXjl3BgAhrMM,3795
|
1229
1234
|
vellum/workflows/edges/__init__.py,sha256=wSkmAnz9xyi4vZwtDbKxwlplt2skD7n3NsxkvR_pUus,50
|
1230
1235
|
vellum/workflows/edges/edge.py,sha256=N0SnY3gKVuxImPAdCbPMPlHJIXbkQ3fwq_LbJRvVMFc,677
|
@@ -1242,7 +1247,7 @@ vellum/workflows/events/types.py,sha256=cjRE8WL8tYCFradd9NOGl_H0mN3LiWWnA1uHmyT2
|
|
1242
1247
|
vellum/workflows/events/workflow.py,sha256=l5tXes0sg7iWaA1ZUE5dtAqNnGQ8iy6trVbOU9meu7U,5240
|
1243
1248
|
vellum/workflows/exceptions.py,sha256=l-FLGvXywxg6ivolCts71b8pcsYAWoB1cmUR4Jx7N8g,614
|
1244
1249
|
vellum/workflows/expressions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1245
|
-
vellum/workflows/expressions/accessor.py,sha256=
|
1250
|
+
vellum/workflows/expressions/accessor.py,sha256=daIkEudAdyiqCOzO9x_3cy-Y9ilYgNWSEeqcFelkjI0,1743
|
1246
1251
|
vellum/workflows/expressions/and_.py,sha256=I7lNqrUM3-m_5hmjjiMhaHhJtKcLj39kEFVWPDOqwfo,916
|
1247
1252
|
vellum/workflows/expressions/begins_with.py,sha256=Ae-RBz_0Xr1WiX1EP0mSgCOOUo-ji1A85aAGd-4BscY,1012
|
1248
1253
|
vellum/workflows/expressions/between.py,sha256=xjc_-TLDN-25tVQ9k9aZciH0wOfqrXV8qNmyGOhimd8,1365
|
@@ -1291,9 +1296,9 @@ vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=XJLz7Kkk4OwrM
|
|
1291
1296
|
vellum/workflows/nodes/core/inline_subworkflow_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1292
1297
|
vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py,sha256=n0-821Ov9ZfRFX_lbzLy5o2rX8fEw2qoxz0aFWCOxVg,1547
|
1293
1298
|
vellum/workflows/nodes/core/map_node/__init__.py,sha256=MXpZYmGfhsMJHqqlpd64WiJRtbAtAMQz-_3fCU_cLV0,56
|
1294
|
-
vellum/workflows/nodes/core/map_node/node.py,sha256=
|
1299
|
+
vellum/workflows/nodes/core/map_node/node.py,sha256=bjCVMAzkqJUvaLWVBObjskcutwLGrgfTMHXcAcOnra8,8085
|
1295
1300
|
vellum/workflows/nodes/core/map_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1296
|
-
vellum/workflows/nodes/core/map_node/tests/test_node.py,sha256=
|
1301
|
+
vellum/workflows/nodes/core/map_node/tests/test_node.py,sha256=P7ImQyeLcK-aEJUYCX1gPQyuOxdxnSPpI3mNPpKQ62Y,1919
|
1297
1302
|
vellum/workflows/nodes/core/retry_node/__init__.py,sha256=lN2bIy5a3Uzhs_FYCrooADyYU6ZGShtvLKFWpelwPvo,60
|
1298
1303
|
vellum/workflows/nodes/core/retry_node/node.py,sha256=QEpxhKOyxDkRoAn2b0PToZWtAGQetSQYVTpb9yCOLlw,4028
|
1299
1304
|
vellum/workflows/nodes/core/retry_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1312,12 +1317,16 @@ vellum/workflows/nodes/displayable/bases/__init__.py,sha256=0mWIx3qUrzllV7jqt7wN
|
|
1312
1317
|
vellum/workflows/nodes/displayable/bases/api_node/__init__.py,sha256=1jwx4WC358CLA1jgzl_UD-rZmdMm2v9Mps39ndwCD7U,64
|
1313
1318
|
vellum/workflows/nodes/displayable/bases/api_node/node.py,sha256=ywPwCxDesgnE86Wjyf2ZyG2Dr2O7xW8D4tPHZB5Se_s,2477
|
1314
1319
|
vellum/workflows/nodes/displayable/bases/base_prompt_node/__init__.py,sha256=Org3xTvgp1pA0uUXFfnJr29D3HzCey2lEdYF4zbIUgo,70
|
1315
|
-
vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=
|
1320
|
+
vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=w9HfUhVHtF3Y95duj9bsAj5XHmObN6S6vvfI67u7RyY,2156
|
1316
1321
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/__init__.py,sha256=Hl35IAoepRpE-j4cALaXVJIYTYOF3qszyVbxTj4kS1s,82
|
1317
1322
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/constants.py,sha256=fnjiRWLoRlC4Puo5oQcpZD5Hd-EesxsAo9l5tGAkpZQ,270
|
1318
|
-
vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=
|
1319
|
-
vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=
|
1320
|
-
vellum/workflows/nodes/displayable/bases/search_node.py,sha256=
|
1323
|
+
vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=TKoxReiGGQfafwrZyy7FLvVGYPlk_NT-bTRX04ozRB8,6311
|
1324
|
+
vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=rm23ZebJ4nj3wakfLI8bcuHZAydXCk1d7IPdXhiQHys,5039
|
1325
|
+
vellum/workflows/nodes/displayable/bases/search_node.py,sha256=m37Ukjb75U6e5ehxV9YKz8r0J1e3p_Tv-f8pTvaH4RI,5245
|
1326
|
+
vellum/workflows/nodes/displayable/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1327
|
+
vellum/workflows/nodes/displayable/bases/tests/test_utils.py,sha256=uQM9RTVmC-fMQ4hd4481QZbviokshwYSxk1ee9leh3A,2406
|
1328
|
+
vellum/workflows/nodes/displayable/bases/types.py,sha256=4G0xULiaQ8E1JMWjxesW3iPNm6s-7Gpqb6phFc8wB_U,1699
|
1329
|
+
vellum/workflows/nodes/displayable/bases/utils.py,sha256=hlbIRLAAeqRhzZPLK7WDvBzUT2b6tupaXYOF54iYvS0,4973
|
1321
1330
|
vellum/workflows/nodes/displayable/code_execution_node/__init__.py,sha256=0FLWMMktpzSnmBMizQglBpcPrP80fzVsoJwJgf822Cg,76
|
1322
1331
|
vellum/workflows/nodes/displayable/code_execution_node/node.py,sha256=JgyTgZRSb-gSXL4ccHn4VkPcPZFOkVK5ohPazPqSWFw,8652
|
1323
1332
|
vellum/workflows/nodes/displayable/code_execution_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1334,7 +1343,7 @@ vellum/workflows/nodes/displayable/guardrail_node/node.py,sha256=7Ep7Ff7FtFry3Jw
|
|
1334
1343
|
vellum/workflows/nodes/displayable/inline_prompt_node/__init__.py,sha256=gSUOoEZLlrx35-tQhSAd3An8WDwBqyiQh-sIebLU9wU,74
|
1335
1344
|
vellum/workflows/nodes/displayable/inline_prompt_node/node.py,sha256=OPjdEK5mL3D2cwL68GiBFlRJ2b0tgatxsfeUEPeQDxI,2146
|
1336
1345
|
vellum/workflows/nodes/displayable/inline_prompt_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1337
|
-
vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py,sha256=
|
1346
|
+
vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py,sha256=57JYbHvfZAjEGfa4CvYSpAt5yLDj0bPIr1_RoG8n9oI,4725
|
1338
1347
|
vellum/workflows/nodes/displayable/merge_node/__init__.py,sha256=J8IC08dSH7P76wKlNuxe1sn7toNGtSQdFirUbtPDEs0,60
|
1339
1348
|
vellum/workflows/nodes/displayable/merge_node/node.py,sha256=ZyPvcTgfPOneOm5Dc2kUOoPkwNJqwRPZSj232akXynA,324
|
1340
1349
|
vellum/workflows/nodes/displayable/note_node/__init__.py,sha256=KWA3P4fyYJ-fOTky8qNGlcOotQ-HeHJ9AjZt6mRQmCE,58
|
@@ -1343,12 +1352,14 @@ vellum/workflows/nodes/displayable/prompt_deployment_node/__init__.py,sha256=krX
|
|
1343
1352
|
vellum/workflows/nodes/displayable/prompt_deployment_node/node.py,sha256=cpOrqQQanZ0xO4B4B3mgyBWKcnkT5b0DFxOSeS8otrI,2528
|
1344
1353
|
vellum/workflows/nodes/displayable/search_node/__init__.py,sha256=hpBpvbrDYf43DElRZFLzieSn8weXiwNiiNOJurERQbs,62
|
1345
1354
|
vellum/workflows/nodes/displayable/search_node/node.py,sha256=yhFWulbNmSQoDAwtTSGD4AtKmBbcykezRGRG16xga_0,1311
|
1355
|
+
vellum/workflows/nodes/displayable/search_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1356
|
+
vellum/workflows/nodes/displayable/search_node/tests/test_node.py,sha256=FQOZxSLv-KkMDD6jZWXKFL-SsxvSNTEwqgpIGzjy13M,6048
|
1346
1357
|
vellum/workflows/nodes/displayable/subworkflow_deployment_node/__init__.py,sha256=9yYM6001YZeqI1VOk1QuEM_yrffk_EdsO7qaPzINKds,92
|
1347
1358
|
vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=FgS1ZMnIBliqEMNKX2ChE80bw4IVHEQ6IGiTDvF0RZw,7226
|
1348
1359
|
vellum/workflows/nodes/displayable/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1349
|
-
vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py,sha256=
|
1360
|
+
vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py,sha256=CI7iMyyIlnds1rkVSjICOFg2UY0yV51NTKtKpfeEME4,4677
|
1350
1361
|
vellum/workflows/nodes/displayable/tests/test_search_node_wth_text_output.py,sha256=VepO5z1277c1y5N6LLIC31nnWD1aak2m5oPFplfJHHs,6935
|
1351
|
-
vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py,sha256=
|
1362
|
+
vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py,sha256=wOd5WvQdcwiqcmXExQr95QtIhSgpB6F3EfjybBuTw9E,2558
|
1352
1363
|
vellum/workflows/nodes/experimental/README.md,sha256=eF6DfIL8t-HbF9-mcofOMymKrraiBHDLKTlnBa51ZiE,284
|
1353
1364
|
vellum/workflows/nodes/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1354
1365
|
vellum/workflows/nodes/experimental/openai_chat_completion_node/__init__.py,sha256=lsyD9laR9p7kx5-BXGH2gUTM242UhKy8SMV0SR6S2iE,90
|
@@ -1375,7 +1386,7 @@ vellum/workflows/references/workflow_input.py,sha256=86IuhlBz-9cGxeUzizyjdp482aj
|
|
1375
1386
|
vellum/workflows/resolvers/__init__.py,sha256=eH6hTvZO4IciDaf_cf7aM2vs-DkBDyJPycOQevJxQnI,82
|
1376
1387
|
vellum/workflows/resolvers/base.py,sha256=WHra9LRtlTuB1jmuNqkfVE2JUgB61Cyntn8f0b0WZg4,411
|
1377
1388
|
vellum/workflows/runner/__init__.py,sha256=i1iG5sAhtpdsrlvwgH6B-m49JsINkiWyPWs8vyT-bqM,72
|
1378
|
-
vellum/workflows/runner/runner.py,sha256=
|
1389
|
+
vellum/workflows/runner/runner.py,sha256=LvP1UwLmwV1nCZYYrsiwtCzay73voMp1TDRVVBrlMj8,29196
|
1379
1390
|
vellum/workflows/sandbox.py,sha256=GVJzVjMuYzOBnSrboB0_6MMRZWBluAyQ2o7syeaeBd0,2235
|
1380
1391
|
vellum/workflows/state/__init__.py,sha256=yUUdR-_Vl7UiixNDYQZ-GEM_kJI9dnOia75TtuNEsnE,60
|
1381
1392
|
vellum/workflows/state/base.py,sha256=jpSzF1OQd3-fqi6dMGlNsQl-7JnJxCdzWIigmX8Wz-I,14425
|
@@ -1392,8 +1403,8 @@ vellum/workflows/types/cycle_map.py,sha256=-ZMQsKzZBpCi0bchJrkuN_dtCFuz9uFABy7Fq
|
|
1392
1403
|
vellum/workflows/types/generics.py,sha256=ZkfoRhWs042i5IjA99v2wIhmh1u-Wieo3LzosgGWJVk,600
|
1393
1404
|
vellum/workflows/types/stack.py,sha256=RDSGLkcV612ge8UuAH9TZiEGXxJt0Av2-H5rfzrTVVI,1014
|
1394
1405
|
vellum/workflows/types/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1395
|
-
vellum/workflows/types/tests/test_utils.py,sha256=
|
1396
|
-
vellum/workflows/types/utils.py,sha256=
|
1406
|
+
vellum/workflows/types/tests/test_utils.py,sha256=y2bj4O8-ykPRRRocdD98NdnQz6ydSCoMBp6rECPPqE8,2536
|
1407
|
+
vellum/workflows/types/utils.py,sha256=mSlcgIr8q_qMCtSCdPxcduRntL_5hk4ptFGq3K0EVgw,5801
|
1397
1408
|
vellum/workflows/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1398
1409
|
vellum/workflows/utils/functions.py,sha256=7A4BImhtY__qQpNrF5uPiwLfkj6PSUxYvF7ITigIkxY,4051
|
1399
1410
|
vellum/workflows/utils/names.py,sha256=QLUqfJ1tmSEeUwBKTTiv_Qk3QGbInC2RSmlXfGXc8Wo,380
|
@@ -1406,10 +1417,10 @@ vellum/workflows/utils/uuids.py,sha256=DFzPv9RCvsKhvdTEIQyfSek2A31D6S_QcmeLPbgrg
|
|
1406
1417
|
vellum/workflows/utils/vellum_variables.py,sha256=g5xHYB8etfHE32ek19nP6Anf8NyjhmUtOwO2KmQ5xZU,3111
|
1407
1418
|
vellum/workflows/vellum_client.py,sha256=ODrq_TSl-drX2aezXegf7pizpWDVJuTXH-j6528t75s,683
|
1408
1419
|
vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
|
1409
|
-
vellum/workflows/workflows/base.py,sha256=
|
1420
|
+
vellum/workflows/workflows/base.py,sha256=k0kUWWko4fHyCqLSU_1cBK_pXZpl9MXekWiG-bdOAo0,18353
|
1410
1421
|
vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnadGsrSZGa7t7LpJA,2008
|
1411
|
-
vellum_ai-0.13.
|
1412
|
-
vellum_ai-0.13.
|
1413
|
-
vellum_ai-0.13.
|
1414
|
-
vellum_ai-0.13.
|
1415
|
-
vellum_ai-0.13.
|
1422
|
+
vellum_ai-0.13.2.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
|
1423
|
+
vellum_ai-0.13.2.dist-info/METADATA,sha256=OZhBbZ5uJfG4C4BhBLJr-J6TiSA3GLLdwJHLss8Hm6o,5327
|
1424
|
+
vellum_ai-0.13.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
1425
|
+
vellum_ai-0.13.2.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
|
1426
|
+
vellum_ai-0.13.2.dist-info/RECORD,,
|
vellum_cli/__init__.py
CHANGED
@@ -4,6 +4,7 @@ import click
|
|
4
4
|
|
5
5
|
from vellum_cli.aliased_group import ClickAliasedGroup
|
6
6
|
from vellum_cli.image_push import image_push_command
|
7
|
+
from vellum_cli.ping import ping_command
|
7
8
|
from vellum_cli.pull import pull_command
|
8
9
|
from vellum_cli.push import push_command
|
9
10
|
|
@@ -14,6 +15,15 @@ def main() -> None:
|
|
14
15
|
pass
|
15
16
|
|
16
17
|
|
18
|
+
@main.command
|
19
|
+
def ping() -> None:
|
20
|
+
"""
|
21
|
+
Ping Vellum to confirm that requests are correctly authenticated and to return information about the active
|
22
|
+
Workspace/Organization
|
23
|
+
"""
|
24
|
+
ping_command()
|
25
|
+
|
26
|
+
|
17
27
|
class PushGroup(ClickAliasedGroup):
|
18
28
|
def get_command(self, ctx, cmd_name):
|
19
29
|
# First try to get the command normally
|
@@ -54,6 +64,11 @@ def workflows():
|
|
54
64
|
is_flag=True,
|
55
65
|
help="Check the Workflow for errors and expected changes, without updating its state in Vellum.",
|
56
66
|
)
|
67
|
+
@click.option(
|
68
|
+
"--strict",
|
69
|
+
is_flag=True,
|
70
|
+
help="Raises an error if we detect an unexpected discrepancy in the generated artifact.",
|
71
|
+
)
|
57
72
|
def workflows_push(
|
58
73
|
module: Optional[str],
|
59
74
|
deploy: Optional[bool],
|
@@ -62,6 +77,7 @@ def workflows_push(
|
|
62
77
|
deployment_description: Optional[str],
|
63
78
|
release_tag: Optional[List[str]],
|
64
79
|
dry_run: Optional[bool],
|
80
|
+
strict: Optional[bool],
|
65
81
|
) -> None:
|
66
82
|
"""
|
67
83
|
Push Workflows to Vellum. If a module is provided, only the Workflow for that module will be pushed.
|
@@ -76,6 +92,7 @@ def workflows_push(
|
|
76
92
|
deployment_description=deployment_description,
|
77
93
|
release_tags=release_tag,
|
78
94
|
dry_run=dry_run,
|
95
|
+
strict=strict,
|
79
96
|
)
|
80
97
|
|
81
98
|
|
@@ -91,6 +108,11 @@ def workflows_push(
|
|
91
108
|
is_flag=True,
|
92
109
|
help="Check the Workflow for errors and expected changes, without updating its state in Vellum.",
|
93
110
|
)
|
111
|
+
@click.option(
|
112
|
+
"--strict",
|
113
|
+
is_flag=True,
|
114
|
+
help="Raises an error if we detect an unexpected discrepancy in the generated artifact.",
|
115
|
+
)
|
94
116
|
def push_module(
|
95
117
|
ctx: click.Context,
|
96
118
|
deploy: Optional[bool],
|
@@ -99,6 +121,7 @@ def push_module(
|
|
99
121
|
deployment_description: Optional[str],
|
100
122
|
release_tag: Optional[List[str]],
|
101
123
|
dry_run: Optional[bool],
|
124
|
+
strict: Optional[bool],
|
102
125
|
) -> None:
|
103
126
|
"""Push a specific module to Vellum"""
|
104
127
|
|
@@ -111,6 +134,7 @@ def push_module(
|
|
111
134
|
deployment_description=deployment_description,
|
112
135
|
release_tags=release_tag,
|
113
136
|
dry_run=dry_run,
|
137
|
+
strict=strict,
|
114
138
|
)
|
115
139
|
|
116
140
|
|
vellum_cli/ping.py
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
from dotenv import load_dotenv
|
2
|
+
|
3
|
+
from vellum.workflows.vellum_client import create_vellum_client
|
4
|
+
from vellum_cli.logger import load_cli_logger
|
5
|
+
|
6
|
+
|
7
|
+
def ping_command():
|
8
|
+
load_dotenv()
|
9
|
+
logger = load_cli_logger()
|
10
|
+
|
11
|
+
client = create_vellum_client()
|
12
|
+
|
13
|
+
workspace = client.workspaces.workspace_identity()
|
14
|
+
organization = client.organizations.organization_identity()
|
15
|
+
|
16
|
+
logger.info(
|
17
|
+
f"""\
|
18
|
+
Successfully authenticated with Vellum!
|
19
|
+
|
20
|
+
Organization:
|
21
|
+
ID: {organization.id}
|
22
|
+
Name: {organization.name}
|
23
|
+
|
24
|
+
Workspace:
|
25
|
+
ID: {workspace.id}
|
26
|
+
Name: {workspace.name}
|
27
|
+
"""
|
28
|
+
)
|
vellum_cli/push.py
CHANGED
@@ -9,6 +9,7 @@ from typing import List, Optional
|
|
9
9
|
|
10
10
|
from dotenv import load_dotenv
|
11
11
|
|
12
|
+
from vellum.client.core.api_error import ApiError
|
12
13
|
from vellum.resources.workflows.client import OMIT
|
13
14
|
from vellum.types import WorkflowPushDeploymentConfigRequest
|
14
15
|
from vellum.workflows.utils.names import snake_to_title_case
|
@@ -28,6 +29,7 @@ def push_command(
|
|
28
29
|
deployment_description: Optional[str] = None,
|
29
30
|
release_tags: Optional[List[str]] = None,
|
30
31
|
dry_run: Optional[bool] = None,
|
32
|
+
strict: Optional[bool] = None,
|
31
33
|
) -> None:
|
32
34
|
load_dotenv()
|
33
35
|
logger = load_cli_logger()
|
@@ -109,18 +111,66 @@ def push_command(
|
|
109
111
|
artifact.seek(0)
|
110
112
|
artifact.name = f"{workflow_config.module.replace('.', '__')}.tar.gz"
|
111
113
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
114
|
+
try:
|
115
|
+
response = client.workflows.push(
|
116
|
+
# Remove this once we could serialize using the artifact in Vembda
|
117
|
+
# https://app.shortcut.com/vellum/story/5585
|
118
|
+
exec_config=json.dumps(exec_config),
|
119
|
+
label=label,
|
120
|
+
workflow_sandbox_id=workflow_config.workflow_sandbox_id,
|
121
|
+
artifact=artifact,
|
122
|
+
# We should check with fern if we could auto-serialize typed object fields for us
|
123
|
+
# https://app.shortcut.com/vellum/story/5568
|
124
|
+
deployment_config=deployment_config_serialized, # type: ignore[arg-type]
|
125
|
+
dry_run=dry_run,
|
126
|
+
strict=strict,
|
127
|
+
)
|
128
|
+
except ApiError as e:
|
129
|
+
if e.status_code != 400 or not isinstance(e.body, dict) or "diffs" not in e.body:
|
130
|
+
raise e
|
131
|
+
|
132
|
+
diffs: dict = e.body["diffs"]
|
133
|
+
generated_only = diffs.get("generated_only", [])
|
134
|
+
generated_only_str = (
|
135
|
+
"\n".join(
|
136
|
+
["Files that were generated but not found in the original project:"]
|
137
|
+
+ [f"- {file}" for file in generated_only]
|
138
|
+
)
|
139
|
+
if generated_only
|
140
|
+
else ""
|
141
|
+
)
|
142
|
+
|
143
|
+
original_only = diffs.get("original_only", [])
|
144
|
+
original_only_str = (
|
145
|
+
"\n".join(
|
146
|
+
["Files that were found in the original project but not generated:"]
|
147
|
+
+ [f"- {file}" for file in original_only]
|
148
|
+
)
|
149
|
+
if original_only
|
150
|
+
else ""
|
151
|
+
)
|
152
|
+
|
153
|
+
modified = diffs.get("modified", {})
|
154
|
+
modified_str = (
|
155
|
+
"\n\n".join(
|
156
|
+
["Files that were different between the original project and the generated artifact:"]
|
157
|
+
+ ["\n".join(line.strip() for line in lines) for lines in modified.values()]
|
158
|
+
)
|
159
|
+
if modified
|
160
|
+
else ""
|
161
|
+
)
|
162
|
+
|
163
|
+
reported_diffs = f"""\
|
164
|
+
{e.body.get("detail")}
|
165
|
+
|
166
|
+
{generated_only_str}
|
167
|
+
|
168
|
+
{original_only_str}
|
169
|
+
|
170
|
+
{modified_str}
|
171
|
+
"""
|
172
|
+
logger.error(reported_diffs)
|
173
|
+
return
|
124
174
|
|
125
175
|
if dry_run:
|
126
176
|
error_messages = [str(e) for e in workflow_display.errors]
|
@@ -0,0 +1,47 @@
|
|
1
|
+
from datetime import datetime
|
2
|
+
|
3
|
+
from click.testing import CliRunner
|
4
|
+
|
5
|
+
from vellum.client.types.organization_read import OrganizationRead
|
6
|
+
from vellum.client.types.workspace_read import WorkspaceRead
|
7
|
+
from vellum_cli import main as cli_main
|
8
|
+
|
9
|
+
|
10
|
+
def test_ping__happy_path(vellum_client):
|
11
|
+
# GIVEN a cli
|
12
|
+
runner = CliRunner()
|
13
|
+
|
14
|
+
# AND a valid response from both the workflow and organization API calls
|
15
|
+
vellum_client.workspaces.workspace_identity.return_value = WorkspaceRead(
|
16
|
+
id="1234567890",
|
17
|
+
name="Test Workspace",
|
18
|
+
label="Test Workspace",
|
19
|
+
created=datetime.now(),
|
20
|
+
)
|
21
|
+
vellum_client.organizations.organization_identity.return_value = OrganizationRead(
|
22
|
+
id="1234567890",
|
23
|
+
name="Test Organization",
|
24
|
+
new_member_join_behavior="AUTO_ACCEPT_FROM_SHARED_DOMAIN",
|
25
|
+
allow_staff_access=True,
|
26
|
+
)
|
27
|
+
|
28
|
+
# WHEN calling `vellum ping`
|
29
|
+
result = runner.invoke(cli_main, ["ping"])
|
30
|
+
|
31
|
+
# THEN it should return Status information about the user's workspace
|
32
|
+
assert result.exit_code == 0
|
33
|
+
assert (
|
34
|
+
result.output
|
35
|
+
== """\x1b[38;20m\
|
36
|
+
Successfully authenticated with Vellum!
|
37
|
+
|
38
|
+
Organization:
|
39
|
+
ID: 1234567890
|
40
|
+
Name: Test Organization
|
41
|
+
|
42
|
+
Workspace:
|
43
|
+
ID: 1234567890
|
44
|
+
Name: Test Workspace
|
45
|
+
\x1b[0m
|
46
|
+
"""
|
47
|
+
)
|
vellum_cli/tests/test_push.py
CHANGED
@@ -7,6 +7,7 @@ from uuid import uuid4
|
|
7
7
|
|
8
8
|
from click.testing import CliRunner
|
9
9
|
|
10
|
+
from vellum.client.core.api_error import ApiError
|
10
11
|
from vellum.client.types.workflow_push_response import WorkflowPushResponse
|
11
12
|
from vellum.utils.uuid import is_valid_uuid
|
12
13
|
from vellum_cli import main as cli_main
|
@@ -242,3 +243,78 @@ class ExampleWorkflow(BaseWorkflow):
|
|
242
243
|
assert "Serialization is not supported." in result.output
|
243
244
|
assert "## Proposed Diffs" in result.output
|
244
245
|
assert "iterable_item_added" in result.output
|
246
|
+
|
247
|
+
|
248
|
+
def test_push__strict_option_returns_diffs(mock_module, vellum_client):
|
249
|
+
# GIVEN a single workflow configured
|
250
|
+
temp_dir = mock_module.temp_dir
|
251
|
+
module = mock_module.module
|
252
|
+
|
253
|
+
# AND a workflow exists in the module successfully
|
254
|
+
base_dir = os.path.join(temp_dir, *module.split("."))
|
255
|
+
os.makedirs(base_dir, exist_ok=True)
|
256
|
+
workflow_py_file_content = """\
|
257
|
+
from vellum.workflows import BaseWorkflow
|
258
|
+
|
259
|
+
class ExampleWorkflow(BaseWorkflow):
|
260
|
+
pass
|
261
|
+
"""
|
262
|
+
with open(os.path.join(temp_dir, *module.split("."), "workflow.py"), "w") as f:
|
263
|
+
f.write(workflow_py_file_content)
|
264
|
+
|
265
|
+
# AND the push API call returns a 4xx response with diffs
|
266
|
+
vellum_client.workflows.push.side_effect = ApiError(
|
267
|
+
status_code=400,
|
268
|
+
body={
|
269
|
+
"detail": "Failed to push workflow due to unexpected detected differences in the generated artifact.",
|
270
|
+
"diffs": {
|
271
|
+
"generated_only": ["state.py"],
|
272
|
+
"modified": {
|
273
|
+
"workflow.py": [
|
274
|
+
"--- a/workflow.py\n",
|
275
|
+
"+++ b/workflow.py\n",
|
276
|
+
"@@ -1 +1 @@\n",
|
277
|
+
"-print('hello')",
|
278
|
+
"+print('foo')",
|
279
|
+
]
|
280
|
+
},
|
281
|
+
"original_only": ["inputs.py"],
|
282
|
+
},
|
283
|
+
},
|
284
|
+
)
|
285
|
+
|
286
|
+
# WHEN calling `vellum push` on strict mode
|
287
|
+
runner = CliRunner()
|
288
|
+
result = runner.invoke(cli_main, ["push", module, "--strict"])
|
289
|
+
|
290
|
+
# THEN it should succeed
|
291
|
+
assert result.exit_code == 0
|
292
|
+
|
293
|
+
# AND we should have called the push API with the strict option
|
294
|
+
vellum_client.workflows.push.assert_called_once()
|
295
|
+
call_args = vellum_client.workflows.push.call_args.kwargs
|
296
|
+
assert call_args["strict"] is True
|
297
|
+
|
298
|
+
# AND the report should be in the output
|
299
|
+
assert (
|
300
|
+
result.output
|
301
|
+
== """\
|
302
|
+
\x1b[38;20mLoading workflow from examples.mock.test_push__strict_option_returns_diffs\x1b[0m
|
303
|
+
\x1b[31;20mFailed to push workflow due to unexpected detected differences in the generated artifact.
|
304
|
+
|
305
|
+
Files that were generated but not found in the original project:
|
306
|
+
- state.py
|
307
|
+
|
308
|
+
Files that were found in the original project but not generated:
|
309
|
+
- inputs.py
|
310
|
+
|
311
|
+
Files that were different between the original project and the generated artifact:
|
312
|
+
|
313
|
+
--- a/workflow.py
|
314
|
+
+++ b/workflow.py
|
315
|
+
@@ -1 +1 @@
|
316
|
+
-print('hello')
|
317
|
+
+print('foo')
|
318
|
+
\x1b[0m
|
319
|
+
"""
|
320
|
+
)
|