vellum-ai 1.3.9__py3-none-any.whl → 1.3.10__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 +2 -2
- vellum/workflows/errors/types.py +3 -1
- vellum/workflows/events/tests/test_event.py +1 -0
- vellum/workflows/exceptions.py +11 -2
- vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py +2 -0
- vellum/workflows/types/definition.py +32 -1
- {vellum_ai-1.3.9.dist-info → vellum_ai-1.3.10.dist-info}/METADATA +1 -1
- {vellum_ai-1.3.9.dist-info → vellum_ai-1.3.10.dist-info}/RECORD +12 -12
- vellum_ee/workflows/display/utils/expressions.py +2 -23
- {vellum_ai-1.3.9.dist-info → vellum_ai-1.3.10.dist-info}/LICENSE +0 -0
- {vellum_ai-1.3.9.dist-info → vellum_ai-1.3.10.dist-info}/WHEEL +0 -0
- {vellum_ai-1.3.9.dist-info → vellum_ai-1.3.10.dist-info}/entry_points.txt +0 -0
@@ -27,10 +27,10 @@ class BaseClientWrapper:
|
|
27
27
|
|
28
28
|
def get_headers(self) -> typing.Dict[str, str]:
|
29
29
|
headers: typing.Dict[str, str] = {
|
30
|
-
"User-Agent": "vellum-ai/1.3.
|
30
|
+
"User-Agent": "vellum-ai/1.3.10",
|
31
31
|
"X-Fern-Language": "Python",
|
32
32
|
"X-Fern-SDK-Name": "vellum-ai",
|
33
|
-
"X-Fern-SDK-Version": "1.3.
|
33
|
+
"X-Fern-SDK-Version": "1.3.10",
|
34
34
|
**(self.get_custom_headers() or {}),
|
35
35
|
}
|
36
36
|
if self._api_version is not None:
|
vellum/workflows/errors/types.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
from dataclasses import dataclass
|
2
2
|
from enum import Enum
|
3
3
|
import logging
|
4
|
-
from typing import Any, Dict
|
4
|
+
from typing import Any, Dict, Optional
|
5
5
|
|
6
6
|
from vellum.client.types.vellum_error import VellumError
|
7
7
|
from vellum.client.types.vellum_error_code_enum import VellumErrorCodeEnum
|
@@ -30,6 +30,7 @@ class WorkflowErrorCode(Enum):
|
|
30
30
|
class WorkflowError:
|
31
31
|
message: str
|
32
32
|
code: WorkflowErrorCode
|
33
|
+
raw_data: Optional[Dict[str, Any]] = None
|
33
34
|
|
34
35
|
def __contains__(self, item: Any) -> bool:
|
35
36
|
return item in self.message
|
@@ -55,6 +56,7 @@ def vellum_error_to_workflow_error(error: VellumError) -> WorkflowError:
|
|
55
56
|
return WorkflowError(
|
56
57
|
message=error.message,
|
57
58
|
code=workflow_error_code,
|
59
|
+
raw_data=error.raw_data or {},
|
58
60
|
)
|
59
61
|
|
60
62
|
|
vellum/workflows/exceptions.py
CHANGED
@@ -1,10 +1,18 @@
|
|
1
|
+
from typing import Any, Dict, Optional
|
2
|
+
|
1
3
|
from vellum.workflows.errors import WorkflowError, WorkflowErrorCode
|
2
4
|
|
3
5
|
|
4
6
|
class NodeException(Exception):
|
5
|
-
def __init__(
|
7
|
+
def __init__(
|
8
|
+
self,
|
9
|
+
message: str,
|
10
|
+
code: WorkflowErrorCode = WorkflowErrorCode.INTERNAL_ERROR,
|
11
|
+
raw_data: Optional[Dict[str, Any]] = None,
|
12
|
+
):
|
6
13
|
self.message = message
|
7
14
|
self.code = code
|
15
|
+
self.raw_data = raw_data
|
8
16
|
super().__init__(message)
|
9
17
|
|
10
18
|
@property
|
@@ -12,11 +20,12 @@ class NodeException(Exception):
|
|
12
20
|
return WorkflowError(
|
13
21
|
message=self.message,
|
14
22
|
code=self.code,
|
23
|
+
raw_data=self.raw_data,
|
15
24
|
)
|
16
25
|
|
17
26
|
@staticmethod
|
18
27
|
def of(workflow_error: WorkflowError) -> "NodeException":
|
19
|
-
return NodeException(message=workflow_error.message, code=workflow_error.code)
|
28
|
+
return NodeException(message=workflow_error.message, code=workflow_error.code, raw_data=workflow_error.raw_data)
|
20
29
|
|
21
30
|
|
22
31
|
class WorkflowInitializationException(Exception):
|
@@ -114,6 +114,7 @@ def test_inline_text_prompt_node__catch_provider_error(vellum_adhoc_prompt_clien
|
|
114
114
|
expected_error = VellumError(
|
115
115
|
message="OpenAI failed",
|
116
116
|
code="PROVIDER_ERROR",
|
117
|
+
raw_data={"type": "ERROR", "error": {"message": "Something went wrong"}},
|
117
118
|
)
|
118
119
|
|
119
120
|
def generate_prompt_events(*args: Any, **kwargs: Any) -> Iterator[ExecutePromptEvent]:
|
@@ -144,6 +145,7 @@ def test_inline_text_prompt_node__catch_provider_error(vellum_adhoc_prompt_clien
|
|
144
145
|
value=SdkVellumError(
|
145
146
|
message="OpenAI failed",
|
146
147
|
code=WorkflowErrorCode.PROVIDER_ERROR,
|
148
|
+
raw_data={"type": "ERROR", "error": {"message": "Something went wrong"}},
|
147
149
|
),
|
148
150
|
)
|
149
151
|
in outputs
|
@@ -4,8 +4,9 @@ from types import FrameType
|
|
4
4
|
from uuid import UUID
|
5
5
|
from typing import Annotated, Any, Dict, Literal, Optional, Union
|
6
6
|
|
7
|
-
from pydantic import BeforeValidator
|
7
|
+
from pydantic import BeforeValidator, SerializationInfo, model_serializer
|
8
8
|
|
9
|
+
from vellum import Vellum
|
9
10
|
from vellum.client.core.pydantic_utilities import UniversalBaseModel
|
10
11
|
from vellum.client.types.code_resource_definition import CodeResourceDefinition as ClientCodeResourceDefinition
|
11
12
|
from vellum.workflows.constants import AuthorizationType
|
@@ -78,6 +79,10 @@ class DeploymentDefinition(UniversalBaseModel):
|
|
78
79
|
deployment: str
|
79
80
|
release_tag: str = "LATEST"
|
80
81
|
|
82
|
+
# hydrated fields
|
83
|
+
name: Optional[str] = None
|
84
|
+
description: Optional[str] = None
|
85
|
+
|
81
86
|
def _is_uuid(self) -> bool:
|
82
87
|
"""Check if the deployment field is a valid UUID."""
|
83
88
|
try:
|
@@ -100,6 +105,32 @@ class DeploymentDefinition(UniversalBaseModel):
|
|
100
105
|
return self.deployment
|
101
106
|
return None
|
102
107
|
|
108
|
+
@model_serializer(mode="wrap")
|
109
|
+
def _serialize(self, handler, info: SerializationInfo):
|
110
|
+
"""Allow Pydantic to serialize directly given a `client` in context.
|
111
|
+
|
112
|
+
Falls back to the default serialization when client is not provided.
|
113
|
+
"""
|
114
|
+
context = info.context if info and hasattr(info, "context") else {}
|
115
|
+
client: Optional[Vellum] = context.get("client") if context else None
|
116
|
+
|
117
|
+
if client:
|
118
|
+
release = client.workflow_deployments.retrieve_workflow_deployment_release(
|
119
|
+
self.deployment, self.release_tag
|
120
|
+
)
|
121
|
+
self.name = release.deployment.name or self.deployment
|
122
|
+
self.description = release.description or f"Workflow Deployment for {self.deployment}"
|
123
|
+
|
124
|
+
return {
|
125
|
+
"type": "WORKFLOW_DEPLOYMENT",
|
126
|
+
"name": self.name,
|
127
|
+
"description": self.description,
|
128
|
+
"deployment": self.deployment,
|
129
|
+
"release_tag": self.release_tag,
|
130
|
+
}
|
131
|
+
|
132
|
+
return handler(self)
|
133
|
+
|
103
134
|
|
104
135
|
class ComposioToolDefinition(UniversalBaseModel):
|
105
136
|
"""Represents a specific Composio action that can be used in Tool Calling Node"""
|
@@ -113,7 +113,7 @@ vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
|
|
113
113
|
vellum_ee/workflows/display/utils/auto_layout.py,sha256=f4GiLn_LazweupfqTpubcdtdfE_vrOcmZudSsnYIY9E,3906
|
114
114
|
vellum_ee/workflows/display/utils/events.py,sha256=DE33uoKW78BZtITJ6L22dMZN3KR1BuZBVC98C_gIyzU,1943
|
115
115
|
vellum_ee/workflows/display/utils/exceptions.py,sha256=LSwwxCYNxFkf5XMUcFkaZKpQ13OSrI7y_bpEUwbKVk0,169
|
116
|
-
vellum_ee/workflows/display/utils/expressions.py,sha256=
|
116
|
+
vellum_ee/workflows/display/utils/expressions.py,sha256=K_9CVZJkwkYtLEPwaOA3Sb0wMmi0KbmJUGNkpXsRSbE,19506
|
117
117
|
vellum_ee/workflows/display/utils/registry.py,sha256=1qXiBTdsnro6FeCX0FGBEK7CIf6wa--Jt50iZ_nEp_M,3460
|
118
118
|
vellum_ee/workflows/display/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
119
119
|
vellum_ee/workflows/display/utils/tests/test_auto_layout.py,sha256=vfXI769418s9vda5Gb5NFBH747WMOwSgHRXeLCTLVm8,2356
|
@@ -155,7 +155,7 @@ vellum/client/README.md,sha256=flqu57ubZNTfpq60CdLtJC9gp4WEkyjb_n_eZ4OYf9w,6497
|
|
155
155
|
vellum/client/__init__.py,sha256=T5Ht_w-Mk_9nzGqdadhQB8V20M0vYj7am06ut0A3P1o,73401
|
156
156
|
vellum/client/core/__init__.py,sha256=lTcqUPXcx4112yLDd70RAPeqq6tu3eFMe1pKOqkW9JQ,1562
|
157
157
|
vellum/client/core/api_error.py,sha256=44vPoTyWN59gonCIZMdzw7M1uspygiLnr3GNFOoVL2Q,614
|
158
|
-
vellum/client/core/client_wrapper.py,sha256=
|
158
|
+
vellum/client/core/client_wrapper.py,sha256=r-GaDOv2AZPXjGOGdRTzl4QBhv3rREaY-YqQLoi27ds,2842
|
159
159
|
vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
160
160
|
vellum/client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
|
161
161
|
vellum/client/core/force_multipart.py,sha256=awxh5MtcRYe74ehY8U76jzv6fYM_w_D3Rur7KQQzSDk,429
|
@@ -1728,7 +1728,7 @@ vellum/workflows/emitters/vellum_emitter.py,sha256=ECBIRA48WS5rIJd1iWUfye7B5Up7u
|
|
1728
1728
|
vellum/workflows/environment/__init__.py,sha256=TJz0m9dwIs6YOwCTeuN0HHsU-ecyjc1OJXx4AFy83EQ,121
|
1729
1729
|
vellum/workflows/environment/environment.py,sha256=Ck3RPKXJvtMGx_toqYQQQF-ZwXm5ijVwJpEPTeIJ4_Q,471
|
1730
1730
|
vellum/workflows/errors/__init__.py,sha256=tWGPu5xyAU8gRb8_bl0fL7OfU3wxQ9UH6qVwy4X4P_Q,113
|
1731
|
-
vellum/workflows/errors/types.py,sha256=
|
1731
|
+
vellum/workflows/errors/types.py,sha256=n89vGaCdRYKxv-JngGm9nkR5yXeWnR48CJ9L1iABLaQ,4144
|
1732
1732
|
vellum/workflows/events/__init__.py,sha256=V4mh766fyA70WvHelm9kfVZGrUgEKcJ9tJt8EepfQYU,832
|
1733
1733
|
vellum/workflows/events/context.py,sha256=vCfMIPmz4j9Om36rRWa35A_JU_VccWWS52_mZkkqxak,3345
|
1734
1734
|
vellum/workflows/events/node.py,sha256=yHVd-rX2E3qc2XLnZr0fW6uq4ZCMm34mnY2tzYceyOg,5884
|
@@ -1736,10 +1736,10 @@ vellum/workflows/events/relational_threads.py,sha256=zmLrBCBYpdpQV0snKH3HleST-_h
|
|
1736
1736
|
vellum/workflows/events/stream.py,sha256=xhXJTZirFi0xad5neAQNogrIQ4h47fpnKbVC3vCM5Js,889
|
1737
1737
|
vellum/workflows/events/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1738
1738
|
vellum/workflows/events/tests/test_basic_workflow.py,sha256=Pj6orHsXz37jWC5FARi0Sx2Gjf99Owri2Cvr6Chb79k,1765
|
1739
|
-
vellum/workflows/events/tests/test_event.py,sha256=
|
1739
|
+
vellum/workflows/events/tests/test_event.py,sha256=RGVGz0DXMTvwCgdjua8rpPpCuCLDM5-8ET_3q4yH8_8,18493
|
1740
1740
|
vellum/workflows/events/types.py,sha256=mVrqAH9Hs9SpXm08Hcxdyap_ImQPwGsxRr56rSNMP34,5043
|
1741
1741
|
vellum/workflows/events/workflow.py,sha256=kLSWFXiDZH0TELWoDjQ_kHVomFnw8MVVUPDGIzgyosw,8997
|
1742
|
-
vellum/workflows/exceptions.py,sha256=
|
1742
|
+
vellum/workflows/exceptions.py,sha256=Y7EULLN0kss8jxTLFNWEiOLMnyr1uKG83wiMvmtQ9Ak,1438
|
1743
1743
|
vellum/workflows/executable.py,sha256=um-gLJMVYfGJwGJfZIPlCRHhHIYm6pn8PUEfeqrNx5k,218
|
1744
1744
|
vellum/workflows/expressions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1745
1745
|
vellum/workflows/expressions/accessor.py,sha256=3lu1-_-dBfZdJvtX-q66jbmRAZtqIfdsh_3_JNuzg1E,4462
|
@@ -1889,7 +1889,7 @@ vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=ZB
|
|
1889
1889
|
vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1890
1890
|
vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/test_node.py,sha256=c98nMPogZ6iN_pTvVUMTB3J72Hj--H-XVgvvRXhdSQE,19085
|
1891
1891
|
vellum/workflows/nodes/displayable/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1892
|
-
vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py,sha256=
|
1892
|
+
vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py,sha256=E6PQ9OKcDlsJbWoxVKWgiAPgz9p59g1ONMgNggfOeiI,4868
|
1893
1893
|
vellum/workflows/nodes/displayable/tests/test_search_node_error_handling.py,sha256=8aw8hDFL0ZXThvAa7yxrJN026EYGD4-Q1si3Phu9-_0,6307
|
1894
1894
|
vellum/workflows/nodes/displayable/tests/test_search_node_wth_text_output.py,sha256=VepO5z1277c1y5N6LLIC31nnWD1aak2m5oPFplfJHHs,6935
|
1895
1895
|
vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py,sha256=Bjv-wZyFgNaVZb9KEMMZd9lFoLzbPEPjEMpANizMZw4,2413
|
@@ -1955,7 +1955,7 @@ vellum/workflows/tests/test_undefined.py,sha256=zMCVliCXVNLrlC6hEGyOWDnQADJ2g83y
|
|
1955
1955
|
vellum/workflows/types/__init__.py,sha256=KxUTMBGzuRCfiMqzzsykOeVvrrkaZmTTo1a7SLu8gRM,68
|
1956
1956
|
vellum/workflows/types/code_execution_node_wrappers.py,sha256=fewX9bqF_4TZuK-gZYIn12s31-k03vHMGRpvFAPm11Y,3206
|
1957
1957
|
vellum/workflows/types/core.py,sha256=TggDVs2lVya33xvu374EDhMC1b7RRlAAs0zWLaF46BA,1385
|
1958
|
-
vellum/workflows/types/definition.py,sha256=
|
1958
|
+
vellum/workflows/types/definition.py,sha256=esmlFZFA6wnzNtSYUWpIMFmhhLs_kCm_h_THroL3Zd8,6196
|
1959
1959
|
vellum/workflows/types/generics.py,sha256=8jptbEx1fnJV0Lhj0MpCJOT6yNiEWeTOYOwrEAb5CRU,1576
|
1960
1960
|
vellum/workflows/types/stack.py,sha256=h7NE0vXR7l9DevFBIzIAk1Zh59K-kECQtDTKOUunwMY,1314
|
1961
1961
|
vellum/workflows/types/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1982,8 +1982,8 @@ vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnad
|
|
1982
1982
|
vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1983
1983
|
vellum/workflows/workflows/tests/test_base_workflow.py,sha256=ptMntHzVyy8ZuzNgeTuk7hREgKQ5UBdgq8VJFSGaW4Y,20832
|
1984
1984
|
vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
|
1985
|
-
vellum_ai-1.3.
|
1986
|
-
vellum_ai-1.3.
|
1987
|
-
vellum_ai-1.3.
|
1988
|
-
vellum_ai-1.3.
|
1989
|
-
vellum_ai-1.3.
|
1985
|
+
vellum_ai-1.3.10.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
|
1986
|
+
vellum_ai-1.3.10.dist-info/METADATA,sha256=rMxCNVxzMICH4KL7PndzBmRPdyejUvPmvuJnCS7goJc,5548
|
1987
|
+
vellum_ai-1.3.10.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
1988
|
+
vellum_ai-1.3.10.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
|
1989
|
+
vellum_ai-1.3.10.dist-info/RECORD,,
|
@@ -51,7 +51,6 @@ from vellum.workflows.references.state_value import StateValueReference
|
|
51
51
|
from vellum.workflows.references.vellum_secret import VellumSecretReference
|
52
52
|
from vellum.workflows.references.workflow_input import WorkflowInputReference
|
53
53
|
from vellum.workflows.types.core import JsonArray, JsonObject
|
54
|
-
from vellum.workflows.types.definition import DeploymentDefinition
|
55
54
|
from vellum.workflows.types.generics import is_workflow_class
|
56
55
|
from vellum.workflows.utils.functions import compile_function_definition
|
57
56
|
from vellum.workflows.utils.uuids import uuid4_from_hash
|
@@ -425,29 +424,9 @@ def serialize_value(executable_id: UUID, display_context: "WorkflowDisplayContex
|
|
425
424
|
},
|
426
425
|
}
|
427
426
|
|
428
|
-
if isinstance(value, DeploymentDefinition):
|
429
|
-
workflow_deployment_release = display_context.client.workflow_deployments.retrieve_workflow_deployment_release(
|
430
|
-
value.deployment, value.release_tag
|
431
|
-
)
|
432
|
-
name = workflow_deployment_release.deployment.name or value.deployment
|
433
|
-
description = workflow_deployment_release.description or f"Workflow Deployment for {name}"
|
434
|
-
|
435
|
-
return {
|
436
|
-
"type": "CONSTANT_VALUE",
|
437
|
-
"value": {
|
438
|
-
"type": "JSON",
|
439
|
-
"value": {
|
440
|
-
"type": "WORKFLOW_DEPLOYMENT",
|
441
|
-
"name": name,
|
442
|
-
"description": description,
|
443
|
-
"deployment": value.deployment,
|
444
|
-
"release_tag": value.release_tag,
|
445
|
-
},
|
446
|
-
},
|
447
|
-
}
|
448
|
-
|
449
427
|
if isinstance(value, BaseModel):
|
450
|
-
|
428
|
+
context = {"executable_id": executable_id, "client": display_context.client}
|
429
|
+
dict_value = value.model_dump(context=context)
|
451
430
|
return serialize_value(executable_id, display_context, dict_value)
|
452
431
|
|
453
432
|
if callable(value):
|
File without changes
|
File without changes
|
File without changes
|