vellum-ai 0.10.6__py3-none-any.whl → 0.10.7__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. vellum/__init__.py +2 -0
  2. vellum/client/README.md +7 -52
  3. vellum/client/__init__.py +16 -136
  4. vellum/client/core/client_wrapper.py +1 -1
  5. vellum/client/resources/ad_hoc/client.py +14 -104
  6. vellum/client/resources/metric_definitions/client.py +113 -0
  7. vellum/client/resources/test_suites/client.py +8 -16
  8. vellum/client/resources/workflows/client.py +0 -32
  9. vellum/client/types/__init__.py +2 -0
  10. vellum/client/types/metric_definition_history_item.py +39 -0
  11. vellum/types/metric_definition_history_item.py +3 -0
  12. vellum/workflows/events/node.py +36 -3
  13. vellum/workflows/events/tests/test_event.py +89 -9
  14. vellum/workflows/nodes/displayable/conditional_node/node.py +2 -2
  15. vellum/workflows/ports/node_ports.py +2 -2
  16. vellum/workflows/ports/port.py +14 -0
  17. vellum/workflows/references/__init__.py +2 -0
  18. vellum/workflows/runner/runner.py +6 -7
  19. vellum/workflows/runner/types.py +1 -3
  20. vellum/workflows/state/encoder.py +2 -1
  21. vellum/workflows/types/tests/test_utils.py +6 -3
  22. vellum/workflows/types/utils.py +3 -0
  23. {vellum_ai-0.10.6.dist-info → vellum_ai-0.10.7.dist-info}/METADATA +1 -1
  24. {vellum_ai-0.10.6.dist-info → vellum_ai-0.10.7.dist-info}/RECORD +32 -30
  25. vellum_ee/workflows/display/nodes/vellum/final_output_node.py +4 -2
  26. vellum_ee/workflows/display/nodes/vellum/map_node.py +20 -48
  27. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +5 -16
  28. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +11 -8
  29. vellum_ee/workflows/display/utils/vellum.py +3 -2
  30. {vellum_ai-0.10.6.dist-info → vellum_ai-0.10.7.dist-info}/LICENSE +0 -0
  31. {vellum_ai-0.10.6.dist-info → vellum_ai-0.10.7.dist-info}/WHEEL +0 -0
  32. {vellum_ai-0.10.6.dist-info → vellum_ai-0.10.7.dist-info}/entry_points.txt +0 -0
@@ -26,11 +26,11 @@ vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=jQgm0dsQAlxZ0tYR_cv5
26
26
  vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=awjKut2m7HoEmqewRfdR1dw8ufA0Q5mVG8V8jhaHlKw,8572
27
27
  vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=bAtSJpcKyJW-VLvBEr92lKPpdPH1L_IA02qg78U1uFA,3403
28
28
  vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=v9g263oEtyL6ejp5ZfLrVfrcqU9gZwzuUI4yBuOScbI,12983
29
- vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=kR_z9ichhBtK_CLetqGjewmFmIFalfSiG2tQlM2T4yM,2772
29
+ vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=2HsghUtPBOQ-4sN-2jDOnbEuIwcsilDKO3f2o1WlYgw,2897
30
30
  vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=lr4d2uV3Lq8d22b5LCKbWMz_nU7Q0fvffcNQ7zx5Ygc,2163
31
31
  vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=0lX14iOxZhdKSXE6mzBAIw480nNJD_Sz4qo7WZAXYfQ,7391
32
32
  vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=rZmYQSCtm7bdiJ-ZYMyPpFnEwbNr85a45PXqESvLyus,4696
33
- vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=TvUSmq5s2kFqkex8Z5uB65HT2U2MUYmRteAuumR4ySY,4656
33
+ vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=rjsXrUt2PjD1HOS1xDVPn5ThTImsI048hVh_3A_G-14,3588
34
34
  vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=7YmVRNSI6RkK1rvg0b0zDeW2nnBIKir0ERzqqtT08I4,2218
35
35
  vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=gjYEp7DdTtdH-uJvVbMTOEoj8KokB5LQBR_JJulFHj4,1121
36
36
  vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=LbxpCKr4Ys9A-xtWU119Ry8IP7W3GGinPFWt9QAZAi8,3111
@@ -45,10 +45,10 @@ vellum_ee/workflows/display/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
45
45
  vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
46
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=bLdJ0VVwAPDRvwaJMiMf0fRCuIWvvuRjAxKzddGPFyA,16871
47
47
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=0McMPIPnIwE8iGh7fzFZL3dc6Q7NCQ_wUVFpl14YATo,22846
48
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=uGTR4g1epQOBKcS4RezFH1Py7-NWFvsuuRq52u2A2o4,54260
48
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=AOM1lN7_Y1wmorBpyF6Z2VVgrPUiFaePaGjauDluAsc,54187
49
49
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=IfO5Hmr1W41X2IVq-i6pG7BuevBPZU_s6ASTNVVVkdg,8298
50
50
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=c97A2tFWnNUXi3T4RLsvf3nZkUTPiGSC6XD_x1-ZK_U,22270
51
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=0560oLL81CJu2oowqlchloYrWz5MUF-Eih2WzDTFvvM,14981
51
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=Bx6tpFoW_7KrlsuzeEgXgQxa6CHJsQKwFZjilJsTivg,15451
52
52
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=NUe91w_AHNJmxDaP_51wLuQoaHKgwkq83OXy0fHNsK0,9997
53
53
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=hIpamI86C9tfL0aOPeCRgVGCklQ1WB4XjRb7esSmgas,9493
54
54
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=xK-3iQ05ZItncX6AQSzf4uUn0K2ObBm40wbtvGfgnkQ,12708
@@ -60,18 +60,18 @@ vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
60
60
  vellum_ee/workflows/display/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
