vellum-ai 0.8.9__py3-none-any.whl → 0.8.11__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- vellum/client.py +6 -2
- vellum/core/client_wrapper.py +1 -1
- vellum/core/pydantic_utilities.py +58 -22
- vellum/core/serialization.py +124 -40
- vellum/environment.py +3 -3
- vellum/resources/ad_hoc/client.py +6 -2
- vellum/resources/document_indexes/client.py +4 -4
- vellum/resources/documents/client.py +2 -2
- vellum/resources/test_suites/client.py +22 -4
- vellum/types/iteration_state_enum.py +1 -1
- {vellum_ai-0.8.9.dist-info → vellum_ai-0.8.11.dist-info}/METADATA +1 -1
- {vellum_ai-0.8.9.dist-info → vellum_ai-0.8.11.dist-info}/RECORD +14 -14
- {vellum_ai-0.8.9.dist-info → vellum_ai-0.8.11.dist-info}/LICENSE +0 -0
- {vellum_ai-0.8.9.dist-info → vellum_ai-0.8.11.dist-info}/WHEEL +0 -0
vellum/client.py
CHANGED
@@ -892,7 +892,9 @@ class Vellum:
|
|
892
892
|
ChatMessageRequest(
|
893
893
|
text="string",
|
894
894
|
role="SYSTEM",
|
895
|
-
content=StringChatMessageContentRequest(
|
895
|
+
content=StringChatMessageContentRequest(
|
896
|
+
value="string",
|
897
|
+
),
|
896
898
|
source="string",
|
897
899
|
)
|
898
900
|
],
|
@@ -2116,7 +2118,9 @@ class AsyncVellum:
|
|
2116
2118
|
ChatMessageRequest(
|
2117
2119
|
text="string",
|
2118
2120
|
role="SYSTEM",
|
2119
|
-
content=StringChatMessageContentRequest(
|
2121
|
+
content=StringChatMessageContentRequest(
|
2122
|
+
value="string",
|
2123
|
+
),
|
2120
2124
|
source="string",
|
2121
2125
|
)
|
2122
2126
|
],
|
vellum/core/client_wrapper.py
CHANGED
@@ -17,7 +17,7 @@ class BaseClientWrapper:
|
|
17
17
|
headers: typing.Dict[str, str] = {
|
18
18
|
"X-Fern-Language": "Python",
|
19
19
|
"X-Fern-SDK-Name": "vellum-ai",
|
20
|
-
"X-Fern-SDK-Version": "0.8.
|
20
|
+
"X-Fern-SDK-Version": "0.8.11",
|
21
21
|
}
|
22
22
|
headers["X_API_KEY"] = self.api_key
|
23
23
|
return headers
|
@@ -80,6 +80,8 @@ class UniversalBaseModel(pydantic.BaseModel):
|
|
80
80
|
smart_union = True
|
81
81
|
allow_population_by_field_name = True
|
82
82
|
json_encoders = {dt.datetime: serialize_datetime}
|
83
|
+
# Allow fields begining with `model_` to be used in the model
|
84
|
+
protected_namespaces = ()
|
83
85
|
|
84
86
|
def json(self, **kwargs: typing.Any) -> str:
|
85
87
|
kwargs_with_defaults: typing.Any = {
|
@@ -97,30 +99,64 @@ class UniversalBaseModel(pydantic.BaseModel):
|
|
97
99
|
Override the default dict method to `exclude_unset` by default. This function patches
|
98
100
|
`exclude_unset` to work include fields within non-None default values.
|
99
101
|
"""
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
for
|
104
|
-
|
105
|
-
default = _get_field_default(field)
|
106
|
-
|
107
|
-
# If the default values are non-null act like they've been set
|
108
|
-
# This effectively allows exclude_unset to work like exclude_none where
|
109
|
-
# the latter passes through intentionally set none values.
|
110
|
-
if default != None:
|
111
|
-
_fields_set.add(name)
|
112
|
-
|
113
|
-
kwargs_with_defaults_exclude_unset: typing.Any = {
|
114
|
-
"by_alias": True,
|
115
|
-
"exclude_unset": True,
|
116
|
-
"include": _fields_set,
|
117
|
-
**kwargs,
|
118
|
-
}
|
119
|
-
|
102
|
+
# Note: the logic here is multi-plexed given the levers exposed in Pydantic V1 vs V2
|
103
|
+
# Pydantic V1's .dict can be extremely slow, so we do not want to call it twice.
|
104
|
+
#
|
105
|
+
# We'd ideally do the same for Pydantic V2, but it shells out to a library to serialize models
|
106
|
+
# that we have less control over, and this is less intrusive than custom serializers for now.
|
120
107
|
if IS_PYDANTIC_V2:
|
121
|
-
|
108
|
+
kwargs_with_defaults_exclude_unset: typing.Any = {
|
109
|
+
**kwargs,
|
110
|
+
"by_alias": True,
|
111
|
+
"exclude_unset": True,
|
112
|
+
"exclude_none": False,
|
113
|
+
}
|
114
|
+
kwargs_with_defaults_exclude_none: typing.Any = {
|
115
|
+
**kwargs,
|
116
|
+
"by_alias": True,
|
117
|
+
"exclude_none": True,
|
118
|
+
"exclude_unset": False,
|
119
|
+
}
|
120
|
+
return deep_union_pydantic_dicts(
|
121
|
+
super().model_dump(**kwargs_with_defaults_exclude_unset), # type: ignore # Pydantic v2
|
122
|
+
super().model_dump(**kwargs_with_defaults_exclude_none), # type: ignore # Pydantic v2
|
123
|
+
)
|
124
|
+
|
122
125
|
else:
|
123
|
-
|
126
|
+
_fields_set = self.__fields_set__
|
127
|
+
|
128
|
+
fields = _get_model_fields(self.__class__)
|
129
|
+
for name, field in fields.items():
|
130
|
+
if name not in _fields_set:
|
131
|
+
default = _get_field_default(field)
|
132
|
+
|
133
|
+
# If the default values are non-null act like they've been set
|
134
|
+
# This effectively allows exclude_unset to work like exclude_none where
|
135
|
+
# the latter passes through intentionally set none values.
|
136
|
+
if default != None:
|
137
|
+
_fields_set.add(name)
|
138
|
+
|
139
|
+
kwargs_with_defaults_exclude_unset_include_fields: typing.Any = {
|
140
|
+
"by_alias": True,
|
141
|
+
"exclude_unset": True,
|
142
|
+
"include": _fields_set,
|
143
|
+
**kwargs,
|
144
|
+
}
|
145
|
+
|
146
|
+
return super().dict(**kwargs_with_defaults_exclude_unset_include_fields)
|
147
|
+
|
148
|
+
|
149
|
+
def deep_union_pydantic_dicts(
|
150
|
+
source: typing.Dict[str, typing.Any], destination: typing.Dict[str, typing.Any]
|
151
|
+
) -> typing.Dict[str, typing.Any]:
|
152
|
+
for key, value in source.items():
|
153
|
+
if isinstance(value, dict):
|
154
|
+
node = destination.setdefault(key, {})
|
155
|
+
deep_union_pydantic_dicts(value, node)
|
156
|
+
else:
|
157
|
+
destination[key] = value
|
158
|
+
|
159
|
+
return destination
|
124
160
|
|
125
161
|
|
126
162
|
if IS_PYDANTIC_V2:
|
vellum/core/serialization.py
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
2
2
|
|
3
3
|
import collections
|
4
|
+
import inspect
|
4
5
|
import typing
|
5
6
|
|
6
7
|
import typing_extensions
|
7
8
|
|
9
|
+
import pydantic
|
10
|
+
|
8
11
|
|
9
12
|
class FieldMetadata:
|
10
13
|
"""
|
@@ -29,6 +32,7 @@ def convert_and_respect_annotation_metadata(
|
|
29
32
|
object_: typing.Any,
|
30
33
|
annotation: typing.Any,
|
31
34
|
inner_type: typing.Optional[typing.Any] = None,
|
35
|
+
direction: typing.Literal["read", "write"],
|
32
36
|
) -> typing.Any:
|
33
37
|
"""
|
34
38
|
Respect the metadata annotations on a field, such as aliasing. This function effectively
|
@@ -56,44 +60,59 @@ def convert_and_respect_annotation_metadata(
|
|
56
60
|
inner_type = annotation
|
57
61
|
|
58
62
|
clean_type = _remove_annotations(inner_type)
|
59
|
-
|
60
|
-
return _convert_typeddict(object_, clean_type)
|
61
|
-
|
63
|
+
# Pydantic models
|
62
64
|
if (
|
63
|
-
|
64
|
-
|
65
|
-
and (
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
65
|
+
inspect.isclass(clean_type)
|
66
|
+
and issubclass(clean_type, pydantic.BaseModel)
|
67
|
+
and isinstance(object_, typing.Mapping)
|
68
|
+
):
|
69
|
+
return _convert_mapping(object_, clean_type, direction)
|
70
|
+
# TypedDicts
|
71
|
+
if typing_extensions.is_typeddict(clean_type) and isinstance(object_, typing.Mapping):
|
72
|
+
return _convert_mapping(object_, clean_type, direction)
|
73
|
+
|
74
|
+
# If you're iterating on a string, do not bother to coerce it to a sequence.
|
75
|
+
if not isinstance(object_, str):
|
76
|
+
if (
|
77
|
+
typing_extensions.get_origin(clean_type) == typing.Set
|
78
|
+
or typing_extensions.get_origin(clean_type) == set
|
79
|
+
or clean_type == typing.Set
|
80
|
+
) and isinstance(object_, typing.Set):
|
81
|
+
inner_type = typing_extensions.get_args(clean_type)[0]
|
82
|
+
return {
|
83
|
+
convert_and_respect_annotation_metadata(
|
84
|
+
object_=item,
|
85
|
+
annotation=annotation,
|
86
|
+
inner_type=inner_type,
|
87
|
+
direction=direction,
|
71
88
|
)
|
72
|
-
|
89
|
+
for item in object_
|
90
|
+
}
|
91
|
+
elif (
|
92
|
+
(
|
93
|
+
typing_extensions.get_origin(clean_type) == typing.List
|
94
|
+
or typing_extensions.get_origin(clean_type) == list
|
95
|
+
or clean_type == typing.List
|
73
96
|
)
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
and isinstance(object_, typing.Set)
|
97
|
+
and isinstance(object_, typing.List)
|
98
|
+
) or (
|
99
|
+
(
|
100
|
+
typing_extensions.get_origin(clean_type) == typing.Sequence
|
101
|
+
or typing_extensions.get_origin(clean_type) == collections.abc.Sequence
|
102
|
+
or clean_type == typing.Sequence
|
81
103
|
)
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
104
|
+
and isinstance(object_, typing.Sequence)
|
105
|
+
):
|
106
|
+
inner_type = typing_extensions.get_args(clean_type)[0]
|
107
|
+
return [
|
108
|
+
convert_and_respect_annotation_metadata(
|
109
|
+
object_=item,
|
110
|
+
annotation=annotation,
|
111
|
+
inner_type=inner_type,
|
112
|
+
direction=direction,
|
87
113
|
)
|
88
|
-
|
89
|
-
|
90
|
-
)
|
91
|
-
):
|
92
|
-
inner_type = typing_extensions.get_args(clean_type)[0]
|
93
|
-
return [
|
94
|
-
convert_and_respect_annotation_metadata(object_=item, annotation=annotation, inner_type=inner_type)
|
95
|
-
for item in object_
|
96
|
-
]
|
114
|
+
for item in object_
|
115
|
+
]
|
97
116
|
|
98
117
|
if typing_extensions.get_origin(clean_type) == typing.Union:
|
99
118
|
# We should be able to ~relatively~ safely try to convert keys against all
|
@@ -101,7 +120,12 @@ def convert_and_respect_annotation_metadata(
|
|
101
120
|
# of the same name to a different name from another member
|
102
121
|
# Or if another member aliases a field of the same name that another member does not.
|
103
122
|
for member in typing_extensions.get_args(clean_type):
|
104
|
-
object_ = convert_and_respect_annotation_metadata(
|
123
|
+
object_ = convert_and_respect_annotation_metadata(
|
124
|
+
object_=object_,
|
125
|
+
annotation=annotation,
|
126
|
+
inner_type=member,
|
127
|
+
direction=direction,
|
128
|
+
)
|
105
129
|
return object_
|
106
130
|
|
107
131
|
annotated_type = _get_annotation(annotation)
|
@@ -113,16 +137,34 @@ def convert_and_respect_annotation_metadata(
|
|
113
137
|
return object_
|
114
138
|
|
115
139
|
|
116
|
-
def
|
140
|
+
def _convert_mapping(
|
141
|
+
object_: typing.Mapping[str, object],
|
142
|
+
expected_type: typing.Any,
|
143
|
+
direction: typing.Literal["read", "write"],
|
144
|
+
) -> typing.Mapping[str, object]:
|
117
145
|
converted_object: typing.Dict[str, object] = {}
|
118
146
|
annotations = typing_extensions.get_type_hints(expected_type, include_extras=True)
|
147
|
+
aliases_to_field_names = _get_alias_to_field_name(annotations)
|
119
148
|
for key, value in object_.items():
|
120
|
-
|
149
|
+
if direction == "read" and key in aliases_to_field_names:
|
150
|
+
dealiased_key = aliases_to_field_names.get(key)
|
151
|
+
if dealiased_key is not None:
|
152
|
+
type_ = annotations.get(dealiased_key)
|
153
|
+
else:
|
154
|
+
type_ = annotations.get(key)
|
155
|
+
# Note you can't get the annotation by the field name if you're in read mode, so you must check the aliases map
|
156
|
+
#
|
157
|
+
# So this is effectively saying if we're in write mode, and we don't have a type, or if we're in read mode and we don't have an alias
|
158
|
+
# then we can just pass the value through as is
|
121
159
|
if type_ is None:
|
122
160
|
converted_object[key] = value
|
161
|
+
elif direction == "read" and key not in aliases_to_field_names:
|
162
|
+
converted_object[key] = convert_and_respect_annotation_metadata(
|
163
|
+
object_=value, annotation=type_, direction=direction
|
164
|
+
)
|
123
165
|
else:
|
124
|
-
converted_object[_alias_key(key, type_)] =
|
125
|
-
object_=value, annotation=type_
|
166
|
+
converted_object[_alias_key(key, type_, direction, aliases_to_field_names)] = (
|
167
|
+
convert_and_respect_annotation_metadata(object_=value, annotation=type_, direction=direction)
|
126
168
|
)
|
127
169
|
return converted_object
|
128
170
|
|
@@ -156,7 +198,39 @@ def _remove_annotations(type_: typing.Any) -> typing.Any:
|
|
156
198
|
return type_
|
157
199
|
|
158
200
|
|
159
|
-
def
|
201
|
+
def get_alias_to_field_mapping(type_: typing.Any) -> typing.Dict[str, str]:
|
202
|
+
annotations = typing_extensions.get_type_hints(type_, include_extras=True)
|
203
|
+
return _get_alias_to_field_name(annotations)
|
204
|
+
|
205
|
+
|
206
|
+
def get_field_to_alias_mapping(type_: typing.Any) -> typing.Dict[str, str]:
|
207
|
+
annotations = typing_extensions.get_type_hints(type_, include_extras=True)
|
208
|
+
return _get_field_to_alias_name(annotations)
|
209
|
+
|
210
|
+
|
211
|
+
def _get_alias_to_field_name(
|
212
|
+
field_to_hint: typing.Dict[str, typing.Any],
|
213
|
+
) -> typing.Dict[str, str]:
|
214
|
+
aliases = {}
|
215
|
+
for field, hint in field_to_hint.items():
|
216
|
+
maybe_alias = _get_alias_from_type(hint)
|
217
|
+
if maybe_alias is not None:
|
218
|
+
aliases[maybe_alias] = field
|
219
|
+
return aliases
|
220
|
+
|
221
|
+
|
222
|
+
def _get_field_to_alias_name(
|
223
|
+
field_to_hint: typing.Dict[str, typing.Any],
|
224
|
+
) -> typing.Dict[str, str]:
|
225
|
+
aliases = {}
|
226
|
+
for field, hint in field_to_hint.items():
|
227
|
+
maybe_alias = _get_alias_from_type(hint)
|
228
|
+
if maybe_alias is not None:
|
229
|
+
aliases[field] = maybe_alias
|
230
|
+
return aliases
|
231
|
+
|
232
|
+
|
233
|
+
def _get_alias_from_type(type_: typing.Any) -> typing.Optional[str]:
|
160
234
|
maybe_annotated_type = _get_annotation(type_)
|
161
235
|
|
162
236
|
if maybe_annotated_type is not None:
|
@@ -166,5 +240,15 @@ def _alias_key(key: str, type_: typing.Any) -> str:
|
|
166
240
|
for annotation in annotations:
|
167
241
|
if isinstance(annotation, FieldMetadata) and annotation.alias is not None:
|
168
242
|
return annotation.alias
|
243
|
+
return None
|
244
|
+
|
169
245
|
|
170
|
-
|
246
|
+
def _alias_key(
|
247
|
+
key: str,
|
248
|
+
type_: typing.Any,
|
249
|
+
direction: typing.Literal["read", "write"],
|
250
|
+
aliases_to_field_names: typing.Dict[str, str],
|
251
|
+
) -> str:
|
252
|
+
if direction == "read":
|
253
|
+
return aliases_to_field_names.get(key, key)
|
254
|
+
return _get_alias_from_type(type_=type_) or key
|
vellum/environment.py
CHANGED
@@ -6,12 +6,12 @@ from __future__ import annotations
|
|
6
6
|
class VellumEnvironment:
|
7
7
|
PRODUCTION: VellumEnvironment
|
8
8
|
|
9
|
-
def __init__(self, *, default: str,
|
9
|
+
def __init__(self, *, default: str, documents: str, predict: str):
|
10
10
|
self.default = default
|
11
|
-
self.predict = predict
|
12
11
|
self.documents = documents
|
12
|
+
self.predict = predict
|
13
13
|
|
14
14
|
|
15
15
|
VellumEnvironment.PRODUCTION = VellumEnvironment(
|
16
|
-
default="https://api.vellum.ai",
|
16
|
+
default="https://api.vellum.ai", documents="https://documents.vellum.ai", predict="https://predict.vellum.ai"
|
17
17
|
)
|
@@ -112,7 +112,9 @@ class AdHocClient:
|
|
112
112
|
),
|
113
113
|
id="string",
|
114
114
|
state="ENABLED",
|
115
|
-
cache_config=EphemeralPromptCacheConfigRequest(
|
115
|
+
cache_config=EphemeralPromptCacheConfigRequest(
|
116
|
+
type={"key": "value"},
|
117
|
+
),
|
116
118
|
)
|
117
119
|
],
|
118
120
|
expand_meta=AdHocExpandMetaRequest(
|
@@ -288,7 +290,9 @@ class AsyncAdHocClient:
|
|
288
290
|
),
|
289
291
|
id="string",
|
290
292
|
state="ENABLED",
|
291
|
-
cache_config=EphemeralPromptCacheConfigRequest(
|
293
|
+
cache_config=EphemeralPromptCacheConfigRequest(
|
294
|
+
type={"key": "value"},
|
295
|
+
),
|
292
296
|
)
|
293
297
|
],
|
294
298
|
expand_meta=AdHocExpandMetaRequest(
|
@@ -367,7 +367,7 @@ class DocumentIndexesClient:
|
|
367
367
|
"""
|
368
368
|
_response = self._client_wrapper.httpx_client.request(
|
369
369
|
f"v1/document-indexes/{jsonable_encoder(id)}",
|
370
|
-
base_url=self._client_wrapper.get_environment().
|
370
|
+
base_url=self._client_wrapper.get_environment().documents,
|
371
371
|
method="DELETE",
|
372
372
|
request_options=request_options,
|
373
373
|
)
|
@@ -539,7 +539,7 @@ class DocumentIndexesClient:
|
|
539
539
|
"""
|
540
540
|
_response = self._client_wrapper.httpx_client.request(
|
541
541
|
f"v1/document-indexes/{jsonable_encoder(id)}/documents/{jsonable_encoder(document_id)}",
|
542
|
-
base_url=self._client_wrapper.get_environment().
|
542
|
+
base_url=self._client_wrapper.get_environment().documents,
|
543
543
|
method="DELETE",
|
544
544
|
request_options=request_options,
|
545
545
|
)
|
@@ -940,7 +940,7 @@ class AsyncDocumentIndexesClient:
|
|
940
940
|
"""
|
941
941
|
_response = await self._client_wrapper.httpx_client.request(
|
942
942
|
f"v1/document-indexes/{jsonable_encoder(id)}",
|
943
|
-
base_url=self._client_wrapper.get_environment().
|
943
|
+
base_url=self._client_wrapper.get_environment().documents,
|
944
944
|
method="DELETE",
|
945
945
|
request_options=request_options,
|
946
946
|
)
|
@@ -1136,7 +1136,7 @@ class AsyncDocumentIndexesClient:
|
|
1136
1136
|
"""
|
1137
1137
|
_response = await self._client_wrapper.httpx_client.request(
|
1138
1138
|
f"v1/document-indexes/{jsonable_encoder(id)}/documents/{jsonable_encoder(document_id)}",
|
1139
|
-
base_url=self._client_wrapper.get_environment().
|
1139
|
+
base_url=self._client_wrapper.get_environment().documents,
|
1140
1140
|
method="DELETE",
|
1141
1141
|
request_options=request_options,
|
1142
1142
|
)
|
@@ -171,7 +171,7 @@ class DocumentsClient:
|
|
171
171
|
"""
|
172
172
|
_response = self._client_wrapper.httpx_client.request(
|
173
173
|
f"v1/documents/{jsonable_encoder(id)}",
|
174
|
-
base_url=self._client_wrapper.get_environment().
|
174
|
+
base_url=self._client_wrapper.get_environment().documents,
|
175
175
|
method="DELETE",
|
176
176
|
request_options=request_options,
|
177
177
|
)
|
@@ -555,7 +555,7 @@ class AsyncDocumentsClient:
|
|
555
555
|
"""
|
556
556
|
_response = await self._client_wrapper.httpx_client.request(
|
557
557
|
f"v1/documents/{jsonable_encoder(id)}",
|
558
|
-
base_url=self._client_wrapper.get_environment().
|
558
|
+
base_url=self._client_wrapper.get_environment().documents,
|
559
559
|
method="DELETE",
|
560
560
|
request_options=request_options,
|
561
561
|
)
|
@@ -229,8 +229,18 @@ class TestSuitesClient:
|
|
229
229
|
id="string",
|
230
230
|
data=CreateTestSuiteTestCaseRequest(
|
231
231
|
label="string",
|
232
|
-
input_values=[
|
233
|
-
|
232
|
+
input_values=[
|
233
|
+
NamedTestCaseStringVariableValueRequest(
|
234
|
+
value="string",
|
235
|
+
name="string",
|
236
|
+
)
|
237
|
+
],
|
238
|
+
evaluation_values=[
|
239
|
+
NamedTestCaseStringVariableValueRequest(
|
240
|
+
value="string",
|
241
|
+
name="string",
|
242
|
+
)
|
243
|
+
],
|
234
244
|
external_id="string",
|
235
245
|
),
|
236
246
|
)
|
@@ -548,9 +558,17 @@ class AsyncTestSuitesClient:
|
|
548
558
|
id="string",
|
549
559
|
data=CreateTestSuiteTestCaseRequest(
|
550
560
|
label="string",
|
551
|
-
input_values=[
|
561
|
+
input_values=[
|
562
|
+
NamedTestCaseStringVariableValueRequest(
|
563
|
+
value="string",
|
564
|
+
name="string",
|
565
|
+
)
|
566
|
+
],
|
552
567
|
evaluation_values=[
|
553
|
-
NamedTestCaseStringVariableValueRequest(
|
568
|
+
NamedTestCaseStringVariableValueRequest(
|
569
|
+
value="string",
|
570
|
+
name="string",
|
571
|
+
)
|
554
572
|
],
|
555
573
|
external_id="string",
|
556
574
|
),
|
@@ -1,18 +1,18 @@
|
|
1
1
|
vellum/__init__.py,sha256=ZjILSZ1gKX9YUZjjOzr0wngRMV7aYaCvuCXgoxt7n2o,30148
|
2
|
-
vellum/client.py,sha256=
|
2
|
+
vellum/client.py,sha256=tsLLtZbwPASP8Cdh1RF19pOuNmZbBKFkUiplU9X190Q,101256
|
3
3
|
vellum/core/__init__.py,sha256=FzSvKbXjuM18Hdk3iGK-jsGY_DfouyRS659thZV5c1Y,1394
|
4
4
|
vellum/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
5
|
-
vellum/core/client_wrapper.py,sha256=
|
5
|
+
vellum/core/client_wrapper.py,sha256=GuFARnrNjOwr3CF3jArBZgkSP0O7K4e0MLMHBAXkbkg,1898
|
6
6
|
vellum/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
7
7
|
vellum/core/file.py,sha256=vliNmlB7PbDfi4EKiVPNq5QaGXJ4zlDBGupv7Qciy7g,1520
|
8
8
|
vellum/core/http_client.py,sha256=rZSidd9LazCjduvdBhZ7GDs4iGfn-OAfRGsDXB1z8f4,18882
|
9
9
|
vellum/core/jsonable_encoder.py,sha256=qaF1gtgH-kQZb4kJskETwcCsOPUof-NnYVdszHkb-dM,3656
|
10
|
-
vellum/core/pydantic_utilities.py,sha256=
|
10
|
+
vellum/core/pydantic_utilities.py,sha256=h_XylfOhkKxX6ZxL5CVfXylOzR4oc5AjCVC5yTsR4aU,9138
|
11
11
|
vellum/core/query_encoder.py,sha256=ekulqNd0j8TgD7ox-Qbz7liqX8-KP9blvT9DsRCenYM,2144
|
12
12
|
vellum/core/remove_none_from_dict.py,sha256=EU9SGgYidWq7SexuJbNs4-PZ-5Bl3Vppd864mS6vQZw,342
|
13
13
|
vellum/core/request_options.py,sha256=5cCGt5AEGgtP5xifDl4oVQUmSjlIA8FmRItAlJawM18,1417
|
14
|
-
vellum/core/serialization.py,sha256=
|
15
|
-
vellum/environment.py,sha256=
|
14
|
+
vellum/core/serialization.py,sha256=5evS9ZBT8F0_GUAfzb6FQvdgw4JKuHFBlEoqZ8Y8-DU,8970
|
15
|
+
vellum/environment.py,sha256=vkEIsMFufsklAMQJxa_E9R60LQsbeqKbWqtyXjffZp8,498
|
16
16
|
vellum/errors/__init__.py,sha256=HZB8vVqzDNx0M2uFJ05S5RcGTH95iVDl4v3rQ4xRqSw,343
|
17
17
|
vellum/errors/bad_request_error.py,sha256=_EbO8mWqN9kFZPvIap8qa1lL_EWkRcsZe1HKV9GDWJY,264
|
18
18
|
vellum/errors/forbidden_error.py,sha256=QO1kKlhClAPES6zsEK7g9pglWnxn3KWaOCAawWOg6Aw,263
|
@@ -30,17 +30,17 @@ vellum/lib/utils/paginator.py,sha256=yDvgehocYBDclLt5SewZH4hCIyq0yLHdBzkyPCoYPjs
|
|
30
30
|
vellum/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
31
31
|
vellum/resources/__init__.py,sha256=iaTrngunVag3wUnyP3TlA8lG55RUCYw4qgdlZXzhi2Q,806
|
32
32
|
vellum/resources/ad_hoc/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
33
|
-
vellum/resources/ad_hoc/client.py,sha256=
|
33
|
+
vellum/resources/ad_hoc/client.py,sha256=7WwFing-VwbfZJbwBRJCkJ3ypXJ7jMSt4kaCVSTW3gk,14006
|
34
34
|
vellum/resources/deployments/__init__.py,sha256=AE0TcFwLrLBljM0ZDX-pPw4Kqt-1f5JDpIok2HS80QI,157
|
35
35
|
vellum/resources/deployments/client.py,sha256=A_x9lFFFNiiwggPcrMfP88vv5F0FuLo39Ek36WEfJpE,28516
|
36
36
|
vellum/resources/deployments/types/__init__.py,sha256=IhwnmoXJ0r_QEhh1b2tBcaAm_x3fWMVuIhYmAapp_ZA,183
|
37
37
|
vellum/resources/deployments/types/deployments_list_request_status.py,sha256=CxlQD16KZXme7x31YYCe_3aAgEueutDTeJo5A4Au-aU,174
|
38
38
|
vellum/resources/document_indexes/__init__.py,sha256=YpOl_9IV7xOlH4OmusQxtAJB11kxQfCSMDyT1_UD0oM,165
|
39
|
-
vellum/resources/document_indexes/client.py,sha256=
|
39
|
+
vellum/resources/document_indexes/client.py,sha256=MoqaMRDP0eLSh1f8YE9P2Wxj4xlObtd3aMJHxTNqQlQ,37140
|
40
40
|
vellum/resources/document_indexes/types/__init__.py,sha256=IoFqKHN_VBdEhC7VL8_6Jbatrn0e0zuYEJAJUahcUR0,196
|
41
41
|
vellum/resources/document_indexes/types/document_indexes_list_request_status.py,sha256=sfUEB0cvOSmlE2iITqnMVyHv05Zy2fWP4QjCIYqMg0M,178
|
42
42
|
vellum/resources/documents/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
43
|
-
vellum/resources/documents/client.py,sha256=
|
43
|
+
vellum/resources/documents/client.py,sha256=C5hDZw1y_iNlPdSuePK-0hEwve4JIbKcx72kMNAo-Rg,27574
|
44
44
|
vellum/resources/folder_entities/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
45
45
|
vellum/resources/folder_entities/client.py,sha256=yxkHRAx8frCk-WvgcRD-WzMhA2kxvY_j42S436-j4EQ,4440
|
46
46
|
vellum/resources/sandboxes/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
@@ -48,7 +48,7 @@ vellum/resources/sandboxes/client.py,sha256=RDFDge2gkI6Kpo3VhlRISKS8wHDp7MYh83XV
|
|
48
48
|
vellum/resources/test_suite_runs/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
49
49
|
vellum/resources/test_suite_runs/client.py,sha256=laE40piDiurzmO1mwStY0ebsxQpTuETgiCAewtSrNk8,14192
|
50
50
|
vellum/resources/test_suites/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
51
|
-
vellum/resources/test_suites/client.py,sha256=
|
51
|
+
vellum/resources/test_suites/client.py,sha256=Sy_mXyAwObTwRSPH9gOO8gNZRfx4MlQVV3TxaAdnVx0,23795
|
52
52
|
vellum/resources/workflow_deployments/__init__.py,sha256=-5BCA0kSmW6WUh4gqLuQtHv4zFdt9lccuDwMU5YvEu4,173
|
53
53
|
vellum/resources/workflow_deployments/client.py,sha256=ezSg3EDA5UszvrT15jx7-RoSO8pXRwAIDlqMCJXkNOY,17393
|
54
54
|
vellum/resources/workflow_deployments/types/__init__.py,sha256=rmS_4dtbgLHGNQJ_pOloygrjl4sNbKZjTEKBxbMyz6E,208
|
@@ -195,7 +195,7 @@ vellum/types/initiated_prompt_execution_meta.py,sha256=pnRjcPnVRp650k0W7kfwg9f24
|
|
195
195
|
vellum/types/initiated_workflow_node_result_event.py,sha256=8fQ1m0TxaFa0p0uZqIPdVuUDnGfKva0tv4N27qp5ShM,1158
|
196
196
|
vellum/types/instructor_vectorizer_config.py,sha256=7udlosXv4CUWTW_Q9m0mz3VRi1FKSbBhDIOhtxRd0-U,731
|
197
197
|
vellum/types/instructor_vectorizer_config_request.py,sha256=6LGFFQKntMfX7bdetUqEMVdr3KJHEps0oDp2bNmqWbM,738
|
198
|
-
vellum/types/iteration_state_enum.py,sha256=
|
198
|
+
vellum/types/iteration_state_enum.py,sha256=83JSh842OJgQiLtNn1KMimy6RlEYRVH3mDmYWS6Ewzo,180
|
199
199
|
vellum/types/jinja_prompt_block_properties_request.py,sha256=2nb9gp224ADPi0aNTKNMaOe159EDB8JSHzDkMzR0QxI,719
|
200
200
|
vellum/types/jinja_prompt_block_request.py,sha256=VQPrZOZJaEw2ILrebKT53CM8hRyQ5RuUeZZt0mzRd3Q,1097
|
201
201
|
vellum/types/json_input_request.py,sha256=37JriRoVx8QPmCpEaDzaIhaHOQMFS8HlWuoSSvuf_o4,810
|
@@ -484,7 +484,7 @@ vellum/types/workflow_result_event_output_data_search_results.py,sha256=U34IK7Zv
|
|
484
484
|
vellum/types/workflow_result_event_output_data_string.py,sha256=tM3kgh6tEhD0dFEb_7UU0-UspeN4pUdINCcCrD64W74,1228
|
485
485
|
vellum/types/workflow_stream_event.py,sha256=Wn3Yzuy9MqWAeo8tEaXDTKDEbJoA8DdYdMVq8EKuhu8,361
|
486
486
|
vellum/version.py,sha256=jq-1PlAYxN9AXuaZqbYk9ak27SgE2lw9Ia5gx1b1gVI,76
|
487
|
-
vellum_ai-0.8.
|
488
|
-
vellum_ai-0.8.
|
489
|
-
vellum_ai-0.8.
|
490
|
-
vellum_ai-0.8.
|
487
|
+
vellum_ai-0.8.11.dist-info/LICENSE,sha256=CcaljEIoOBaU-wItPH4PmM_mDCGpyuUY0Er1BGu5Ti8,1073
|
488
|
+
vellum_ai-0.8.11.dist-info/METADATA,sha256=bmY3g2ROKUYfMAtFjosT39W1Yd57tC6R5qFcr_ZZjjs,4395
|
489
|
+
vellum_ai-0.8.11.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
490
|
+
vellum_ai-0.8.11.dist-info/RECORD,,
|
File without changes
|
File without changes
|