vellum-ai 0.11.9__py3-none-any.whl → 0.12.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- vellum/client/core/client_wrapper.py +1 -1
- vellum/workflows/descriptors/base.py +2 -2
- vellum/workflows/descriptors/tests/test_utils.py +4 -4
- vellum/workflows/errors/__init__.py +3 -3
- vellum/workflows/errors/types.py +46 -3
- vellum/workflows/events/node.py +3 -3
- vellum/workflows/events/tests/test_event.py +3 -3
- vellum/workflows/events/workflow.py +3 -3
- vellum/workflows/exceptions.py +8 -4
- vellum/workflows/nodes/bases/base.py +9 -2
- vellum/workflows/nodes/bases/tests/test_base_node.py +13 -0
- vellum/workflows/nodes/core/error_node/node.py +9 -5
- vellum/workflows/nodes/core/inline_subworkflow_node/node.py +3 -13
- vellum/workflows/nodes/core/map_node/node.py +2 -2
- vellum/workflows/nodes/core/retry_node/node.py +5 -5
- vellum/workflows/nodes/core/retry_node/tests/test_node.py +6 -6
- vellum/workflows/nodes/core/templating_node/node.py +2 -2
- vellum/workflows/nodes/core/try_node/node.py +7 -7
- vellum/workflows/nodes/core/try_node/tests/test_node.py +9 -7
- vellum/workflows/nodes/displayable/bases/api_node/node.py +3 -3
- vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +4 -12
- vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +2 -2
- vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +2 -2
- vellum/workflows/nodes/displayable/bases/search_node.py +3 -3
- vellum/workflows/nodes/displayable/code_execution_node/node.py +21 -5
- vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py +141 -0
- vellum/workflows/nodes/displayable/guardrail_node/node.py +3 -3
- vellum/workflows/nodes/displayable/inline_prompt_node/node.py +3 -3
- vellum/workflows/nodes/displayable/prompt_deployment_node/node.py +3 -3
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py +7 -14
- vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py +4 -4
- vellum/workflows/nodes/utils.py +5 -9
- vellum/workflows/references/external_input.py +2 -2
- vellum/workflows/references/node.py +2 -2
- vellum/workflows/references/state_value.py +2 -2
- vellum/workflows/references/workflow_input.py +2 -2
- vellum/workflows/runner/runner.py +15 -15
- {vellum_ee/workflows/display → vellum/workflows}/utils/tests/test_uuids.py +1 -1
- vellum/workflows/workflows/base.py +7 -7
- {vellum_ai-0.11.9.dist-info → vellum_ai-0.12.0.dist-info}/METADATA +1 -1
- {vellum_ai-0.11.9.dist-info → vellum_ai-0.12.0.dist-info}/RECORD +61 -62
- {vellum_ai-0.11.9.dist-info → vellum_ai-0.12.0.dist-info}/WHEEL +1 -1
- vellum_ee/workflows/display/nodes/base_node_display.py +50 -21
- vellum_ee/workflows/display/nodes/base_node_vellum_display.py +10 -1
- vellum_ee/workflows/display/nodes/get_node_display_class.py +10 -1
- vellum_ee/workflows/display/nodes/tests/test_base_node_display.py +5 -4
- vellum_ee/workflows/display/nodes/vellum/code_execution_node.py +13 -3
- vellum_ee/workflows/display/nodes/vellum/conditional_node.py +1 -1
- vellum_ee/workflows/display/nodes/vellum/final_output_node.py +1 -1
- vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py +1 -1
- vellum_ee/workflows/display/nodes/vellum/merge_node.py +4 -4
- vellum_ee/workflows/display/nodes/vellum/search_node.py +1 -1
- vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py +5 -1
- vellum_ee/workflows/display/nodes/vellum/try_node.py +12 -6
- vellum_ee/workflows/display/nodes/vellum/utils.py +1 -1
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py +269 -85
- vellum_ee/workflows/display/workflows/base_workflow_display.py +2 -2
- vellum_ee/workflows/display/workflows/vellum_workflow_display.py +2 -6
- vellum_ee/workflows/display/utils/tests/__init__.py +0 -0
- {vellum_ee/workflows/display → vellum/workflows}/utils/uuids.py +0 -0
- {vellum_ai-0.11.9.dist-info → vellum_ai-0.12.0.dist-info}/LICENSE +0 -0
- {vellum_ai-0.11.9.dist-info → vellum_ai-0.12.0.dist-info}/entry_points.txt +0 -0
@@ -10,7 +10,7 @@ from vellum.workflows.constants import UNDEF
|
|
10
10
|
from vellum.workflows.context import execution_context, get_parent_context
|
11
11
|
from vellum.workflows.descriptors.base import BaseDescriptor
|
12
12
|
from vellum.workflows.edges.edge import Edge
|
13
|
-
from vellum.workflows.errors import
|
13
|
+
from vellum.workflows.errors import WorkflowError, WorkflowErrorCode
|
14
14
|
from vellum.workflows.events import (
|
15
15
|
NodeExecutionFulfilledEvent,
|
16
16
|
NodeExecutionInitiatedEvent,
|
@@ -184,14 +184,14 @@ class WorkflowRunner(Generic[StateType]):
|
|
184
184
|
if not isinstance(node_run_response, (BaseOutputs, Iterator)):
|
185
185
|
raise NodeException(
|
186
186
|
message=f"Node {node.__class__.__name__} did not return a valid node run response",
|
187
|
-
code=
|
187
|
+
code=WorkflowErrorCode.INVALID_OUTPUTS,
|
188
188
|
)
|
189
189
|
|
190
190
|
if isinstance(node_run_response, BaseOutputs):
|
191
191
|
if not isinstance(node_run_response, node.Outputs):
|
192
192
|
raise NodeException(
|
193
193
|
message=f"Node {node.__class__.__name__} did not return a valid outputs object",
|
194
|
-
code=
|
194
|
+
code=WorkflowErrorCode.INVALID_OUTPUTS,
|
195
195
|
)
|
196
196
|
|
197
197
|
outputs = node_run_response
|
@@ -312,9 +312,9 @@ class WorkflowRunner(Generic[StateType]):
|
|
312
312
|
span_id=span_id,
|
313
313
|
body=NodeExecutionRejectedBody(
|
314
314
|
node_definition=node.__class__,
|
315
|
-
error=
|
315
|
+
error=WorkflowError(
|
316
316
|
message=str(e),
|
317
|
-
code=
|
317
|
+
code=WorkflowErrorCode.INTERNAL_ERROR,
|
318
318
|
),
|
319
319
|
),
|
320
320
|
parent=parent_context,
|
@@ -375,7 +375,7 @@ class WorkflowRunner(Generic[StateType]):
|
|
375
375
|
)
|
376
376
|
worker_thread.start()
|
377
377
|
|
378
|
-
def _handle_work_item_event(self, event: WorkflowEvent) -> Optional[
|
378
|
+
def _handle_work_item_event(self, event: WorkflowEvent) -> Optional[WorkflowError]:
|
379
379
|
node = self._active_nodes_by_execution_id.get(event.span_id)
|
380
380
|
if not node:
|
381
381
|
return None
|
@@ -449,7 +449,7 @@ class WorkflowRunner(Generic[StateType]):
|
|
449
449
|
parent=self._parent_context,
|
450
450
|
)
|
451
451
|
|
452
|
-
def _reject_workflow_event(self, error:
|
452
|
+
def _reject_workflow_event(self, error: WorkflowError) -> WorkflowExecutionRejectedEvent:
|
453
453
|
return WorkflowExecutionRejectedEvent(
|
454
454
|
trace_id=self._initial_state.meta.trace_id,
|
455
455
|
span_id=self._initial_state.meta.span_id,
|
@@ -486,9 +486,9 @@ class WorkflowRunner(Generic[StateType]):
|
|
486
486
|
if not self._entrypoints:
|
487
487
|
self._workflow_event_outer_queue.put(
|
488
488
|
self._reject_workflow_event(
|
489
|
-
|
489
|
+
WorkflowError(
|
490
490
|
message="No entrypoints defined",
|
491
|
-
code=
|
491
|
+
code=WorkflowErrorCode.INVALID_WORKFLOW,
|
492
492
|
)
|
493
493
|
)
|
494
494
|
)
|
@@ -515,12 +515,12 @@ class WorkflowRunner(Generic[StateType]):
|
|
515
515
|
logger.exception(err_message)
|
516
516
|
self._workflow_event_outer_queue.put(
|
517
517
|
self._reject_workflow_event(
|
518
|
-
|
518
|
+
WorkflowError(code=WorkflowErrorCode.INTERNAL_ERROR, message=err_message),
|
519
519
|
)
|
520
520
|
)
|
521
521
|
return
|
522
522
|
|
523
|
-
rejection_error: Optional[
|
523
|
+
rejection_error: Optional[WorkflowError] = None
|
524
524
|
|
525
525
|
while True:
|
526
526
|
if not self._active_nodes_by_execution_id:
|
@@ -602,8 +602,8 @@ class WorkflowRunner(Generic[StateType]):
|
|
602
602
|
self._cancel_signal.wait()
|
603
603
|
self._workflow_event_outer_queue.put(
|
604
604
|
self._reject_workflow_event(
|
605
|
-
|
606
|
-
code=
|
605
|
+
WorkflowError(
|
606
|
+
code=WorkflowErrorCode.WORKFLOW_CANCELLED,
|
607
607
|
message="Workflow run cancelled",
|
608
608
|
)
|
609
609
|
)
|
@@ -666,8 +666,8 @@ class WorkflowRunner(Generic[StateType]):
|
|
666
666
|
|
667
667
|
if not self._is_terminal_event(event):
|
668
668
|
yield self._reject_workflow_event(
|
669
|
-
|
670
|
-
code=
|
669
|
+
WorkflowError(
|
670
|
+
code=WorkflowErrorCode.INTERNAL_ERROR,
|
671
671
|
message="An unexpected error occurred while streaming Workflow events",
|
672
672
|
)
|
673
673
|
)
|
@@ -34,7 +34,7 @@ from typing import (
|
|
34
34
|
|
35
35
|
from vellum.workflows.edges import Edge
|
36
36
|
from vellum.workflows.emitters.base import BaseWorkflowEmitter
|
37
|
-
from vellum.workflows.errors import
|
37
|
+
from vellum.workflows.errors import WorkflowError, WorkflowErrorCode
|
38
38
|
from vellum.workflows.events.node import (
|
39
39
|
NodeExecutionFulfilledBody,
|
40
40
|
NodeExecutionFulfilledEvent,
|
@@ -234,8 +234,8 @@ class BaseWorkflow(Generic[WorkflowInputsType, StateType], metaclass=_BaseWorkfl
|
|
234
234
|
trace_id=uuid4(),
|
235
235
|
span_id=uuid4(),
|
236
236
|
body=WorkflowExecutionRejectedBody(
|
237
|
-
error=
|
238
|
-
code=
|
237
|
+
error=WorkflowError(
|
238
|
+
code=WorkflowErrorCode.INTERNAL_ERROR,
|
239
239
|
message="No events were emitted",
|
240
240
|
),
|
241
241
|
workflow_definition=self.__class__,
|
@@ -247,8 +247,8 @@ class BaseWorkflow(Generic[WorkflowInputsType, StateType], metaclass=_BaseWorkfl
|
|
247
247
|
trace_id=uuid4(),
|
248
248
|
span_id=uuid4(),
|
249
249
|
body=WorkflowExecutionRejectedBody(
|
250
|
-
error=
|
251
|
-
code=
|
250
|
+
error=WorkflowError(
|
251
|
+
code=WorkflowErrorCode.INTERNAL_ERROR,
|
252
252
|
message="Initiated event was never emitted",
|
253
253
|
),
|
254
254
|
workflow_definition=self.__class__,
|
@@ -267,8 +267,8 @@ class BaseWorkflow(Generic[WorkflowInputsType, StateType], metaclass=_BaseWorkfl
|
|
267
267
|
span_id=first_event.span_id,
|
268
268
|
body=WorkflowExecutionRejectedBody(
|
269
269
|
workflow_definition=self.__class__,
|
270
|
-
error=
|
271
|
-
code=
|
270
|
+
error=WorkflowError(
|
271
|
+
code=WorkflowErrorCode.INTERNAL_ERROR,
|
272
272
|
message=f"Unexpected last event name found: {last_event.name}",
|
273
273
|
),
|
274
274
|
),
|
@@ -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=
|
23
|
-
vellum_ee/workflows/display/nodes/base_node_vellum_display.py,sha256=
|
24
|
-
vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=
|
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=
|
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=
|
32
|
-
vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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=
|
47
|
-
vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=
|
48
|
-
vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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=
|
1210
|
-
vellum/workflows/descriptors/tests/test_utils.py,sha256=
|
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=
|
1219
|
-
vellum/workflows/errors/types.py,sha256=
|
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=
|
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=
|
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=
|
1226
|
-
vellum/workflows/exceptions.py,sha256=
|
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,77 +1257,77 @@ 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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
1302
|
-
vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=
|
1303
|
-
vellum/workflows/nodes/displayable/bases/search_node.py,sha256=
|
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=
|
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
|
1309
|
-
vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py,sha256=
|
1306
|
+
vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py,sha256=s93M_EnU-4n60iSKv3FCf0kppwzFH5FNi9o9E58fQ3I,7510
|
1310
1307
|
vellum/workflows/nodes/displayable/code_execution_node/utils.py,sha256=LfI3kj2zQz6UGMld_uA9z2LjZobqRcgxQO4jdUWkg7o,376
|
1311
1308
|
vellum/workflows/nodes/displayable/conditional_node/__init__.py,sha256=AS_EIqFdU1F9t8aLmbZU-rLh9ry6LCJ0uj0D8F0L5Uw,72
|
1312
1309
|
vellum/workflows/nodes/displayable/conditional_node/node.py,sha256=REFZdEVetXGyOK1RbIN1T6yRblrP0hfyZUls2KfjTKg,1016
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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.
|
1382
|
-
vellum_ai-0.
|
1383
|
-
vellum_ai-0.
|
1384
|
-
vellum_ai-0.
|
1385
|
-
vellum_ai-0.
|
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
|
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
|
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
|
-
|
128
|
-
node_class =
|
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
|
|
@@ -30,6 +30,15 @@ class BaseNodeVellumDisplay(BaseNodeDisplay[NodeType]):
|
|
30
30
|
def get_target_handle_id(self) -> UUID:
|
31
31
|
return self._get_node_display_uuid("target_handle_id")
|
32
32
|
|
33
|
+
def get_target_handle_id_by_source_node_id(self, source_node_id: UUID) -> UUID:
|
34
|
+
"""
|
35
|
+
In the vast majority of cases, nodes will only have a single target handle and can be retrieved independently
|
36
|
+
of the source node. However, in rare cases (such as legacy Merge nodes), this method can be overridden to
|
37
|
+
account for the case of retrieving one amongst multiple target handles on a node.
|
38
|
+
"""
|
39
|
+
|
40
|
+
return self.get_target_handle_id()
|
41
|
+
|
33
42
|
def get_source_handle_id(self, port_displays: Dict[Port, PortDisplay]) -> UUID:
|
34
43
|
default_port = self._node.Ports.default
|
35
44
|
default_port_display = port_displays[default_port]
|
@@ -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
|
-
|
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
|
|