vellum-ai 0.11.10__py3-none-any.whl → 0.12.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. vellum/client/core/client_wrapper.py +1 -1
  2. vellum/workflows/descriptors/base.py +2 -2
  3. vellum/workflows/descriptors/tests/test_utils.py +4 -4
  4. vellum/workflows/errors/__init__.py +3 -3
  5. vellum/workflows/errors/types.py +46 -3
  6. vellum/workflows/events/node.py +3 -3
  7. vellum/workflows/events/tests/test_event.py +3 -3
  8. vellum/workflows/events/workflow.py +3 -3
  9. vellum/workflows/exceptions.py +8 -4
  10. vellum/workflows/nodes/bases/base.py +9 -2
  11. vellum/workflows/nodes/bases/tests/test_base_node.py +13 -0
  12. vellum/workflows/nodes/core/error_node/node.py +9 -5
  13. vellum/workflows/nodes/core/inline_subworkflow_node/node.py +3 -13
  14. vellum/workflows/nodes/core/map_node/node.py +2 -2
  15. vellum/workflows/nodes/core/retry_node/node.py +5 -5
  16. vellum/workflows/nodes/core/retry_node/tests/test_node.py +6 -6
  17. vellum/workflows/nodes/core/templating_node/node.py +2 -2
  18. vellum/workflows/nodes/core/try_node/node.py +7 -7
  19. vellum/workflows/nodes/core/try_node/tests/test_node.py +9 -7
  20. vellum/workflows/nodes/displayable/bases/api_node/node.py +3 -3
  21. vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +4 -12
  22. vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +2 -2
  23. vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +2 -2
  24. vellum/workflows/nodes/displayable/bases/search_node.py +3 -3
  25. vellum/workflows/nodes/displayable/code_execution_node/node.py +6 -6
  26. vellum/workflows/nodes/displayable/guardrail_node/node.py +3 -3
  27. vellum/workflows/nodes/displayable/inline_prompt_node/node.py +3 -3
  28. vellum/workflows/nodes/displayable/prompt_deployment_node/node.py +3 -3
  29. vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py +7 -14
  30. vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py +4 -4
  31. vellum/workflows/nodes/utils.py +5 -9
  32. vellum/workflows/references/external_input.py +2 -2
  33. vellum/workflows/references/node.py +2 -2
  34. vellum/workflows/references/state_value.py +2 -2
  35. vellum/workflows/references/workflow_input.py +2 -2
  36. vellum/workflows/runner/runner.py +15 -15
  37. {vellum_ee/workflows/display → vellum/workflows}/utils/tests/test_uuids.py +1 -1
  38. vellum/workflows/workflows/base.py +7 -7
  39. {vellum_ai-0.11.10.dist-info → vellum_ai-0.12.0.dist-info}/METADATA +1 -1
  40. {vellum_ai-0.11.10.dist-info → vellum_ai-0.12.0.dist-info}/RECORD +60 -61
  41. vellum_ee/workflows/display/nodes/base_node_display.py +50 -21
  42. vellum_ee/workflows/display/nodes/base_node_vellum_display.py +1 -1
  43. vellum_ee/workflows/display/nodes/get_node_display_class.py +10 -1
  44. vellum_ee/workflows/display/nodes/tests/test_base_node_display.py +5 -4
  45. vellum_ee/workflows/display/nodes/vellum/code_execution_node.py +13 -6
  46. vellum_ee/workflows/display/nodes/vellum/conditional_node.py +1 -1
  47. vellum_ee/workflows/display/nodes/vellum/final_output_node.py +1 -1
  48. vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py +1 -1
  49. vellum_ee/workflows/display/nodes/vellum/merge_node.py +4 -4
  50. vellum_ee/workflows/display/nodes/vellum/search_node.py +1 -1
  51. vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py +5 -1
  52. vellum_ee/workflows/display/nodes/vellum/try_node.py +12 -6
  53. vellum_ee/workflows/display/nodes/vellum/utils.py +1 -1
  54. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py +269 -85
  55. vellum_ee/workflows/display/workflows/base_workflow_display.py +2 -2
  56. vellum_ee/workflows/display/workflows/vellum_workflow_display.py +1 -1
  57. vellum_ee/workflows/display/utils/tests/__init__.py +0 -0
  58. {vellum_ee/workflows/display → vellum/workflows}/utils/uuids.py +0 -0
  59. {vellum_ai-0.11.10.dist-info → vellum_ai-0.12.0.dist-info}/LICENSE +0 -0
  60. {vellum_ai-0.11.10.dist-info → vellum_ai-0.12.0.dist-info}/WHEEL +0 -0
  61. {vellum_ai-0.11.10.dist-info → vellum_ai-0.12.0.dist-info}/entry_points.txt +0 -0
@@ -19,38 +19,38 @@ vellum_ee/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
19
19
  vellum_ee/workflows/display/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  vellum_ee/workflows/display/base.py,sha256=3ZFUYRNKL24fBqXhKpa_Dq2W1a-a86J20dmJYA3H2eY,1755
21
21
  vellum_ee/workflows/display/nodes/__init__.py,sha256=5XOcZJXYUgaLS55QgRJzyQ_W1tpeprjnYAeYVezqoGw,160
22
- vellum_ee/workflows/display/nodes/base_node_display.py,sha256=3W7X1V2Lv0k6djYp60LDu-0lYVMNsEjPXmNmIQ4UW6s,5961
23
- vellum_ee/workflows/display/nodes/base_node_vellum_display.py,sha256=F30B7L3HJLdeYzQmn17KVduWWXPb3KFvFFEVltYWxvY,2124
24
- vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=xg6DWEm8CDiOn_fX74fT2XtSEDCnq06dHKj7HX9JnJw,907
22
+ vellum_ee/workflows/display/nodes/base_node_display.py,sha256=23PLqcpMe_mYkYdug9PDb6Br7o64Thx9-IhcviKGvGo,6662
23
+ vellum_ee/workflows/display/nodes/base_node_vellum_display.py,sha256=E7BFiDv7RdPt_CYhmlgc5ZoQo4JcSQKBGFsAQg0OaJ4,2113
24
+ vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=vyKeJAevAXvEAEtWeTEdBZXD3eJQYW_DEXLKVZ5KmYc,1325
25
25
  vellum_ee/workflows/display/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
- vellum_ee/workflows/display/nodes/tests/test_base_node_display.py,sha256=0y20AAqDivg58hQjHbiCPjEdEghfWmWr-NdYw3u-AwM,1054
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
29
  vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=nmPLj8vkbVCS46XQqmHq8Xj8Mr36wCK_vWf26A9KIkw,1505
30
30
  vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=4SSQGecKWHuoGy5YIGJeOZVHGKwTs_8Y-gf3GvsHb0M,8506
31
- vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=qJXUTVGfL88Katxu6HQb4yCPUzBFTBFDXcf8pdId3U8,4076
32
- vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=gUbSP8_oSAMNIb0CGiefd2FMYgoO6wMoG6iA1FakMjk,13293
31
+ vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=_sdLmmOa1ZqZQZXzw0GMoUpgnV1sdOfc_19LJCBS_Xc,4288
32
+ vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=9JjtXTpyC14X5e1ntue2BcDif-jJA-wyDBd3hE6_gv4,13282
33
33
  vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=ygTjSjYDI4DtkxADWub5rhBnRWItMKWF6fezBrgpOKA,1979
