vellum-ai 0.13.19__py3-none-any.whl → 0.13.20__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.
Files changed (33) hide show
  1. vellum/__init__.py +2 -0
  2. vellum/client/core/client_wrapper.py +1 -1
  3. vellum/client/resources/test_suites/client.py +44 -8
  4. vellum/client/types/__init__.py +2 -0
  5. vellum/client/types/container_image_container_image_tag.py +21 -0
  6. vellum/client/types/container_image_read.py +2 -1
  7. vellum/types/container_image_container_image_tag.py +3 -0
  8. vellum/workflows/nodes/core/inline_subworkflow_node/node.py +48 -3
  9. {vellum_ai-0.13.19.dist-info → vellum_ai-0.13.20.dist-info}/METADATA +1 -1
  10. {vellum_ai-0.13.19.dist-info → vellum_ai-0.13.20.dist-info}/RECORD +33 -31
  11. vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py +2 -3
  12. vellum_ee/workflows/display/nodes/vellum/utils.py +1 -1
  13. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py +9 -30
  14. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py +22 -36
  15. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +35 -70
  16. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py +2 -2
  17. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py +2 -2
  18. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py +2 -2
  19. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +24 -57
  20. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +4 -4
  21. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py +2 -2
  22. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py +2 -2
  23. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py +2 -2
  24. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py +4 -4
  25. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py +2 -2
  26. vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py +2 -2
  27. vellum_ee/workflows/display/utils/vellum.py +0 -2
  28. vellum_ee/workflows/display/vellum.py +0 -2
  29. vellum_ee/workflows/display/workflows/vellum_workflow_display.py +1 -8
  30. vellum_ee/workflows/tests/local_workflow/display/workflow.py +0 -2
  31. {vellum_ai-0.13.19.dist-info → vellum_ai-0.13.20.dist-info}/LICENSE +0 -0
  32. {vellum_ai-0.13.19.dist-info → vellum_ai-0.13.20.dist-info}/WHEEL +0 -0
  33. {vellum_ai-0.13.19.dist-info → vellum_ai-0.13.20.dist-info}/entry_points.txt +0 -0