61
  vellum_ee/workflows/display/utils/tests/test_uuids.py,sha256=ItjROhaPns8_mlvD17LIBwZKvhe2l0dXEd5oL-JiY64,448
62
62
  vellum_ee/workflows/display/utils/uuids.py,sha256=DFzPv9RCvsKhvdTEIQyfSek2A31D6S_QcmeLPbgrgTY,739
63
- vellum_ee/workflows/display/utils/vellum.py,sha256=NbjS_dKEgrwjV71xgxgsVnAn-PTZ67SBPgXMMnTbvfg,5133
63
+ vellum_ee/workflows/display/utils/vellum.py,sha256=PYxIFv0H_8byUZkrs4jWPpQ6ACElImOBU7FHZjKKXsI,5278
64
64
  vellum_ee/workflows/display/vellum.py,sha256=_-lLRZsEitt8fdUID62aiXptWa8rJhyqgL4uy1gDmc4,8783
65
65
  vellum_ee/workflows/display/workflows/__init__.py,sha256=kapXsC67VJcgSuiBMa86FdePG5A9kMB5Pi4Uy1O2ob4,207
66
66
  vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=HkakkrNgVFoHlUP7yHlQjHOvii3CZ90iyU1062PfoW4,12819
67
67
  vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=EN6gXo_uNRrQZtPjenSZHOge2ztz5J9k5tpsmfGulVY,1160
68
68
  vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=RxSnupMr7lEAAjiyTC1BGJzH4OtgSi63_-LwE7bil3o,16843
69
- vellum/__init__.py,sha256=xiYriEQZVk6SzItzQNOMpGoeO2yFTBGrEJZNHJesm8E,34416
70
- vellum/client/README.md,sha256=8cKUE1kSuhz-U87n3-clA7o9_zlP0Avr4qKbvRbdT2k,5984
71
- vellum/client/__init__.py,sha256=Fu-wzw_MiTtqAQOFhcFcrLKAPkEfUhf6K4ZuFspfKUw,115305
69
+ vellum/__init__.py,sha256=67DJaPyfV8hWJkx4pBssBAnlPm3jQMl8VqIn5TtBP3Q,34484
70
+ vellum/client/README.md,sha256=JkCJjmMZl4jrPj46pkmL9dpK4gSzQQmP5I7z4aME4LY,4749
71
+ vellum/client/__init__.py,sha256=o4m7iRZWEV8rP3GkdaztHAjNmjxjWERlarviFoHzuKI,110927
72
72
  vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
73
73
  vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
74
- vellum/client/core/client_wrapper.py,sha256=_3h16IFZNO44Mk4A5auvJ9iLW940O2VFwfgnE-j4910,1890
74
+ vellum/client/core/client_wrapper.py,sha256=c9d8t0gg4sHCfhz528mHO5hti3rrAmFRPArvRV33Lkk,1890
75
75
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
76
76
  vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
77
77
  vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
@@ -89,7 +89,7 @@ vellum/client/errors/internal_server_error.py,sha256=8USCagXyJJ1MOm9snpcXIUt6eNX
89
89
  vellum/client/errors/not_found_error.py,sha256=tBVCeBC8n3C811WHRj_n-hs3h8MqwR5gp0vLiobk7W8,262
90
90
  vellum/client/resources/__init__.py,sha256=2B6Oim7PG4IxSUNSzDY1EruQHsaZ7konj3j_WSTydCs,1378
91
91
  vellum/client/resources/ad_hoc/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
92
- vellum/client/resources/ad_hoc/client.py,sha256=6rsCw-oaq35-DVrb7NTyptc2WU9L6Eka99H3fNB0jA8,17749
92
+ vellum/client/resources/ad_hoc/client.py,sha256=HR5NwH12JPlaKBKKXtO9eiEe9_KTH11El3dbpG9nLuU,14403
93
93
  vellum/client/resources/container_images/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
94
94
  vellum/client/resources/container_images/client.py,sha256=jK1n-NFsdBKCeEKh-EIqvw7R8AG9PP4GxxcoH9F0GYs,15463
95
95
  vellum/client/resources/deployments/__init__.py,sha256=m64MNuPx3qVazOnTNwOY8oEeDrAkNwMJvUEe5xoMDvs,239
@@ -108,7 +108,7 @@ vellum/client/resources/folder_entities/client.py,sha256=ep5dnfJmEuEyrOSUftEVwKa
108
108
  vellum/client/resources/folder_entities/types/__init__.py,sha256=cHabrupjC-HL3kj-UZ9WdVzqHoQHCu6QsLFB3wlOs7k,212
109
109
  vellum/client/resources/folder_entities/types/folder_entities_list_request_entity_status.py,sha256=nK9b9fRSeCfjn2V2Hifl1IbhFeVsNkoeXJ8rCAPADFg,183
110
110
  vellum/client/resources/metric_definitions/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
111
- vellum/client/resources/metric_definitions/client.py,sha256=w-2IQ-ILDNqws6bWjZj6V9G86qw5zCVLXKq4j3Nebzw,5924
111
+ vellum/client/resources/metric_definitions/client.py,sha256=T3pS0tn2M1e-kdURLemdftGlVGfmxSozcV-SpJN5zvE,10100
112
112
  vellum/client/resources/ml_models/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