34
- vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=UezalObmZ3mcg7Nou2RgiI_0cmc7_tSdZLNB591iCcI,2772
34
+ vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=t5iJQVoRT5g-v2IiUb4kFYdvUVKch0zn27016pzDZoo,2761
35
35
  vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=3TJvHX_Uuf_gr94VkYc_zmNH8I5p71ChIeoAbJZ3ddY,2158
36
- vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=sj-pySLVYGt032debhcQhHc5JwrALQrNCEKh3DXc8F8,7386
36
+ vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=aU_jZeV0CC3JkIo_LHSh7peLbJEqEaV4odrLPtqzRxI,7375
37
37
  vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=x5wiuWbRjxNcPGu8BoBEKHwPeqCpHE-vrGjAdM5TJOs,4721
38
38
  vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=AqUlItgSZij12qRKguKVmDbbaLuDy3Cdom5uOlJPqrc,3640
39
- vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=BM3nfL0-D8x91xW0MGhnJFo45ZgGLXDqdbiSGoSuXN0,3244
39
+ vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=jzO63B9KiEAncnBqmz2ZTcxjmEHozMEe7WnfpcpsQYg,3195
40
40
  vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=9VpC3h0RYOxJuRbjDwidBYlLKakkmlEnDMBh2C7lHcY,1107
41
41
  vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=gLRkizwyw21-Z12IyDbdOJpXayiZZd4HWd6qgZQg8sc,3106
42
- vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=yH_xeb03kLsfTbhrZL7HPjNLGP9SepFcBjDHY7CggOo,8692
42
+ vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=I4_ENFWEhHUDYFUWF67-EyToCwmJynAXcbNpqw6Cpio,8681
43
43
  vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=zOp4voBSgB3MR1R93wTOrsiiara_hxEAYFupLl_SvTA,2657
44
44
  vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=UNYxoE-89agE8ugK0aWg_uN61jPqlC2VSxWHk568sN4,3324
45
45
  vellum_ee/workflows/display/nodes/vellum/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
- vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=ZUp2fmDF4JTni1NjJOIV8dJoxx22eMBskmBJFsjtEvE,3809
47
- vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=m4d6hi6oD-jSW_bjrlN8coVwb6ivC2amPHpePHJ-Htg,2278
48
- vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=golxvSM6HIZ4uYKbfcI7muVJuckFZQcGFCAFvfx4Cls,4654
46
+ vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=aJfQnIvlrRHVKgQid_gg6VQKkJyPgFnzbvWt9_t0Vz0,3860
47
+ vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=4k9DdjjCkZ_-4qynwg40IipT5Sq2WwgYFFE8WMnMdr0,2612
48
+ vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=3QsKS5Kht2Nod4A18T0bb4filK9AkyK5oImVlViK3l8,4643
49
49
  vellum_ee/workflows/display/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
50
  vellum_ee/workflows/display/tests/test_vellum_workflow_display.py,sha256=TEg3QbdE7rLbEhml9pMWmay--phsekGlfGVhTblxCGE,1727
51
51
  vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
52
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=e__ae2yepB5vlgVT08sr1DDB8pYjax6VQLo5FtRk-nA,17934
53
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=0McMPIPnIwE8iGh7fzFZL3dc6Q7NCQ_wUVFpl14YATo,22846
53
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=F822H2tM3Fvmc2PvunrVCRhtSKQLLpi5y2L1gyJKa78,31576
54
54
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=d6xWDvi-Uo1KcMHVj_e8TujKhTwMKXAlT8H3P2V0gQU,53693
55
55
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=MGwIwhCBCVYZmE_8Srts3fEs0BcRqXFFVbqiHiBQ55Q,6798
56
56
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=vA8cd7PJYhf949OUGeYP_moKtMogSyfHN2Z-qzNQLwM,8294
@@ -65,21 +65,18 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_ser
65
65
  vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=BGCgJ3WWiYK5fWJp_Yz-aWQPli5sIKOhLTVYfG9Tpq8,9177
66
66
  vellum_ee/workflows/display/types.py,sha256=FSPg3TO8iNE2gnl1vn-nsMfit2V6yeBXW0Igh089A9w,2011
67
67
  vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
- vellum_ee/workflows/display/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
- vellum_ee/workflows/display/utils/tests/test_uuids.py,sha256=ItjROhaPns8_mlvD17LIBwZKvhe2l0dXEd5oL-JiY64,448
70
- vellum_ee/workflows/display/utils/uuids.py,sha256=DFzPv9RCvsKhvdTEIQyfSek2A31D6S_QcmeLPbgrgTY,739
71
68
  vellum_ee/workflows/display/utils/vellum.py,sha256=IlkKrfAAi4BV_HFnsdMFxNJC2-TrPM9ubVHv8ikmbSA,5110
72
69
  vellum_ee/workflows/display/vellum.py,sha256=OSv0ZS50h1zJbunJ9TH7VEWFw-exXdK_ZsdzPxP9ROs,8814
73
70
  vellum_ee/workflows/display/workflows/__init__.py,sha256=kapXsC67VJcgSuiBMa86FdePG5A9kMB5Pi4Uy1O2ob4,207
74
- vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=HkakkrNgVFoHlUP7yHlQjHOvii3CZ90iyU1062PfoW4,12819
71
+ vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=ydAbFMzcY2LURINZbXYm9BAXZdIa3-7rQ86Kupo7qcA,12804
75
72
  vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=AMxNnTm2z3LIR5rqxoCAfuy37F2FTuSRDVtKUoezO8M,1184
76
- vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=DWaiYdP138kN3fbQvloh6VEBPlxzd6zSLydc6NpYu3s,17145
73
+ vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=CvxUFudijGW4M7vapm_qrNG4X36PZxzFh6n6qBE9E1Y,17134
77
74
  vellum/__init__.py,sha256=QmGeEPXeFxgkZa849KKK3wH3Y641wyt00Rytfay6KiM,35520
78
75
  vellum/client/README.md,sha256=JkCJjmMZl4jrPj46pkmL9dpK4gSzQQmP5I7z4aME4LY,4749
79
76
  vellum/client/__init__.py,sha256=o4m7iRZWEV8rP3GkdaztHAjNmjxjWERlarviFoHzuKI,110927
80
77
  vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
81
78
  vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
82
- vellum/client/core/client_wrapper.py,sha256=6zb4goHdzGRX1BY9bkyHFFaNstiWKUbnXvOxT_2cidM,1891
79
+ vellum/client/core/client_wrapper.py,sha256=7B5-HJvBvBhn2oOykuU54mjzw4eFMHzaowkShcRVK4c,1890
83
80
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
84
81
  vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
85
82
  vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
@@ -1206,8 +1203,8 @@ vellum/workflows/__init__.py,sha256=CssPsbNvN6rDhoLuqpEv7MMKGa51vE6dvAh6U31Pcio,
1206
1203
  vellum/workflows/constants.py,sha256=Z0W4YlqfSlSgWC11PrVUPs6ZOBeIaQ78E_90J1hohiw,789
1207
1204
  vellum/workflows/context.py,sha256=R8qdsFbD_0p7B6PWnyvSrZ_aOgMtGw-_uk0P0UAmwLA,1230
1208
1205
  vellum/workflows/descriptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1209