vellum/__init__.py CHANGED
@@ -64,6 +64,7 @@ from .types import (
64
64
  ConditionCombinator,
65
65
  ConditionalNodeResult,
66
66
  ConditionalNodeResultData,
67
+ ContainerImageContainerImageTag,
67
68
  ContainerImageRead,
68
69
  CreateTestSuiteTestCaseRequest,
69
70
  DeploymentHistoryItem,
@@ -586,6 +587,7 @@ __all__ = [
586
587
  "ConditionCombinator",
587
588
  "ConditionalNodeResult",
588
589
  "ConditionalNodeResultData",
590
+ "ContainerImageContainerImageTag",
589
591
  "ContainerImageRead",
590
592
  "CreateTestSuiteTestCaseRequest",
591
593
  "DeploymentHistoryItem",
@@ -18,7 +18,7 @@ class BaseClientWrapper:
18
18
  headers: typing.Dict[str, str] = {
19
19
  "X-Fern-Language": "Python",
20
20
  "X-Fern-SDK-Name": "vellum-ai",
21
- "X-Fern-SDK-Version": "0.13.19",
21
+ "X-Fern-SDK-Version": "0.13.20",
22
22
  }
23
23
  headers["X_API_KEY"] = self.api_key
24
24
  return headers
@@ -139,21 +139,39 @@ class TestSuitesClient:
139
139
 
140
140
  Examples
141
141
  --------
142
- from vellum import NamedTestCaseStringVariableValueRequest, Vellum
142
+ from vellum import (
143
+ NamedTestCaseArrayVariableValueRequest,
144
+ NamedTestCaseStringVariableValueRequest,
145
+ StringVellumValueRequest,
146
+ Vellum,
147
+ )
143
148
 
144
149
  client = Vellum(
145
150
  api_key="YOUR_API_KEY",
146
151
  )
147
152
  client.test_suites.upsert_test_suite_test_case(
148
153
  id_="id",
154
+ label="Test Case 1",
149
155
  input_values=[
150
156
  NamedTestCaseStringVariableValueRequest(
151
- name="name",
157
+ value="What are your favorite colors?",
158
+ name="var_1",
152
159
  )
153
160
  ],
154
161
  evaluation_values=[
155
- NamedTestCaseStringVariableValueRequest(
156
- name="name",
162
+ NamedTestCaseArrayVariableValueRequest(
163
+ value=[
164
+ StringVellumValueRequest(
165
+ value="Red",
166
+ ),
167
+ StringVellumValueRequest(
168
+ value="Green",
169
+ ),
170
+ StringVellumValueRequest(
171
+ value="Blue",
172
+ ),
173
+ ],
174
+ name="var_2",
157
175
  )
158
176
  ],
159
177
  )
@@ -463,7 +481,12 @@ class AsyncTestSuitesClient:
463
481
  --------
464
482
  import asyncio
465
483
 
466
- from vellum import AsyncVellum, NamedTestCaseStringVariableValueRequest
484
+ from vellum import (
485
+ AsyncVellum,
486
+ NamedTestCaseArrayVariableValueRequest,
487
+ NamedTestCaseStringVariableValueRequest,
488
+ StringVellumValueRequest,
489
+ )
467
490
 
468
491
  client = AsyncVellum(
469
492
  api_key="YOUR_API_KEY",
@@ -473,14 +496,27 @@ class AsyncTestSuitesClient:
473
496
  async def main() -> None:
474
497
  await client.test_suites.upsert_test_suite_test_case(
475
498
  id_="id",
499
+ label="Test Case 1",
476
500
  input_values=[
477
501
  NamedTestCaseStringVariableValueRequest(
478
- name="name",
502
+ value="What are your favorite colors?",
503
+ name="var_1",
479
504
  )
480
505
  ],
481
506
  evaluation_values=[
482
- NamedTestCaseStringVariableValueRequest(
483
- name="name",
507
+ NamedTestCaseArrayVariableValueRequest(
508
+ value=[
509
+ StringVellumValueRequest(
510
+ value="Red",
511
+ ),
512
+ StringVellumValueRequest(
513
+ value="Green",
514
+ ),
515
+ StringVellumValueRequest(
516
+ value="Blue",
517
+ ),
518
+ ],
519
+ name="var_2",
484
520
  )
485
521
  ],
486
522
  )
@@ -68,6 +68,7 @@ from .components_schemas_pdf_search_result_meta_source_request import Components
68
68
  from .condition_combinator import ConditionCombinator
69
69
  from .conditional_node_result import ConditionalNodeResult
70
70
  from .conditional_node_result_data import ConditionalNodeResultData
71
+ from .container_image_container_image_tag import ContainerImageContainerImageTag
71
72
  from .container_image_read import ContainerImageRead
72
73
  from .create_test_suite_test_case_request import CreateTestSuiteTestCaseRequest
73
74
  from .deployment_history_item import DeploymentHistoryItem
@@ -577,6 +578,7 @@ __all__ = [
577
578
  "ConditionCombinator",
578
579
  "ConditionalNodeResult",
579
580
  "ConditionalNodeResultData",
581
+ "ContainerImageContainerImageTag",
580
582
  "ContainerImageRead",
581
583
  "CreateTestSuiteTestCaseRequest",
582
584
  "DeploymentHistoryItem",
@@ -0,0 +1,21 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ from ..core.pydantic_utilities import UniversalBaseModel
4
+ import datetime as dt
5
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2
6
+ import typing
7
+ import pydantic
8
+
9
+
10
+ class ContainerImageContainerImageTag(UniversalBaseModel):
11
+ name: str
12
+ modified: dt.datetime
13
+
14
+ if IS_PYDANTIC_V2:
15
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
16
+ else:
17
+
18
+ class Config:
19
+ frozen = True
20
+ smart_union = True
21
+ extra = pydantic.Extra.allow
@@ -4,6 +4,7 @@ from ..core.pydantic_utilities import UniversalBaseModel
4
4
  from .entity_visibility import EntityVisibility
5
5
  import datetime as dt
6
6
  import typing
7
+ from .container_image_container_image_tag import ContainerImageContainerImageTag
7
8
  from ..core.pydantic_utilities import IS_PYDANTIC_V2
8
9
  import pydantic
9
10
 
@@ -16,7 +17,7 @@ class ContainerImageRead(UniversalBaseModel):
16
17
  modified: dt.datetime
17
18
  repository: str
18
19
  sha: str
19
- tags: typing.List[str]
20
+ tags: typing.List[ContainerImageContainerImageTag]
20
21
 
21
22
  if IS_PYDANTIC_V2:
22
23
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -0,0 +1,3 @@
1
+ # WARNING: This file will be removed in a future release. Please import from "vellum.client" instead.
2
+
3
+ from vellum.client.types.container_image_container_image_tag import *
@@ -1,12 +1,13 @@
1
- from typing import TYPE_CHECKING, ClassVar, Generic, Iterator, Optional, Set, Type, TypeVar, Union
1
+ from typing import TYPE_CHECKING, Any, ClassVar, Dict, Generic, Iterator, Optional, Set, Tuple, Type, TypeVar, Union
2
2
 
3
3
  from vellum.workflows.constants import UNDEF
4
4
  from vellum.workflows.context import execution_context, get_parent_context
5
5
  from vellum.workflows.errors.types import WorkflowErrorCode
6
6
  from vellum.workflows.exceptions import NodeException
7
7
  from vellum.workflows.inputs.base import BaseInputs
8
- from vellum.workflows.nodes.bases.base import BaseNode
8
+ from vellum.workflows.nodes.bases.base import BaseNode, BaseNodeMeta
9
9
  from vellum.workflows.outputs.base import BaseOutput, BaseOutputs
10
+ from vellum.workflows.references import OutputReference
10
11
  from vellum.workflows.state.base import BaseState
11
12
  from vellum.workflows.state.context import WorkflowContext
12
13
  from vellum.workflows.types.core import EntityInputsInterface
@@ -19,7 +20,45 @@ if TYPE_CHECKING:
19
20
  InnerStateType = TypeVar("InnerStateType", bound=BaseState)
20
21
 
21
22
 
22
- class InlineSubworkflowNode(BaseNode[StateType], Generic[StateType, WorkflowInputsType, InnerStateType]):
23
+ class _InlineSubworkflowNodeMeta(BaseNodeMeta):
24
+ def __new__(cls, name: str, bases: Tuple[Type, ...], dct: Dict[str, Any]) -> Any:
25
+ node_class = super().__new__(cls, name, bases, dct)
26
+
27
+ subworkflow_attribute = dct.get("subworkflow")
28
+ if not subworkflow_attribute:
29
+ return node_class
30
+
31
+ if not issubclass(node_class, InlineSubworkflowNode):
32
+ raise ValueError("_InlineSubworkflowNodeMeta can only be used on subclasses of InlineSubworkflowNode")
33
+
34
+ subworkflow_outputs = getattr(subworkflow_attribute, "Outputs")
35
+ if not issubclass(subworkflow_outputs, BaseOutputs):
36
+ raise ValueError("subworkflow.Outputs must be a subclass of BaseOutputs")
37
+
38
+ outputs_class = dct.get("Outputs")
39
+ if not outputs_class:
40
+ raise ValueError("Outputs class not found in base classes")
41
+
42
+ if not issubclass(outputs_class, BaseNode.Outputs):
43
+ raise ValueError("Outputs class must be a subclass of BaseNode.Outputs")
44
+
45
+ for descriptor in subworkflow_outputs:
46
+ node_class.__annotate_outputs_class__(outputs_class, descriptor)
47
+
48
+ return node_class
49
+
50
+ def __getattribute__(cls, name: str) -> Any:
51
+ try:
52
+ return super().__getattribute__(name)
53
+ except AttributeError:
54
+ if name != "__wrapped_node__" and issubclass(cls, InlineSubworkflowNode):
55
+ return getattr(cls.__wrapped_node__, name)
56
+ raise
57
+
58
+
59
+ class InlineSubworkflowNode(
60
+ BaseNode[StateType], Generic[StateType, WorkflowInputsType, InnerStateType], metaclass=_InlineSubworkflowNodeMeta
61
+ ):
23
62
  """
24
63
  Used to execute a Subworkflow defined inline.
25
64
 
@@ -85,3 +124,9 @@ class InlineSubworkflowNode(BaseNode[StateType], Generic[StateType, WorkflowInpu
85
124
  return self.subworkflow_inputs
86
125
  else:
87
126
  raise ValueError(f"Invalid subworkflow inputs type: {type(self.subworkflow_inputs)}")
127
+
128
+ @classmethod
129
+ def __annotate_outputs_class__(cls, outputs_class: Type[BaseOutputs], reference: OutputReference) -> None:
130
+ # Subclasses of InlineSubworkflowNode can override this method to provider their own
131
+ # approach to annotating the outputs class based on the `subworkflow.Outputs`
132
+ setattr(outputs_class, reference.name, reference)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vellum-ai
3
- Version: 0.13.19
3
+ Version: 0.13.20
4
4
  Summary:
5
5
  License: MIT
6
6
  Requires-Python: >=3.9,<4.0
@@ -43,14 +43,14 @@ vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=TMb8txILu2uWjzoxagh
43
43
  vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=LFjLUrH6sJ4czPnExdRqFr0PB_yKBMLXLvK5GAzIAgc,3273
44
44
  vellum_ee/workflows/display/nodes/vellum/retry_node.py,sha256=i0XGbKecLiHtf7mBf2rbqldPgLcs1TitIphzcHRIvkA,341
45
45
  vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=TxcAGZDl_hvJ7Y1hUi9YVEVrj9Ie0hKkASdpfRL4_cs,9227
46
- vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=lfevlHpGEX14dEDym6qmnkw3nvzQPTB1_D2ch12B_Rk,2701
46
+ vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=62baAElKoRKIoba0lLhnrXGWWx96B73VxKGxh7BaIxc,2612
47
47
  vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=JVIMPR3WpveOCWZubHKZkE04mavnTdb_9QY_r3XliRg,3424
48
48
  vellum_ee/workflows/display/nodes/vellum/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
49
  vellum_ee/workflows/display/nodes/vellum/tests/test_error_node.py,sha256=ulrpoYUW-5kIxfG4Lf5F2p0k_EoYKhmahEbF3P_eruM,1648
50
50
  vellum_ee/workflows/display/nodes/vellum/tests/test_try_node.py,sha256=mtzB8LJlFCHVFM4H5AanLp29gQfaVmnN4A4iaRGJHoI,2427
51
51
  vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=3uT7Gbc0f_mQ3u8uZuCWd0mJ4GtWbz2gbUMySYaVlNE,3774
52
52
  vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=EoU1J7HfcszAZr7ROy_xsNhaDBRiI95-wTK-OzgBwvg,5861
53
- vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=aBmTg9pJloG1BxhYcqzxs5JOA-IixncLVr1XiDzANnA,4313
53
+ vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=OEGHjQSbuUgJexXI1aubYW33z2F_YdkhQ8REahfz864,4320
54
54
  vellum_ee/workflows/display/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
55
  vellum_ee/workflows/display/tests/test_vellum_workflow_display.py,sha256=h4bE187MyM0eT_elFnOxwsCeMHeuzSK0orjgAy8kV1k,4952
56
56
  vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -61,30 +61,30 @@ vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attr
61
61
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py,sha256=-12ZkZb3f5gyoNASV2yeQtMo5HmNsVEo8nXwL6IC-I8,6261
62
62
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py,sha256=6th6kCwzql6lddjkTQx4Jbvvs4ChqtJwctW-B4QuBhI,37352
63
63
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py,sha256=EbVgg_3_ipTt3MOop4RARX0fmNjwqZtkhIXzx9nGw7Y,4487
64
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=bXZWxOKAVjZlbP3iLHPHGA4aPs0EguKlQqmYPNGv3cU,16391
65
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=s2mBoL5Vvpoc-rcWcSGQjLp4yzVVwFmkTbS3--ErzCI,29486
66
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=n3F_Eyru0DYOszBH4jplz7Mzt2FfBNxGlCkTFqvrX-M,48399
67
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=8LhQgW0uzVOhzz0AwdM-EYugVO-0mGWglxWo_lON4D8,6079
68
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py,sha256=yWDykoHUjuiVYdevcJxWmYDDmbIszpHKYBu19vqR-I8,5746
69
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=mEkvKUrt8U6e9bN65QRG7Zd3KdCdoMvHm96LjGwy96k,7427
70
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=CxbnZ3tB8gir9xopixjvT0hNYyjMHvT_m8BzY5kl8Dg,21497
71
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=5xXLoUNgGkZvRFPJrdPiD0fErgwdPk-ikI3rP9sCAA4,16145
72
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=ON3TQiIFDiCvasQiNEyuAZDwpTYGOtitdLDLj2kejL8,8422
73
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=W_d-hsjSqbqR5BA3aF3KFoEyfLV6x_yhNKmLA1ai2QY,8622
74
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py,sha256=azUVSdXWoYyAjKuM8m9ikOoJPb5JlEvJtR5nSRR0eaA,12989
75
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=yq98DHxetpbqYnGVTDmcokU0A4XAD7E-NcKhrEMP66M,11295
76
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=dipuapy5Z1vSpEeBnFq29g9DGAy9sufw8KcJpFjIN18,7791
64
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=5LQ36vImbVRmLpOdhWKtGmr9pypeZc0HAzIxwQoKtWA,15890
65
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=3lmg0bP6QwnHjQCpxz3IiucowmgAcjelHRTE9JRQ9-A,29152
66
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=ddk2tx7dFqQ7o2JtRZz2Mv6GHEwjJSF_u-1Zg83q7to,47564
67
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=02gG5C0wHbjzuTgVYCsNrtW1kEOeaM_5zXmznaUKzgk,6079
68
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py,sha256=Ah8CxAxAQYnxsNasLB8esN_c9eRDQnmV_aDWC9Kp98s,5746
69
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=0xK9TFqPD5Hy65T-iacZ8pjYHD8XkzZXS35rLwof7uc,7427
70
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=HEfRYBVwZ6fy0hHhgsgTBEQJJAp_0wsaCJ_OtpZGdqE,20578
71
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=L1SrD5KfZjlAVh2BkOe3pCQOstVf_SiqD0KGoZlknU8,16145
72
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=ojzdgGb2zGYloOX57V_FyXxjUqOnWMN6z8GUlF8yDMA,8422
73
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=SuADagoAr-IWZN5az98axWnXcSrlG6gXV72Q-ThozVU,8622
74
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py,sha256=NcpcC9vENF0Z3Vg7b0G0WV7EJScmBKg-JtjQENMKvn0,12989
75
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=eQNyiNQG7Cgx0QW_xlN9tQql4D2ak_P2WB-OgMkAVEs,11295
76
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=9_mC6-_u3qxJZzkrYrDtzWhpKlnlOD4oXSj8Ztnwet4,7791
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
- vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=wQ97k-y9rZwKYlZSA6Z9XGUnGRaJ5BvCFu5QnhuEp4A,7404
79
+ vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=xmKyOKqGRhWUXXbTbCAXX40qINcvK7mjpEfXz0Ny21s,7404
80
80
  vellum_ee/workflows/display/types.py,sha256=jWTpfQv3baEWjbP12duc3MBz3TK03Ja1UI5458PVQVY,4211
81
81
  vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
- vellum_ee/workflows/display/utils/vellum.py,sha256=kETI__jHR1lvO0SoFJgnpAOCK6eWmrSi4SbfZpRUmCA,7448
83
- vellum_ee/workflows/display/vellum.py,sha256=8xXRI8b8Tt661H-iZreTQTvLNEKUr4lf-XaKhE7_yUY,8147
82
+ vellum_ee/workflows/display/utils/vellum.py,sha256=I0a8zFg4YIiT1ZTI27sEHuT9AM9PzktqBmrQ-Mqs3Ww,7328
83
+ vellum_ee/workflows/display/vellum.py,sha256=-95xvit30nyP6Md29nHkfIrnFButZyCg8wz76oUHD0M,8105
84
84
  vellum_ee/workflows/display/workflows/__init__.py,sha256=kapXsC67VJcgSuiBMa86FdePG5A9kMB5Pi4Uy1O2ob4,207
85
85
  vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=x4C621UTH_SZLJYmVBiC1q-D-wadJlTiSGlKAI6CUbA,14082
86
86
  vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=kp0u8LN_2IwshLrhMImhpZx1hRyAcD5gXY-kDuuaGMQ,1269
87
- vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=wij6U6-20QSDlfLMCeHjmpkWWuSA8fWYWJV17dw6L98,17187
87
+ vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=h8lCnuBfI5muxDi8i9u6tlgJIGEoJnSPc7jbJmECygg,16836
88
88
  vellum_ee/workflows/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
89
  vellum_ee/workflows/server/virtual_file_loader.py,sha256=X_DdNK7MfyOjKWekk6YQpOSCT6klKcdjT6nVJcBH1sM,1481
90
90
  vellum_ee/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -99,7 +99,7 @@ vellum_ee/workflows/tests/local_workflow/display/__init__.py,sha256=xo75Uqb4aErO
99
99
  vellum_ee/workflows/tests/local_workflow/display/nodes/__init__.py,sha256=szW_mgOUriyZ6v1vlnevBgkzNi8g83-ihS98UOLHVcE,155
100
100
  vellum_ee/workflows/tests/local_workflow/display/nodes/final_output.py,sha256=Kv92TCREiZsB9531KZYaBIq83uHn7e_ECw_yAbD1qfk,1017
101
101
  vellum_ee/workflows/tests/local_workflow/display/nodes/templating_node.py,sha256=5cankEe1rDZlXKgILFSPbmN0tUZhIdmcFgz_AguXTJc,1229
102
- vellum_ee/workflows/tests/local_workflow/display/workflow.py,sha256=JQOxx4xF5yE_xEU7rqbD2i0W8APv16XB6MdsZvlTyZU,2474
102
+ vellum_ee/workflows/tests/local_workflow/display/workflow.py,sha256=I0uc9hmeQGMxUJMiOu1btBpUb2aSvIXUSNS05WiPeNA,2336
103
103
  vellum_ee/workflows/tests/local_workflow/inputs.py,sha256=4cgsZBoUbIY0Rs8gknC9yqxQ-sSoULclx_SAm1FT2RA,96
104
104
  vellum_ee/workflows/tests/local_workflow/metadata.json,sha256=rdu3h5qkFZiqhCAMxoyoWyMI0O8QALC5-URvSIW6F00,24
105
105
  vellum_ee/workflows/tests/local_workflow/nodes/__init__.py,sha256=1F6jxUpSKfPXPj4ZZKSbnX6Mg-VwF3euLJSZfGn6xkM,127
@@ -108,12 +108,12 @@ vellum_ee/workflows/tests/local_workflow/nodes/templating_node.py,sha256=NQwFN61
108
108
  vellum_ee/workflows/tests/local_workflow/workflow.py,sha256=A4qOzOPNwePYxWbcAgIPLsmrVS_aVEZEc-wULSv787Q,393
109
109
  vellum_ee/workflows/tests/test_display_meta.py,sha256=pzdqND4KLWs7EUIbpXuqgso7BIRpoUsO3T_bgeENs0Q,2205
110
110
  vellum_ee/workflows/tests/test_virtual_files.py,sha256=TJEcMR0v2S8CkloXNmCHA0QW0K6pYNGaIjraJz7sFvY,2762
111
- vellum/__init__.py,sha256=iwoL3PQsiTvtX79J4qlAJ2EIqZ77zYJm3q7o1Ei3Awo,35398
111
+ vellum/__init__.py,sha256=BBb9aN9M6-bsnNIhk9YUVAzdW0e9QTdBaiSM5kr5FGU,35474
112
112
  vellum/client/README.md,sha256=JkCJjmMZl4jrPj46pkmL9dpK4gSzQQmP5I7z4aME4LY,4749
113
113
  vellum/client/__init__.py,sha256=8nZt88C9SVwWanjLbIQMU3rzb32h5UZfFMBx3VPHB50,111887
114
114
  vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
115
115
  vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
116
- vellum/client/core/client_wrapper.py,sha256=rnVChhyob3hO3iXrfL4gsCAYGAOdglXQdXoLL07FKLg,1869
116
+ vellum/client/core/client_wrapper.py,sha256=z1NZHCGeJAfuF3tZN-NenmROQ_g76uDXyCzW3tI-Hbs,1869
117
117
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
118
118
  vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
119
119
  vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
@@ -160,7 +160,7 @@ vellum/client/resources/sandboxes/client.py,sha256=i-6DHap5k6gFcYS-kWI8ayJFVZxb-
160
160
  vellum/client/resources/test_suite_runs/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
161
161
  vellum/client/resources/test_suite_runs/client.py,sha256=gCF1ewlUrCsZhnXYOYqdUuD2twTrQ-u95xOgvRy7WAw,15130
162
162
  vellum/client/resources/test_suites/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
163
- vellum/client/resources/test_suites/client.py,sha256=UDlFSHLdUFbZrjSq-uk6LA5O9SqgvAsQyrP8PpCeEBI,24659
163
+ vellum/client/resources/test_suites/client.py,sha256=SlO-IXyhddm1U6WtrLIUUvlImf2vXC22bX2n9fpp6-c,25969
164
164
  vellum/client/resources/workflow_deployments/__init__.py,sha256=_duH6m1CDWcfqX6DTBNjO3ar4Xrl-f5PozMaTcT4Kow,251
165
165
  vellum/client/resources/workflow_deployments/client.py,sha256=H9MhGYZVx1WLHE5j83Sl5HmX-CF6aJFCwQAGDG1n2oI,27149
166
166
  vellum/client/resources/workflow_deployments/types/__init__.py,sha256=W7DKJ1nduwhRckYLvH7wHLdaGH9MXHTZkxwG7FdTngY,340
@@ -176,7 +176,7 @@ vellum/client/resources/workspace_secrets/__init__.py,sha256=FTtvy8EDg9nNNg9WCat
176
176
  vellum/client/resources/workspace_secrets/client.py,sha256=h7UzXLyTttPq1t-JZGMg1BWxypxJvBGUdqg7KGT7MK4,8027
177
177
  vellum/client/resources/workspaces/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
178
178
  vellum/client/resources/workspaces/client.py,sha256=RthwzN1o-Jxwg5yyNNodavFyNUSxfLoTv26w3mRR5g8,3595
179
- vellum/client/types/__init__.py,sha256=549n3Xe4pOqI5Kzg40bwDqBeD7Ou3vKuuFePF3-xECY,53348
179
+ vellum/client/types/__init__.py,sha256=auehBXD_naQD0W9VJNIGNgDxE6kuc7HQaF6aaymjS4s,53468
180
180
  vellum/client/types/ad_hoc_execute_prompt_event.py,sha256=bCjujA2XsOgyF3bRZbcEqV2rOIymRgsLoIRtZpB14xg,607
181
181
  vellum/client/types/ad_hoc_expand_meta.py,sha256=1gv-NCsy_6xBYupLvZH979yf2VMdxAU-l0y0ynMKZaw,1331
182
182
  vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py,sha256=Bfvf1d_dkmshxRACVM5vcxbH_7AQY23RmrrnPc0ytYY,939
@@ -237,7 +237,8 @@ vellum/client/types/components_schemas_pdf_search_result_meta_source_request.py,
237
237
  vellum/client/types/condition_combinator.py,sha256=NQ6-F85juf21jsRuZRA6PjIFv7ITVWG5myuuZdLxeQI,156
238
238
  vellum/client/types/conditional_node_result.py,sha256=vx8xo9F1KoJqOnYPtSevfOcBxKYAk8J8JGWFr1c4UO8,784
239
239
  vellum/client/types/conditional_node_result_data.py,sha256=yk4E7KHSzmKlweI9ce9eN_iW08V70KGmG1Z0K5455T0,604
240
- vellum/client/types/container_image_read.py,sha256=4i2dZkGrmWapW884F5ESVOLWElT5Y_478oB5NbDjAi0,787
240
+ vellum/client/types/container_image_container_image_tag.py,sha256=ph9Xs0R386viUofCITdUfIKCLaDJokY5nzczf0iReuA,622
241
+ vellum/client/types/container_image_read.py,sha256=l7tYflFivZ7sKrHd9aIlBWbkh_ZnbmN6XDbWJgNrNDk,896
241
242
  vellum/client/types/create_test_suite_test_case_request.py,sha256=SYUz7_aZMQlin_c1C0-B0W14YB0kC3cn21oPE4_64Ys,1711
242
243
  vellum/client/types/deployment_history_item.py,sha256=YfcHo4X5OjHXsffndZoAjShYncUN19ZwIm96qKE0G7o,1310
243
244
  vellum/client/types/deployment_provider_payload_response.py,sha256=b0lkt0rK88ARQaMWn9MAHeWtMBsZKofDMlOAUsQvv7g,818
@@ -810,6 +811,7 @@ vellum/types/components_schemas_pdf_search_result_meta_source_request.py,sha256=
810
811
  vellum/types/condition_combinator.py,sha256=1wNfjIPngHhdUbhMpjNVZqUI8LEu0XIExUX4Rtln1Tg,158
811
812
  vellum/types/conditional_node_result.py,sha256=zcfDgqzQWXVcqEQi_ozC_7l2to8Y3uNZ5mFN_uIVDW8,161
812
813
  vellum/types/conditional_node_result_data.py,sha256=z7Mtn_iKkan2jrGc2Q7fx-anx3ijHSSqnZwAb1w4ouk,166
814
+ vellum/types/container_image_container_image_tag.py,sha256=RgDod58iPXdgq6sMp63qqmRF3gk_gTK1gwLVcgR58QA,173
813
815
  vellum/types/container_image_read.py,sha256=36LQzvJaDGH26wjD6_WxgzwkslgRZihSYXu5n4W7abk,158
814
816
  vellum/types/create_test_suite_test_case_request.py,sha256=D_d6psjOMWx5jr2c7FwNndSH1ay5afdu5QXckqtBmfU,173
815
817
  vellum/types/deployment_history_item.py,sha256=VqJfKFgb_lxUd5Hr1xQtF63FBn7uzHV84L4pla2MER8,161
@@ -1315,7 +1317,7 @@ vellum/workflows/nodes/core/__init__.py,sha256=5zDMCmyt1v0HTJzlUBwq3U9L825yZGZhT
1315
1317
  vellum/workflows/nodes/core/error_node/__init__.py,sha256=g7RRnlHhqu4qByfLjBwCunmgGA8dI5gNsjS3h6TwlSI,60
1316
1318
  vellum/workflows/nodes/core/error_node/node.py,sha256=MFHU5vITYSK-L9CuMZ49In2ZeNLWnhZD0f8r5dWvb5Y,1270
1317
1319
  vellum/workflows/nodes/core/inline_subworkflow_node/__init__.py,sha256=nKNEH1QTl-1PcvmYoqSWEl0-t6gAur8GLTXHzklRQfM,84
1318
- vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=XJLz7Kkk4OwrM-OcPjiLfF3XC49jDwsVKFPTNXkenvQ,3964
1320
+ vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=q8_s1uuoB6t_QutJ-wl7Nj3A_yQYWxpv7660kcBwcXA,5931
1319
1321
  vellum/workflows/nodes/core/inline_subworkflow_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1320
1322
  vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py,sha256=n0-821Ov9ZfRFX_lbzLy5o2rX8fEw2qoxz0aFWCOxVg,1547
1321
1323
  vellum/workflows/nodes/core/map_node/__init__.py,sha256=MXpZYmGfhsMJHqqlpd64WiJRtbAtAMQz-_3fCU_cLV0,56
@@ -1442,8 +1444,8 @@ vellum/workflows/vellum_client.py,sha256=ODrq_TSl-drX2aezXegf7pizpWDVJuTXH-j6528
1442
1444
  vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
1443
1445
  vellum/workflows/workflows/base.py,sha256=k0kUWWko4fHyCqLSU_1cBK_pXZpl9MXekWiG-bdOAo0,18353
1444
1446
  vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnadGsrSZGa7t7LpJA,2008
1445
- vellum_ai-0.13.19.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1446
- vellum_ai-0.13.19.dist-info/METADATA,sha256=NzphP-OKn-7lL7hjSD1e1eT709mTax682Cs85AT0O_4,5335
1447
- vellum_ai-0.13.19.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1448
- vellum_ai-0.13.19.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1449
- vellum_ai-0.13.19.dist-info/RECORD,,
1447
+ vellum_ai-0.13.20.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1448
+ vellum_ai-0.13.20.dist-info/METADATA,sha256=TbxOMd3MKv1utYPQA2QHrmmbGBD5eSJaj1QPRLHkQsE,5335
1449
+ vellum_ai-0.13.20.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1450
+ vellum_ai-0.13.20.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1451
+ vellum_ai-0.13.20.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  from uuid import UUID
2
- from typing import ClassVar, Dict, Generic, Optional, TypeVar
2
+ from typing import Generic, Optional, TypeVar
3
3
 
4
4
  from vellum.workflows.nodes import SubworkflowDeploymentNode
5
5
  from vellum.workflows.types.core import JsonObject
@@ -15,7 +15,6 @@ _SubworkflowDeploymentNodeType = TypeVar("_SubworkflowDeploymentNodeType", bound
15
15
  class BaseSubworkflowDeploymentNodeDisplay(
16
16
  BaseNodeVellumDisplay[_SubworkflowDeploymentNodeType], Generic[_SubworkflowDeploymentNodeType]
17
17
  ):
18
- subworkflow_input_ids_by_name: ClassVar[Dict[str, UUID]] = {}
19
18
 
20
19
  def serialize(
21
20
  self, display_context: WorkflowDisplayContext, error_output_id: Optional[UUID] = None, **kwargs
@@ -30,7 +29,7 @@ class BaseSubworkflowDeploymentNodeDisplay(
30
29
  input_name=variable_name,
31
30
  value=variable_value,
32
31
  display_context=display_context,
33
- input_id=self.subworkflow_input_ids_by_name.get(variable_name),
32
+ input_id=self.node_input_ids_by_name.get(variable_name),
34
33
  )
35
34
  for variable_name, variable_value in subworkflow_inputs.items()
36
35
  ]
@@ -27,7 +27,7 @@ def create_node_input(
27
27
  input_name: str,
28
28
  value: Any,
29
29
  display_context: WorkflowDisplayContext,
30
- input_id: Union[Optional[UUID], Optional[str]],
30
+ input_id: Union[Optional[UUID], Optional[str]] = None,
31
31
  pointer_type: Optional[Type[NodeInputValuePointerRule]] = ConstantValuePointer,
32
32
  ) -> NodeInput:
33
33
  input_id = str(input_id) if input_id else str(uuid4_from_hash(f"{node_id}|{input_name}"))
@@ -210,11 +210,11 @@ def test_serialize_workflow(vellum_client):
210
210
  "target_handle_id": "06853542-e1a1-4a00-bd1e-4ac40f347b32",
211
211
  "output_id": "9a37bf7d-484e-4725-903e-f3254df38a0a",
212
212
  "output_type": "JSON",
213
- "node_input_id": "b544fc9a-2747-47e9-b28b-3e88d87b0f95",
213
+ "node_input_id": "b49f0f85-37fc-4686-81a7-287c06634661",
214
214
  },
215
215
  "inputs": [
216
216
  {
217
- "id": "b544fc9a-2747-47e9-b28b-3e88d87b0f95",
217
+ "id": "b49f0f85-37fc-4686-81a7-287c06634661",
218
218
  "key": "node_input",
219
219
  "value": {
220
220
  "rules": [
@@ -233,14 +233,7 @@ def test_serialize_workflow(vellum_client):
233
233
  "display_data": {"position": {"x": 0.0, "y": 0.0}},
234
234
  "base": {
235
235
  "name": "FinalOutputNode",
236
- "module": [
237
- "vellum",
238
- "workflows",
239
- "nodes",
240
- "displayable",
241
- "final_output_node",
242
- "node",
243
- ],
236
+ "module": ["vellum", "workflows", "nodes", "displayable", "final_output_node", "node"],
244
237
  },
245
238
  "definition": None,
246
239
  },
@@ -253,11 +246,11 @@ def test_serialize_workflow(vellum_client):
253
246
  "target_handle_id": "80d0894f-642e-4d2e-b43a-f236e7bedb3c",
254
247
  "output_id": "5090e96d-5787-4a08-bf58-129101cf2548",
255
248
  "output_type": "JSON",
256
- "node_input_id": "6828b56e-80b7-4699-b9dd-fd1f0820732e",
249
+ "node_input_id": "5e892e5b-0004-4a04-bd2e-1ea9e0e5d3f9",
257
250
  },
258
251
  "inputs": [
259
252
  {
260
- "id": "6828b56e-80b7-4699-b9dd-fd1f0820732e",
253
+ "id": "5e892e5b-0004-4a04-bd2e-1ea9e0e5d3f9",
261
254
  "key": "node_input",
262
255
  "value": {
263
256
  "rules": [
@@ -276,14 +269,7 @@ def test_serialize_workflow(vellum_client):
276
269
  "display_data": {"position": {"x": 0.0, "y": 0.0}},
277
270
  "base": {
278
271
  "name": "FinalOutputNode",
279
- "module": [
280
- "vellum",
281
- "workflows",
282
- "nodes",
283
- "displayable",
284
- "final_output_node",
285
- "node",
286
- ],
272
+ "module": ["vellum", "workflows", "nodes", "displayable", "final_output_node", "node"],
287
273
  },
288
274
  "definition": None,
289
275
  },
@@ -296,11 +282,11 @@ def test_serialize_workflow(vellum_client):
296
282
  "target_handle_id": "0c98c306-b519-40d7-8b05-321b1dfd7f11",
297
283
  "output_id": "44ea8d75-e2a8-4627-85b1-8504b65d25c9",
298
284
  "output_type": "NUMBER",
299
- "node_input_id": "500ff745-344f-4094-9425-48c4b40b7a5d",
285
+ "node_input_id": "14345321-7e6b-4e2a-918a-7a5b0064f047",
300
286
  },
301
287
  "inputs": [
302
288
  {
303
- "id": "500ff745-344f-4094-9425-48c4b40b7a5d",
289
+ "id": "14345321-7e6b-4e2a-918a-7a5b0064f047",
304
290
  "key": "node_input",
305
291
  "value": {
306
292
  "rules": [
@@ -319,14 +305,7 @@ def test_serialize_workflow(vellum_client):
319
305
  "display_data": {"position": {"x": 0.0, "y": 0.0}},
320
306
  "base": {
321
307
  "name": "FinalOutputNode",
322
- "module": [
323
- "vellum",
324
- "workflows",
325
- "nodes",
326
- "displayable",
327
- "final_output_node",
328
- "node",
329
- ],
308
+ "module": ["vellum", "workflows", "nodes", "displayable", "final_output_node", "node"],
330
309
  },
331
310
  "definition": None,
332
311
  },