113
113
  vellum/client/resources/ml_models/client.py,sha256=XIYapTEY6GRNr7V0Kjy5bEeKmrhv9ul8qlQY2A5LFqQ,3872
114
114
  vellum/client/resources/sandboxes/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
@@ -116,7 +116,7 @@ vellum/client/resources/sandboxes/client.py,sha256=i-6DHap5k6gFcYS-kWI8ayJFVZxb-
116
116
  vellum/client/resources/test_suite_runs/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
117
117
  vellum/client/resources/test_suite_runs/client.py,sha256=gCF1ewlUrCsZhnXYOYqdUuD2twTrQ-u95xOgvRy7WAw,15130
118
118
  vellum/client/resources/test_suites/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
119
- vellum/client/resources/test_suites/client.py,sha256=XOSXVzgcnyescVX02aKdRzLSxY32xS0ULXbwc9XFAE8,25063
119
+ vellum/client/resources/test_suites/client.py,sha256=UDlFSHLdUFbZrjSq-uk6LA5O9SqgvAsQyrP8PpCeEBI,24659
120
120
  vellum/client/resources/workflow_deployments/__init__.py,sha256=_duH6m1CDWcfqX6DTBNjO3ar4Xrl-f5PozMaTcT4Kow,251
121
121
  vellum/client/resources/workflow_deployments/client.py,sha256=H9MhGYZVx1WLHE5j83Sl5HmX-CF6aJFCwQAGDG1n2oI,27149
122
122
  vellum/client/resources/workflow_deployments/types/__init__.py,sha256=W7DKJ1nduwhRckYLvH7wHLdaGH9MXHTZkxwG7FdTngY,340
@@ -125,12 +125,12 @@ vellum/client/resources/workflow_deployments/types/workflow_deployments_list_req
125
125
  vellum/client/resources/workflow_sandboxes/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
126
126
  vellum/client/resources/workflow_sandboxes/client.py,sha256=3wVQxkjrJ5bIS8fB5FpKXCP2dX38299ghWrJ8YmXxwQ,7435
127
127
  vellum/client/resources/workflows/__init__.py,sha256=Z4xi8Nxd9U4t35FQSepTt1p-ns0X1xtdNs168kUcuBk,153
128
- vellum/client/resources/workflows/client.py,sha256=SYPMtcDF9aVhrbzmlnGLqdx8l7Hau2QpZTTE-R8TwKQ,10853
128
+ vellum/client/resources/workflows/client.py,sha256=5wqDiO1xYnYxNmbaEE1OTnUn3YXKpruYqF3taCjLRDI,10263
129
129
  vellum/client/resources/workflows/types/__init__.py,sha256=-uFca4ypncAOvfsg6sjD-5C9zWdA5qNvU6m675GphVg,177
130
130
  vellum/client/resources/workflows/types/workflows_pull_request_format.py,sha256=dOWE_jnDnniIJLoeseeCms23aklghyBkoPmBFzcqqZk,165
131
131
  vellum/client/resources/workspace_secrets/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
132
132
  vellum/client/resources/workspace_secrets/client.py,sha256=h7UzXLyTttPq1t-JZGMg1BWxypxJvBGUdqg7KGT7MK4,8027
133
- vellum/client/types/__init__.py,sha256=fY4a4kaOhRGIChnfHFKrEAO-XCEF6m4zfTZNYnH8d24,51959
133
+ vellum/client/types/__init__.py,sha256=l-m0JRpHj7tm8Kzsr7HOIK_O9XnGOVWfQanEOE4Z_yo,52066
134
134
  vellum/client/types/ad_hoc_execute_prompt_event.py,sha256=bCjujA2XsOgyF3bRZbcEqV2rOIymRgsLoIRtZpB14xg,607
135
135
  vellum/client/types/ad_hoc_expand_meta.py,sha256=1gv-NCsy_6xBYupLvZH979yf2VMdxAU-l0y0ynMKZaw,1331
136
136
  vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py,sha256=Bfvf1d_dkmshxRACVM5vcxbH_7AQY23RmrrnPc0ytYY,939
@@ -316,6 +316,7 @@ vellum/client/types/metadata_filter_rule_combinator.py,sha256=3Vpp1Mnv3As7efkxWT
316
316
  vellum/client/types/metadata_filter_rule_request.py,sha256=Pcs0TsU7CRnsEUoH0DWb-c9DTP2UW67lJKXlsTLXV48,1135
317
317
  vellum/client/types/metadata_filters_request.py,sha256=Yaiu7rkcrV2bCFk6HrZSjuF6V-6JYjZTpzxv7_MFe70,345
318
318
  vellum/client/types/metric_definition_execution.py,sha256=xwr5VJTo32k77isUtz2uzHGmtRm6K_VyOlTCbJr0JNU,672
319
+ vellum/client/types/metric_definition_history_item.py,sha256=oR0m0PG_NGpEBSwJ3n-CFi6TJo3o5Y4D_wfaqpk2VxI,1183
319
320
  vellum/client/types/metric_definition_input.py,sha256=4nmwpPqbeNQYCzLkXCkc-FGV5K2Zfa22xqSUe_L6o5s,331
320
321
  vellum/client/types/metric_node_result.py,sha256=YdKq1DZiBD1RBtjyMejImylv3BqrwY8B_UF4Ij-6_64,660
