vellum-ai 0.12.14__py3-none-any.whl → 0.12.15__py3-none-any.whl

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