- vellum/workflows/descriptors/base.py,sha256=2NQxURc_9QQ4pI9zICTZeULnS4OIml8fYcAkMgNU01Y,13830
1210
- vellum/workflows/descriptors/tests/test_utils.py,sha256=icwW-YkHD5oR6rn9IH6Rck9yYOsuwnocyJVHoeJFd74,2849
1206
+ vellum/workflows/descriptors/base.py,sha256=yLfr5qW5o7B2tLVvxEGeh-f6qiAQ735-9xrKOZ3HMc4,13830
1207
+ vellum/workflows/descriptors/tests/test_utils.py,sha256=Ct8ZRdK3TghVzuqv3a4pWk6p04szt5KOaizzk9LhY5Y,2849
1211
1208
  vellum/workflows/descriptors/utils.py,sha256=lO_dbr5g3PXpHPtVBkdguAK4-1qayZ7RXjl3BgAhrMM,3795
1212
1209
  vellum/workflows/edges/__init__.py,sha256=wSkmAnz9xyi4vZwtDbKxwlplt2skD7n3NsxkvR_pUus,50
1213
1210
  vellum/workflows/edges/edge.py,sha256=N0SnY3gKVuxImPAdCbPMPlHJIXbkQ3fwq_LbJRvVMFc,677
@@ -1215,15 +1212,15 @@ vellum/workflows/emitters/__init__.py,sha256=YyOgaoLtVW8eFNEWODzCYb0HzL0PoSeNRf4
1215
1212
  vellum/workflows/emitters/base.py,sha256=D5SADKIvnbgKwIBgYm77jaqvpo1o0rz4MmuX_muRqQU,359
1216
1213
  vellum/workflows/environment/__init__.py,sha256=wGHslgSEZ7Octe4C-hNtl84EFelNimgmWQoi7px4-uw,71
1217
1214
  vellum/workflows/environment/environment.py,sha256=IwcVSwA51jW1JTN_MAN22UbeAtZhiAVa_JRV4rmpAAs,219
1218
- vellum/workflows/errors/__init__.py,sha256=BRyo4hKP2ElS4k1YDu8VdY2VhUZjILtHn2sPFf_d7U0,105
1219
- vellum/workflows/errors/types.py,sha256=YQy6na_iBkqxl9GHKOcin44m8DMRG5KP9oLV1Lpal1M,541
1215
+ vellum/workflows/errors/__init__.py,sha256=tWGPu5xyAU8gRb8_bl0fL7OfU3wxQ9UH6qVwy4X4P_Q,113
1216
+ vellum/workflows/errors/types.py,sha256=mvywC2sXtpRrkDRfTx-O6aXAp0hOFyx27a1tqguKt4g,2493
1220
1217
  vellum/workflows/events/__init__.py,sha256=6pxxceJo2dcaRkWtkDAYlUQZ-PHBQSZytIoyuUK48Qw,759
1221
- vellum/workflows/events/node.py,sha256=3_NPVhXR-XMnNj5QVA_ycebs_-jRuGSLf5H7XjLQh8o,5258
1218
+ vellum/workflows/events/node.py,sha256=QOikR6w5KXJUjnDNF2RhjXRbG7lJySetAoPamyr733Y,5264
1222
1219
  vellum/workflows/events/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1223
- vellum/workflows/events/tests/test_event.py,sha256=IBP_fCT_kPDdSCdgDCo7eaG7MYUR6aF4EFxwFIr9lbA,12717
1220
+ vellum/workflows/events/tests/test_event.py,sha256=EFg34nGpl_LvbHWN5AuiMqH6PetwGF_z0TlETGsn_bU,12725
1224
1221
  vellum/workflows/events/types.py,sha256=7sBSMNstsibqq93Klu4A-GInzo4IB23xWel595Uyi_Y,3077
1225
- vellum/workflows/events/workflow.py,sha256=02UZE4sBpWrG2A3xddu8v0S9kPfo7YetX6xTvzKg-2w,5218
1226
- vellum/workflows/exceptions.py,sha256=Dc7mxstsaMDRmS91QEOiZCbZ1ZIRacnm0l5lQmC6WkA,401
1222
+ vellum/workflows/events/workflow.py,sha256=LW1qjLYCa9mpZjxp6YuDDA0M-q0COBIfLuduP9pOfyo,5224
1223
+ vellum/workflows/exceptions.py,sha256=gXQvDL919cK3pwXc8BhLGKmR-YOskYDLvL1zPSSmLS4,579
1227
1224
  vellum/workflows/expressions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1228
1225
  vellum/workflows/expressions/accessor.py,sha256=OFvAHAVABr-k7GceIhtzIurV4OuV_yHft7JPRsq87Es,1472
1229
1226
  vellum/workflows/expressions/and_.py,sha256=I7lNqrUM3-m_5hmjjiMhaHhJtKcLj39kEFVWPDOqwfo,916
@@ -1260,49 +1257,49 @@ vellum/workflows/inputs/base.py,sha256=1kMgr0WqCYdWUqgFvgSoAMw2067FAlgwhGXLgbIOr
1260
1257
  vellum/workflows/logging.py,sha256=_a217XogktV4Ncz6xKFz7WfYmZAzkfVRVuC0rWob8ls,437
1261
1258
  vellum/workflows/nodes/__init__.py,sha256=aVdQVv7Y3Ro3JlqXGpxwaU2zrI06plDHD2aumH5WUIs,1157
1262
1259
  vellum/workflows/nodes/bases/__init__.py,sha256=Ll1Ti6t3e_HKtGLsQTHAJevDmfo0QtfgPZUZ9FCRduI,140
1263
- vellum/workflows/nodes/bases/base.py,sha256=atWeRf3BgTZpy5L3Mm47D6dca_sYKfSr5D3-fruwX_k,14056
1260
+ vellum/workflows/nodes/bases/base.py,sha256=oqNO8rEeSu86wBuXQ8pGIOCZP7Bc_PdDL1etz_ef2A0,14271
1264
1261
  vellum/workflows/nodes/bases/base_subworkflow_node/__init__.py,sha256=0nkHQiFC4IpA1ZGx60XG0BLUWF6hwUpgqmS3ZrlFGhg,80
1265
1262
  vellum/workflows/nodes/bases/base_subworkflow_node/node.py,sha256=vC0gUBQewAUNtP3i2G0-LUpE_kY-r_ijBD_tS1XkQ1E,383
1266
1263
  vellum/workflows/nodes/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1267
- vellum/workflows/nodes/bases/tests/test_base_node.py,sha256=A4hpFaG4TwpumTi4FV4KDMyUeixBc26mRzSIihxFiGo,3112
1264
+ vellum/workflows/nodes/bases/tests/test_base_node.py,sha256=ghpLm_ljNBxWs43GlvIId47hOVwKU50XpvZxmlg6_8g,3439
1268
1265
  vellum/workflows/nodes/core/__init__.py,sha256=5zDMCmyt1v0HTJzlUBwq3U9L825yZGZhT9JL18-mRR4,455
1269
1266
  vellum/workflows/nodes/core/error_node/__init__.py,sha256=g7RRnlHhqu4qByfLjBwCunmgGA8dI5gNsjS3h6TwlSI,60
1270
- vellum/workflows/nodes/core/error_node/node.py,sha256=hqBPHoLnhNrK9ITIaEzpnk47XYDbG6cmObz7oe78Ceg,944
1267
+ vellum/workflows/nodes/core/error_node/node.py,sha256=MFHU5vITYSK-L9CuMZ49In2ZeNLWnhZD0f8r5dWvb5Y,1270
1271
1268
  vellum/workflows/nodes/core/inline_subworkflow_node/__init__.py,sha256=nKNEH1QTl-1PcvmYoqSWEl0-t6gAur8GLTXHzklRQfM,84