321
322
  vellum/client/types/ml_model_read.py,sha256=Vr5KjaS2Tca0GXsltfSYQpuyGYpgIahPEFfS6HfFGSo,706
@@ -875,6 +876,7 @@ vellum/types/metadata_filter_rule_combinator.py,sha256=bHx8PgGv5n_3cC-blXV20DKek
875
876
  vellum/types/metadata_filter_rule_request.py,sha256=LULGRo2_1WXc8GbFQioEzB1BfAfcOONwSgrRpwXlQig,166
876
877
  vellum/types/metadata_filters_request.py,sha256=Czs4HD9ibSdtX026v3NMur6L6wKOYYkvd5Em1-UVI2o,162
877
878
  vellum/types/metric_definition_execution.py,sha256=Yx5b1CygziiPLjlZDQF0lVVI7ubRLVJn16vT3N7zmHQ,165
879
+ vellum/types/metric_definition_history_item.py,sha256=OUGYJ9yHc60QiYh_C8-YuA1zHeQ9v5lShdaJ5KEl-1c,168
878
880
  vellum/types/metric_definition_input.py,sha256=TwMwjC_MNiLdodsvT52D7aa_wRY-0kT047flY3sFxII,161
879
881
  vellum/types/metric_node_result.py,sha256=Q_bUgbdRnSP26nEcJ-vZD7k2oLIcThN3JjW9hXTRfZo,156
880
882
  vellum/types/ml_model_read.py,sha256=d_CPwZ3bhXtC8c5jwXkuNVvobDqPI-I_byZ6WnVla1Q,151
@@ -1189,9 +1191,9 @@ vellum/workflows/environment/environment.py,sha256=IwcVSwA51jW1JTN_MAN22UbeAtZhi
1189
1191
  vellum/workflows/errors/__init__.py,sha256=BRyo4hKP2ElS4k1YDu8VdY2VhUZjILtHn2sPFf_d7U0,105
1190
1192
  vellum/workflows/errors/types.py,sha256=YQy6na_iBkqxl9GHKOcin44m8DMRG5KP9oLV1Lpal1M,541
1191
1193
  vellum/workflows/events/__init__.py,sha256=vLwQuykMmbv0izdUvsamouRQKbmKX_r9Poo77jd404w,821
1192
- vellum/workflows/events/node.py,sha256=w5A2MCWD8J-qvdmxBRP4r_c_qz6SK4YLjlsoswrYHc0,3697
1194
+ vellum/workflows/events/node.py,sha256=YQVWrE8LD5IxRTz_e0-0bXMhk3RZ75ZKTvAJZqH8dP0,5270
1193
1195
  vellum/workflows/events/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1194
- vellum/workflows/events/tests/test_event.py,sha256=UdBfjJFGUh1b0T3x-3IuN1Rg97Be5MViXaMY5tjnTL8,9614
1196
+ vellum/workflows/events/tests/test_event.py,sha256=BbAeTohMdfAdpBea9fbi5nDXX6UQ7xASMv9jNuwOmDU,12704
1195
1197
  vellum/workflows/events/types.py,sha256=2MDqlhBMwFWKso423IGH9ZdsPnmBWGGOIBceW568pnk,2865
1196
1198
  vellum/workflows/events/utils.py,sha256=OwtE8dHOCX01jvLyoS1l18tYQ4ob0YJcUhUorKWLJh0,232
1197
1199
  vellum/workflows/events/workflow.py,sha256=kPjZTh5hzCsSrVKLkXQNwzxhnUp3X4GkFA5veGatGlQ,4353
@@ -1281,7 +1283,7 @@ vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/main.py,sh
1281
1283
  vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py,sha256=pvkvMOIL94vDP3KUrQh0OF1lELjEFJ6HIDEz5kUqbzo,3377
1282
1284
  vellum/workflows/nodes/displayable/code_execution_node/utils.py,sha256=R0gVJVwn2g3caDr25LBj_mj9JUIbORSS-88MQkvSWQU,215
1283
1285
  vellum/workflows/nodes/displayable/conditional_node/__init__.py,sha256=AS_EIqFdU1F9t8aLmbZU-rLh9ry6LCJ0uj0D8F0L5Uw,72
1284
- vellum/workflows/nodes/displayable/conditional_node/node.py,sha256=0IrCyzLksmYYxDwXQb9_E7E5y1rmxgtmXavfeCzSy04,1026
1286
+ vellum/workflows/nodes/displayable/conditional_node/node.py,sha256=SWfsEQ7G_y3yEnxzMhjtjHF4xZvFdFTds77LrFZHGUU,1020
1285
1287
  vellum/workflows/nodes/displayable/final_output_node/__init__.py,sha256=G7VXM4OWpubvSJtVkGmMNeqgb9GkM7qZT838eL18XU4,72
1286
1288
  vellum/workflows/nodes/displayable/final_output_node/node.py,sha256=iH3ZPOstPku_rg4h97Xz5FMaHWVRCjypaamAFzoJzJ0,1854
1287
1289
  vellum/workflows/nodes/displayable/guardrail_node/__init__.py,sha256=Ab5eXmOoBhyV4dMWdzh32HLUmnPIBEK_zFCT38C4Fng,68
@@ -1306,10 +1308,10 @@ vellum/workflows/nodes/utils.py,sha256=zY0b5WjJtGwVPPLY3ffHUdRREPvyoNwmJDigz5jQR
1306
1308
  vellum/workflows/outputs/__init__.py,sha256=AyZ4pRh_ACQIGvkf0byJO46EDnSix1ZCAXfvh-ms1QE,94
