vellum-ai 0.13.21__py3-none-any.whl → 0.13.23__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/__init__.py +12 -0
- vellum/client/__init__.py +170 -5
- vellum/client/core/client_wrapper.py +1 -1
- vellum/client/types/__init__.py +12 -0
- vellum/client/types/execute_api_request_bearer_token.py +6 -0
- vellum/client/types/execute_api_request_body.py +5 -0
- vellum/client/types/execute_api_request_headers_value.py +6 -0
- vellum/client/types/execute_api_response.py +24 -0
- vellum/client/types/method_enum.py +5 -0
- vellum/client/types/vellum_secret.py +19 -0
- vellum/plugins/pydantic.py +13 -1
- vellum/types/execute_api_request_bearer_token.py +3 -0
- vellum/types/execute_api_request_body.py +3 -0
- vellum/types/execute_api_request_headers_value.py +3 -0
- vellum/types/execute_api_response.py +3 -0
- vellum/types/method_enum.py +3 -0
- vellum/types/vellum_secret.py +3 -0
- vellum/workflows/nodes/core/inline_subworkflow_node/node.py +1 -0
- vellum/workflows/nodes/core/map_node/node.py +1 -0
- vellum/workflows/nodes/core/retry_node/node.py +1 -0
- vellum/workflows/nodes/core/try_node/node.py +11 -7
- vellum/workflows/nodes/displayable/api_node/node.py +12 -3
- vellum/workflows/nodes/displayable/api_node/tests/__init__.py +0 -0
- vellum/workflows/nodes/displayable/api_node/tests/test_api_node.py +34 -0
- vellum/workflows/nodes/displayable/bases/api_node/node.py +25 -4
- vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +11 -3
- vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +27 -12
- vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py +33 -0
- vellum/workflows/nodes/displayable/code_execution_node/utils.py +14 -12
- vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py +49 -0
- vellum/workflows/nodes/displayable/prompt_deployment_node/tests/__init__.py +0 -0
- vellum/workflows/nodes/displayable/prompt_deployment_node/tests/test_node.py +96 -0
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py +29 -5
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/__init__.py +0 -0
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/test_node.py +131 -0
- vellum/workflows/nodes/mocks.py +17 -0
- vellum/workflows/runner/runner.py +14 -34
- vellum/workflows/state/context.py +29 -1
- vellum/workflows/workflows/base.py +9 -6
- {vellum_ai-0.13.21.dist-info → vellum_ai-0.13.23.dist-info}/METADATA +1 -1
- {vellum_ai-0.13.21.dist-info → vellum_ai-0.13.23.dist-info}/RECORD +50 -31
- vellum_cli/push.py +5 -6
- vellum_cli/tests/test_push.py +81 -1
- vellum_ee/workflows/display/types.py +1 -31
- vellum_ee/workflows/display/vellum.py +1 -1
- vellum_ee/workflows/display/workflows/base_workflow_display.py +46 -2
- vellum_ee/workflows/tests/test_server.py +9 -0
- vellum/workflows/types/cycle_map.py +0 -34
- {vellum_ai-0.13.21.dist-info → vellum_ai-0.13.23.dist-info}/LICENSE +0 -0
- {vellum_ai-0.13.21.dist-info → vellum_ai-0.13.23.dist-info}/WHEEL +0 -0
- {vellum_ai-0.13.21.dist-info → vellum_ai-0.13.23.dist-info}/entry_points.txt +0 -0
@@ -1,9 +1,12 @@
|
|
1
1
|
from functools import cached_property
|
2
2
|
from queue import Queue
|
3
|
-
from typing import TYPE_CHECKING, Optional
|
3
|
+
from typing import TYPE_CHECKING, Dict, List, Optional, Type
|
4
4
|
|
5
5
|
from vellum import Vellum
|
6
6
|
from vellum.workflows.events.types import ParentContext
|
7
|
+
from vellum.workflows.nodes.mocks import MockNodeExecution, MockNodeExecutionArg
|
8
|
+
from vellum.workflows.outputs.base import BaseOutputs
|
9
|
+
from vellum.workflows.references.constant import ConstantValueReference
|
7
10
|
from vellum.workflows.vellum_client import create_vellum_client
|
8
11
|
|
9
12
|
if TYPE_CHECKING:
|
@@ -20,6 +23,7 @@ class WorkflowContext:
|
|
20
23
|
self._vellum_client = vellum_client
|
21
24
|
self._parent_context = parent_context
|
22
25
|
self._event_queue: Optional[Queue["WorkflowEvent"]] = None
|
26
|
+
self._node_output_mocks_map: Dict[Type[BaseOutputs], List[MockNodeExecution]] = {}
|
23
27
|
|
24
28
|
@cached_property
|
25
29
|
def vellum_client(self) -> Vellum:
|
@@ -34,9 +38,33 @@ class WorkflowContext:
|
|
34
38
|
return self._parent_context
|
35
39
|
return None
|
36
40
|
|
41
|
+
@cached_property
|
42
|
+
def node_output_mocks_map(self) -> Dict[Type[BaseOutputs], List[MockNodeExecution]]:
|
43
|
+
return self._node_output_mocks_map
|
44
|
+
|
37
45
|
def _emit_subworkflow_event(self, event: "WorkflowEvent") -> None:
|
38
46
|
if self._event_queue:
|
39
47
|
self._event_queue.put(event)
|
40
48
|
|
41
49
|
def _register_event_queue(self, event_queue: Queue["WorkflowEvent"]) -> None:
|
42
50
|
self._event_queue = event_queue
|
51
|
+
|
52
|
+
def _register_node_output_mocks(self, node_output_mocks: MockNodeExecutionArg) -> None:
|
53
|
+
for mock in node_output_mocks:
|
54
|
+
if isinstance(mock, MockNodeExecution):
|
55
|
+
key = mock.then_outputs.__class__
|
56
|
+
value = mock
|
57
|
+
else:
|
58
|
+
key = mock.__class__
|
59
|
+
value = MockNodeExecution(
|
60
|
+
when_condition=ConstantValueReference(True),
|
61
|
+
then_outputs=mock,
|
62
|
+
)
|
63
|
+
|
64
|
+
if key not in self._node_output_mocks_map:
|
65
|
+
self._node_output_mocks_map[key] = [value]
|
66
|
+
else:
|
67
|
+
self._node_output_mocks_map[key].append(value)
|
68
|
+
|
69
|
+
def _get_all_node_output_mocks(self) -> List[MockNodeExecution]:
|
70
|
+
return [mock for mocks in self._node_output_mocks_map.values() for mock in mocks]
|
@@ -61,6 +61,7 @@ from vellum.workflows.events.workflow import (
|
|
61
61
|
from vellum.workflows.graph import Graph
|
62
62
|
from vellum.workflows.inputs.base import BaseInputs
|
63
63
|
from vellum.workflows.nodes.bases import BaseNode
|
64
|
+
from vellum.workflows.nodes.mocks import MockNodeExecutionArg
|
64
65
|
from vellum.workflows.outputs import BaseOutputs
|
65
66
|
from vellum.workflows.resolvers.base import BaseWorkflowResolver
|
66
67
|
from vellum.workflows.runner import WorkflowRunner
|
@@ -187,7 +188,7 @@ class BaseWorkflow(Generic[InputsType, StateType], metaclass=_BaseWorkflowMeta):
|
|
187
188
|
entrypoint_nodes: Optional[RunFromNodeArg] = None,
|
188
189
|
external_inputs: Optional[ExternalInputsArg] = None,
|
189
190
|
cancel_signal: Optional[ThreadingEvent] = None,
|
190
|
-
node_output_mocks: Optional[
|
191
|
+
node_output_mocks: Optional[MockNodeExecutionArg] = None,
|
191
192
|
max_concurrency: Optional[int] = None,
|
192
193
|
) -> TerminalWorkflowEvent:
|
193
194
|
"""
|
@@ -214,8 +215,9 @@ class BaseWorkflow(Generic[InputsType, StateType], metaclass=_BaseWorkflowMeta):
|
|
214
215
|
cancel_signal: Optional[ThreadingEvent] = None
|
215
216
|
A threading event that can be used to cancel the Workflow Execution.
|
216
217
|
|
217
|
-
node_output_mocks: Optional[
|
218
|
-
A list of Outputs to mock for Nodes during Workflow Execution.
|
218
|
+
node_output_mocks: Optional[MockNodeExecutionArg] = None
|
219
|
+
A list of Outputs to mock for Nodes during Workflow Execution. Each mock can include a `when_condition`
|
220
|
+
that must be met for the mock to be used.
|
219
221
|
|
220
222
|
max_concurrency: Optional[int] = None
|
221
223
|
The max number of concurrent threads to run the Workflow with. If not provided, the Workflow will run
|
@@ -295,7 +297,7 @@ class BaseWorkflow(Generic[InputsType, StateType], metaclass=_BaseWorkflowMeta):
|
|
295
297
|
entrypoint_nodes: Optional[RunFromNodeArg] = None,
|
296
298
|
external_inputs: Optional[ExternalInputsArg] = None,
|
297
299
|
cancel_signal: Optional[ThreadingEvent] = None,
|
298
|
-
node_output_mocks: Optional[
|
300
|
+
node_output_mocks: Optional[MockNodeExecutionArg] = None,
|
299
301
|
max_concurrency: Optional[int] = None,
|
300
302
|
) -> WorkflowEventStream:
|
301
303
|
"""
|
@@ -323,8 +325,9 @@ class BaseWorkflow(Generic[InputsType, StateType], metaclass=_BaseWorkflowMeta):
|
|
323
325
|
cancel_signal: Optional[ThreadingEvent] = None
|
324
326
|
A threading event that can be used to cancel the Workflow Execution.
|
325
327
|
|
326
|
-
node_output_mocks: Optional[
|
327
|
-
A list of Outputs to mock for Nodes during Workflow Execution.
|
328
|
+
node_output_mocks: Optional[MockNodeExecutionArg] = None
|
329
|
+
A list of Outputs to mock for Nodes during Workflow Execution. Each mock can include a `when_condition`
|
330
|
+
that must be met for the mock to be used.
|
328
331
|
|
329
332
|
max_concurrency: Optional[int] = None
|
330
333
|
The max number of concurrent threads to run the Workflow with. If not provided, the Workflow will run
|
@@ -7,14 +7,14 @@ vellum_cli/image_push.py,sha256=SJwhwWJsLjwGNezNVd_oCVpFMfPsAB3dfLWmriZZUtw,4419
|
|
7
7
|
vellum_cli/logger.py,sha256=PuRFa0WCh4sAGFS5aqWB0QIYpS6nBWwPJrIXpWxugV4,1022
|
8
8
|
vellum_cli/ping.py,sha256=lWyJw6sziXjyTopTYRdFF5hV-sYPVDdX0yVbG5fzcY4,585
|
9
9
|
vellum_cli/pull.py,sha256=7yvg4oBOgsbBEsgXtCpYlNR4AOR8hPICamY-4HI-3kM,9031
|
10
|
-
vellum_cli/push.py,sha256=
|
10
|
+
vellum_cli/push.py,sha256=j4XLSircGX3aHz35i3HyJ4jynWiEH6xVm1uspavPeLM,9101
|
11
11
|
vellum_cli/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
12
|
vellum_cli/tests/conftest.py,sha256=AFYZryKA2qnUuCPBxBKmHLFoPiE0WhBFFej9tNwSHdc,1526
|
13
13
|
vellum_cli/tests/test_config.py,sha256=uvKGDc8BoVyT9_H0Z-g8469zVxomn6Oi3Zj-vK7O_wU,2631
|
14
14
|
vellum_cli/tests/test_main.py,sha256=qDZG-aQauPwBwM6A2DIu1494n47v3pL28XakTbLGZ-k,272
|
15
15
|
vellum_cli/tests/test_ping.py,sha256=QtbhYKMYn1DFnDyBij2mkQO32j9KOpZ5Pf0yek7k_Ao,1284
|
16
16
|
vellum_cli/tests/test_pull.py,sha256=JURmgGs5lSnpzefSx4K13eF2swv7O8OF86-4df81Zjo,25241
|
17
|
-
vellum_cli/tests/test_push.py,sha256=
|
17
|
+
vellum_cli/tests/test_push.py,sha256=e0nJlyRQjfRPjXlHm9uh5Z5eGZMzu1lnpEhO35nGlsc,21330
|
18
18
|
vellum_ee/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
19
|
vellum_ee/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
20
|
vellum_ee/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -77,12 +77,12 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_n
|
|
77
77
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=1HaEwIbxzWl2OEEVlsNcHFQKMhUKQPlsIMaHnjvMODI,3754
|
78
78
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=5eKEMwrKT5O8dPsOgQ89iZwzpA304jneimQeT9GlpLk,2428
|
79
79
|
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=xmKyOKqGRhWUXXbTbCAXX40qINcvK7mjpEfXz0Ny21s,7404
|
80
|
-
vellum_ee/workflows/display/types.py,sha256=
|
80
|
+
vellum_ee/workflows/display/types.py,sha256=s1w2KELKI2kde4G2M3iniOEdPObNKYgYtr31sAgZqRI,2644
|
81
81
|
vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
82
82
|
vellum_ee/workflows/display/utils/vellum.py,sha256=IGHobHz0QG8TWdJNxlQ81khCmJv7piLjE64l4zc33kI,7743
|
83
|
-
vellum_ee/workflows/display/vellum.py,sha256
|
83
|
+
vellum_ee/workflows/display/vellum.py,sha256=1mcZQQ4gd5GYrVKgIQ3ejy8SqRss2CWUL0KMf44zgUc,8122
|
84
84
|
vellum_ee/workflows/display/workflows/__init__.py,sha256=kapXsC67VJcgSuiBMa86FdePG5A9kMB5Pi4Uy1O2ob4,207
|
85
|
-
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=
|
85
|
+
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=8inuxnxeJbysEhJIGdxLZTvQ2aPJj-OSGmSeotwe7fo,15782
|
86
86
|
vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=kp0u8LN_2IwshLrhMImhpZx1hRyAcD5gXY-kDuuaGMQ,1269
|
87
87
|
vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=yl1ytpl9_lijOGeDPWSypWYRJ7aOEVA7NgUg81jTuCs,2229
|
88
88
|
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=IiHfMglir81cwPFYnwvgynp79cgzFyYVkMJAABIi3BQ,17035
|
@@ -108,13 +108,14 @@ vellum_ee/workflows/tests/local_workflow/nodes/final_output.py,sha256=ZX7zBv87zi
|
|
108
108
|
vellum_ee/workflows/tests/local_workflow/nodes/templating_node.py,sha256=NQwFN61QkHfI3Vssz-B0NKGfupK8PU0FDSAIAhYBLi0,325
|
109
109
|
vellum_ee/workflows/tests/local_workflow/workflow.py,sha256=A4qOzOPNwePYxWbcAgIPLsmrVS_aVEZEc-wULSv787Q,393
|
110
110
|
vellum_ee/workflows/tests/test_display_meta.py,sha256=pzdqND4KLWs7EUIbpXuqgso7BIRpoUsO3T_bgeENs0Q,2205
|
111
|
+
vellum_ee/workflows/tests/test_server.py,sha256=SvKUrUPmOf3sIInXcFjETekql60npb4cAn1GPbF0bPs,391
|
111
112
|
vellum_ee/workflows/tests/test_virtual_files.py,sha256=TJEcMR0v2S8CkloXNmCHA0QW0K6pYNGaIjraJz7sFvY,2762
|
112
|
-
vellum/__init__.py,sha256=
|
113
|
+
vellum/__init__.py,sha256=NPSLAe9-b6SSiyf-FrvMxVy-cKsAEerg8m_HhINTqmE,35794
|
113
114
|
vellum/client/README.md,sha256=JkCJjmMZl4jrPj46pkmL9dpK4gSzQQmP5I7z4aME4LY,4749
|
114
|
-
vellum/client/__init__.py,sha256=
|
115
|
+
vellum/client/__init__.py,sha256=j6zi0NZ4BMC6JrwckvzMWuG5x8KoOvO4KqsLhvVCa68,117624
|
115
116
|
vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
|
116
117
|
vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
117
|
-
vellum/client/core/client_wrapper.py,sha256=
|
118
|
+
vellum/client/core/client_wrapper.py,sha256=u1VLrEPJQZ055tQYEFf0-nEI5ccFS1CB6MysOmwok5g,1869
|
118
119
|
vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
119
120
|
vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
|
120
121
|
vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
|
@@ -177,7 +178,7 @@ vellum/client/resources/workspace_secrets/__init__.py,sha256=FTtvy8EDg9nNNg9WCat
|
|
177
178
|
vellum/client/resources/workspace_secrets/client.py,sha256=h7UzXLyTttPq1t-JZGMg1BWxypxJvBGUdqg7KGT7MK4,8027
|
178
179
|
vellum/client/resources/workspaces/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
179
180
|
vellum/client/resources/workspaces/client.py,sha256=RthwzN1o-Jxwg5yyNNodavFyNUSxfLoTv26w3mRR5g8,3595
|
180
|
-
vellum/client/types/__init__.py,sha256=
|
181
|
+
vellum/client/types/__init__.py,sha256=HsQa33k5NOOW9zQdCCxp6REWnFHvqqR-vJl0RlNmxh0,53975
|
181
182
|
vellum/client/types/ad_hoc_execute_prompt_event.py,sha256=bCjujA2XsOgyF3bRZbcEqV2rOIymRgsLoIRtZpB14xg,607
|
182
183
|
vellum/client/types/ad_hoc_expand_meta.py,sha256=1gv-NCsy_6xBYupLvZH979yf2VMdxAU-l0y0ynMKZaw,1331
|
183
184
|
vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py,sha256=Bfvf1d_dkmshxRACVM5vcxbH_7AQY23RmrrnPc0ytYY,939
|
@@ -266,6 +267,10 @@ vellum/client/types/ephemeral_prompt_cache_config_type_enum.py,sha256=houFyNbNr9
|
|
266
267
|
vellum/client/types/error_input.py,sha256=UiYDo7pxeCmW7REuk80ByzUp1hxEQwQCEA5isZc0ZUc,786
|
267
268
|
vellum/client/types/error_vellum_value.py,sha256=Y7yO8Y1eOlbRyOqbOh6MyPRNHYKH48gIhlZIRcw1UaA,726
|
268
269
|
vellum/client/types/error_vellum_value_request.py,sha256=o0aSn34dRcpnAwAfwW_sgwP7CkODGd5448w2Olg-spg,755
|
270
|
+
vellum/client/types/execute_api_request_bearer_token.py,sha256=agAhp9lzfzZcYGZdzg2jHAEHCaHlqzbgp6qeeNebcto,183
|
271
|
+
vellum/client/types/execute_api_request_body.py,sha256=MArsO_-H41lU8Lz0dB78MVcFupjWtRV7UBEljY3Dnwk,169
|
272
|
+
vellum/client/types/execute_api_request_headers_value.py,sha256=bHtGwOpknQDcQo6qtMKqJxaYpvbinDfwx2uaPzyuZ9s,184
|
273
|
+
vellum/client/types/execute_api_response.py,sha256=QpUDx-A2tBELMLjxhcHwJyoNm-I0d8QfdCb5f1TAOEE,804
|
269
274
|
vellum/client/types/execute_prompt_event.py,sha256=wq_TZBDJcmXQhSj25jR9nMTnN-mP8Ku5Vq3rLqmwE5Q,521
|
270
275
|
vellum/client/types/execute_prompt_response.py,sha256=n6ODveXcO8uWG-kr_B9wXziHH8JUaVTUcUAZKifClEo,334
|
271
276
|
vellum/client/types/execute_workflow_response.py,sha256=0Q-NGPv5jpxjq6xNlHa3qUNK7yOmkU8h6Z2vQb6bHsU,1022
|
@@ -357,6 +362,7 @@ vellum/client/types/metadata_filter_config_request.py,sha256=eFmoTIVv4RB6DRaxqyD
|
|
357
362
|
vellum/client/types/metadata_filter_rule_combinator.py,sha256=3Vpp1Mnv3As7efkxWTeV8qd4gdJ6OLoLhz_UeVBHAX8,165
|
358
363
|
vellum/client/types/metadata_filter_rule_request.py,sha256=Pcs0TsU7CRnsEUoH0DWb-c9DTP2UW67lJKXlsTLXV48,1135
|
359
364
|
vellum/client/types/metadata_filters_request.py,sha256=Yaiu7rkcrV2bCFk6HrZSjuF6V-6JYjZTpzxv7_MFe70,345
|
365
|
+
vellum/client/types/method_enum.py,sha256=PekC3BhlCbdqKHL-M8aMG7zEsHFOY9jrANNxysaKa5g,175
|
360
366
|
vellum/client/types/metric_definition_execution.py,sha256=uLi7Wj1b0f5tjiZWbLGLZMLiNOLZ3ofR57WHne116t8,907
|
361
367
|
vellum/client/types/metric_definition_history_item.py,sha256=oR0m0PG_NGpEBSwJ3n-CFi6TJo3o5Y4D_wfaqpk2VxI,1183
|
362
368
|
vellum/client/types/metric_definition_input.py,sha256=4nmwpPqbeNQYCzLkXCkc-FGV5K2Zfa22xqSUe_L6o5s,331
|
@@ -611,6 +617,7 @@ vellum/client/types/vellum_error_code_enum.py,sha256=OtW7fuM3RrRIDHbbJtk2FxPf70J
|
|
611
617
|
vellum/client/types/vellum_error_request.py,sha256=RacXJoIgR8MeXXWDMI76pkxLBhCRgHnbj-aIJytZtP4,650
|
612
618
|
vellum/client/types/vellum_image.py,sha256=wkFRgxOkxFPrmRdWTO58_41_vk0HYn5k4xsc-5ywxEs,637
|
613
619
|
vellum/client/types/vellum_image_request.py,sha256=_Gr4L7PSY8PNQINyTy04hPdwLc8_bR1RTUWZ73RQRYM,644
|
620
|
+
vellum/client/types/vellum_secret.py,sha256=jru3nBCquZHZ3wEdpgKZNmy2WFh26PVKrTNaXeVSsZQ,555
|
614
621
|
vellum/client/types/vellum_value.py,sha256=fpLQ84tTHb2OQK162TIqmfwa2_31M9NAmkzA1DIPAGY,969
|
615
622
|
vellum/client/types/vellum_value_logical_condition_group_request.py,sha256=vyr6lhHuS-6YtcFL5TTmPGtKRoNI9w63N7N2RPQwKVQ,1402
|
616
623
|
vellum/client/types/vellum_value_logical_condition_request.py,sha256=HkZfj4X48UHFrPDHgUi3lp0MUGBMfroC0noNqZ_rW8o,1177
|
@@ -693,7 +700,7 @@ vellum/evaluations/utils/env.py,sha256=Xj_nxsoU5ox06EOTjRopR4lrigQI6Le6qbWGltYoE
|
|
693
700
|
vellum/evaluations/utils/exceptions.py,sha256=dXMAkzqbHV_AP5FjjbegPlfUE0zQDlpA3qOsoOJUxfg,49
|
694
701
|
vellum/evaluations/utils/paginator.py,sha256=rEED_BJAXAM6tM1yMwHePNzszjq_tTq4NbQvi1jWQ_Q,697
|
695
702
|
vellum/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
696
|
-
vellum/plugins/pydantic.py,sha256=
|
703
|
+
vellum/plugins/pydantic.py,sha256=BMUwC4OkxtNf6hpLwb0T4MBUKgkGy55T_5Ww7GHpHYo,3068
|
697
704
|
vellum/plugins/utils.py,sha256=U9ZY9KdE3RRvbcG01hXxu9CvfJD6Fo7nJDgcHjQn0FI,606
|
698
705
|
vellum/plugins/vellum_mypy.py,sha256=QTuMSq6PiZW1dyTUZ5Bf1d4XkgFj0TKAgZLP8f4UgL4,27914
|
699
706
|
vellum/prompts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -840,6 +847,10 @@ vellum/types/ephemeral_prompt_cache_config_type_enum.py,sha256=2UZs7ueVFNQA-v_40
|
|
840
847
|
vellum/types/error_input.py,sha256=8ecGTnmZjqmxueqZyOjNkCasQ2Zg7qR0rzhDmFwLF4c,149
|
841
848
|
vellum/types/error_vellum_value.py,sha256=eALdKdSBCedvLdSjhg4xJeoTzjf2fNr-BqlhRG5fS5o,156
|
842
849
|
vellum/types/error_vellum_value_request.py,sha256=4wB0ZFHx9wEluEDqwY8aTYLK5Gy07Gxd6mfJ4YPsP9g,164
|
850
|
+
vellum/types/execute_api_request_bearer_token.py,sha256=Xu9SNdqkvilFOWuHnrA688biVOIeiRzuwidHflx5mPg,170
|
851
|
+
vellum/types/execute_api_request_body.py,sha256=ulfvgCNEXbzdnuwyRu2qMM93zIZSIGgq1PlB41pFvwQ,162
|
852
|
+
vellum/types/execute_api_request_headers_value.py,sha256=lAMglvqWdhpku8kfrNGYbA6QomWunvNS9xZ92sxnIEM,171
|
853
|
+
vellum/types/execute_api_response.py,sha256=NNFaOCwse1BGtN6XBTG1h9cU7Iy3ErdIrbgK_pQbs6c,158
|
843
854
|
vellum/types/execute_prompt_event.py,sha256=zLtvzIZijE-L7Nc3jNmvbu9UkKwjEILOs9RjHWYe7qs,158
|
844
855
|
vellum/types/execute_prompt_response.py,sha256=pSfHv_pQjYAudCsMDfsHdAXM0H-5MLAwdVv1145up2A,161
|
845
856
|
vellum/types/execute_workflow_response.py,sha256=zDo_qlLq83gciC7VL-O2C9vw0n4_15eE9iNCcOqUQxA,163
|
@@ -931,6 +942,7 @@ vellum/types/metadata_filter_config_request.py,sha256=uN2zNxSJxm-2Eehu1LibowL5w4
|
|
931
942
|
vellum/types/metadata_filter_rule_combinator.py,sha256=bHx8PgGv5n_3cC-blXV20DKekL6YV3_pidyMKkJ8r_I,169
|
932
943
|
vellum/types/metadata_filter_rule_request.py,sha256=LULGRo2_1WXc8GbFQioEzB1BfAfcOONwSgrRpwXlQig,166
|
933
944
|
vellum/types/metadata_filters_request.py,sha256=Czs4HD9ibSdtX026v3NMur6L6wKOYYkvd5Em1-UVI2o,162
|
945
|
+
vellum/types/method_enum.py,sha256=ZuFW7Kh-SyyBNT4Kkw3HCj1CL_GBrbLFbN-7XJxw2JM,149
|
934
946
|
vellum/types/metric_definition_execution.py,sha256=Yx5b1CygziiPLjlZDQF0lVVI7ubRLVJn16vT3N7zmHQ,165
|
935
947
|
vellum/types/metric_definition_history_item.py,sha256=OUGYJ9yHc60QiYh_C8-YuA1zHeQ9v5lShdaJ5KEl-1c,168
|
936
948
|
vellum/types/metric_definition_input.py,sha256=TwMwjC_MNiLdodsvT52D7aa_wRY-0kT047flY3sFxII,161
|
@@ -1185,6 +1197,7 @@ vellum/types/vellum_error_code_enum.py,sha256=as6FP8wBHB5lTQ80x1d_G_i3Vu7i5EWUuk
|
|
1185
1197
|
vellum/types/vellum_error_request.py,sha256=gjU_A4UWh91mirqIlPzX84iEmMT7JR3DoMPjDw9_2mQ,158
|
1186
1198
|
vellum/types/vellum_image.py,sha256=Aju40iIofNXNiPw0gBG1BuV6FR16ZecNDORCPPB4oio,150
|
1187
1199
|
vellum/types/vellum_image_request.py,sha256=ZNSTZub8Kuy0Arr3CriVgLojE5MZMnIongnx0Pq4QMA,158
|
1200
|
+
vellum/types/vellum_secret.py,sha256=-eRj7iUevkqFnRgVIjYTDGZUx9_zhY-olHzBVyWXuvs,151
|
1188
1201
|
vellum/types/vellum_value.py,sha256=me0nmquE3UPpT47q6kzRKFFrTzTw4-q9lR1eK-A-1ow,150
|
1189
1202
|
vellum/types/vellum_value_logical_condition_group_request.py,sha256=cdvckQ3IKVoxNIx2PGyGsBXxOGK39T4P_xEP9fDWJss,182
|
1190
1203
|
vellum/types/vellum_value_logical_condition_request.py,sha256=R3qtJZw6Uo3Qh9MHyIZxWXrVssI3QtQopktdVN2UdSQ,176
|
@@ -1318,36 +1331,38 @@ vellum/workflows/nodes/core/__init__.py,sha256=5zDMCmyt1v0HTJzlUBwq3U9L825yZGZhT
|
|
1318
1331
|
vellum/workflows/nodes/core/error_node/__init__.py,sha256=g7RRnlHhqu4qByfLjBwCunmgGA8dI5gNsjS3h6TwlSI,60
|
1319
1332
|
vellum/workflows/nodes/core/error_node/node.py,sha256=MFHU5vITYSK-L9CuMZ49In2ZeNLWnhZD0f8r5dWvb5Y,1270
|
1320
1333
|
vellum/workflows/nodes/core/inline_subworkflow_node/__init__.py,sha256=nKNEH1QTl-1PcvmYoqSWEl0-t6gAur8GLTXHzklRQfM,84
|
1321
|
-
vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=
|
1334
|
+
vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=q0uuS1Coen5_GgAUlZFKeYmCExjBbKxC74Ove-piTGI,5969
|
1322
1335
|
vellum/workflows/nodes/core/inline_subworkflow_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1323
1336
|
vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py,sha256=n0-821Ov9ZfRFX_lbzLy5o2rX8fEw2qoxz0aFWCOxVg,1547
|
1324
1337
|
vellum/workflows/nodes/core/map_node/__init__.py,sha256=MXpZYmGfhsMJHqqlpd64WiJRtbAtAMQz-_3fCU_cLV0,56
|
1325
|
-
vellum/workflows/nodes/core/map_node/node.py,sha256=
|
1338
|
+
vellum/workflows/nodes/core/map_node/node.py,sha256=zL0mN0CAJ8NL-Uaqn4o2kSiw3jYgxrwJraQdMdrz848,8159
|
1326
1339
|
vellum/workflows/nodes/core/map_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1327
1340
|
vellum/workflows/nodes/core/map_node/tests/test_node.py,sha256=P7ImQyeLcK-aEJUYCX1gPQyuOxdxnSPpI3mNPpKQ62Y,1919
|
1328
1341
|
vellum/workflows/nodes/core/retry_node/__init__.py,sha256=lN2bIy5a3Uzhs_FYCrooADyYU6ZGShtvLKFWpelwPvo,60
|
1329
|
-
vellum/workflows/nodes/core/retry_node/node.py,sha256=
|
1342
|
+
vellum/workflows/nodes/core/retry_node/node.py,sha256=loIZJUcCsN0y3mr4pw7f23l4eDY69IoTwA2TMnxJlxA,4292
|
1330
1343
|
vellum/workflows/nodes/core/retry_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1331
1344
|
vellum/workflows/nodes/core/retry_node/tests/test_node.py,sha256=RM_OHwxrHwyxvlQQBJPqVBxpedFuWQ9h2-Xa3kP75sc,4399
|
1332
1345
|
vellum/workflows/nodes/core/templating_node/__init__.py,sha256=GmyuYo81_A1_Bz6id69ozVFS6FKiuDsZTiA3I6MaL2U,70
|
1333
1346
|
vellum/workflows/nodes/core/templating_node/node.py,sha256=zCYhq88qLTvoC9LetVrD9sLXkwHZsaWekxMhru_nV70,3752
|
1334
1347
|
vellum/workflows/nodes/core/templating_node/tests/test_templating_node.py,sha256=5iZWQWdJKDHMXBY8bhpb-Dpy9FTfW1HXxGUTivykZAA,4621
|
1335
1348
|
vellum/workflows/nodes/core/try_node/__init__.py,sha256=JVD4DrldTIqFQQFrubs9KtWCCc0YCAc7Fzol5ZWIWeM,56
|
1336
|
-
vellum/workflows/nodes/core/try_node/node.py,sha256=
|
1349
|
+
vellum/workflows/nodes/core/try_node/node.py,sha256=bk2uhYUl10yaPJlOBWxiL7igTUrL_7mM9S2nvsdWB68,4242
|
1337
1350
|
vellum/workflows/nodes/core/try_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1338
1351
|
vellum/workflows/nodes/core/try_node/tests/test_node.py,sha256=Wc2kLl-MkffsBxl3IiFaqLd16e2Iosxhk7qBnojPvQg,4092
|
1339
1352
|
vellum/workflows/nodes/displayable/__init__.py,sha256=6F_4DlSwvHuilWnIalp8iDjjDXl0Nmz4QzJV2PYe5RI,1023
|
1340
1353
|
vellum/workflows/nodes/displayable/api_node/__init__.py,sha256=MoxdQSnidIj1Nf_d-hTxlOxcZXaZnsWFDbE-PkTK24o,56
|
1341
|
-
vellum/workflows/nodes/displayable/api_node/node.py,sha256=
|
1354
|
+
vellum/workflows/nodes/displayable/api_node/node.py,sha256=QdpsyGVxo5PcN8nwGZpcpW_YMKHr3_VvmbK1BlrdOFk,2547
|
1355
|
+
vellum/workflows/nodes/displayable/api_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1356
|
+
vellum/workflows/nodes/displayable/api_node/tests/test_api_node.py,sha256=yo3zTMRxgpSdWmJ68X610A5rrtCchyfqhcDd2X-GJiU,1249
|
1342
1357
|
vellum/workflows/nodes/displayable/bases/__init__.py,sha256=0mWIx3qUrzllV7jqt7wN03vWGMuI1WrrLZeMLT2Cl2c,304
|
1343
1358
|
vellum/workflows/nodes/displayable/bases/api_node/__init__.py,sha256=1jwx4WC358CLA1jgzl_UD-rZmdMm2v9Mps39ndwCD7U,64
|
1344
|
-
vellum/workflows/nodes/displayable/bases/api_node/node.py,sha256=
|
1359
|
+
vellum/workflows/nodes/displayable/bases/api_node/node.py,sha256=nIFkP7eeXXSzOVUoQgjPPCzy3_P083X_F5fCm2OAjdU,3798
|
1345
1360
|
vellum/workflows/nodes/displayable/bases/base_prompt_node/__init__.py,sha256=Org3xTvgp1pA0uUXFfnJr29D3HzCey2lEdYF4zbIUgo,70
|
1346
1361
|
vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=r_gOmeGFQQfzhAc1_bmzcwUvH-Xllc93gE7miTV4rQE,2824
|
1347
1362
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/__init__.py,sha256=Hl35IAoepRpE-j4cALaXVJIYTYOF3qszyVbxTj4kS1s,82
|
1348
1363
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/constants.py,sha256=fnjiRWLoRlC4Puo5oQcpZD5Hd-EesxsAo9l5tGAkpZQ,270
|
1349
|
-
vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=
|
1350
|
-
vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=
|
1364
|
+
vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=UrmI8NkNJFGq9f59gD12S1e8D_R3ROHc934JmtfQk9I,6841
|
1365
|
+
vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=NbwLOoWG5VVcnwL63WmaYck87y2QW36-JQWerOlKyx4,5713
|
1351
1366
|
vellum/workflows/nodes/displayable/bases/search_node.py,sha256=3UtbqY3QO4kzfJHbmUNZGnEEfJmaoiF892u8H6TGjp8,5381
|
1352
1367
|
vellum/workflows/nodes/displayable/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1353
1368
|
vellum/workflows/nodes/displayable/bases/tests/test_utils.py,sha256=eqdqbKNRWVMDPevgwLg1i6YK0g4L4bCy-7xCBN5yYZI,3156
|
@@ -1358,8 +1373,8 @@ vellum/workflows/nodes/displayable/code_execution_node/node.py,sha256=KZ5d3_mdps
|
|
1358
1373
|
vellum/workflows/nodes/displayable/code_execution_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1359
1374
|
vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1360
1375
|
vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/main.py,sha256=5QsbmkzSlSbcbWTG_JmIqcP-JNJzOPTKxGzdHos19W4,79
|
1361
|
-
vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py,sha256=
|
1362
|
-
vellum/workflows/nodes/displayable/code_execution_node/utils.py,sha256=
|
1376
|
+
vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py,sha256=zrSgkUGaaTy-cv9h5kLBnao1Aobcn02w39wmcUx7X3I,13224
|
1377
|
+
vellum/workflows/nodes/displayable/code_execution_node/utils.py,sha256=hF9tdCpta7WN1ANz467Q9LNlISOSmp79jDIkR5d2iQM,3542
|
1363
1378
|
vellum/workflows/nodes/displayable/conditional_node/__init__.py,sha256=AS_EIqFdU1F9t8aLmbZU-rLh9ry6LCJ0uj0D8F0L5Uw,72
|
1364
1379
|
vellum/workflows/nodes/displayable/conditional_node/node.py,sha256=Qjfl33gZ3JEgxBA1EgzSUebboGvsARthIxxcQyvx5Gg,1152
|
1365
1380
|
vellum/workflows/nodes/displayable/final_output_node/__init__.py,sha256=G7VXM4OWpubvSJtVkGmMNeqgb9GkM7qZT838eL18XU4,72
|
@@ -1369,19 +1384,23 @@ vellum/workflows/nodes/displayable/guardrail_node/node.py,sha256=h5nIBzQxbXTrdTq
|
|
1369
1384
|
vellum/workflows/nodes/displayable/inline_prompt_node/__init__.py,sha256=gSUOoEZLlrx35-tQhSAd3An8WDwBqyiQh-sIebLU9wU,74
|
1370
1385
|
vellum/workflows/nodes/displayable/inline_prompt_node/node.py,sha256=UWOxIa3kizhDa5joAmEDlh0P66EaqatqxzLLbvbUybw,2294
|
1371
1386
|
vellum/workflows/nodes/displayable/inline_prompt_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1372
|
-
vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py,sha256=
|
1387
|
+
vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py,sha256=BoUdteHm582tnVaWnums69uJ3GIbE7M-vgQSHl7VSJs,8539
|
1373
1388
|
vellum/workflows/nodes/displayable/merge_node/__init__.py,sha256=J8IC08dSH7P76wKlNuxe1sn7toNGtSQdFirUbtPDEs0,60
|
1374
1389
|
vellum/workflows/nodes/displayable/merge_node/node.py,sha256=nZtGGVAvY4fvGg8vwV6sTQ8_QLRnigeXt0vf2FL272A,450
|
1375
1390
|
vellum/workflows/nodes/displayable/note_node/__init__.py,sha256=KWA3P4fyYJ-fOTky8qNGlcOotQ-HeHJ9AjZt6mRQmCE,58
|
1376
1391
|
vellum/workflows/nodes/displayable/note_node/node.py,sha256=sIN1VBQ7zeT3GhN0kupXbFfdpvgedWV79k4woJNp5IQ,394
|
1377
1392
|
vellum/workflows/nodes/displayable/prompt_deployment_node/__init__.py,sha256=krX1Hds-TSVYZsx0wJFX4wsAKkEFYOX1ifwRGiIM-EA,82
|
1378
1393
|
vellum/workflows/nodes/displayable/prompt_deployment_node/node.py,sha256=ruOgvpg_9KV_HkovPQeu6TKpur9DT_J4CYQo50tULCY,2680
|
1394
|
+
vellum/workflows/nodes/displayable/prompt_deployment_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1395
|
+
vellum/workflows/nodes/displayable/prompt_deployment_node/tests/test_node.py,sha256=ymEwMwrwRuQGyvkTnqeRZvfK7dhnf-kmRJTuwlycNjI,3939
|
1379
1396
|
vellum/workflows/nodes/displayable/search_node/__init__.py,sha256=hpBpvbrDYf43DElRZFLzieSn8weXiwNiiNOJurERQbs,62
|
1380
1397
|
vellum/workflows/nodes/displayable/search_node/node.py,sha256=_VHHuTNN4icZBgc7O5U9SVKrv1zgKipU72fOtxTyrQU,1453
|
1381
1398
|
vellum/workflows/nodes/displayable/search_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1382
1399
|
vellum/workflows/nodes/displayable/search_node/tests/test_node.py,sha256=2-QCV7Vk_-YMls33p0GOUtCv3f2uPNZCjkB2CRjek7o,6562
|
1383
1400
|
vellum/workflows/nodes/displayable/subworkflow_deployment_node/__init__.py,sha256=9yYM6001YZeqI1VOk1QuEM_yrffk_EdsO7qaPzINKds,92
|
1384
|
-
vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=
|
1401
|
+
vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=sSRo_zX5QVI7V0qmReWMBkEa78HfQfjNIKwvKh7-Om8,8307
|
1402
|
+
vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1403
|
+
vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/test_node.py,sha256=c8RP-QnsERzIinVytAc0jVZ9nd7Jl3hbc9-_yG91Ros,5445
|
1385
1404
|
vellum/workflows/nodes/displayable/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1386
1405
|
vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py,sha256=CI7iMyyIlnds1rkVSjICOFg2UY0yV51NTKtKpfeEME4,4677
|
1387
1406
|
vellum/workflows/nodes/displayable/tests/test_search_node_wth_text_output.py,sha256=VepO5z1277c1y5N6LLIC31nnWD1aak2m5oPFplfJHHs,6935
|
@@ -1390,6 +1409,7 @@ vellum/workflows/nodes/experimental/README.md,sha256=eF6DfIL8t-HbF9-mcofOMymKrra
|
|
1390
1409
|
vellum/workflows/nodes/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1391
1410
|
vellum/workflows/nodes/experimental/openai_chat_completion_node/__init__.py,sha256=lsyD9laR9p7kx5-BXGH2gUTM242UhKy8SMV0SR6S2iE,90
|
1392
1411
|
vellum/workflows/nodes/experimental/openai_chat_completion_node/node.py,sha256=1EGeiaT-Zoo6pttQFKKBcdf3dmhAbjKGaErYD5FFwlc,10185
|
1412
|
+
vellum/workflows/nodes/mocks.py,sha256=gvM2tyoe-V84jFbFdhQsyGAPyQBzmjn_CkhT_yxccgY,499
|
1393
1413
|
vellum/workflows/nodes/utils.py,sha256=T7krLipDSI007JkkH2zsfyQ-tfOBH4hyFzQ0YJKYpuw,4025
|
1394
1414
|
vellum/workflows/outputs/__init__.py,sha256=AyZ4pRh_ACQIGvkf0byJO46EDnSix1ZCAXfvh-ms1QE,94
|
1395
1415
|
vellum/workflows/outputs/base.py,sha256=Wu48tqyQoxpflBUcwzKeZjSVp1LPKrBwuIvnx__9H90,8459
|
@@ -1412,11 +1432,11 @@ vellum/workflows/references/workflow_input.py,sha256=86IuhlBz-9cGxeUzizyjdp482aj
|
|
1412
1432
|
vellum/workflows/resolvers/__init__.py,sha256=eH6hTvZO4IciDaf_cf7aM2vs-DkBDyJPycOQevJxQnI,82
|
1413
1433
|
vellum/workflows/resolvers/base.py,sha256=WHra9LRtlTuB1jmuNqkfVE2JUgB61Cyntn8f0b0WZg4,411
|
1414
1434
|
vellum/workflows/runner/__init__.py,sha256=i1iG5sAhtpdsrlvwgH6B-m49JsINkiWyPWs8vyT-bqM,72
|
1415
|
-
vellum/workflows/runner/runner.py,sha256=
|
1435
|
+
vellum/workflows/runner/runner.py,sha256=kgfNtVGMdx3nLM0K4upflz-k5iJMKQuwm9MkKDygSuE,28845
|
1416
1436
|
vellum/workflows/sandbox.py,sha256=GVJzVjMuYzOBnSrboB0_6MMRZWBluAyQ2o7syeaeBd0,2235
|
1417
1437
|
vellum/workflows/state/__init__.py,sha256=yUUdR-_Vl7UiixNDYQZ-GEM_kJI9dnOia75TtuNEsnE,60
|
1418
1438
|
vellum/workflows/state/base.py,sha256=IIl76sJtn0GfbFWBqMnpGuvtZyVyQMEXv0QKDfLy8Wg,14763
|
1419
|
-
vellum/workflows/state/context.py,sha256=
|
1439
|
+
vellum/workflows/state/context.py,sha256=80b7j11AuG6engdur-AH0dUPnbwu8QyzF_-crWmvUvI,2588
|
1420
1440
|
vellum/workflows/state/encoder.py,sha256=WdUidpOaBDx5lilJl8V8McFDHQYiCLCJR9dmktdzdZY,1836
|
1421
1441
|
vellum/workflows/state/store.py,sha256=VYGBQgN1bpd1as5eGiouV_7scg8QsRs4_1aqZAGIsRQ,793
|
1422
1442
|
vellum/workflows/state/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1425,7 +1445,6 @@ vellum/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
|
|
1425
1445
|
vellum/workflows/tests/test_sandbox.py,sha256=JKwaluI-lODQo7Ek9sjDstjL_WTdSqUlVik6ZVTfVOA,1826
|
1426
1446
|
vellum/workflows/types/__init__.py,sha256=KxUTMBGzuRCfiMqzzsykOeVvrrkaZmTTo1a7SLu8gRM,68
|
1427
1447
|
vellum/workflows/types/core.py,sha256=kMQremh_I8egXpiKmtMQbB6e3OczAWiRnnTq5V6xlD0,928
|
1428
|
-
vellum/workflows/types/cycle_map.py,sha256=-ZMQsKzZBpCi0bchJrkuN_dtCFuz9uFABy7Fq2PI58E,928
|
1429
1448
|
vellum/workflows/types/generics.py,sha256=9HzFvtcF8qpn1wcsly7er250MMwdS9r-BjSVco9UBj4,584
|
1430
1449
|
vellum/workflows/types/stack.py,sha256=RDSGLkcV612ge8UuAH9TZiEGXxJt0Av2-H5rfzrTVVI,1014
|
1431
1450
|
vellum/workflows/types/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1443,10 +1462,10 @@ vellum/workflows/utils/uuids.py,sha256=DFzPv9RCvsKhvdTEIQyfSek2A31D6S_QcmeLPbgrg
|
|
1443
1462
|
vellum/workflows/utils/vellum_variables.py,sha256=g5xHYB8etfHE32ek19nP6Anf8NyjhmUtOwO2KmQ5xZU,3111
|
1444
1463
|
vellum/workflows/vellum_client.py,sha256=ODrq_TSl-drX2aezXegf7pizpWDVJuTXH-j6528t75s,683
|
1445
1464
|
vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
|
1446
|
-
vellum/workflows/workflows/base.py,sha256=
|
1465
|
+
vellum/workflows/workflows/base.py,sha256=uYT0TQnEDtVaH3pErq785FhxxEEmk7C5ZGfuSO3QK8c,18537
|
1447
1466
|
vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnadGsrSZGa7t7LpJA,2008
|
1448
|
-
vellum_ai-0.13.
|
1449
|
-
vellum_ai-0.13.
|
1450
|
-
vellum_ai-0.13.
|
1451
|
-
vellum_ai-0.13.
|
1452
|
-
vellum_ai-0.13.
|
1467
|
+
vellum_ai-0.13.23.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
|
1468
|
+
vellum_ai-0.13.23.dist-info/METADATA,sha256=xeS3VmSv44WirfJlZ93OLirCl4GNlureoXjhZfDymC4,5335
|
1469
|
+
vellum_ai-0.13.23.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
1470
|
+
vellum_ai-0.13.23.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
|
1471
|
+
vellum_ai-0.13.23.dist-info/RECORD,,
|
vellum_cli/push.py
CHANGED
@@ -49,6 +49,9 @@ def push_command(
|
|
49
49
|
else config.workflows
|
50
50
|
)
|
51
51
|
|
52
|
+
if len(workflow_configs) > 1 and workspace:
|
53
|
+
workflow_configs = [w for w in workflow_configs if w.workspace == workspace]
|
54
|
+
|
52
55
|
if len(workflow_configs) == 0:
|
53
56
|
raise ValueError(f"No workflow config for '{module}' found in project to push.")
|
54
57
|
|
@@ -230,15 +233,11 @@ def push_command(
|
|
230
233
|
Visit at: https://app.vellum.ai/workflow-sandboxes/{response.workflow_sandbox_id}"""
|
231
234
|
)
|
232
235
|
|
233
|
-
requires_save = False
|
234
236
|
if not workflow_config.workflow_sandbox_id:
|
235
237
|
workflow_config.workflow_sandbox_id = response.workflow_sandbox_id
|
236
|
-
requires_save = True
|
237
238
|
|
238
239
|
if not workflow_config.deployments and response.workflow_deployment_id:
|
239
240
|
workflow_config.deployments.append(WorkflowDeploymentConfig(id=UUID(response.workflow_deployment_id)))
|
240
|
-
requires_save = True
|
241
241
|
|
242
|
-
|
243
|
-
|
244
|
-
logger.info("Updated vellum.lock file.")
|
242
|
+
config.save()
|
243
|
+
logger.info("Updated vellum.lock.json file.")
|
vellum_cli/tests/test_push.py
CHANGED
@@ -489,7 +489,7 @@ MY_OTHER_VELLUM_API_KEY=aaabbbcccddd
|
|
489
489
|
|
490
490
|
# AND the workflow sandbox id arg passed in should be `None`
|
491
491
|
call_args = vellum_client_class.return_value.workflows.push.call_args.kwargs
|
492
|
-
assert call_args["workflow_sandbox_id"] is None
|
492
|
+
assert call_args["workflow_sandbox_id"] is None, result.output
|
493
493
|
|
494
494
|
# AND with the correct api key
|
495
495
|
vellum_client_class.assert_called_once_with(
|
@@ -509,3 +509,83 @@ MY_OTHER_VELLUM_API_KEY=aaabbbcccddd
|
|
509
509
|
"deployments": [],
|
510
510
|
"ignore": None,
|
511
511
|
}
|
512
|
+
|
513
|
+
|
514
|
+
def test_push__workspace_option__both_options_already_configured(mock_module, vellum_client_class):
|
515
|
+
# GIVEN a single workflow configured
|
516
|
+
temp_dir = mock_module.temp_dir
|
517
|
+
module = mock_module.module
|
518
|
+
workflow_sandbox_id = mock_module.workflow_sandbox_id
|
519
|
+
set_pyproject_toml = mock_module.set_pyproject_toml
|
520
|
+
second_workflow_sandbox_id = str(uuid4())
|
521
|
+
|
522
|
+
# AND the module is configured twice
|
523
|
+
set_pyproject_toml(
|
524
|
+
{
|
525
|
+
"workflows": [
|
526
|
+
{
|
527
|
+
"module": module,
|
528
|
+
"workflow_sandbox_id": workflow_sandbox_id,
|
529
|
+
},
|
530
|
+
{
|
531
|
+
"module": module,
|
532
|
+
"workflow_sandbox_id": second_workflow_sandbox_id,
|
533
|
+
"workspace": "my_other_workspace",
|
534
|
+
},
|
535
|
+
],
|
536
|
+
"workspaces": [
|
537
|
+
{
|
538
|
+
"name": "my_other_workspace",
|
539
|
+
"api_key": "MY_OTHER_VELLUM_API_KEY",
|
540
|
+
}
|
541
|
+
],
|
542
|
+
}
|
543
|
+
)
|
544
|
+
|
545
|
+
# AND the .env file has the other api key stored
|
546
|
+
with open(os.path.join(temp_dir, ".env"), "w") as f:
|
547
|
+
f.write(
|
548
|
+
"""\
|
549
|
+
VELLUM_API_KEY=abcdef123456
|
550
|
+
MY_OTHER_VELLUM_API_KEY=aaabbbcccddd
|
551
|
+
"""
|
552
|
+
)
|
553
|
+
|
554
|
+
# AND a workflow exists in the module
|
555
|
+
_ensure_workflow_py(temp_dir, module)
|
556
|
+
|
557
|
+
# AND the push API call returns workflow sandbox id
|
558
|
+
vellum_client_class.return_value.workflows.push.return_value = WorkflowPushResponse(
|
559
|
+
workflow_sandbox_id=second_workflow_sandbox_id,
|
560
|
+
)
|
561
|
+
|
562
|
+
# WHEN calling `vellum push` on strict mode
|
563
|
+
runner = CliRunner()
|
564
|
+
result = runner.invoke(cli_main, ["push", module, "--workspace", "my_other_workspace"])
|
565
|
+
|
566
|
+
# THEN it should succeed
|
567
|
+
assert result.exit_code == 0, result.output
|
568
|
+
|
569
|
+
# AND we should have called the push API once
|
570
|
+
vellum_client_class.return_value.workflows.push.assert_called_once()
|
571
|
+
|
572
|
+
# AND the workflow sandbox id arg passed in should be `None`
|
573
|
+
call_args = vellum_client_class.return_value.workflows.push.call_args.kwargs
|
574
|
+
assert call_args["workflow_sandbox_id"] == second_workflow_sandbox_id
|
575
|
+
|
576
|
+
# AND with the correct api key
|
577
|
+
vellum_client_class.assert_called_once_with(
|
578
|
+
api_key="aaabbbcccddd",
|
579
|
+
environment=mock.ANY,
|
580
|
+
)
|
581
|
+
|
582
|
+
# AND the vellum lock file should have the same two workflows
|
583
|
+
with open(os.path.join(temp_dir, "vellum.lock.json")) as f:
|
584
|
+
lock_file_content = json.load(f)
|
585
|
+
assert len(lock_file_content["workflows"]) == 2
|
586
|
+
assert lock_file_content["workflows"][0]["module"] == module
|
587
|
+
assert lock_file_content["workflows"][0]["workflow_sandbox_id"] == workflow_sandbox_id
|
588
|
+
assert lock_file_content["workflows"][0]["workspace"] == "default"
|
589
|
+
assert lock_file_content["workflows"][1]["module"] == module
|
590
|
+
assert lock_file_content["workflows"][1]["workflow_sandbox_id"] == second_workflow_sandbox_id
|
591
|
+
assert lock_file_content["workflows"][1]["workspace"] == "my_other_workspace"
|
@@ -14,11 +14,10 @@ from vellum_ee.workflows.display.base import (
|
|
14
14
|
WorkflowMetaDisplayType,
|
15
15
|
WorkflowOutputDisplayType,
|
16
16
|
)
|
17
|
-
from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
|
18
|
-
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay, PortDisplay
|
19
17
|
|
20
18
|
if TYPE_CHECKING:
|
21
19
|
from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
|
20
|
+
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay, PortDisplay
|
22
21
|
from vellum_ee.workflows.display.workflows import BaseWorkflowDisplay
|
23
22
|
|
24
23
|
NodeDisplayType = TypeVar("NodeDisplayType", bound="BaseNodeDisplay")
|
@@ -63,32 +62,3 @@ class WorkflowDisplayContext(
|
|
63
62
|
workflow_output_displays: Dict[BaseDescriptor, WorkflowOutputDisplayType] = field(default_factory=dict)
|
64
63
|
edge_displays: Dict[Tuple[Port, Type[BaseNode]], EdgeDisplayType] = field(default_factory=dict)
|
65
64
|
port_displays: Dict[Port, "PortDisplay"] = field(default_factory=dict)
|
66
|
-
|
67
|
-
def build_event_display_context(self) -> WorkflowEventDisplayContext:
|
68
|
-
workflow_outputs = {
|
69
|
-
output.name: self.workflow_output_displays[output].id for output in self.workflow_output_displays
|
70
|
-
}
|
71
|
-
workflow_inputs = {input.name: self.workflow_input_displays[input].id for input in self.workflow_input_displays}
|
72
|
-
node_displays = {str(node.__id__): self.node_displays[node] for node in self.node_displays}
|
73
|
-
temp_node_displays = {}
|
74
|
-
for node in node_displays:
|
75
|
-
current_node = node_displays[node]
|
76
|
-
input_display = {}
|
77
|
-
if issubclass(current_node.__class__, BaseNodeVellumDisplay):
|
78
|
-
input_display = current_node.node_input_ids_by_name # type: ignore[attr-defined]
|
79
|
-
node_display_meta = {
|
80
|
-
output.name: current_node.output_display[output].id for output in current_node.output_display
|
81
|
-
}
|
82
|
-
port_display_meta = {port.name: current_node.port_displays[port].id for port in current_node.port_displays}
|
83
|
-
|
84
|
-
temp_node_displays[node] = NodeDisplay(
|
85
|
-
input_display=input_display,
|
86
|
-
output_display=node_display_meta,
|
87
|
-
port_display=port_display_meta,
|
88
|
-
)
|
89
|
-
display_meta = WorkflowEventDisplayContext(
|
90
|
-
workflow_outputs=workflow_outputs,
|
91
|
-
workflow_inputs=workflow_inputs,
|
92
|
-
node_displays=temp_node_displays,
|
93
|
-
)
|
94
|
-
return display_meta
|
@@ -113,8 +113,8 @@ class WorkflowOutputVellumDisplayOverrides(WorkflowOutputDisplay, WorkflowOutput
|
|
113
113
|
name: str
|
114
114
|
label: str
|
115
115
|
node_id: UUID
|
116
|
-
target_handle_id: UUID
|
117
116
|
display_data: NodeDisplayData
|
117
|
+
target_handle_id: Optional[UUID] = None
|
118
118
|
|
119
119
|
|
120
120
|
@dataclass
|
@@ -29,9 +29,15 @@ from vellum_ee.workflows.display.base import (
|
|
29
29
|
WorkflowOutputDisplayOverridesType,
|
30
30
|
WorkflowOutputDisplayType,
|
31
31
|
)
|
32
|
+
from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
|
32
33
|
from vellum_ee.workflows.display.nodes.get_node_display_class import get_node_display_class
|
33
34
|
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay, PortDisplay, PortDisplayOverrides
|
34
|
-
from vellum_ee.workflows.display.types import
|
35
|
+
from vellum_ee.workflows.display.types import (
|
36
|
+
NodeDisplay,
|
37
|
+
NodeDisplayType,
|
38
|
+
WorkflowDisplayContext,
|
39
|
+
WorkflowEventDisplayContext,
|
40
|
+
)
|
35
41
|
|
36
42
|
logger = logging.getLogger(__name__)
|
37
43
|
|
@@ -343,4 +349,42 @@ class BaseWorkflowDisplay(
|
|
343
349
|
display_class = importlib.import_module(workflow_display_module)
|
344
350
|
except ModuleNotFoundError:
|
345
351
|
return None
|
346
|
-
|
352
|
+
|
353
|
+
display_context = display_class.WorkflowDisplay(workflow_class).display_context
|
354
|
+
if not isinstance(display_context, WorkflowDisplayContext):
|
355
|
+
return None
|
356
|
+
|
357
|
+
workflow_outputs = {
|
358
|
+
output.name: display_context.workflow_output_displays[output].id
|
359
|
+
for output in display_context.workflow_output_displays
|
360
|
+
}
|
361
|
+
workflow_inputs = {
|
362
|
+
input.name: display_context.workflow_input_displays[input].id
|
363
|
+
for input in display_context.workflow_input_displays
|
364
|
+
}
|
365
|
+
node_displays = {
|
366
|
+
str(node.__id__): display_context.node_displays[node] for node in display_context.node_displays
|
367
|
+
}
|
368
|
+
temp_node_displays = {}
|
369
|
+
for node in node_displays:
|
370
|
+
current_node = node_displays[node]
|
371
|
+
input_display = {}
|
372
|
+
if isinstance(current_node, BaseNodeVellumDisplay):
|
373
|
+
input_display = current_node.node_input_ids_by_name
|
374
|
+
node_display_meta = {
|
375
|
+
output.name: current_node.output_display[output].id for output in current_node.output_display
|
376
|
+
}
|
377
|
+
port_display_meta = {port.name: current_node.port_displays[port].id for port in current_node.port_displays}
|
378
|
+
|
379
|
+
temp_node_displays[node] = NodeDisplay(
|
380
|
+
input_display=input_display,
|
381
|
+
output_display=node_display_meta,
|
382
|
+
port_display=port_display_meta,
|
383
|
+
)
|
384
|
+
|
385
|
+
display_meta = WorkflowEventDisplayContext(
|
386
|
+
workflow_outputs=workflow_outputs,
|
387
|
+
workflow_inputs=workflow_inputs,
|
388
|
+
node_displays=temp_node_displays,
|
389
|
+
)
|
390
|
+
return display_meta
|
@@ -0,0 +1,9 @@
|
|
1
|
+
from vellum.client.core.pydantic_utilities import UniversalBaseModel
|
2
|
+
|
3
|
+
|
4
|
+
def test_load_workflow_event_display_context():
|
5
|
+
from vellum_ee.workflows.display.types import WorkflowEventDisplayContext
|
6
|
+
|
7
|
+
# We are actually just ensuring there are no circular dependencies when
|
8
|
+
# our Workflow Server imports this class.
|
9
|
+
assert issubclass(WorkflowEventDisplayContext, UniversalBaseModel)
|