1272
- vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=kkPb2opZ7J6pIWueU-WU43KXEwKY5GrANldmesRFetI,3469
1269
+ vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=vSlDEKwJsd2YazkWPRXPiNKZtbyhTBhfO3dJxcNiSWE,3059
1273
1270
  vellum/workflows/nodes/core/map_node/__init__.py,sha256=MXpZYmGfhsMJHqqlpd64WiJRtbAtAMQz-_3fCU_cLV0,56
1274
- vellum/workflows/nodes/core/map_node/node.py,sha256=LEohCiS1HffS5dD6V0GWgjktf3Z4J9v7FZdVDNTpF5o,7284
1271
+ vellum/workflows/nodes/core/map_node/node.py,sha256=vubEWObFh6rVUZ9GGHSi7H9b-Y-SHCwEgYkgdb3QTgM,7288
1275
1272
  vellum/workflows/nodes/core/map_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1276
1273
  vellum/workflows/nodes/core/map_node/tests/test_node.py,sha256=RHSZs7t6mW3UWvRrXnHZqaXVdRT2ZquOK_YHJ-gzXsU,1871
1277
1274
  vellum/workflows/nodes/core/retry_node/__init__.py,sha256=lN2bIy5a3Uzhs_FYCrooADyYU6ZGShtvLKFWpelwPvo,60
1278
- vellum/workflows/nodes/core/retry_node/node.py,sha256=ZDMk6h17Fzq5lP66iXrgtyuBo2RKsIxWJqMa0x3FG1k,4213
1275
+ vellum/workflows/nodes/core/retry_node/node.py,sha256=IjNcpzFmHyBUjOHEoULLbKf85B5Dva2XNR6jxPxZeoc,4223
1279
1276
  vellum/workflows/nodes/core/retry_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1280
- vellum/workflows/nodes/core/retry_node/tests/test_node.py,sha256=zANiu9-d-uIOP9tiSEFiXiVLRt_BJ76Dh6Obgk2BUsA,3120
1277
+ vellum/workflows/nodes/core/retry_node/tests/test_node.py,sha256=QXTnHwmJHISxXjvZMeuuEo0iVugVMJyaJoggI8yKXfI,3132
1281
1278
  vellum/workflows/nodes/core/templating_node/__init__.py,sha256=GmyuYo81_A1_Bz6id69ozVFS6FKiuDsZTiA3I6MaL2U,70
1282
1279
  vellum/workflows/nodes/core/templating_node/custom_filters.py,sha256=Q0DahYRHP4KfaUXDt9XxN-DFLBrAxlv90yaVqxScoUw,264
1283
1280
  vellum/workflows/nodes/core/templating_node/exceptions.py,sha256=cDp140PP4OnInW4qAvg3KqiSiF70C71UyEAKRBR1Abo,46
1284
- vellum/workflows/nodes/core/templating_node/node.py,sha256=19OFvRimrp1YuUO7H4rU7ZDsuawKvuwwVEAix7qBugs,4500
1281
+ vellum/workflows/nodes/core/templating_node/node.py,sha256=Q5U5lAW1nhGFJPc94Gxnq1s5RWrbOo7G_AY4n-ABmGg,4504
1285
1282
  vellum/workflows/nodes/core/templating_node/render.py,sha256=OpJp0NAH6qcEL6K9lxR0qjpFb75TYNttJR5iCos8tmg,1792
1286
1283
  vellum/workflows/nodes/core/templating_node/tests/test_templating_node.py,sha256=0BtXeSix7KGIuKzlPFTMLATpNnFPhut1UV_srGptkt0,1120
1287
1284
  vellum/workflows/nodes/core/try_node/__init__.py,sha256=JVD4DrldTIqFQQFrubs9KtWCCc0YCAc7Fzol5ZWIWeM,56
1288
- vellum/workflows/nodes/core/try_node/node.py,sha256=XS-xZaJ_tM3sS-FjWU-FCk9x4Id2lrniyknORgg0KjA,6654
1285
+ vellum/workflows/nodes/core/try_node/node.py,sha256=_xkpUNIfHXuwjivMBxdU5DegsNge2ITW5nBifWmBPTY,6670
1289
1286
  vellum/workflows/nodes/core/try_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1290
- vellum/workflows/nodes/core/try_node/tests/test_node.py,sha256=iD_ZjgB-v7pOYS6VjsqC-FWAFw8xvnEb-xXeau1Cuk0,4053
1287
+ vellum/workflows/nodes/core/try_node/tests/test_node.py,sha256=uqMU7ZPPHI6a-VoWnMSVwTHoRmqCk6w8wzaXogTV_J4,4093
1291
1288
  vellum/workflows/nodes/displayable/__init__.py,sha256=6F_4DlSwvHuilWnIalp8iDjjDXl0Nmz4QzJV2PYe5RI,1023
1292
1289
  vellum/workflows/nodes/displayable/api_node/__init__.py,sha256=MoxdQSnidIj1Nf_d-hTxlOxcZXaZnsWFDbE-PkTK24o,56
1293
1290
  vellum/workflows/nodes/displayable/api_node/node.py,sha256=ehvJNkI-L_WLn8pszCaRkQuhRDgioCLaX6TT72KM_9E,2111
1294
1291
  vellum/workflows/nodes/displayable/bases/__init__.py,sha256=0mWIx3qUrzllV7jqt7wN03vWGMuI1WrrLZeMLT2Cl2c,304
1295
1292
  vellum/workflows/nodes/displayable/bases/api_node/__init__.py,sha256=1jwx4WC358CLA1jgzl_UD-rZmdMm2v9Mps39ndwCD7U,64
1296
- vellum/workflows/nodes/displayable/bases/api_node/node.py,sha256=_Nybw3NORjKkLBAzLidm08WL_kiNPTH6am-hZ8k2w0Q,2475
1293
+ vellum/workflows/nodes/displayable/bases/api_node/node.py,sha256=x0RQVoG1yvokaPfGgf719qd0Lt5qxCvKFqyehYiGyqA,2481
1297
1294
  vellum/workflows/nodes/displayable/bases/base_prompt_node/__init__.py,sha256=Org3xTvgp1pA0uUXFfnJr29D3HzCey2lEdYF4zbIUgo,70
1298
- vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=82y-74GBcxQXjEEmQJ7oo803iVjWM_HSN5zRVwGtpWk,2425
1295
+ vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=EvylK1rGKpd4iiooEW9O5A9Q8DMTtBwETe_GtQT8M-E,2139
1299
1296
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/__init__.py,sha256=Hl35IAoepRpE-j4cALaXVJIYTYOF3qszyVbxTj4kS1s,82
1300
1297
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/constants.py,sha256=fnjiRWLoRlC4Puo5oQcpZD5Hd-EesxsAo9l5tGAkpZQ,270
1301
- vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=1_OXDxzh-8m5O5XQzo3Q6RY679JvsN4km2sfzyGuLc0,5394
1302
- vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=MdrAKN8QGPk_JnNjbEBaVVKwVLPE2judbBcWuYJgbkY,4964
1303
- vellum/workflows/nodes/displayable/bases/search_node.py,sha256=S7J8tTW681O4wcWYerGOfH6h-_BlE8-JMJHpW8eCVG0,3564
1298
+ vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=mtnqcfpY5UYKCUm8HVL42juf5Q8MoJRg94V6CyEgZpQ,5398
1299
+ vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=zdpNJoawB5PedsCCfgOGDDoWuif0jNtlV-K9sFL6cNQ,4968
1300
+ vellum/workflows/nodes/displayable/bases/search_node.py,sha256=pqiui8G6l_9FLE1HH4rCdFC73Bl7_AIBAmQQMjqe190,3570
1304
1301
  vellum/workflows/nodes/displayable/code_execution_node/__init__.py,sha256=0FLWMMktpzSnmBMizQglBpcPrP80fzVsoJwJgf822Cg,76