1307
1309
  vellum/workflows/outputs/base.py,sha256=aOll71CH_g1RaVO1wl038BqpWH70cD3XXSRxzH0YoRA,8002
1308
1310
  vellum/workflows/ports/__init__.py,sha256=bZuMt-R7z5bKwpu4uPW7LlJeePOQWmCcDSXe5frUY5g,101
1309
- vellum/workflows/ports/node_ports.py,sha256=OMbbwsy6h8wCCycWlll6nfDlEedVjBS7aaYUUYrN1DQ,2763
1310
- vellum/workflows/ports/port.py,sha256=4Y3heJglodE5svzq7om7e-5gqANqnbiqKD3ffQMGLVQ,2463
1311
+ vellum/workflows/ports/node_ports.py,sha256=GCsCejo2THT6Zxx_slegLbd5CvV6iPy9IOZOFjHkCXY,2753
1312
+ vellum/workflows/ports/port.py,sha256=iLYzjIoFk5HWpNyhySf8E1uIuJ3MbAeJGD3yOnnLY70,2843
1311
1313
  vellum/workflows/ports/utils.py,sha256=pEjVNJKw9LhD_cFN-o0MWBOW2ejno7jv26qqzjLxwS4,1662
1312
- vellum/workflows/references/__init__.py,sha256=tKHT1lePWOmDoPkrS7I2kPml_me9-WQwZmCoQzhU6k8,513
1314
+ vellum/workflows/references/__init__.py,sha256=glHFC1VfXmcbNvH5VzFbkT03d8_D7MMcvEcsUBrzLIs,591
1313
1315
  vellum/workflows/references/environment_variable.py,sha256=7FFtiKfc4eyVkkfUbhc666OBNDqvFlMoNQEYmGpEVVE,661
1314
1316
  vellum/workflows/references/execution_count.py,sha256=JILHqt8ELdc9ct-WsVCA5X-rKiP1rmJODw-XTf4kpHI,722
1315
1317
  vellum/workflows/references/external_input.py,sha256=ZSnRIjrTwpWuBcInZMvQQzcDgkeZ1r7-C7I4sRpDNy4,1658
@@ -1323,12 +1325,12 @@ vellum/workflows/references/workflow_input.py,sha256=epspVRZ9n_nxoTxI5Am3GDd2fpU
1323
1325
  vellum/workflows/resolvers/__init__.py,sha256=eH6hTvZO4IciDaf_cf7aM2vs-DkBDyJPycOQevJxQnI,82
1324
1326
  vellum/workflows/resolvers/base.py,sha256=WHra9LRtlTuB1jmuNqkfVE2JUgB61Cyntn8f0b0WZg4,411
1325
1327
  vellum/workflows/runner/__init__.py,sha256=i1iG5sAhtpdsrlvwgH6B-m49JsINkiWyPWs8vyT-bqM,72
1326
- vellum/workflows/runner/runner.py,sha256=hjE5n5IKr0mCyiNxtOMpe1mPV13kwhlHtJdMh_yBxBQ,24514
1327
- vellum/workflows/runner/types.py,sha256=mGTTmPjL0-vOVRAnazVuXUTsNoD-X7bFHdhfE1orRBE,583
1328
+ vellum/workflows/runner/runner.py,sha256=MavIvMsEJkFxgZb4sd0-vLFWnVBfZIn4AsfVJcqn1rY,24504
1329
+ vellum/workflows/runner/types.py,sha256=UQIGqOuCDgxEQpoJr4ut3wAnAjp4scDWhNhEhYFyLrw,466
1328
1330
  vellum/workflows/state/__init__.py,sha256=yUUdR-_Vl7UiixNDYQZ-GEM_kJI9dnOia75TtuNEsnE,60
1329
1331
  vellum/workflows/state/base.py,sha256=gm4pun9BzYaZbW8I1j7EriUIlAzqQkKT3IBbXPh3FkA,12663
1330
1332
  vellum/workflows/state/context.py,sha256=tpJoOgmx7bmeNrQeOtavOfqTwBbtJCNDqjJ6ssh4gh8,464
1331
- vellum/workflows/state/encoder.py,sha256=jYwC_47gHyMuPRvshWBNJ1SxVXQ1SBCfxvq7iuHjV_g,1688
1333
+ vellum/workflows/state/encoder.py,sha256=kRrqwD0vFCiSRZR3rg8Sjkh8sDEerQQhlvmdSYQAOl8,1741
1332
1334
  vellum/workflows/state/store.py,sha256=VYGBQgN1bpd1as5eGiouV_7scg8QsRs4_1aqZAGIsRQ,793
1333
1335
  vellum/workflows/state/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1334
1336
  vellum/workflows/state/tests/test_state.py,sha256=BQjcdREIK1MPuGhivRUgpynVJLftjEpH9RG3cRKxQEY,3310
@@ -1337,8 +1339,8 @@ vellum/workflows/types/core.py,sha256=llsHFE3XKnVEk_pYoK0s9WUdeninSU5Kmoi7dU4GX0
1337
1339
  vellum/workflows/types/generics.py,sha256=ZkfoRhWs042i5IjA99v2wIhmh1u-Wieo3LzosgGWJVk,600
1338
1340
  vellum/workflows/types/stack.py,sha256=RDSGLkcV612ge8UuAH9TZiEGXxJt0Av2-H5rfzrTVVI,1014
