vellum-ai 0.13.0__py3-none-any.whl → 0.13.1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. vellum/client/core/client_wrapper.py +1 -1
  2. vellum/client/core/pydantic_utilities.py +5 -0
  3. vellum/client/resources/workflows/client.py +8 -0
  4. vellum/client/types/logical_operator.py +2 -0
  5. vellum/workflows/descriptors/base.py +1 -1
  6. vellum/workflows/descriptors/tests/test_utils.py +3 -0
  7. vellum/workflows/expressions/accessor.py +8 -2
  8. vellum/workflows/nodes/core/map_node/node.py +49 -24
  9. vellum/workflows/nodes/core/map_node/tests/test_node.py +4 -4
  10. vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +1 -1
  11. vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +5 -3
  12. vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +3 -0
  13. vellum/workflows/nodes/displayable/bases/search_node.py +37 -2
  14. vellum/workflows/nodes/displayable/bases/tests/__init__.py +0 -0
  15. vellum/workflows/nodes/displayable/bases/tests/test_utils.py +61 -0
  16. vellum/workflows/nodes/displayable/bases/types.py +42 -0
  17. vellum/workflows/nodes/displayable/bases/utils.py +112 -0
  18. vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py +0 -1
  19. vellum/workflows/nodes/displayable/search_node/tests/__init__.py +0 -0
  20. vellum/workflows/nodes/displayable/search_node/tests/test_node.py +164 -0
  21. vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py +2 -3
  22. vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py +0 -1
  23. vellum/workflows/runner/runner.py +37 -4
  24. vellum/workflows/types/tests/test_utils.py +5 -2
  25. vellum/workflows/types/utils.py +4 -0
  26. vellum/workflows/workflows/base.py +14 -0
  27. {vellum_ai-0.13.0.dist-info → vellum_ai-0.13.1.dist-info}/METADATA +1 -1
  28. {vellum_ai-0.13.0.dist-info → vellum_ai-0.13.1.dist-info}/RECORD +46 -36
  29. vellum_cli/__init__.py +10 -0
  30. vellum_cli/ping.py +28 -0
  31. vellum_cli/tests/test_ping.py +47 -0
  32. vellum_ee/workflows/display/nodes/vellum/base_node.py +22 -9
  33. vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py +3 -0
  34. vellum_ee/workflows/display/nodes/vellum/map_node.py +1 -1
  35. vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py +14 -10
  36. vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py +2 -2
  37. vellum_ee/workflows/display/nodes/vellum/utils.py +8 -1
  38. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py +67 -0
  39. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py +66 -0
  40. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py +660 -0
  41. vellum_ee/workflows/display/utils/vellum.py +4 -42
  42. vellum_ee/workflows/display/vellum.py +7 -36
  43. vellum_ee/workflows/display/workflows/vellum_workflow_display.py +2 -1
  44. {vellum_ai-0.13.0.dist-info → vellum_ai-0.13.1.dist-info}/LICENSE +0 -0
  45. {vellum_ai-0.13.0.dist-info → vellum_ai-0.13.1.dist-info}/WHEEL +0 -0
  46. {vellum_ai-0.13.0.dist-info → vellum_ai-0.13.1.dist-info}/entry_points.txt +0 -0
@@ -1,10 +1,8 @@
1
- import enum
2
- import json
3
- import typing
4
- from typing import Any, List, Union, cast
1
+ from typing import Any, TypeVar
5
2
 
6
- from vellum import ChatMessage, SearchResult, SearchResultRequest, VellumVariableType
3
+ from vellum.client.types.vellum_variable_type import VellumVariableType
7
4
  from vellum.workflows.descriptors.base import BaseDescriptor
5
+ from vellum.workflows.nodes.displayable.bases.utils import primitive_to_vellum_value
8
6
  from vellum.workflows.references import OutputReference, WorkflowInputReference
9
7
  from vellum.workflows.references.execution_count import ExecutionCountReference
10
8
  from vellum.workflows.references.node import NodeReference
@@ -13,25 +11,19 @@ from vellum.workflows.utils.vellum_variables import primitive_type_to_vellum_var
13
11
  from vellum.workflows.vellum_client import create_vellum_client
14
12
  from vellum_ee.workflows.display.types import WorkflowDisplayContext
15
13
  from vellum_ee.workflows.display.vellum import (
16
- ChatHistoryVellumValue,
17
14
  ConstantValuePointer,
18
15
  ExecutionCounterData,
19
16
  ExecutionCounterPointer,
20
17
  InputVariableData,
21
18
  InputVariablePointer,
22
- JsonVellumValue,
23
19
  NodeInputValuePointerRule,
24
20
  NodeOutputData,
25
21
  NodeOutputPointer,
26
- NumberVellumValue,
27
- SearchResultsVellumValue,
28
- StringVellumValue,
29
- VellumValue,
30
22
  WorkspaceSecretData,
31
23
  WorkspaceSecretPointer,
32
24
  )
33
25
 
34
- _T = typing.TypeVar("_T")
26
+ _T = TypeVar("_T")
35
27
 
36
28
 
37
29
  def infer_vellum_variable_type(value: Any) -> VellumVariableType:
@@ -90,33 +82,3 @@ def create_node_input_value_pointer_rule(
90
82
  return ConstantValuePointer(type="CONSTANT_VALUE", data=vellum_value)
91
83
 
92
84
  raise ValueError(f"Unsupported descriptor type: {value.__class__.__name__}")
93
-
94
-
95
- def primitive_to_vellum_value(value: Any) -> VellumValue:
96
- """Converts a python primitive to a VellumVariableValue"""
97
-
98
- if isinstance(value, str):
99
- return StringVellumValue(value=value)
100
- elif isinstance(value, enum.Enum):
101
- return StringVellumValue(value=value.value)
102
- elif isinstance(value, (int, float)):
103
- return NumberVellumValue(value=value)
104
- elif isinstance(value, list) and (
105
- all(isinstance(message, ChatMessage) for message in value)
106
- or all(isinstance(message, ChatMessage) for message in value)
107
- ):
108
- chat_messages = cast(Union[List[ChatMessage], List[ChatMessage]], value)
109
- return ChatHistoryVellumValue(value=chat_messages)
110
- elif isinstance(value, list) and (
111
- all(isinstance(search_result, SearchResultRequest) for search_result in value)
112
- or all(isinstance(search_result, SearchResult) for search_result in value)
113
- ):
114
- search_results = cast(Union[List[SearchResultRequest], List[SearchResult]], value)
115
- return SearchResultsVellumValue(value=search_results)
116
-
117
- try:
118
- json_value = json.dumps(value)
119
- except json.JSONDecodeError:
120
- raise ValueError(f"Unsupported variable type: {value.__class__.__name__}")
121
-
122
- return JsonVellumValue(value=json.loads(json_value))
@@ -1,11 +1,13 @@
1
1
  from dataclasses import dataclass, field
2
2
  from enum import Enum
3
3
  from uuid import UUID
4
- from typing import Any, List, Literal, Optional, Union
4
+ from typing import List, Literal, Optional, Union
5
5
 
6
6
  from pydantic import Field
7
7
 
8
- from vellum import ChatMessage, PromptParameters, SearchResult, SearchResultRequest, VellumVariable, VellumVariableType
8
+ from vellum import PromptParameters, VellumVariable, VellumVariableType
9
+ from vellum.client.types.array_vellum_value import ArrayVellumValue
10
+ from vellum.client.types.vellum_value import VellumValue
9
11
  from vellum.core import UniversalBaseModel
10
12
  from vellum_ee.workflows.display.base import (
11
13
  EdgeDisplay,
@@ -140,45 +142,14 @@ class WorkflowNodeType(str, Enum):
140
142
  ERROR = "ERROR"
141
143
 
142
144
 
143
- class StringVellumValue(UniversalBaseModel):
144
- type: Literal["STRING"] = "STRING"
145
- value: str
146
-
147
-
148
- class NumberVellumValue(UniversalBaseModel):
149
- type: Literal["NUMBER"] = "NUMBER"
150
- value: Union[int, float]
151
-
152
-
153
- class ChatHistoryVellumValue(UniversalBaseModel):
154
- type: Literal["CHAT_HISTORY"] = "CHAT_HISTORY"
155
- value: Union[List[ChatMessage], List[ChatMessage]]
156
-
157
-
158
- class SearchResultsVellumValue(UniversalBaseModel):
159
- type: Literal["SEARCH_RESULTS"] = "SEARCH_RESULTS"
160
- value: Union[List[SearchResultRequest], List[SearchResult]]
161
-
162
-
163
- class JsonVellumValue(UniversalBaseModel):
164
- type: Literal["JSON"] = "JSON"
165
- value: Optional[Any] = None
166
-
167
-
168
- VellumValue = Union[
169
- StringVellumValue,
170
- NumberVellumValue,
171
- ChatHistoryVellumValue,
172
- SearchResultsVellumValue,
173
- JsonVellumValue,
174
- ]
175
-
176
-
177
145
  class ConstantValuePointer(UniversalBaseModel):
178
146
  type: Literal["CONSTANT_VALUE"] = "CONSTANT_VALUE"
179
147
  data: VellumValue
180
148
 
181
149
 
150
+ ArrayVellumValue.model_rebuild()
151
+
152
+
182
153
  class NodeOutputData(UniversalBaseModel):
183
154
  node_id: str
184
155
  output_id: str
@@ -5,6 +5,7 @@ from typing import Dict, List, Optional, Type, cast
5
5
  from vellum.workflows.descriptors.base import BaseDescriptor
6
6
  from vellum.workflows.edges import Edge
7
7
  from vellum.workflows.nodes.bases import BaseNode
8
+ from vellum.workflows.nodes.displayable.bases.utils import primitive_to_vellum_value
8
9
  from vellum.workflows.nodes.displayable.final_output_node import FinalOutputNode
9
10
  from vellum.workflows.nodes.utils import get_unadorned_node, get_unadorned_port, get_wrapped_node, has_wrapped_node
10
11
  from vellum.workflows.ports import Port
@@ -16,7 +17,7 @@ from vellum.workflows.utils.uuids import uuid4_from_hash
16
17
  from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
17
18
  from vellum_ee.workflows.display.nodes.types import PortDisplay
18
19
  from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input
19
- from vellum_ee.workflows.display.utils.vellum import infer_vellum_variable_type, primitive_to_vellum_value
20
+ from vellum_ee.workflows.display.utils.vellum import infer_vellum_variable_type
20
21
  from vellum_ee.workflows.display.vellum import (
21
22
  EdgeVellumDisplay,
22
23
  EdgeVellumDisplayOverrides,