1305
- vellum/workflows/nodes/displayable/code_execution_node/node.py,sha256=OHU9SnB0JDTTSFIp7io-9Jckelqtq84AP-QOcZBRNXY,8640
1302
+ vellum/workflows/nodes/displayable/code_execution_node/node.py,sha256=JgyTgZRSb-gSXL4ccHn4VkPcPZFOkVK5ohPazPqSWFw,8652
1306
1303
  vellum/workflows/nodes/displayable/code_execution_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1307
1304
  vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1308
1305
  vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/main.py,sha256=5QsbmkzSlSbcbWTG_JmIqcP-JNJzOPTKxGzdHos19W4,79
@@ -1313,24 +1310,24 @@ vellum/workflows/nodes/displayable/conditional_node/node.py,sha256=REFZdEVetXGyO
1313
1310
  vellum/workflows/nodes/displayable/final_output_node/__init__.py,sha256=G7VXM4OWpubvSJtVkGmMNeqgb9GkM7qZT838eL18XU4,72
1314
1311
  vellum/workflows/nodes/displayable/final_output_node/node.py,sha256=iH3ZPOstPku_rg4h97Xz5FMaHWVRCjypaamAFzoJzJ0,1854
1315
1312
  vellum/workflows/nodes/displayable/guardrail_node/__init__.py,sha256=Ab5eXmOoBhyV4dMWdzh32HLUmnPIBEK_zFCT38C4Fng,68
1316
- vellum/workflows/nodes/displayable/guardrail_node/node.py,sha256=fJUAcCT4VPKXtEUNaMriJBA794dUivsBgXRGQOe50LI,3917
1313
+ vellum/workflows/nodes/displayable/guardrail_node/node.py,sha256=7Ep7Ff7FtFry3Jwxhg_npF_-jT2P6TGKp5MRNnCZ8Tc,3923
1317
1314
  vellum/workflows/nodes/displayable/inline_prompt_node/__init__.py,sha256=gSUOoEZLlrx35-tQhSAd3An8WDwBqyiQh-sIebLU9wU,74
1318
- vellum/workflows/nodes/displayable/inline_prompt_node/node.py,sha256=deXY4-UgKKH_ZyBM2XiauCogj0qPCENHxiyTLVV32XA,2113
1315
+ vellum/workflows/nodes/displayable/inline_prompt_node/node.py,sha256=dTnP1yH1P0NqMw3noxt9XwaDCpX8ZOhuvVYNAn_DdCQ,2119
1319
1316
  vellum/workflows/nodes/displayable/merge_node/__init__.py,sha256=J8IC08dSH7P76wKlNuxe1sn7toNGtSQdFirUbtPDEs0,60
1320
1317
  vellum/workflows/nodes/displayable/merge_node/node.py,sha256=ZyPvcTgfPOneOm5Dc2kUOoPkwNJqwRPZSj232akXynA,324
1321
1318
  vellum/workflows/nodes/displayable/note_node/__init__.py,sha256=KWA3P4fyYJ-fOTky8qNGlcOotQ-HeHJ9AjZt6mRQmCE,58
1322
1319
  vellum/workflows/nodes/displayable/note_node/node.py,sha256=8rwP7RS1OOyQJ-ZuZBXTCtT2ZW8J6eGD59iKmq_pB24,258
1323
1320
  vellum/workflows/nodes/displayable/prompt_deployment_node/__init__.py,sha256=krX1Hds-TSVYZsx0wJFX4wsAKkEFYOX1ifwRGiIM-EA,82
1324
- vellum/workflows/nodes/displayable/prompt_deployment_node/node.py,sha256=hqzNnoTGn0rqAUA4V9aomhAQEXjzJSoAkfzIN2IA3Pg,2522
1321
+ vellum/workflows/nodes/displayable/prompt_deployment_node/node.py,sha256=cpOrqQQanZ0xO4B4B3mgyBWKcnkT5b0DFxOSeS8otrI,2528
1325
1322
  vellum/workflows/nodes/displayable/search_node/__init__.py,sha256=hpBpvbrDYf43DElRZFLzieSn8weXiwNiiNOJurERQbs,62
1326
1323
  vellum/workflows/nodes/displayable/search_node/node.py,sha256=yhFWulbNmSQoDAwtTSGD4AtKmBbcykezRGRG16xga_0,1311
1327
1324
  vellum/workflows/nodes/displayable/subworkflow_deployment_node/__init__.py,sha256=9yYM6001YZeqI1VOk1QuEM_yrffk_EdsO7qaPzINKds,92
1328
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=Y7Gczegn3KQC-wMw11VhwSDMe4kE8p2QIM1ABSYqZFg,7356
1325
+ vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=pnbRCgdzWXrXhm5jDkDDASl5xu5w3DxskC34yJVmWUs,7147
1329
1326
  vellum/workflows/nodes/displayable/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1330
- vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py,sha256=9x5y-SHLdW-jcbv_LVLJWALspBzjYDFezc1dpaisRvg,4697
1327
+ vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py,sha256=lLnXKAUYtgvQ6MpT4GoTrqLtdlyDlUt1pPHrmu-Gf00,4705
1331
1328
  vellum/workflows/nodes/displayable/tests/test_search_node_wth_text_output.py,sha256=4CMwDtXwTaEvFfDpA6j2iLqc7S6IICSkvVZOobEpeps,6954
1332
1329
  vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py,sha256=KqKJtJ0vuNoPuUPMdILmBTt4a2fBBxxun-nmOI7T8jo,2585
1333
- vellum/workflows/nodes/utils.py,sha256=zY0b5WjJtGwVPPLY3ffHUdRREPvyoNwmJDigz5jQRAI,812
1330
+ vellum/workflows/nodes/utils.py,sha256=RWQbcc6MgxHNwFjtasY4hzIH8pKe0E3zfVt6eJKGTp4,587
1334
1331
  vellum/workflows/outputs/__init__.py,sha256=AyZ4pRh_ACQIGvkf0byJO46EDnSix1ZCAXfvh-ms1QE,94
1335
1332
  vellum/workflows/outputs/base.py,sha256=a7W6rNSDSawwGAXYjNTF2iHb9lnZu7WFSOagZIyy__k,7976
1336
1333
  vellum/workflows/ports/__init__.py,sha256=bZuMt-R7z5bKwpu4uPW7LlJeePOQWmCcDSXe5frUY5g,101
@@ -1340,18 +1337,18 @@ vellum/workflows/ports/utils.py,sha256=pEjVNJKw9LhD_cFN-o0MWBOW2ejno7jv26qqzjLxw
1340
1337
  vellum/workflows/references/__init__.py,sha256=glHFC1VfXmcbNvH5VzFbkT03d8_D7MMcvEcsUBrzLIs,591
1341
1338
  vellum/workflows/references/environment_variable.py,sha256=7FFtiKfc4eyVkkfUbhc666OBNDqvFlMoNQEYmGpEVVE,661