1339
1341
  vellum/workflows/types/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1340
- vellum/workflows/types/tests/test_utils.py,sha256=PhpaFwhrX-TJX409MINh9Y4IEfkDX1OCkSqz6QSXQ9Q,2339
1341
- vellum/workflows/types/utils.py,sha256=vxMGvd-Ay-Nq3w1lmJKcGsiORDk3hu6Fg8dpCKZxEa8,5496
1342
+ vellum/workflows/types/tests/test_utils.py,sha256=hlCGh0GW_fY16oMSgu-Lih14TSZXcknWNFqMYCCkdeo,2433
1343
+ vellum/workflows/types/utils.py,sha256=rPQdiMkYgWp_6Iv6pRK0qjmxPrgf11FvaUS8z9i2Opw,5598
1342
1344
  vellum/workflows/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1343
1345
  vellum/workflows/utils/names.py,sha256=QLUqfJ1tmSEeUwBKTTiv_Qk3QGbInC2RSmlXfGXc8Wo,380
1344
1346
  vellum/workflows/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1348,8 +1350,8 @@ vellum/workflows/utils/vellum_variables.py,sha256=wbYejKwjy23ITDRfdGW4d181buvCbZ
1348
1350
  vellum/workflows/vellum_client.py,sha256=ODrq_TSl-drX2aezXegf7pizpWDVJuTXH-j6528t75s,683
1349
1351
  vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
1350
1352
  vellum/workflows/workflows/base.py,sha256=QxIm0zCic8P-y0NNLdqgC1YKTu-3TmMJ-wH1nUylguA,13689
1351
- vellum_ai-0.10.6.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1352
- vellum_ai-0.10.6.dist-info/METADATA,sha256=bYIQ3gBUlMApjanIg9j2P6B47ZUHUlzKZrBXmZlG_Xo,5128
1353
- vellum_ai-0.10.6.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
1354
- vellum_ai-0.10.6.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1355
- vellum_ai-0.10.6.dist-info/RECORD,,
1353
+ vellum_ai-0.10.7.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1354
+ vellum_ai-0.10.7.dist-info/METADATA,sha256=ORDcBMHiWjSs9HCgB8N2aas_2KPUBSDX96vbojp8F6w,5128
1355
+ vellum_ai-0.10.7.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
1356
+ vellum_ai-0.10.7.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1357
+ vellum_ai-0.10.7.dist-info/RECORD,,
@@ -1,14 +1,16 @@
1
1
  from uuid import UUID
2
2
  from typing import Any, ClassVar, Generic, Optional, TypeVar
3
3
 
4
+ from vellum.workflows.nodes.core.map_node.node import MapNode
5
+ from vellum.workflows.nodes.displayable.final_output_node import FinalOutputNode
6
+ from vellum.workflows.references.output import OutputReference
7
+ from vellum.workflows.types.core import JsonObject
4
8
  from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
5
9
  from vellum_ee.workflows.display.nodes.utils import to_kebab_case
6
10
  from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input
7
11
  from vellum_ee.workflows.display.types import WorkflowDisplayContext
8
12
  from vellum_ee.workflows.display.utils.uuids import uuid4_from_hash
9
13
  from vellum_ee.workflows.display.utils.vellum import infer_vellum_variable_type
10
- from vellum.workflows.nodes.displayable.final_output_node import FinalOutputNode
11
- from vellum.workflows.types.core import JsonObject
12
14
 
13
15
  _FinalOutputNodeType = TypeVar("_FinalOutputNodeType", bound=FinalOutputNode)
14
16
 
@@ -1,59 +1,32 @@
1
1
  from uuid import UUID
2
- from typing import Any, ClassVar, Dict, Generic, List, Optional, Type, TypeVar
2
+ from typing import Collection, Dict, Generic, List, Optional, TypeVar, cast
3
3
 
4
- from vellum import VellumVariable
5
4
  from vellum.workflows.nodes import MapNode
6
5
  from vellum.workflows.types.core import JsonObject
7
6
  from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
8
7
  from vellum_ee.workflows.display.nodes.utils import raise_if_descriptor
9
8
  from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input
10
9
  from vellum_ee.workflows.display.types import WorkflowDisplayContext
11
- from vellum_ee.workflows.display.utils.uuids import uuid4_from_hash
12
- from vellum_ee.workflows.display.utils.vellum import infer_vellum_variable_type
13
10
  from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
14
11
 
15
12
  _MapNodeType = TypeVar("_MapNodeType", bound=MapNode)
16
13
 
17
14
 
18
15
  class BaseMapNodeDisplay(BaseNodeVellumDisplay[_MapNodeType], Generic[_MapNodeType]):
19
- workflow_input_ids_by_name: ClassVar[Dict[str, UUID]] = {}
20
-
21
16
  def serialize(
22
17
  self, display_context: WorkflowDisplayContext, error_output_id: Optional[UUID] = None, **kwargs
23
18
  ) -> JsonObject:
24
19
  node = self._node
25
20
  node_id = self.node_id
26
21
 
27
- workflow_inputs: List[VellumVariable] = []
28
22
  subworkflow = raise_if_descriptor(node.subworkflow)
