vellum-ai 0.12.3__py3-none-any.whl → 0.12.5__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/client/resources/workflows/client.py +32 -0
- vellum/client/types/chat_message_prompt_block.py +1 -1
- vellum/client/types/function_definition.py +26 -7
- vellum/client/types/jinja_prompt_block.py +1 -1
- vellum/client/types/plain_text_prompt_block.py +1 -1
- vellum/client/types/rich_text_prompt_block.py +1 -1
- vellum/client/types/variable_prompt_block.py +1 -1
- vellum/plugins/vellum_mypy.py +20 -23
- vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +21 -8
- vellum/workflows/nodes/displayable/inline_prompt_node/tests/__init__.py +0 -0
- vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py +64 -0
- vellum/workflows/sandbox.py +51 -0
- vellum/workflows/tests/__init__.py +0 -0
- vellum/workflows/tests/test_sandbox.py +62 -0
- vellum/workflows/types/core.py +2 -52
- vellum/workflows/utils/functions.py +41 -4
- vellum/workflows/utils/tests/test_functions.py +93 -0
- {vellum_ai-0.12.3.dist-info → vellum_ai-0.12.5.dist-info}/METADATA +1 -1
- {vellum_ai-0.12.3.dist-info → vellum_ai-0.12.5.dist-info}/RECORD +33 -28
- vellum_cli/__init__.py +14 -0
- vellum_cli/pull.py +16 -2
- vellum_cli/tests/test_pull.py +45 -0
- vellum_ee/workflows/display/nodes/base_node_vellum_display.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/code_execution_node.py +1 -3
- vellum_ee/workflows/display/nodes/vellum/conditional_node.py +18 -18
- vellum_ee/workflows/display/nodes/vellum/search_node.py +19 -15
- vellum_ee/workflows/display/nodes/vellum/templating_node.py +1 -1
- vellum_ee/workflows/display/nodes/vellum/utils.py +4 -4
- vellum_ee/workflows/display/utils/vellum.py +1 -2
- {vellum_ai-0.12.3.dist-info → vellum_ai-0.12.5.dist-info}/LICENSE +0 -0
- {vellum_ai-0.12.3.dist-info → vellum_ai-0.12.5.dist-info}/WHEEL +0 -0
- {vellum_ai-0.12.3.dist-info → vellum_ai-0.12.5.dist-info}/entry_points.txt +0 -0
@@ -28,7 +28,9 @@ class VariableIdMap:
|
|
28
28
|
|
29
29
|
|
30
30
|
class BaseSearchNodeDisplay(BaseNodeVellumDisplay[_SearchNodeType], Generic[_SearchNodeType]):
|
31
|
-
|
31
|
+
# A mapping between the id of the operand (e.g. "lhs_variable_id" or "rhs_variable_id") and the id of the node input
|
32
|
+
# that the operand is pointing to.
|
33
|
+
metadata_filter_input_id_by_operand_id: Dict[UUID, UUID] = {}
|
32
34
|
|
33
35
|
def serialize(
|
34
36
|
self, display_context: WorkflowDisplayContext, error_output_id: Optional[UUID] = None, **kwargs
|
@@ -149,18 +151,20 @@ class BaseSearchNodeDisplay(BaseNodeVellumDisplay[_SearchNodeType], Generic[_Sea
|
|
149
151
|
variables,
|
150
152
|
)
|
151
153
|
elif isinstance(logical_expression, VellumValueLogicalConditionRequest):
|
152
|
-
lhs_variable_id =
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
154
|
+
lhs_variable_id = logical_expression.lhs_variable.value
|
155
|
+
if not isinstance(lhs_variable_id, str):
|
156
|
+
raise TypeError(f"Expected lhs_variable_id to be a string, got {type(lhs_variable_id)}")
|
157
|
+
|
158
|
+
rhs_variable_id = logical_expression.rhs_variable.value
|
159
|
+
if not isinstance(rhs_variable_id, str):
|
160
|
+
raise TypeError(f"Expected rhs_variable_id to be a string, got {type(rhs_variable_id)}")
|
161
|
+
|
162
|
+
lhs_query_input_id: UUID = self.metadata_filter_input_id_by_operand_id.get(
|
163
|
+
UUID(lhs_variable_id)
|
164
|
+
) or uuid4_from_hash(f"{self.node_id}|{hash(tuple(path))}")
|
165
|
+
rhs_query_input_id: UUID = self.metadata_filter_input_id_by_operand_id.get(
|
166
|
+
UUID(rhs_variable_id)
|
167
|
+
) or uuid4_from_hash(f"{self.node_id}|{hash(tuple(path))}")
|
164
168
|
|
165
169
|
return (
|
166
170
|
{
|
@@ -173,7 +177,7 @@ class BaseSearchNodeDisplay(BaseNodeVellumDisplay[_SearchNodeType], Generic[_Sea
|
|
173
177
|
create_node_input(
|
174
178
|
self.node_id,
|
175
179
|
f"vellum-query-builder-variable-{lhs_variable_id}",
|
176
|
-
lhs_query_input_id,
|
180
|
+
str(lhs_query_input_id),
|
177
181
|
display_context,
|
178
182
|
input_id=UUID(lhs_variable_id),
|
179
183
|
pointer_type=InputVariablePointer,
|
@@ -181,7 +185,7 @@ class BaseSearchNodeDisplay(BaseNodeVellumDisplay[_SearchNodeType], Generic[_Sea
|
|
181
185
|
create_node_input(
|
182
186
|
self.node_id,
|
183
187
|
f"vellum-query-builder-variable-{rhs_variable_id}",
|
184
|
-
rhs_query_input_id,
|
188
|
+
str(rhs_query_input_id),
|
185
189
|
display_context,
|
186
190
|
input_id=UUID(rhs_variable_id),
|
187
191
|
pointer_type=InputVariablePointer,
|
@@ -25,7 +25,7 @@ class BaseTemplatingNodeDisplay(BaseNodeVellumDisplay[_TemplatingNodeType], Gene
|
|
25
25
|
|
26
26
|
template_input_id = self.template_input_id or next(
|
27
27
|
(
|
28
|
-
input_id
|
28
|
+
UUID(input_id) if isinstance(input_id, str) else input_id
|
29
29
|
for input_name, input_id in self.node_input_ids_by_name.items()
|
30
30
|
if input_name == TEMPLATE_INPUT_NAME
|
31
31
|
),
|
@@ -1,5 +1,5 @@
|
|
1
1
|
from uuid import UUID
|
2
|
-
from typing import Any, List, Optional, Type, cast
|
2
|
+
from typing import Any, List, Optional, Type, Union, cast
|
3
3
|
|
4
4
|
from vellum.workflows.descriptors.base import BaseDescriptor
|
5
5
|
from vellum.workflows.expressions.coalesce_expression import CoalesceExpression
|
@@ -27,10 +27,10 @@ def create_node_input(
|
|
27
27
|
input_name: str,
|
28
28
|
value: Any,
|
29
29
|
display_context: WorkflowDisplayContext,
|
30
|
-
input_id: Optional[UUID],
|
30
|
+
input_id: Union[Optional[UUID], Optional[str]],
|
31
31
|
pointer_type: Optional[Type[NodeInputValuePointerRule]] = ConstantValuePointer,
|
32
32
|
) -> NodeInput:
|
33
|
-
input_id = input_id
|
33
|
+
input_id = str(input_id) if input_id else str(uuid4_from_hash(f"{node_id}|{input_name}"))
|
34
34
|
if (
|
35
35
|
isinstance(value, OutputReference)
|
36
36
|
and value.outputs_class._node_class
|
@@ -42,7 +42,7 @@ def create_node_input(
|
|
42
42
|
|
43
43
|
rules = create_node_input_value_pointer_rules(value, display_context, pointer_type=pointer_type)
|
44
44
|
return NodeInput(
|
45
|
-
id=
|
45
|
+
id=input_id,
|
46
46
|
key=input_name,
|
47
47
|
value=NodeInputValuePointer(
|
48
48
|
rules=rules,
|
@@ -9,7 +9,6 @@ from vellum.workflows.references import OutputReference, WorkflowInputReference
|
|
9
9
|
from vellum.workflows.references.execution_count import ExecutionCountReference
|
10
10
|
from vellum.workflows.references.node import NodeReference
|
11
11
|
from vellum.workflows.references.vellum_secret import VellumSecretReference
|
12
|
-
from vellum.workflows.types.core import VellumValuePrimitive
|
13
12
|
from vellum.workflows.utils.vellum_variables import primitive_type_to_vellum_variable_type
|
14
13
|
from vellum.workflows.vellum_client import create_vellum_client
|
15
14
|
from vellum_ee.workflows.display.types import WorkflowDisplayContext
|
@@ -93,7 +92,7 @@ def create_node_input_value_pointer_rule(
|
|
93
92
|
raise ValueError(f"Unsupported descriptor type: {value.__class__.__name__}")
|
94
93
|
|
95
94
|
|
96
|
-
def primitive_to_vellum_value(value:
|
95
|
+
def primitive_to_vellum_value(value: Any) -> VellumValue:
|
97
96
|
"""Converts a python primitive to a VellumVariableValue"""
|
98
97
|
|
99
98
|
if isinstance(value, str):
|
File without changes
|
File without changes
|
File without changes
|