1342
1339
  vellum/workflows/references/execution_count.py,sha256=JILHqt8ELdc9ct-WsVCA5X-rKiP1rmJODw-XTf4kpHI,722
1343
- vellum/workflows/references/external_input.py,sha256=ZSnRIjrTwpWuBcInZMvQQzcDgkeZ1r7-C7I4sRpDNy4,1658
1340
+ vellum/workflows/references/external_input.py,sha256=XHugauKYvAmsGoFnjgJh00FcXjSMIqBvRun_CZuJD64,1662
1344
1341
  vellum/workflows/references/input.py,sha256=3INu-TLTi4dziWmva6LO3WvgDlPzsjayUx61cVvqLJA,325
1345
1342
  vellum/workflows/references/lazy.py,sha256=SXwZUCTzUR-R2-uK0XHALtvp1x84l-QkNY-Ds6KynYA,1932
1346
- vellum/workflows/references/node.py,sha256=hXN6ZSpcRqJ4s4e7_UMlIU3pw_qNxUBuWGVfiEDJmMI,1414
1343
+ vellum/workflows/references/node.py,sha256=LP854wDVs-9I_aZ7-nkbwXqL2H7W2_3LED2e9FixNS8,1418
1347
1344
  vellum/workflows/references/output.py,sha256=6F4zIrGykDxBsR6qEXxEKncQV5zV4yHafnHRNkxvklc,2780
1348
- vellum/workflows/references/state_value.py,sha256=GN1LMVaPn89pfKHe03zJO5v6uoXyR5E0vQNzYJ3ZhMM,707
1345
+ vellum/workflows/references/state_value.py,sha256=bInUF0A3Pt4-zhA0f6LdSuyv8tz7n5QRkHAEn4gsmqI,711
1349
1346
  vellum/workflows/references/vellum_secret.py,sha256=Od4d19a5yletWMqNfJR5d_mZQUkVcFzj29mE-T9J7yE,480
1350
- vellum/workflows/references/workflow_input.py,sha256=epspVRZ9n_nxoTxI5Am3GDd2fpUqVd9FJ61oqm9Gz58,1411
1347
+ vellum/workflows/references/workflow_input.py,sha256=86IuhlBz-9cGxeUzizyjdp482ajcl7h8MnX1soNFMII,1415
1351
1348
  vellum/workflows/resolvers/__init__.py,sha256=eH6hTvZO4IciDaf_cf7aM2vs-DkBDyJPycOQevJxQnI,82
1352
1349
  vellum/workflows/resolvers/base.py,sha256=WHra9LRtlTuB1jmuNqkfVE2JUgB61Cyntn8f0b0WZg4,411
1353
1350
  vellum/workflows/runner/__init__.py,sha256=i1iG5sAhtpdsrlvwgH6B-m49JsINkiWyPWs8vyT-bqM,72
1354
- vellum/workflows/runner/runner.py,sha256=7mSVaqJjyVljuuy3-bIO56mzXXMeQwKcYzZOuo8aC8E,27573
1351
+ vellum/workflows/runner/runner.py,sha256=RXnLEmSJFbp0u4vKF7rvD2fscuYfcRYkspIJINnvFAI,27607
1355
1352
  vellum/workflows/state/__init__.py,sha256=yUUdR-_Vl7UiixNDYQZ-GEM_kJI9dnOia75TtuNEsnE,60
1356
1353
  vellum/workflows/state/base.py,sha256=jpSzF1OQd3-fqi6dMGlNsQl-7JnJxCdzWIigmX8Wz-I,14425
1357
1354
  vellum/workflows/state/context.py,sha256=oXiEdNsWJi1coRB85IreTgUeR6_CrWWBXndtLff9S7M,1272
@@ -1372,14 +1369,16 @@ vellum/workflows/utils/names.py,sha256=QLUqfJ1tmSEeUwBKTTiv_Qk3QGbInC2RSmlXfGXc8
1372
1369
  vellum/workflows/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1373
1370
  vellum/workflows/utils/tests/test_functions.py,sha256=68OdrS1Gf3incmRd4g3a7-nylqQbJdQjl7AyfVUJg5I,5223
1374
1371
  vellum/workflows/utils/tests/test_names.py,sha256=aOqpyvMsOEK_9mg_-yaNxQDW7QQfwqsYs37PseyLhxw,402
1372
+ vellum/workflows/utils/tests/test_uuids.py,sha256=i77ABQ0M3S-aFLzDXHJq_yr5FPkJEWCMBn1HJ3DObrE,437
1375
1373
  vellum/workflows/utils/tests/test_vellum_variables.py,sha256=0ISy1xjY7_rci0Mt_naK0xrmurE1REZLMCgPOCLFKRM,776
1374
+ vellum/workflows/utils/uuids.py,sha256=DFzPv9RCvsKhvdTEIQyfSek2A31D6S_QcmeLPbgrgTY,739
1376
1375
  vellum/workflows/utils/vellum_variables.py,sha256=DsjVj_M_vTafpi5OUDs4KNrmbU2n4LR7fcLhuHb67Z4,3123
1377
1376
  vellum/workflows/vellum_client.py,sha256=ODrq_TSl-drX2aezXegf7pizpWDVJuTXH-j6528t75s,683
1378
1377
  vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
1379
- vellum/workflows/workflows/base.py,sha256=mnI-kZ78yt7u6NFSTUo-tYjDnarP-RJ7uZjwjCn6PCQ,16795
1378
+ vellum/workflows/workflows/base.py,sha256=jFu_AAyt4IqOrwanyflNnDhgYpX4oTVR5xnow8ynRhg,16811
1380
1379
  vellum/workflows/workflows/event_filters.py,sha256=-uQcMB7IpPd-idMku8f2QNVhPXPFWo6FZLlGjRf8rCo,1996
1381
- vellum_ai-0.11.10.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1382
- vellum_ai-0.11.10.dist-info/METADATA,sha256=mPMns1QolQ74Dw64M1w0SbtZXWFMMpEfK7VBYRrAmj8,5129
1383
- vellum_ai-0.11.10.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1384
- vellum_ai-0.11.10.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1385
- vellum_ai-0.11.10.dist-info/RECORD,,
1380
+ vellum_ai-0.12.0.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1381
+ vellum_ai-0.12.0.dist-info/METADATA,sha256=G0NUeEg1fGbbdnprmeZoIMid6axw--aQsIRB6E2TyJs,5128
1382
+ vellum_ai-0.12.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1383
+ vellum_ai-0.12.0.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1384
+ vellum_ai-0.12.0.dist-info/RECORD,,
@@ -1,18 +1,30 @@
1
1
  from functools import cached_property
2
2
  import inspect
3
3
  from uuid import UUID
4
- from typing import TYPE_CHECKING, Any, Dict, Generic, Optional, Type, TypeVar, cast, get_args, get_origin
4
+ from typing import (
5
+ TYPE_CHECKING,
6
+ Any,
7
+ Dict,
8
+ ForwardRef,
9
+ Generic,
10
+ Optional,
11
+ Tuple,
12
+ Type,
13
+ TypeVar,
14
+ cast,
15
+ get_args,
16
+ get_origin,
17
+ )
5
18
 
6
19
  from vellum.workflows.nodes.bases.base import BaseNode
7
- from vellum.workflows.nodes.utils import get_wrapped_node, has_wrapped_node
8
20
  from vellum.workflows.ports import Port
9
21
  from vellum.workflows.references import OutputReference
10
22
  from vellum.workflows.types.core import JsonObject