29
- for descriptor in subworkflow.get_inputs_class():
30
- # In WaC it's always 'all_items'
31
- # In Vellum it's always 'items'
32
- variable_name = descriptor.name if descriptor.name != "all_items" else "items"
33
- variable_id = str(
34
- self.workflow_input_ids_by_name.get(variable_name)
35
- or uuid4_from_hash(f"{self.node_id}|{variable_name}")
36
- )
37
- workflow_inputs.append(
38
- VellumVariable(
39
- id=variable_id,
40
- key=variable_name,
41
- type=infer_vellum_variable_type(descriptor),
42
- )
43
- )
44
-
45
- items_workflow_input = next(input for input in workflow_inputs if input.key == "items")
46
- item_workflow_input = next(input for input in workflow_inputs if input.key == "item")
47
- index_workflow_input = next(input for input in workflow_inputs if input.key == "index")
48
-
49
- workflow_outputs = self._generate_workflow_outputs(node)
50
23
 
51
24
  items_node_input = create_node_input(
52
25
  node_id=node_id,
53
26
  input_name="items",
54
27
  value=node.items,
55
28
  display_context=display_context,
56
- input_id=UUID(items_workflow_input.id),
29
+ input_id=self.node_input_ids_by_name.get("items"),
57
30
  )
58
31
  node_inputs = [items_node_input]
59
32
 
@@ -63,6 +36,19 @@ class BaseMapNodeDisplay(BaseNodeVellumDisplay[_MapNodeType], Generic[_MapNodeTy
63
36
  )
64
37
  serialized_subworkflow = subworkflow_display.serialize()
65
38
 
39
+ renamed_input_variables = []
40
+ for input_variable in cast(List[Dict[str, str]], serialized_subworkflow["input_variables"]):
41
+ if input_variable["key"] == "all_items":
42
+ renamed_item = { **input_variable, "key": "items" }
43
+ renamed_input_variables.append(renamed_item)
44
+ else:
45
+ renamed_input_variables.append(input_variable)
46
+
47
+ # Note: This must match the items input ID for the map node's node input
48
+ items_workflow_input_id = next(input_variable["id"] for input_variable in renamed_input_variables if input_variable["key"] == "items")
49
+ item_workflow_input_id = next(input_variable["id"] for input_variable in renamed_input_variables if input_variable["key"] == "item")
50
+ index_workflow_input_id = next(input_variable["id"] for input_variable in renamed_input_variables if input_variable["key"] == "index")
51
+
66
52
  return {
67
53
  "id": str(node_id),
68
54
  "type": "MAP",
@@ -74,27 +60,13 @@ class BaseMapNodeDisplay(BaseNodeVellumDisplay[_MapNodeType], Generic[_MapNodeTy
74
60
  "target_handle_id": str(self.get_target_handle_id()),
75
61
  "variant": "INLINE",
76
62
  "workflow_raw_data": serialized_subworkflow["workflow_raw_data"],
77
- "input_variables": [workflow_input.dict() for workflow_input in workflow_inputs],
78
- "output_variables": [workflow_output.dict() for workflow_output in workflow_outputs],
63
+ "input_variables": cast(JsonObject, renamed_input_variables),
64
+ "output_variables": serialized_subworkflow["output_variables"],
79
65
  "concurrency": raise_if_descriptor(node.concurrency),
80
- "items_input_id": str(items_workflow_input.id),
81
- "item_input_id": str(item_workflow_input.id),
82
- "index_input_id": str(index_workflow_input.id),
66
+ "items_input_id": items_workflow_input_id,
67
+ "item_input_id": item_workflow_input_id,
68
+ "index_input_id": index_workflow_input_id,
83
69
  },
84
70
  "display_data": self.get_display_data().dict(),
85
71
  "definition": self.get_definition().dict(),
86
72
  }
87
-
88
- def _generate_workflow_outputs(
89
- self,
90
- node: Type[MapNode],
91
- ) -> List[VellumVariable]:
92
- workflow_outputs: List[VellumVariable] = []
93
- for output_descriptor in raise_if_descriptor(node.subworkflow).Outputs: # type: ignore[union-attr]
94
- node_output_display = self.get_node_output_display(output_descriptor)
95
- output_type = infer_vellum_variable_type(output_descriptor)
96
- workflow_outputs.append(
97
- VellumVariable(id=str(node_output_display.id), key=node_output_display.name, type=output_type)
98
- )
99
-
100
- return workflow_outputs
@@ -13,30 +13,20 @@ from vellum.workflows.expressions.does_not_equal import DoesNotEqualExpression
13
13
  from vellum.workflows.expressions.ends_with import EndsWithExpression
14
14
  from vellum.workflows.expressions.equals import EqualsExpression
15
15
  from vellum.workflows.expressions.greater_than import GreaterThanExpression
16
- from vellum.workflows.expressions.greater_than_or_equal_to import (
17
- GreaterThanOrEqualToExpression,
18
- )
16
+ from vellum.workflows.expressions.greater_than_or_equal_to import GreaterThanOrEqualToExpression
19
17
  from vellum.workflows.expressions.in_ import InExpression
20
18
  from vellum.workflows.expressions.is_not_null import IsNotNullExpression
21
19
  from vellum.workflows.expressions.is_null import IsNullExpression
22
20
  from vellum.workflows.expressions.less_than import LessThanExpression
23
- from vellum.workflows.expressions.less_than_or_equal_to import (
24
- LessThanOrEqualToExpression,
25
- )
21
+ from vellum.workflows.expressions.less_than_or_equal_to import LessThanOrEqualToExpression
26
22
  from vellum.workflows.expressions.not_between import NotBetweenExpression
27
23
  from vellum.workflows.expressions.not_in import NotInExpression
28
- from vellum_ee.workflows.display.nodes.base_node_vellum_display import (
29
- BaseNodeVellumDisplay,
30
- )
24
+ from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
31
25
  from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
32
- from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import (
33
- get_workflow_display,
34
- )
26
+ from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
35
27
 
36
28
  from tests.workflows.basic_conditional_node.workflow import CategoryWorkflow
37
- from tests.workflows.basic_conditional_node.workflow_with_only_one_conditional_node import (
38
- create_simple_workflow,
39
- )
29
+ from tests.workflows.basic_conditional_node.workflow_with_only_one_conditional_node import create_simple_workflow
40
30
 
41
31
 
42
32
  def test_serialize_workflow():
@@ -965,7 +955,6 @@ def test_conditional_node_serialize_all_operators_with_lhs_and_rhs(
965
955
 
966
956
  # AND the conditional node should be what we expect
967
957
  conditional_node = workflow_raw_data["nodes"][1]
968
- print(conditional_node)
969
958
  assert not DeepDiff(
970
959
  {
971
960
  "id": "a9143814-6bb0-4cb3-a817-4fc076417121",
@@ -228,15 +228,15 @@ def test_serialize_workflow():
228
228
  },
229
229
  },
230
230
  "input_variables": [
231
- {"id": "0fe9dff5-7595-4ff3-a420-416f3fc6f809", "key": "item", "type": "JSON"},
232
- {"id": "27dfe8ba-8be7-4de9-a930-2ec3e375b149", "key": "index", "type": "NUMBER"},
233
- {"id": "4c0a109f-599e-4d04-a396-a51474fc2996", "key": "items", "type": "JSON"},
231
+ {"id": "b29bb546-9bc8-4136-857d-8c7a464ba9d4", "key": "item", "type": "JSON", "required": True, "default": None, "extensions": {"color": None}},
232
+ {"id": "17e7ca49-668f-450d-a792-e1f97d13db67", "key": "index", "type": "NUMBER", "required": True, "default": None, "extensions": {"color": None}},
233
+ {"id": "d6fc6c7a-235f-4b98-86f3-e258d1198f93", "key": "items", "type": "JSON", "required": True, "default": None, "extensions": {"color": None}},
234
234
  ],
235
- "output_variables": [{"id": "56b34d4a-d3a6-4bdb-80a4-dbf644791274", "key": "count", "type": "NUMBER"}],
235
+ "output_variables": [{"id": "2a957315-fae0-4366-8a35-f0b315c5eade", "key": "count", "type": "NUMBER"}],
236
236
  "concurrency": None,
237
- "items_input_id": "4c0a109f-599e-4d04-a396-a51474fc2996",
238
- "item_input_id": "0fe9dff5-7595-4ff3-a420-416f3fc6f809",
239
- "index_input_id": "27dfe8ba-8be7-4de9-a930-2ec3e375b149",
237
+ "items_input_id": "d6fc6c7a-235f-4b98-86f3-e258d1198f93",
238
+ "item_input_id": "b29bb546-9bc8-4136-857d-8c7a464ba9d4",
239
+ "index_input_id": "17e7ca49-668f-450d-a792-e1f97d13db67",
240
240
  },
241
241
  "display_data": {"position": {"x": 0.0, "y": 0.0}},
242
242
  "definition": {
@@ -288,7 +288,7 @@ def test_serialize_workflow():
288
288
  "type": "NODE_OUTPUT",
289
289
  "data": {
290
290
  "node_id": "bf83099a-40df-4445-b90d-1f6f1067ebe3",
291
- "output_id": "56b34d4a-d3a6-4bdb-80a4-dbf644791274",
291
+ "output_id": "2a957315-fae0-4366-8a35-f0b315c5eade",
292
292
  },
293
293
  }
294
294
  ],
@@ -323,6 +323,9 @@ def test_serialize_workflow():
323
323
  },