11
23
  from vellum.workflows.types.generics import NodeType
12
24
  from vellum.workflows.types.utils import get_original_base
13
25
  from vellum.workflows.utils.names import pascal_to_title_case
26
+ from vellum.workflows.utils.uuids import uuid4_from_hash
14
27
  from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay, PortDisplay, PortDisplayOverrides
15
- from vellum_ee.workflows.display.utils.uuids import uuid4_from_hash
16
28
  from vellum_ee.workflows.display.vellum import CodeResourceDefinition, NodeDefinition
17
29
 
18
30
  if TYPE_CHECKING:
@@ -21,16 +33,24 @@ if TYPE_CHECKING:
21
33
  _NodeDisplayAttrType = TypeVar("_NodeDisplayAttrType")
22
34
 
23
35
 
24
- class BaseNodeDisplay(Generic[NodeType]):
36
+ class BaseNodeDisplayMeta(type):
37
+ def __new__(mcs, name: str, bases: Tuple[Type, ...], dct: Dict[str, Any]) -> Any:
38
+ cls = super().__new__(mcs, name, bases, dct)
39
+ if isinstance(dct.get("node_id"), UUID):
40
+ # Display classes are able to override the id of the node class it's parameterized by
41
+ base_node_display_class = cast(Type["BaseNodeDisplay"], cls)
42
+ node_class = base_node_display_class.infer_node_class()
43
+ node_class.__id__ = dct["node_id"]
44
+ return cls
45
+
46
+
47
+ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
25
48
  output_display: Dict[OutputReference, NodeOutputDisplay] = {}
26
49
  port_displays: Dict[Port, PortDisplayOverrides] = {}
27
50
 
28
51
  # Used to store the mapping between node types and their display classes
29
52
  _node_display_registry: Dict[Type[NodeType], Type["BaseNodeDisplay"]] = {}
30
53
 
31
- def __init__(self, node: Type[NodeType]):
32
- self._node = node
33
-
34
54
  def serialize(self, display_context: "WorkflowDisplayContext", **kwargs: Any) -> JsonObject:
35
55
  raise NotImplementedError(f"Serialization for nodes of type {self._node.__name__} is not supported.")
36
56
 
@@ -71,6 +91,23 @@ class BaseNodeDisplay(Generic[NodeType]):
71
91
  def get_from_node_display_registry(cls, node_class: Type[NodeType]) -> Type["BaseNodeDisplay"]:
72
92
  return cls._node_display_registry[node_class]
73
93
 
94
+ @classmethod
95
+ def infer_node_class(cls) -> Type[NodeType]:
96
+ original_base = get_original_base(cls)
97
+ node_class = get_args(original_base)[0]
98
+ if isinstance(node_class, TypeVar):
99
+ bounded_class = node_class.__bound__
100
+ if inspect.isclass(bounded_class) and issubclass(bounded_class, BaseNode):
101
+ return cast(Type[NodeType], bounded_class)
102
+
103
+ if isinstance(bounded_class, ForwardRef) and bounded_class.__forward_arg__ == BaseNode.__name__:
104
+ return cast(Type[NodeType], BaseNode)
105
+
106
+ if issubclass(node_class, BaseNode):
107
+ return node_class
108
+
109
+ raise ValueError(f"Node {cls.__name__} must be a subclass of {BaseNode.__name__}")
110
+
74
111
  @cached_property
75
112
  def node_id(self) -> UUID:
76
113
  """Can be overridden as a class attribute to specify a custom node id."""
@@ -81,6 +118,10 @@ class BaseNodeDisplay(Generic[NodeType]):
81
118
  """Can be overridden as a class attribute to specify a custom label."""
82
119
  return pascal_to_title_case(self._node.__name__)
83
120
 
121
+ @property
122
+ def _node(self) -> Type[NodeType]:
123
+ return self.infer_node_class()
124
+
84
125
  @classmethod