324
324
  },
325
325
  workflow_raw_data["nodes"][2],
326
+ # TODO: Fix output ID not referencing map node workflow output
327
+ # https://app.shortcut.com/vellum/story/5667/fix-output-display-reference-on-map-nodes
328
+ exclude_regex_paths=r"root\['inputs'\]\[0\]\['value'\]\['rules'\]\[0\]\['data'\]\['output_id'\]",
326
329
  )
327
330
 
328
331
  # AND each edge should be serialized correctly
@@ -4,7 +4,9 @@ import typing
4
4
  from typing import Any, List, Union, cast
5
5
 
6
6
  from vellum import ChatMessage, SearchResult, SearchResultRequest, VellumVariableType
7
+ from vellum.client.types.array_vellum_value import ArrayVellumValue
7
8
  from vellum.workflows.descriptors.base import BaseDescriptor
9
+ from vellum.workflows.nodes.core.map_node.node import MapNodeItemType
8
10
  from vellum.workflows.references import OutputReference, WorkflowInputReference
9
11
  from vellum.workflows.references.execution_count import ExecutionCountReference
10
12
  from vellum.workflows.references.node import NodeReference
@@ -45,9 +47,8 @@ def infer_vellum_variable_type(value: Any) -> VellumVariableType:
45
47
  raise ValueError(
46
48
  f"Expected NodeReference {descriptor.name} to have an instance pointing to a descriptor"
47
49
  )
48
-
49
50
  descriptor = descriptor.instance
50
-
51
+
51
52
  inferred_type = primitive_type_to_vellum_variable_type(descriptor)
52
53
  else:
53
54
  vellum_variable_value = primitive_to_vellum_value(value)