85
126
  def _get_explicit_node_display_attr(
86
127
  cls,
@@ -124,17 +165,5 @@ class BaseNodeDisplay(Generic[NodeType]):
124
165
  def __init_subclass__(cls, **kwargs: Any) -> None:
125
166
  super().__init_subclass__(**kwargs)
126
167
 
127
- original_base = get_original_base(cls)
128
- node_class = get_args(original_base)[0]
129
- if isinstance(node_class, TypeVar):
130
- bounded_class = node_class.__bound__
131
- if inspect.isclass(bounded_class) and issubclass(bounded_class, BaseNode):
132
- cls._node_display_registry[bounded_class] = cls
133
- elif issubclass(node_class, BaseNode):
134
- if has_wrapped_node(node_class):
135
- wrapped_node = get_wrapped_node(node_class)
136
- if wrapped_node._is_wrapped_node:
137
- cls._node_display_registry[wrapped_node] = cls
138
- return
139
-
140
- cls._node_display_registry[node_class] = cls
168
+ node_class = cls.infer_node_class()
169
+ cls._node_display_registry[node_class] = cls
@@ -3,9 +3,9 @@ from typing import ClassVar, Dict, Optional
3
3
 
4
4
  from vellum.workflows.ports import Port
5
5
  from vellum.workflows.types.generics import NodeType
6
+ from vellum.workflows.utils.uuids import uuid4_from_hash
6
7
  from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
7
8
  from vellum_ee.workflows.display.nodes.types import PortDisplay
8
- from vellum_ee.workflows.display.utils.uuids import uuid4_from_hash
9
9
  from vellum_ee.workflows.display.vellum import NodeDisplayData
10
10
 
11
11
 
@@ -1,3 +1,4 @@
1
+ import types
1
2
  from typing import Optional, Type
2
3
 
3
4
  from vellum.workflows.types.generics import NodeType
@@ -11,9 +12,17 @@ def get_node_display_class(
11
12
  node_display_class = base_class.get_from_node_display_registry(node_class)
12
13
  except KeyError:
13
14
  try:
14
- return get_node_display_class(
15
+ base_node_display_class = get_node_display_class(
15
16
  base_class, node_class.__bases__[0], node_class if root_node_class is None else root_node_class
16
17
  )
18
+
19
+ # `base_node_display_class` is always a Generic class, so it's safe to index into it
20
+ NodeDisplayBaseClass = base_node_display_class[node_class] # type: ignore[index]
21
+ NodeDisplayClass = types.new_class(
22
+ f"{node_class.__name__}Display",
23
+ bases=(NodeDisplayBaseClass,),
24
+ )
25
+ return NodeDisplayClass
17
26
  except IndexError:
18
27
  return base_class
19
28
 
@@ -15,7 +15,7 @@ def node_with_implicit_properties():
15
15
 
16
16
  expected_id = UUID("ace7f746-4fe6-45c7-8207-fc8a4d0c7f6f")
17
17
 
18
- return MyNode, MyNodeDisplay, expected_id
18
+ return MyNodeDisplay, expected_id
19
19
 
20
20
 
21
21
  @pytest.fixture
@@ -28,7 +28,7 @@ def node_with_explicit_properties():
28
28
  class MyNodeDisplay(BaseNodeDisplay[MyNode]):
29
29
  node_id = explicit_id
30
30
 
31
- return MyNode, MyNodeDisplay, explicit_id
31
+ return MyNodeDisplay, explicit_id
32
32
 
33
33
 
34
34
  @pytest.fixture(
@@ -42,6 +42,7 @@ def node_info(request):
42
42
 
43
43
 
44
44
  def test_get_id(node_info):
45
- node, node_display, expected_id = node_info
45
+ node_display, expected_id = node_info
46
46
 
47
- assert node_display(node).node_id == expected_id
47
+ assert node_display().node_id == expected_id
48
+ assert node_display.infer_node_class().__id__ == expected_id
@@ -28,12 +28,19 @@ class BaseCodeExecutionNodeDisplay(BaseNodeVellumDisplay[_CodeExecutionNodeType]
28
28
  ) -> JsonObject:
29
29
  node = self._node
30
30
  node_id = self.node_id
31
+ raw_code = raise_if_descriptor(node.code)
32
+ code_value = None
33
+
34
+ if raw_code:
35
+ code_value = raw_code
36
+ else:
37
+ node_file_path = inspect.getfile(node)
38
+ file_code = read_file_from_path(
39
+ node_filepath=node_file_path,
40
+ script_filepath=(raise_if_descriptor(node.filepath)), # type: ignore
41
+ )
42
+ code_value = file_code
31
43
 
32
- node_file_path = inspect.getfile(node)
33
- code = read_file_from_path(
34
- node_filepath=node_file_path,
35
- script_filepath=(raise_if_descriptor(node.filepath)), # type: ignore
36
- )
37
44
  code_inputs = raise_if_descriptor(node.code_inputs)
38
45
 
39
46
  inputs = [
@@ -50,7 +57,7 @@ class BaseCodeExecutionNodeDisplay(BaseNodeVellumDisplay[_CodeExecutionNodeType]
50
57
  code_node_input = create_node_input(
51
58
  node_id=node_id,
52
59
  input_name="code",
53
- value=code,
60
+ value=code_value,
54
61
  display_context=display_context,
55
62
  input_id=self.code_input_id,
56
63
  )
@@ -25,10 +25,10 @@ from vellum.workflows.expressions.not_in import NotInExpression
25
25
  from vellum.workflows.expressions.or_ import OrExpression
26
26
  from vellum.workflows.nodes.displayable import ConditionalNode
27
27
  from vellum.workflows.types.core import ConditionType, JsonObject
28
+ from vellum.workflows.utils.uuids import uuid4_from_hash
28
29
  from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
29
30
  from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input
30
31
  from vellum_ee.workflows.display.types import WorkflowDisplayContext
31
- from vellum_ee.workflows.display.utils.uuids import uuid4_from_hash
32
32
  from vellum_ee.workflows.display.vellum import NodeInput
33
33
 
34
34
  _ConditionalNodeType = TypeVar("_ConditionalNodeType", bound=ConditionalNode)
@@ -3,11 +3,11 @@ from typing import Any, ClassVar, Generic, Optional, TypeVar
3
3
 
4
4
  from vellum.workflows.nodes.displayable.final_output_node import FinalOutputNode
5
5
  from vellum.workflows.types.core import JsonObject
6
+ from vellum.workflows.utils.uuids import uuid4_from_hash
6
7
  from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
7
8
  from vellum_ee.workflows.display.nodes.utils import to_kebab_case
8
9
  from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input
9
10
  from vellum_ee.workflows.display.types import WorkflowDisplayContext
10
- from vellum_ee.workflows.display.utils.uuids import uuid4_from_hash
11
11
  from vellum_ee.workflows.display.utils.vellum import infer_vellum_variable_type
12
12
 
13
13
  _FinalOutputNodeType = TypeVar("_FinalOutputNodeType", bound=FinalOutputNode)
@@ -5,11 +5,11 @@ from vellum import PromptBlock, RichTextChildBlock, VellumVariable
5
5
  from vellum.workflows.nodes import InlinePromptNode
6
6
  from vellum.workflows.references import OutputReference
7
7
  from vellum.workflows.types.core import JsonObject
8
+ from vellum.workflows.utils.uuids import uuid4_from_hash
8
9
  from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
9
10
  from vellum_ee.workflows.display.nodes.utils import raise_if_descriptor
10
11
  from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input
11
12
  from vellum_ee.workflows.display.types import WorkflowDisplayContext
12
- from vellum_ee.workflows.display.utils.uuids import uuid4_from_hash
13
13
  from vellum_ee.workflows.display.utils.vellum import infer_vellum_variable_type
14
14
  from vellum_ee.workflows.display.vellum import NodeInput
15
15
 
@@ -1,11 +1,11 @@
1
1
  from uuid import UUID
2
- from typing import Any, ClassVar, Generic, List, Optional, Type, TypeVar
2
+ from typing import Any, ClassVar, Generic, List, Optional, TypeVar
3
3
 
4
4
  from vellum.workflows.nodes.displayable import MergeNode
5
5
  from vellum.workflows.types.core import JsonObject
6
+ from vellum.workflows.utils.uuids import uuid4_from_hash
6
7
  from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
7
8
  from vellum_ee.workflows.display.types import WorkflowDisplayContext
8
- from vellum_ee.workflows.display.utils.uuids import uuid4_from_hash
9
9
  from vellum_ee.workflows.display.vellum import EdgeVellumDisplay
10
10
 
11
11
  _MergeNodeType = TypeVar("_MergeNodeType", bound=MergeNode)
@@ -14,8 +14,8 @@ _MergeNodeType = TypeVar("_MergeNodeType", bound=MergeNode)
14
14
  class BaseMergeNodeDisplay(BaseNodeVellumDisplay[_MergeNodeType], Generic[_MergeNodeType]):
15
15
  target_handle_ids: ClassVar[List[UUID]]
16
16
 
17
- def __init__(self, node: Type[_MergeNodeType]):
18
- super().__init__(node)
17
+ def __init__(self):
18
+ super().__init__()
19
19
  self._target_handle_iterator = 0
20
20
 
21
21
  def serialize(self, display_context: WorkflowDisplayContext, **kwargs: Any) -> JsonObject:
@@ -10,11 +10,11 @@ from vellum import (
10
10
  from vellum.workflows.nodes.displayable.search_node import SearchNode
11
11
  from vellum.workflows.references import OutputReference
12
12
  from vellum.workflows.types.core import JsonArray, JsonObject
13
+ from vellum.workflows.utils.uuids import uuid4_from_hash
13
14
  from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
14
15
  from vellum_ee.workflows.display.nodes.utils import raise_if_descriptor
15
16
  from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input
16
17
  from vellum_ee.workflows.display.types import WorkflowDisplayContext
17
- from vellum_ee.workflows.display.utils.uuids import uuid4_from_hash
18
18
  from vellum_ee.workflows.display.vellum import InputVariablePointer, NodeInput
19
19
 
20
20
  _SearchNodeType = TypeVar("_SearchNodeType", bound=SearchNode)
@@ -37,6 +37,10 @@ class MyNodeA(BaseNode):
37
37
  output: str
38
38
 
39
39
 
40
+ class MyNodeADisplay(BaseNodeVellumDisplay[MyNodeA]):
41
+ pass
42
+
43
+
40
44
  class MyNodeB(BaseNode):
41
45
  example = MyNodeA.Outputs.output
42
46
  fallback_example = MyNodeA.Outputs.output.coalesce(Inputs.example_workflow_input).coalesce("fallback")
@@ -99,7 +103,7 @@ def test_create_node_input_value_pointer_rules(
99
103
  ),
100
104
  },
101
105
  node_displays={
102
- MyNodeA: BaseNodeVellumDisplay(MyNodeA),
106
+ MyNodeA: MyNodeADisplay(),
103
107
  },
104
108
  ),
105
109
  )