vellum-ai 0.8.12__py3-none-any.whl → 0.8.14__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
vellum/client.py CHANGED
@@ -19,6 +19,7 @@ from .types.prompt_deployment_expand_meta_request import PromptDeploymentExpandM
19
19
  from .types.raw_prompt_execution_overrides_request import RawPromptExecutionOverridesRequest
20
20
  from .core.request_options import RequestOptions
21
21
  from .types.execute_prompt_response import ExecutePromptResponse
22
+ from .core.serialization import convert_and_respect_annotation_metadata
22
23
  from .core.pydantic_utilities import parse_obj_as
23
24
  from .errors.bad_request_error import BadRequestError
24
25
  from .errors.forbidden_error import ForbiddenError
@@ -197,13 +198,19 @@ class Vellum:
197
198
  base_url=self._client_wrapper.get_environment().predict,
198
199
  method="POST",
199
200
  json={
200
- "inputs": inputs,
201
+ "inputs": convert_and_respect_annotation_metadata(
202
+ object_=inputs, annotation=typing.Sequence[PromptDeploymentInputRequest], direction="write"
203
+ ),
201
204
  "prompt_deployment_id": prompt_deployment_id,
202
205
  "prompt_deployment_name": prompt_deployment_name,
203
206
  "release_tag": release_tag,
204
207
  "external_id": external_id,
205
- "expand_meta": expand_meta,
206
- "raw_overrides": raw_overrides,
208
+ "expand_meta": convert_and_respect_annotation_metadata(
209
+ object_=expand_meta, annotation=PromptDeploymentExpandMetaRequest, direction="write"
210
+ ),
211
+ "raw_overrides": convert_and_respect_annotation_metadata(
212
+ object_=raw_overrides, annotation=RawPromptExecutionOverridesRequest, direction="write"
213
+ ),
207
214
  "expand_raw": expand_raw,
208
215
  "metadata": metadata,
209
216
  },
@@ -366,13 +373,19 @@ class Vellum:
366
373
  base_url=self._client_wrapper.get_environment().predict,
367
374
  method="POST",
368
375
  json={
369
- "inputs": inputs,
376
+ "inputs": convert_and_respect_annotation_metadata(
377
+ object_=inputs, annotation=typing.Sequence[PromptDeploymentInputRequest], direction="write"
378
+ ),
370
379
  "prompt_deployment_id": prompt_deployment_id,
371
380
  "prompt_deployment_name": prompt_deployment_name,
372
381
  "release_tag": release_tag,
373
382
  "external_id": external_id,
374
- "expand_meta": expand_meta,
375
- "raw_overrides": raw_overrides,
383
+ "expand_meta": convert_and_respect_annotation_metadata(
384
+ object_=expand_meta, annotation=PromptDeploymentExpandMetaRequest, direction="write"
385
+ ),
386
+ "raw_overrides": convert_and_respect_annotation_metadata(
387
+ object_=raw_overrides, annotation=RawPromptExecutionOverridesRequest, direction="write"
388
+ ),
376
389
  "expand_raw": expand_raw,
377
390
  "metadata": metadata,
378
391
  },
@@ -508,8 +521,12 @@ class Vellum:
508
521
  base_url=self._client_wrapper.get_environment().predict,
509
522
  method="POST",
510
523
  json={
511
- "inputs": inputs,
512
- "expand_meta": expand_meta,
524
+ "inputs": convert_and_respect_annotation_metadata(
525
+ object_=inputs, annotation=typing.Sequence[WorkflowRequestInputRequest], direction="write"
526
+ ),
527
+ "expand_meta": convert_and_respect_annotation_metadata(
528
+ object_=expand_meta, annotation=WorkflowExpandMetaRequest, direction="write"
529
+ ),
513
530
  "workflow_deployment_id": workflow_deployment_id,
514
531
  "workflow_deployment_name": workflow_deployment_name,
515
532
  "release_tag": release_tag,
@@ -649,8 +666,12 @@ class Vellum:
649
666
  base_url=self._client_wrapper.get_environment().predict,
650
667
  method="POST",
651
668
  json={
652
- "inputs": inputs,
653
- "expand_meta": expand_meta,
669
+ "inputs": convert_and_respect_annotation_metadata(
670
+ object_=inputs, annotation=typing.Sequence[WorkflowRequestInputRequest], direction="write"
671
+ ),
672
+ "expand_meta": convert_and_respect_annotation_metadata(
673
+ object_=expand_meta, annotation=WorkflowExpandMetaRequest, direction="write"
674
+ ),
654
675
  "workflow_deployment_id": workflow_deployment_id,
655
676
  "workflow_deployment_name": workflow_deployment_name,
656
677
  "release_tag": release_tag,
@@ -772,8 +793,12 @@ class Vellum:
772
793
  json={
773
794
  "deployment_id": deployment_id,
774
795
  "deployment_name": deployment_name,
775
- "requests": requests,
776
- "options": options,
796
+ "requests": convert_and_respect_annotation_metadata(
797
+ object_=requests, annotation=typing.Sequence[GenerateRequest], direction="write"
798
+ ),
799
+ "options": convert_and_respect_annotation_metadata(
800
+ object_=options, annotation=GenerateOptionsRequest, direction="write"
801
+ ),
777
802
  },
778
803
  request_options=request_options,
779
804
  omit=OMIT,
@@ -915,8 +940,12 @@ class Vellum:
915
940
  json={
916
941
  "deployment_id": deployment_id,
917
942
  "deployment_name": deployment_name,
918
- "requests": requests,
919
- "options": options,
943
+ "requests": convert_and_respect_annotation_metadata(
944
+ object_=requests, annotation=typing.Sequence[GenerateRequest], direction="write"
945
+ ),
946
+ "options": convert_and_respect_annotation_metadata(
947
+ object_=options, annotation=GenerateOptionsRequest, direction="write"
948
+ ),
920
949
  },
921
950
  request_options=request_options,
922
951
  omit=OMIT,
@@ -1036,7 +1065,9 @@ class Vellum:
1036
1065
  "index_id": index_id,
1037
1066
  "index_name": index_name,
1038
1067
  "query": query,
1039
- "options": options,
1068
+ "options": convert_and_respect_annotation_metadata(
1069
+ object_=options, annotation=SearchRequestOptionsRequest, direction="write"
1070
+ ),
1040
1071
  },
1041
1072
  request_options=request_options,
1042
1073
  omit=OMIT,
@@ -1132,7 +1163,9 @@ class Vellum:
1132
1163
  json={
1133
1164
  "deployment_id": deployment_id,
1134
1165
  "deployment_name": deployment_name,
1135
- "actuals": actuals,
1166
+ "actuals": convert_and_respect_annotation_metadata(
1167
+ object_=actuals, annotation=typing.Sequence[SubmitCompletionActualRequest], direction="write"
1168
+ ),
1136
1169
  },
1137
1170
  request_options=request_options,
1138
1171
  omit=OMIT,
@@ -1222,7 +1255,9 @@ class Vellum:
1222
1255
  base_url=self._client_wrapper.get_environment().predict,
1223
1256
  method="POST",
1224
1257
  json={
1225
- "actuals": actuals,
1258
+ "actuals": convert_and_respect_annotation_metadata(
1259
+ object_=actuals, annotation=typing.Sequence[SubmitWorkflowExecutionActualRequest], direction="write"
1260
+ ),
1226
1261
  "execution_id": execution_id,
1227
1262
  "external_id": external_id,
1228
1263
  },
@@ -1386,13 +1421,19 @@ class AsyncVellum:
1386
1421
  base_url=self._client_wrapper.get_environment().predict,
1387
1422
  method="POST",
1388
1423
  json={
1389
- "inputs": inputs,
1424
+ "inputs": convert_and_respect_annotation_metadata(
1425
+ object_=inputs, annotation=typing.Sequence[PromptDeploymentInputRequest], direction="write"
1426
+ ),
1390
1427
  "prompt_deployment_id": prompt_deployment_id,
1391
1428
  "prompt_deployment_name": prompt_deployment_name,
1392
1429
  "release_tag": release_tag,
1393
1430
  "external_id": external_id,
1394
- "expand_meta": expand_meta,
1395
- "raw_overrides": raw_overrides,
1431
+ "expand_meta": convert_and_respect_annotation_metadata(
1432
+ object_=expand_meta, annotation=PromptDeploymentExpandMetaRequest, direction="write"
1433
+ ),
1434
+ "raw_overrides": convert_and_respect_annotation_metadata(
1435
+ object_=raw_overrides, annotation=RawPromptExecutionOverridesRequest, direction="write"
1436
+ ),
1396
1437
  "expand_raw": expand_raw,
1397
1438
  "metadata": metadata,
1398
1439
  },
@@ -1563,13 +1604,19 @@ class AsyncVellum:
1563
1604
  base_url=self._client_wrapper.get_environment().predict,
1564
1605
  method="POST",
1565
1606
  json={
1566
- "inputs": inputs,
1607
+ "inputs": convert_and_respect_annotation_metadata(
1608
+ object_=inputs, annotation=typing.Sequence[PromptDeploymentInputRequest], direction="write"
1609
+ ),
1567
1610
  "prompt_deployment_id": prompt_deployment_id,
1568
1611
  "prompt_deployment_name": prompt_deployment_name,
1569
1612
  "release_tag": release_tag,
1570
1613
  "external_id": external_id,
1571
- "expand_meta": expand_meta,
1572
- "raw_overrides": raw_overrides,
1614
+ "expand_meta": convert_and_respect_annotation_metadata(
1615
+ object_=expand_meta, annotation=PromptDeploymentExpandMetaRequest, direction="write"
1616
+ ),
1617
+ "raw_overrides": convert_and_respect_annotation_metadata(
1618
+ object_=raw_overrides, annotation=RawPromptExecutionOverridesRequest, direction="write"
1619
+ ),
1573
1620
  "expand_raw": expand_raw,
1574
1621
  "metadata": metadata,
1575
1622
  },
@@ -1713,8 +1760,12 @@ class AsyncVellum:
1713
1760
  base_url=self._client_wrapper.get_environment().predict,
1714
1761
  method="POST",
1715
1762
  json={
1716
- "inputs": inputs,
1717
- "expand_meta": expand_meta,
1763
+ "inputs": convert_and_respect_annotation_metadata(
1764
+ object_=inputs, annotation=typing.Sequence[WorkflowRequestInputRequest], direction="write"
1765
+ ),
1766
+ "expand_meta": convert_and_respect_annotation_metadata(
1767
+ object_=expand_meta, annotation=WorkflowExpandMetaRequest, direction="write"
1768
+ ),
1718
1769
  "workflow_deployment_id": workflow_deployment_id,
1719
1770
  "workflow_deployment_name": workflow_deployment_name,
1720
1771
  "release_tag": release_tag,
@@ -1862,8 +1913,12 @@ class AsyncVellum:
1862
1913
  base_url=self._client_wrapper.get_environment().predict,
1863
1914
  method="POST",
1864
1915
  json={
1865
- "inputs": inputs,
1866
- "expand_meta": expand_meta,
1916
+ "inputs": convert_and_respect_annotation_metadata(
1917
+ object_=inputs, annotation=typing.Sequence[WorkflowRequestInputRequest], direction="write"
1918
+ ),
1919
+ "expand_meta": convert_and_respect_annotation_metadata(
1920
+ object_=expand_meta, annotation=WorkflowExpandMetaRequest, direction="write"
1921
+ ),
1867
1922
  "workflow_deployment_id": workflow_deployment_id,
1868
1923
  "workflow_deployment_name": workflow_deployment_name,
1869
1924
  "release_tag": release_tag,
@@ -1993,8 +2048,12 @@ class AsyncVellum:
1993
2048
  json={
1994
2049
  "deployment_id": deployment_id,
1995
2050
  "deployment_name": deployment_name,
1996
- "requests": requests,
1997
- "options": options,
2051
+ "requests": convert_and_respect_annotation_metadata(
2052
+ object_=requests, annotation=typing.Sequence[GenerateRequest], direction="write"
2053
+ ),
2054
+ "options": convert_and_respect_annotation_metadata(
2055
+ object_=options, annotation=GenerateOptionsRequest, direction="write"
2056
+ ),
1998
2057
  },
1999
2058
  request_options=request_options,
2000
2059
  omit=OMIT,
@@ -2144,8 +2203,12 @@ class AsyncVellum:
2144
2203
  json={
2145
2204
  "deployment_id": deployment_id,
2146
2205
  "deployment_name": deployment_name,
2147
- "requests": requests,
2148
- "options": options,
2206
+ "requests": convert_and_respect_annotation_metadata(
2207
+ object_=requests, annotation=typing.Sequence[GenerateRequest], direction="write"
2208
+ ),
2209
+ "options": convert_and_respect_annotation_metadata(
2210
+ object_=options, annotation=GenerateOptionsRequest, direction="write"
2211
+ ),
2149
2212
  },
2150
2213
  request_options=request_options,
2151
2214
  omit=OMIT,
@@ -2273,7 +2336,9 @@ class AsyncVellum:
2273
2336
  "index_id": index_id,
2274
2337
  "index_name": index_name,
2275
2338
  "query": query,
2276
- "options": options,
2339
+ "options": convert_and_respect_annotation_metadata(
2340
+ object_=options, annotation=SearchRequestOptionsRequest, direction="write"
2341
+ ),
2277
2342
  },
2278
2343
  request_options=request_options,
2279
2344
  omit=OMIT,
@@ -2377,7 +2442,9 @@ class AsyncVellum:
2377
2442
  json={
2378
2443
  "deployment_id": deployment_id,
2379
2444
  "deployment_name": deployment_name,
2380
- "actuals": actuals,
2445
+ "actuals": convert_and_respect_annotation_metadata(
2446
+ object_=actuals, annotation=typing.Sequence[SubmitCompletionActualRequest], direction="write"
2447
+ ),
2381
2448
  },
2382
2449
  request_options=request_options,
2383
2450
  omit=OMIT,
@@ -2475,7 +2542,9 @@ class AsyncVellum:
2475
2542
  base_url=self._client_wrapper.get_environment().predict,
2476
2543
  method="POST",
2477
2544
  json={
2478
- "actuals": actuals,
2545
+ "actuals": convert_and_respect_annotation_metadata(
2546
+ object_=actuals, annotation=typing.Sequence[SubmitWorkflowExecutionActualRequest], direction="write"
2547
+ ),
2479
2548
  "execution_id": execution_id,
2480
2549
  "external_id": external_id,
2481
2550
  },
vellum/core/__init__.py CHANGED
@@ -3,7 +3,7 @@
3
3
  from .api_error import ApiError
4
4
  from .client_wrapper import AsyncClientWrapper, BaseClientWrapper, SyncClientWrapper
5
5
  from .datetime_utils import serialize_datetime
6
- from .file import File, convert_file_dict_to_httpx_tuples
6
+ from .file import File, convert_file_dict_to_httpx_tuples, with_content_type
7
7
  from .http_client import AsyncHttpClient, HttpClient
8
8
  from .jsonable_encoder import jsonable_encoder
9
9
  from .pydantic_utilities import (
@@ -43,4 +43,5 @@ __all__ = [
43
43
  "universal_field_validator",
44
44
  "universal_root_validator",
45
45
  "update_forward_refs",
46
+ "with_content_type",
46
47
  ]
@@ -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.12",
20
+ "X-Fern-SDK-Version": "0.8.14",
21
21
  }
22
22
  headers["X_API_KEY"] = self.api_key
23
23
  return headers
vellum/core/file.py CHANGED
@@ -1,30 +1,30 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
- import typing
3
+ from typing import IO, Dict, List, Mapping, Optional, Tuple, Union, cast
4
4
 
5
5
  # File typing inspired by the flexibility of types within the httpx library
6
6
  # https://github.com/encode/httpx/blob/master/httpx/_types.py
7
- FileContent = typing.Union[typing.IO[bytes], bytes, str]
8
- File = typing.Union[
7
+ FileContent = Union[IO[bytes], bytes, str]
8
+ File = Union[
9
9
  # file (or bytes)
10
10
  FileContent,
11
11
  # (filename, file (or bytes))
12
- typing.Tuple[typing.Optional[str], FileContent],
12
+ Tuple[Optional[str], FileContent],
13
13
  # (filename, file (or bytes), content_type)
14
- typing.Tuple[typing.Optional[str], FileContent, typing.Optional[str]],
14
+ Tuple[Optional[str], FileContent, Optional[str]],
15
15
  # (filename, file (or bytes), content_type, headers)
16
- typing.Tuple[
17
- typing.Optional[str],
16
+ Tuple[
17
+ Optional[str],
18
18
  FileContent,
19
- typing.Optional[str],
20
- typing.Mapping[str, str],
19
+ Optional[str],
20
+ Mapping[str, str],
21
21
  ],
22
22
  ]
23
23
 
24
24
 
25
25
  def convert_file_dict_to_httpx_tuples(
26
- d: typing.Dict[str, typing.Union[File, typing.List[File]]],
27
- ) -> typing.List[typing.Tuple[str, File]]:
26
+ d: Dict[str, Union[File, List[File]]],
27
+ ) -> List[Tuple[str, File]]:
28
28
  """
29
29
  The format we use is a list of tuples, where the first element is the
30
30
  name of the file and the second is the file object. Typically HTTPX wants
@@ -41,3 +41,22 @@ def convert_file_dict_to_httpx_tuples(
41
41
  else:
42
42
  httpx_tuples.append((key, file_like))
43
43
  return httpx_tuples
44
+
45
+
46
+ def with_content_type(*, file: File, content_type: str) -> File:
47
+ """ """
48
+ if isinstance(file, tuple):
49
+ if len(file) == 2:
50
+ filename, content = cast(Tuple[Optional[str], FileContent], file) # type: ignore
51
+ return (filename, content, content_type)
52
+ elif len(file) == 3:
53
+ filename, content, _ = cast(Tuple[Optional[str], FileContent, Optional[str]], file) # type: ignore
54
+ return (filename, content, content_type)
55
+ elif len(file) == 4:
56
+ filename, content, _, headers = cast( # type: ignore
57
+ Tuple[Optional[str], FileContent, Optional[str], Mapping[str, str]], file
58
+ )
59
+ return (filename, content, content_type, headers)
60
+ else:
61
+ raise ValueError(f"Unexpected tuple length: {len(file)}")
62
+ return (None, file, content_type)
@@ -224,7 +224,9 @@ class HttpClient:
224
224
  json=json_body,
225
225
  data=data_body,
226
226
  content=content,
227
- files=convert_file_dict_to_httpx_tuples(remove_none_from_dict(files)) if files is not None else None,
227
+ files=convert_file_dict_to_httpx_tuples(remove_none_from_dict(files))
228
+ if (files is not None and files is not omit)
229
+ else None,
228
230
  timeout=timeout,
229
231
  )
230
232
 
@@ -306,7 +308,9 @@ class HttpClient:
306
308
  json=json_body,
307
309
  data=data_body,
308
310
  content=content,
309
- files=convert_file_dict_to_httpx_tuples(remove_none_from_dict(files)) if files is not None else None,
311
+ files=convert_file_dict_to_httpx_tuples(remove_none_from_dict(files))
312
+ if (files is not None and files is not omit)
313
+ else None,
310
314
  timeout=timeout,
311
315
  ) as stream:
312
316
  yield stream
@@ -10,6 +10,7 @@ import typing_extensions
10
10
  import pydantic
11
11
 
12
12
  from .datetime_utils import serialize_datetime
13
+ from .serialization import convert_and_respect_annotation_metadata
13
14
 
14
15
  IS_PYDANTIC_V2 = pydantic.VERSION.startswith("2.")
15
16
 
@@ -56,11 +57,12 @@ Model = typing.TypeVar("Model", bound=pydantic.BaseModel)
56
57
 
57
58
 
58
59
  def parse_obj_as(type_: typing.Type[T], object_: typing.Any) -> T:
60
+ dealiased_object = convert_and_respect_annotation_metadata(object_=object_, annotation=type_, direction="read")
59
61
  if IS_PYDANTIC_V2:
60
62
  adapter = pydantic.TypeAdapter(type_) # type: ignore # Pydantic v2
61
- return adapter.validate_python(object_)
63
+ return adapter.validate_python(dealiased_object)
62
64
  else:
63
- return pydantic.parse_obj_as(type_, object_)
65
+ return pydantic.parse_obj_as(type_, dealiased_object)
64
66
 
65
67
 
66
68
  def to_jsonable_with_fallback(
@@ -75,13 +77,40 @@ def to_jsonable_with_fallback(
75
77
 
76
78
 
77
79
  class UniversalBaseModel(pydantic.BaseModel):
78
- class Config:
79
- populate_by_name = True
80
- smart_union = True
81
- allow_population_by_field_name = True
82
- json_encoders = {dt.datetime: serialize_datetime}
83
- # Allow fields begining with `model_` to be used in the model
84
- protected_namespaces = ()
80
+ if IS_PYDANTIC_V2:
81
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
82
+ # Allow fields begining with `model_` to be used in the model
83
+ protected_namespaces=(),
84
+ ) # type: ignore # Pydantic v2
85
+
86
+ @pydantic.model_serializer(mode="wrap", when_used="json") # type: ignore # Pydantic v2
87
+ def serialize_model(self, handler: pydantic.SerializerFunctionWrapHandler) -> typing.Any: # type: ignore # Pydantic v2
88
+ serialized = handler(self)
89
+ data = {k: serialize_datetime(v) if isinstance(v, dt.datetime) else v for k, v in serialized.items()}
90
+ return data
91
+
92
+ else:
93
+
94
+ class Config:
95
+ smart_union = True
96
+ json_encoders = {dt.datetime: serialize_datetime}
97
+
98
+ @classmethod
99
+ def model_construct(
100
+ cls: typing.Type["Model"], _fields_set: typing.Optional[typing.Set[str]] = None, **values: typing.Any
101
+ ) -> "Model":
102
+ dealiased_object = convert_and_respect_annotation_metadata(object_=values, annotation=cls, direction="read")
103
+ return cls.construct(_fields_set, **dealiased_object)
104
+
105
+ @classmethod
106
+ def construct(
107
+ cls: typing.Type["Model"], _fields_set: typing.Optional[typing.Set[str]] = None, **values: typing.Any
108
+ ) -> "Model":
109
+ dealiased_object = convert_and_respect_annotation_metadata(object_=values, annotation=cls, direction="read")
110
+ if IS_PYDANTIC_V2:
111
+ return super().model_construct(_fields_set, **dealiased_object) # type: ignore # Pydantic v2
112
+ else:
113
+ return super().construct(_fields_set, **dealiased_object)
85
114
 
86
115
  def json(self, **kwargs: typing.Any) -> str:
87
116
  kwargs_with_defaults: typing.Any = {
@@ -117,7 +146,7 @@ class UniversalBaseModel(pydantic.BaseModel):
117
146
  "exclude_none": True,
118
147
  "exclude_unset": False,
119
148
  }
120
- return deep_union_pydantic_dicts(
149
+ dict_dump = deep_union_pydantic_dicts(
121
150
  super().model_dump(**kwargs_with_defaults_exclude_unset), # type: ignore # Pydantic v2
122
151
  super().model_dump(**kwargs_with_defaults_exclude_none), # type: ignore # Pydantic v2
123
152
  )
@@ -143,7 +172,9 @@ class UniversalBaseModel(pydantic.BaseModel):
143
172
  **kwargs,
144
173
  }
145
174
 
146
- return super().dict(**kwargs_with_defaults_exclude_unset_include_fields)
175
+ dict_dump = super().dict(**kwargs_with_defaults_exclude_unset_include_fields)
176
+
177
+ return convert_and_respect_annotation_metadata(object_=dict_dump, annotation=self.__class__, direction="write")
147
178
 
148
179
 
149
180
  def deep_union_pydantic_dicts(
@@ -183,11 +214,11 @@ def encode_by_type(o: typing.Any) -> typing.Any:
183
214
  return encoder(o)
184
215
 
185
216
 
186
- def update_forward_refs(model: typing.Type["Model"]) -> None:
217
+ def update_forward_refs(model: typing.Type["Model"], **localns: typing.Any) -> None:
187
218
  if IS_PYDANTIC_V2:
188
219
  model.model_rebuild(raise_errors=False) # type: ignore # Pydantic v2
189
220
  else:
190
- model.update_forward_refs()
221
+ model.update_forward_refs(**localns)
191
222
 
192
223
 
193
224
  # Mirrors Pydantic's internal typing
@@ -71,6 +71,24 @@ def convert_and_respect_annotation_metadata(
71
71
  if typing_extensions.is_typeddict(clean_type) and isinstance(object_, typing.Mapping):
72
72
  return _convert_mapping(object_, clean_type, direction)
73
73
 
74
+ if (
75
+ typing_extensions.get_origin(clean_type) == typing.Dict
76
+ or typing_extensions.get_origin(clean_type) == dict
77
+ or clean_type == typing.Dict
78
+ ) and isinstance(object_, typing.Dict):
79
+ key_type = typing_extensions.get_args(clean_type)[0]
80
+ value_type = typing_extensions.get_args(clean_type)[1]
81
+
82
+ return {
83
+ key: convert_and_respect_annotation_metadata(
84
+ object_=value,
85
+ annotation=annotation,
86
+ inner_type=value_type,
87
+ direction=direction,
88
+ )
89
+ for key, value in object_.items()
90
+ }
91
+
74
92
  # If you're iterating on a string, do not bother to coerce it to a sequence.
75
93
  if not isinstance(object_, str):
76
94
  if (
@@ -9,6 +9,7 @@ from ...types.prompt_block_request import PromptBlockRequest
9
9
  from ...types.ad_hoc_expand_meta_request import AdHocExpandMetaRequest
10
10
  from ...core.request_options import RequestOptions
11
11
  from ...types.ad_hoc_execute_prompt_event import AdHocExecutePromptEvent
12
+ from ...core.serialization import convert_and_respect_annotation_metadata
12
13
  from ...core.pydantic_utilities import parse_obj_as
13
14
  import json
14
15
  from ...errors.bad_request_error import BadRequestError
@@ -133,11 +134,21 @@ class AdHocClient:
133
134
  method="POST",
134
135
  json={
135
136
  "ml_model": ml_model,
136
- "input_values": input_values,
137
- "input_variables": input_variables,
138
- "parameters": parameters,
139
- "blocks": blocks,
140
- "expand_meta": expand_meta,
137
+ "input_values": convert_and_respect_annotation_metadata(
138
+ object_=input_values, annotation=typing.Sequence[PromptRequestInputRequest], direction="write"
139
+ ),
140
+ "input_variables": convert_and_respect_annotation_metadata(
141
+ object_=input_variables, annotation=typing.Sequence[VellumVariableRequest], direction="write"
142
+ ),
143
+ "parameters": convert_and_respect_annotation_metadata(
144
+ object_=parameters, annotation=PromptParametersRequest, direction="write"
145
+ ),
146
+ "blocks": convert_and_respect_annotation_metadata(
147
+ object_=blocks, annotation=typing.Sequence[PromptBlockRequest], direction="write"
148
+ ),
149
+ "expand_meta": convert_and_respect_annotation_metadata(
150
+ object_=expand_meta, annotation=AdHocExpandMetaRequest, direction="write"
151
+ ),
141
152
  },
142
153
  request_options=request_options,
143
154
  omit=OMIT,
@@ -314,11 +325,21 @@ class AsyncAdHocClient:
314
325
  method="POST",
315
326
  json={
316
327
  "ml_model": ml_model,
317
- "input_values": input_values,
318
- "input_variables": input_variables,
319
- "parameters": parameters,
320
- "blocks": blocks,
321
- "expand_meta": expand_meta,
328
+ "input_values": convert_and_respect_annotation_metadata(
329
+ object_=input_values, annotation=typing.Sequence[PromptRequestInputRequest], direction="write"
330
+ ),
331
+ "input_variables": convert_and_respect_annotation_metadata(
332
+ object_=input_variables, annotation=typing.Sequence[VellumVariableRequest], direction="write"
333
+ ),
334
+ "parameters": convert_and_respect_annotation_metadata(
335
+ object_=parameters, annotation=PromptParametersRequest, direction="write"
336
+ ),
337
+ "blocks": convert_and_respect_annotation_metadata(
338
+ object_=blocks, annotation=typing.Sequence[PromptBlockRequest], direction="write"
339
+ ),
340
+ "expand_meta": convert_and_respect_annotation_metadata(
341
+ object_=expand_meta, annotation=AdHocExpandMetaRequest, direction="write"
342
+ ),
322
343
  },
323
344
  request_options=request_options,
324
345
  omit=OMIT,
@@ -14,6 +14,7 @@ from ...types.deployment_release_tag_read import DeploymentReleaseTagRead
14
14
  from ...types.prompt_deployment_input_request import PromptDeploymentInputRequest
15
15
  from ...types.compile_prompt_deployment_expand_meta_request import CompilePromptDeploymentExpandMetaRequest
16
16
  from ...types.deployment_provider_payload_response import DeploymentProviderPayloadResponse
17
+ from ...core.serialization import convert_and_respect_annotation_metadata
17
18
  from ...errors.bad_request_error import BadRequestError
18
19
  from ...errors.forbidden_error import ForbiddenError
19
20
  from ...errors.not_found_error import NotFoundError
@@ -334,9 +335,13 @@ class DeploymentsClient:
334
335
  json={
335
336
  "deployment_id": deployment_id,
336
337
  "deployment_name": deployment_name,
337
- "inputs": inputs,
338
+ "inputs": convert_and_respect_annotation_metadata(
339
+ object_=inputs, annotation=typing.Sequence[PromptDeploymentInputRequest], direction="write"
340
+ ),
338
341
  "release_tag": release_tag,
339
- "expand_meta": expand_meta,
342
+ "expand_meta": convert_and_respect_annotation_metadata(
343
+ object_=expand_meta, annotation=CompilePromptDeploymentExpandMetaRequest, direction="write"
344
+ ),
340
345
  },
341
346
  request_options=request_options,
342
347
  omit=OMIT,
@@ -746,9 +751,13 @@ class AsyncDeploymentsClient:
746
751
  json={
747
752
  "deployment_id": deployment_id,
748
753
  "deployment_name": deployment_name,
749
- "inputs": inputs,
754
+ "inputs": convert_and_respect_annotation_metadata(
755
+ object_=inputs, annotation=typing.Sequence[PromptDeploymentInputRequest], direction="write"
756
+ ),
750
757
  "release_tag": release_tag,
751
- "expand_meta": expand_meta,
758
+ "expand_meta": convert_and_respect_annotation_metadata(
759
+ object_=expand_meta, annotation=CompilePromptDeploymentExpandMetaRequest, direction="write"
760
+ ),
752
761
  },
753
762
  request_options=request_options,
754
763
  omit=OMIT,
@@ -12,6 +12,7 @@ from ...types.document_index_indexing_config_request import DocumentIndexIndexin
12
12
  from ...types.entity_status import EntityStatus
13
13
  from ...types.environment_enum import EnvironmentEnum
14
14
  from ...types.document_index_read import DocumentIndexRead
15
+ from ...core.serialization import convert_and_respect_annotation_metadata
15
16
  from ...core.jsonable_encoder import jsonable_encoder
16
17
  from ...core.client_wrapper import AsyncClientWrapper
17
18
 
@@ -191,7 +192,9 @@ class DocumentIndexesClient:
191
192
  "name": name,
192
193
  "status": status,
193
194
  "environment": environment,
194
- "indexing_config": indexing_config,
195
+ "indexing_config": convert_and_respect_annotation_metadata(
196
+ object_=indexing_config, annotation=DocumentIndexIndexingConfigRequest, direction="write"
197
+ ),
195
198
  "copy_documents_from_index_id": copy_documents_from_index_id,
196
199
  },
197
200
  request_options=request_options,
@@ -740,7 +743,9 @@ class AsyncDocumentIndexesClient:
740
743
  "name": name,
741
744
  "status": status,
742
745
  "environment": environment,
743
- "indexing_config": indexing_config,
746
+ "indexing_config": convert_and_respect_annotation_metadata(
747
+ object_=indexing_config, annotation=DocumentIndexIndexingConfigRequest, direction="write"
748
+ ),
744
749
  "copy_documents_from_index_id": copy_documents_from_index_id,
745
750
  },
746
751
  request_options=request_options,
@@ -261,10 +261,10 @@ class DocumentsClient:
261
261
  *,
262
262
  label: str,
263
263
  contents: core.File,
264
- add_to_index_names: typing.Optional[typing.List[str]] = None,
265
- external_id: typing.Optional[str] = None,
266
- keywords: typing.Optional[typing.List[str]] = None,
267
- metadata: typing.Optional[str] = None,
264
+ add_to_index_names: typing.Optional[typing.List[str]] = OMIT,
265
+ external_id: typing.Optional[str] = OMIT,
266
+ keywords: typing.Optional[typing.List[str]] = OMIT,
267
+ metadata: typing.Optional[str] = OMIT,
268
268
  request_options: typing.Optional[RequestOptions] = None,
269
269
  ) -> UploadDocumentResponse:
270
270
  """
@@ -653,10 +653,10 @@ class AsyncDocumentsClient:
653
653
  *,
654
654
  label: str,
655
655
  contents: core.File,
656
- add_to_index_names: typing.Optional[typing.List[str]] = None,
657
- external_id: typing.Optional[str] = None,
658
- keywords: typing.Optional[typing.List[str]] = None,
659
- metadata: typing.Optional[str] = None,
656
+ add_to_index_names: typing.Optional[typing.List[str]] = OMIT,
657
+ external_id: typing.Optional[str] = OMIT,
658
+ keywords: typing.Optional[typing.List[str]] = OMIT,
659
+ metadata: typing.Optional[str] = OMIT,
660
660
  request_options: typing.Optional[RequestOptions] = None,
661
661
  ) -> UploadDocumentResponse:
662
662
  """
@@ -10,6 +10,7 @@ from json.decoder import JSONDecodeError
10
10
  from ...core.api_error import ApiError
11
11
  from ...types.named_scenario_input_request import NamedScenarioInputRequest
12
12
  from ...types.sandbox_scenario import SandboxScenario
13
+ from ...core.serialization import convert_and_respect_annotation_metadata
13
14
  from ...core.client_wrapper import AsyncClientWrapper
14
15
 
15
16
  # this is used as the default value for optional parameters
@@ -166,7 +167,9 @@ class SandboxesClient:
166
167
  method="POST",
167
168
  json={
168
169
  "label": label,
169
- "inputs": inputs,
170
+ "inputs": convert_and_respect_annotation_metadata(
171
+ object_=inputs, annotation=typing.Sequence[NamedScenarioInputRequest], direction="write"
172
+ ),
170
173
  "scenario_id": scenario_id,
171
174
  },
172
175
  request_options=request_options,
@@ -400,7 +403,9 @@ class AsyncSandboxesClient:
400
403
  method="POST",
401
404
  json={
402
405
  "label": label,
403
- "inputs": inputs,
406
+ "inputs": convert_and_respect_annotation_metadata(
407
+ object_=inputs, annotation=typing.Sequence[NamedScenarioInputRequest], direction="write"
408
+ ),
404
409
  "scenario_id": scenario_id,
405
410
  },
406
411
  request_options=request_options,
@@ -5,6 +5,7 @@ from ...core.client_wrapper import SyncClientWrapper
5
5
  from ...types.test_suite_run_exec_config_request import TestSuiteRunExecConfigRequest
6
6
  from ...core.request_options import RequestOptions
7
7
  from ...types.test_suite_run_read import TestSuiteRunRead
8
+ from ...core.serialization import convert_and_respect_annotation_metadata
8
9
  from ...core.pydantic_utilities import parse_obj_as
9
10
  from json.decoder import JSONDecodeError
10
11
  from ...core.api_error import ApiError
@@ -72,7 +73,9 @@ class TestSuiteRunsClient:
72
73
  method="POST",
73
74
  json={
74
75
  "test_suite_id": test_suite_id,
75
- "exec_config": exec_config,
76
+ "exec_config": convert_and_respect_annotation_metadata(
77
+ object_=exec_config, annotation=TestSuiteRunExecConfigRequest, direction="write"
78
+ ),
76
79
  },
77
80
  request_options=request_options,
78
81
  omit=OMIT,
@@ -276,7 +279,9 @@ class AsyncTestSuiteRunsClient:
276
279
  method="POST",
277
280
  json={
278
281
  "test_suite_id": test_suite_id,
279
- "exec_config": exec_config,
282
+ "exec_config": convert_and_respect_annotation_metadata(
283
+ object_=exec_config, annotation=TestSuiteRunExecConfigRequest, direction="write"
284
+ ),
280
285
  },
281
286
  request_options=request_options,
282
287
  omit=OMIT,
@@ -10,6 +10,7 @@ from json.decoder import JSONDecodeError
10
10
  from ...core.api_error import ApiError
11
11
  from ...types.named_test_case_variable_value_request import NamedTestCaseVariableValueRequest
12
12
  from ...types.test_suite_test_case import TestSuiteTestCase
13
+ from ...core.serialization import convert_and_respect_annotation_metadata
13
14
  from ...types.test_suite_test_case_bulk_operation_request import TestSuiteTestCaseBulkOperationRequest
14
15
  from ...types.test_suite_test_case_bulk_result import TestSuiteTestCaseBulkResult
15
16
  import json
@@ -165,8 +166,16 @@ class TestSuitesClient:
165
166
  "id": id,
166
167
  "external_id": external_id,
167
168
  "label": label,
168
- "input_values": input_values,
169
- "evaluation_values": evaluation_values,
169
+ "input_values": convert_and_respect_annotation_metadata(
170
+ object_=input_values,
171
+ annotation=typing.Sequence[NamedTestCaseVariableValueRequest],
172
+ direction="write",
173
+ ),
174
+ "evaluation_values": convert_and_respect_annotation_metadata(
175
+ object_=evaluation_values,
176
+ annotation=typing.Sequence[NamedTestCaseVariableValueRequest],
177
+ direction="write",
178
+ ),
170
179
  },
171
180
  request_options=request_options,
172
181
  omit=OMIT,
@@ -253,7 +262,9 @@ class TestSuitesClient:
253
262
  f"v1/test-suites/{jsonable_encoder(id)}/test-cases-bulk",
254
263
  base_url=self._client_wrapper.get_environment().default,
255
264
  method="POST",
256
- json=request,
265
+ json=convert_and_respect_annotation_metadata(
266
+ object_=request, annotation=typing.Sequence[TestSuiteTestCaseBulkOperationRequest], direction="write"
267
+ ),
257
268
  request_options=request_options,
258
269
  omit=OMIT,
259
270
  ) as _response:
@@ -489,8 +500,16 @@ class AsyncTestSuitesClient:
489
500
  "id": id,
490
501
  "external_id": external_id,
491
502
  "label": label,
492
- "input_values": input_values,
493
- "evaluation_values": evaluation_values,
503
+ "input_values": convert_and_respect_annotation_metadata(
504
+ object_=input_values,
505
+ annotation=typing.Sequence[NamedTestCaseVariableValueRequest],
506
+ direction="write",
507
+ ),
508
+ "evaluation_values": convert_and_respect_annotation_metadata(
509
+ object_=evaluation_values,
510
+ annotation=typing.Sequence[NamedTestCaseVariableValueRequest],
511
+ direction="write",
512
+ ),
494
513
  },
495
514
  request_options=request_options,
496
515
  omit=OMIT,
@@ -585,7 +604,9 @@ class AsyncTestSuitesClient:
585
604
  f"v1/test-suites/{jsonable_encoder(id)}/test-cases-bulk",
586
605
  base_url=self._client_wrapper.get_environment().default,
587
606
  method="POST",
588
- json=request,
607
+ json=convert_and_respect_annotation_metadata(
608
+ object_=request, annotation=typing.Sequence[TestSuiteTestCaseBulkOperationRequest], direction="write"
609
+ ),
589
610
  request_options=request_options,
590
611
  omit=OMIT,
591
612
  ) as _response:
@@ -2,15 +2,19 @@
2
2
 
3
3
  from ..core.pydantic_utilities import UniversalBaseModel
4
4
  import typing
5
- import pydantic
5
+ import typing_extensions
6
+ from ..core.serialization import FieldMetadata
6
7
  from ..core.pydantic_utilities import IS_PYDANTIC_V2
8
+ import pydantic
7
9
 
8
10
 
9
11
  class ApiNodeResultData(UniversalBaseModel):
10
12
  text_output_id: str
11
13
  text: typing.Optional[str] = None
12
14
  json_output_id: str
13
- json_: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = pydantic.Field(alias="json", default=None)
15
+ json_: typing_extensions.Annotated[
16
+ typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]], FieldMetadata(alias="json")
17
+ ] = None
14
18
  status_code_output_id: str
15
19
  status_code: int
16
20
 
@@ -29,6 +29,10 @@ class ChatMessagePromptBlockPropertiesRequest(UniversalBaseModel):
29
29
  extra = pydantic.Extra.allow
30
30
 
31
31
 
32
+ from .chat_message_prompt_block_request import ChatMessagePromptBlockRequest # noqa: E402
32
33
  from .prompt_block_request import PromptBlockRequest # noqa: E402
33
34
 
35
+ update_forward_refs(
36
+ ChatMessagePromptBlockRequest, ChatMessagePromptBlockPropertiesRequest=ChatMessagePromptBlockPropertiesRequest
37
+ )
34
38
  update_forward_refs(ChatMessagePromptBlockPropertiesRequest)
@@ -33,4 +33,7 @@ class ChatMessagePromptBlockRequest(UniversalBaseModel):
33
33
 
34
34
  from .chat_message_prompt_block_properties_request import ChatMessagePromptBlockPropertiesRequest # noqa: E402
35
35
 
36
+ update_forward_refs(
37
+ ChatMessagePromptBlockPropertiesRequest, ChatMessagePromptBlockRequest=ChatMessagePromptBlockRequest
38
+ )
36
39
  update_forward_refs(ChatMessagePromptBlockRequest)
@@ -1,12 +1,14 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
+ from __future__ import annotations
3
4
  from ..core.pydantic_utilities import UniversalBaseModel
5
+ from .metadata_filter_rule_request import MetadataFilterRuleRequest
4
6
  import typing
5
7
  from .metadata_filter_rule_combinator import MetadataFilterRuleCombinator
6
- from .metadata_filter_rule_request import MetadataFilterRuleRequest
7
8
  from .logical_operator import LogicalOperator
8
9
  from ..core.pydantic_utilities import IS_PYDANTIC_V2
9
10
  import pydantic
11
+ from ..core.pydantic_utilities import update_forward_refs
10
12
 
11
13
 
12
14
  class MetadataFilterConfigRequest(UniversalBaseModel):
@@ -25,3 +27,6 @@ class MetadataFilterConfigRequest(UniversalBaseModel):
25
27
  frozen = True
26
28
  smart_union = True
27
29
  extra = pydantic.Extra.allow
30
+
31
+
32
+ update_forward_refs(MetadataFilterRuleRequest, MetadataFilterConfigRequest=MetadataFilterConfigRequest)
@@ -1,10 +1,13 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
+ from __future__ import annotations
3
4
  from ..core.pydantic_utilities import UniversalBaseModel
5
+ from .metadata_filter_rule_request import MetadataFilterRuleRequest
4
6
  import typing
5
7
  import pydantic
6
8
  from .metadata_filter_config_request import MetadataFilterConfigRequest
7
9
  from ..core.pydantic_utilities import IS_PYDANTIC_V2
10
+ from ..core.pydantic_utilities import update_forward_refs
8
11
 
9
12
 
10
13
  class SearchFiltersRequest(UniversalBaseModel):
@@ -26,3 +29,6 @@ class SearchFiltersRequest(UniversalBaseModel):
26
29
  frozen = True
27
30
  smart_union = True
28
31
  extra = pydantic.Extra.allow
32
+
33
+
34
+ update_forward_refs(MetadataFilterRuleRequest, SearchFiltersRequest=SearchFiltersRequest)
@@ -1,12 +1,15 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
+ from __future__ import annotations
3
4
  from ..core.pydantic_utilities import UniversalBaseModel
5
+ from .metadata_filter_rule_request import MetadataFilterRuleRequest
4
6
  import typing
5
7
  import pydantic
6
8
  from .search_weights_request import SearchWeightsRequest
7
9
  from .search_result_merging_request import SearchResultMergingRequest
8
10
  from .search_filters_request import SearchFiltersRequest
9
11
  from ..core.pydantic_utilities import IS_PYDANTIC_V2
12
+ from ..core.pydantic_utilities import update_forward_refs
10
13
 
11
14
 
12
15
  class SearchRequestOptionsRequest(UniversalBaseModel):
@@ -38,3 +41,6 @@ class SearchRequestOptionsRequest(UniversalBaseModel):
38
41
  frozen = True
39
42
  smart_union = True
40
43
  extra = pydantic.Extra.allow
44
+
45
+
46
+ update_forward_refs(MetadataFilterRuleRequest, SearchRequestOptionsRequest=SearchRequestOptionsRequest)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vellum-ai
3
- Version: 0.8.12
3
+ Version: 0.8.14
4
4
  Summary:
5
5
  License: MIT
6
6
  Requires-Python: >=3.8,<4.0
@@ -1,17 +1,17 @@
1
1
  vellum/__init__.py,sha256=ZjILSZ1gKX9YUZjjOzr0wngRMV7aYaCvuCXgoxt7n2o,30148
2
- vellum/client.py,sha256=tsLLtZbwPASP8Cdh1RF19pOuNmZbBKFkUiplU9X190Q,101256
3
- vellum/core/__init__.py,sha256=FzSvKbXjuM18Hdk3iGK-jsGY_DfouyRS659thZV5c1Y,1394
2
+ vellum/client.py,sha256=n9AlNDHYObmRUM5hX_iiFj6eYDzjIca3cdKVGuRjUSA,106566
3
+ vellum/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
4
4
  vellum/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
5
- vellum/core/client_wrapper.py,sha256=AuN9LYKE9lLj2X1LuT8k7Hrp64I2xyYaq4BbPfGZZEQ,1898
5
+ vellum/core/client_wrapper.py,sha256=WJP8_-tl96sFBvhJ-8U9ur1H5s7hdz5N1KWJEYSiY9s,1898
6
6
  vellum/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
7
- vellum/core/file.py,sha256=vliNmlB7PbDfi4EKiVPNq5QaGXJ4zlDBGupv7Qciy7g,1520
8
- vellum/core/http_client.py,sha256=rZSidd9LazCjduvdBhZ7GDs4iGfn-OAfRGsDXB1z8f4,18882
7
+ vellum/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
8
+ vellum/core/http_client.py,sha256=7scAV2vhOSQ3MqAoGBfEGZ5lZ5GOU65KdWdP0u9VR4A,18978
9
9
  vellum/core/jsonable_encoder.py,sha256=qaF1gtgH-kQZb4kJskETwcCsOPUof-NnYVdszHkb-dM,3656
10
- vellum/core/pydantic_utilities.py,sha256=h_XylfOhkKxX6ZxL5CVfXylOzR4oc5AjCVC5yTsR4aU,9138
10
+ vellum/core/pydantic_utilities.py,sha256=l7MVQHx5ytOhzpGiMaZC8tmFsZTBSrWMiiIk-rkBLsk,10851
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=5evS9ZBT8F0_GUAfzb6FQvdgw4JKuHFBlEoqZ8Y8-DU,8970
14
+ vellum/core/serialization.py,sha256=D9h_t-RQON3-CHWs1C4ESY9B-Yd5d-l5lnTLb_X896g,9601
15
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
@@ -30,25 +30,25 @@ 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=7WwFing-VwbfZJbwBRJCkJ3ypXJ7jMSt4kaCVSTW3gk,14006
33
+ vellum/resources/ad_hoc/client.py,sha256=JVEf85pJJ1u_Vie-kEIvqv1Qx0BPA73DFEpBu7iyKK8,15590
34
34
  vellum/resources/deployments/__init__.py,sha256=AE0TcFwLrLBljM0ZDX-pPw4Kqt-1f5JDpIok2HS80QI,157
35
- vellum/resources/deployments/client.py,sha256=A_x9lFFFNiiwggPcrMfP88vv5F0FuLo39Ek36WEfJpE,28516
35
+ vellum/resources/deployments/client.py,sha256=tF3llT_g6rfzDHpLhlEoz9gJDy8vIdNGKfICMJp3iEw,29236
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=MoqaMRDP0eLSh1f8YE9P2Wxj4xlObtd3aMJHxTNqQlQ,37140
39
+ vellum/resources/document_indexes/client.py,sha256=1kp5I8DC4UPvjlWsocuaNhgpIQppDfHFkZIMBKBFj9s,37520
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=C5hDZw1y_iNlPdSuePK-0hEwve4JIbKcx72kMNAo-Rg,27574
43
+ vellum/resources/documents/client.py,sha256=TRptBN1FG4wyTYOq0TpmkXlQL63Owbvsa539E1VXs6s,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
47
- vellum/resources/sandboxes/client.py,sha256=RDFDge2gkI6Kpo3VhlRISKS8wHDp7MYh83XVN-Eybys,16762
47
+ vellum/resources/sandboxes/client.py,sha256=i-6DHap5k6gFcYS-kWI8ayJFVZxb-GENRft6BJwVam4,17158
48
48
  vellum/resources/test_suite_runs/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
49
- vellum/resources/test_suite_runs/client.py,sha256=laE40piDiurzmO1mwStY0ebsxQpTuETgiCAewtSrNk8,14192
49
+ vellum/resources/test_suite_runs/client.py,sha256=AwSx890RssSN3mSpeFxWdVv-GR30Av5oMEVshh9Sauw,14562
50
50
  vellum/resources/test_suites/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
51
- vellum/resources/test_suites/client.py,sha256=Sy_mXyAwObTwRSPH9gOO8gNZRfx4MlQVV3TxaAdnVx0,23795
51
+ vellum/resources/test_suites/client.py,sha256=waf3-2XIuXnFAumcus0Z1jfat_YMQANBxvDHHbL0sVM,25039
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
@@ -75,7 +75,7 @@ vellum/types/ad_hoc_rejected_prompt_execution_meta.py,sha256=Yo3TNjemHUfxU9R3EMz
75
75
  vellum/types/ad_hoc_streaming_prompt_execution_meta.py,sha256=OVSyUL81lpkbXdxnQmPD6qPIxrErEDAgDofQ9lGWLXk,741
76
76
  vellum/types/add_openai_api_key_enum.py,sha256=GB7sLK_Ou7-Xn73sKJHUo6Gx3TjyhU7uJvWZAg4UeaI,92
77
77
  vellum/types/api_node_result.py,sha256=3zAbNGNYY6EgJDzqmcIvLqq8wU-WoMEwGT1W1fjto6U,729
78
- vellum/types/api_node_result_data.py,sha256=skjoVCR7LRr4mwdqOUGcgutqY4qWB6t6_xkzVJDXZHQ,803
78
+ vellum/types/api_node_result_data.py,sha256=GqizJBzReiAQSKW4M1LQYA1ndXlsQ57Dr_apO0AMTVE,909
79
79
  vellum/types/array_chat_message_content.py,sha256=353TDzStNXA2dQETvnJrazCr33nlFx7hgvvPV526ECg,780
80
80
  vellum/types/array_chat_message_content_item.py,sha256=XyWDIqVeWoqLzUIvZO_qj_-iwCr6SBcvQJoVxKAjmDs,421
81
81
  vellum/types/array_chat_message_content_item_request.py,sha256=AUFfh6CQfrD4MdwpS3KhGpalaYpEj_hAlF_lePDDdbU,494
@@ -93,8 +93,8 @@ vellum/types/chat_history_input_request.py,sha256=0dmWfRWN9lOGEorQ3P1jKPAQtcXVex
93
93
  vellum/types/chat_message.py,sha256=EOA8v5Ebx2KS9BtwBBGbuvSK-pn4xWYZiioHuuPWvzw,916
94
94
  vellum/types/chat_message_content.py,sha256=2Fd2Ek-lO3rdfAXFc1eJlwisMVQwbESAcRHFedkeF3A,501
95
95
  vellum/types/chat_message_content_request.py,sha256=609nXvgmv65ZohV2B4Kh3cr30Tez69BdDidBYhiREP4,609
96
- vellum/types/chat_message_prompt_block_properties_request.py,sha256=CRLQ3e288O5hSKIucbPRgzwJX-bj6BAZrDjKmrWZ54A,1117
97
- vellum/types/chat_message_prompt_block_request.py,sha256=fcnX_2Op9cED0i6AAktPi0kY6bzQp4JfrUAcyplbdSA,1295
96
+ vellum/types/chat_message_prompt_block_properties_request.py,sha256=lMBVwR5hnBykjVpcptjBJLj4QhUpomtxdj-E2Th8iYw,1346
97
+ vellum/types/chat_message_prompt_block_request.py,sha256=osPqtdZOG9NW_Iqcv0CyvkU2cHZzPeVVIWQUGvnB-Dw,1423
98
98
  vellum/types/chat_message_request.py,sha256=r2EW1pfnvNYx2fo6mBqU5HQrUzp67WXuE5G-XK281E4,945
99
99
  vellum/types/chat_message_role.py,sha256=-i0Jrcbwf72MkMoaFTGyxRduvlN7f5Y9ULhCXR5KNdA,182
100
100
  vellum/types/code_execution_node_array_result.py,sha256=IpqOekJZVY1F1ecCuDmda6BldzG8VzPtXNd2Kx02wJw,746
@@ -208,7 +208,7 @@ vellum/types/map_node_result.py,sha256=e2YqEP-aKig2TbbZIlfn5LCeVEVhEJJBR7o7xTBKX
208
208
  vellum/types/map_node_result_data.py,sha256=3xJXC1JrS9lo3-3_u1S79sYwLxMknNntDyspN24vQzY,699
209
209
  vellum/types/merge_node_result.py,sha256=h8iEDQgiEjVASom_lAyIi9iErh9rU0_Am7awyzIarnc,742
210
210
  vellum/types/merge_node_result_data.py,sha256=BM3bmwFhTDiY5HchT-5uRl0o6qmJ5KH-NHRb9huGRoA,640
211
- vellum/types/metadata_filter_config_request.py,sha256=k8wbfv-Tl3QJrtfzn_W2kAdUJ3-BkPj7ET7fQMTEbTM,1061
211
+ vellum/types/metadata_filter_config_request.py,sha256=Vg9Yd2VJltbiVYadCk55RTHcaW-3hBYtAe_Ksqs_WeM,1260
212
212
  vellum/types/metadata_filter_rule_combinator.py,sha256=3Vpp1Mnv3As7efkxWTeV8qd4gdJ6OLoLhz_UeVBHAX8,165
213
213
  vellum/types/metadata_filter_rule_request.py,sha256=Pcs0TsU7CRnsEUoH0DWb-c9DTP2UW67lJKXlsTLXV48,1135
214
214
  vellum/types/metric_node_result.py,sha256=YdKq1DZiBD1RBtjyMejImylv3BqrwY8B_UF4Ij-6_64,660
@@ -312,10 +312,10 @@ vellum/types/scenario_input.py,sha256=caC8p5ZnuXhv2ZiHvzTvKL3Ebtr4NXP9Q8UcJEVB8-
312
312
  vellum/types/scenario_input_chat_history_variable_value.py,sha256=ihgJktmZpz_12wx2yPtyrSrBjcBcSg9fby7h_eLoXgI,835
313
313
  vellum/types/scenario_input_json_variable_value.py,sha256=aKbQK2Q8IPOZq9QyjhECLqR1y42eqtddmkvH-jzPEhk,752
314
314
  vellum/types/scenario_input_string_variable_value.py,sha256=Y9UtkeqM-oBtPXGw_RXbgZNcmQiLvSUH8utTiv0a2qo,753
315
- vellum/types/search_filters_request.py,sha256=ZOndZxC2aL16zIt8F0iwHwhhXdzMsA_EMnmlUZ2XGQY,918
315
+ vellum/types/search_filters_request.py,sha256=gAE5CHxGUNR1-fu5M5L1gYll0NXE8j5fwD2wriCRJUk,1171
316
316
  vellum/types/search_node_result.py,sha256=eJaAWXzEZ-CzySXXlI51MEgdO35H7bK5NTPFJ6zLbJ0,749
317
317
  vellum/types/search_node_result_data.py,sha256=IWal6uJbfP6JpKXxeiNsKCyqjrwkN2XUxH-Bz-n6uAg,846
318
- vellum/types/search_request_options_request.py,sha256=2xcVoswjl2ry0xCnhreOYOOLN63l-50bpAXN_ZP5DHM,1316
318
+ vellum/types/search_request_options_request.py,sha256=U-71mBhO105e_fLDYMrys9VKXAuIWkAM1aMXzQUv5eM,1583
319
319
  vellum/types/search_response.py,sha256=b5301wpC3L7QUBLYAHya_JJy2BdmDvFWA0UluNJc1ig,750
320
320
  vellum/types/search_result.py,sha256=kixaodfGe19x9UFF2Axe2xawmxhnTGWXq3zE6jrkGgE,1194
321
321
  vellum/types/search_result_document.py,sha256=sbhpvfZ2wgvZx2auwOFRn92i5JZEiB2HJVPr9KGRSg0,1177
@@ -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.12.dist-info/LICENSE,sha256=CcaljEIoOBaU-wItPH4PmM_mDCGpyuUY0Er1BGu5Ti8,1073
488
- vellum_ai-0.8.12.dist-info/METADATA,sha256=Q4I9cG53NFMg2M3Ou5evvwNdGADJ2LueJ5fSYh146Hw,4395
489
- vellum_ai-0.8.12.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
490
- vellum_ai-0.8.12.dist-info/RECORD,,
487
+ vellum_ai-0.8.14.dist-info/LICENSE,sha256=CcaljEIoOBaU-wItPH4PmM_mDCGpyuUY0Er1BGu5Ti8,1073
488
+ vellum_ai-0.8.14.dist-info/METADATA,sha256=9DFXbn9jQ9rpVPuqKvNEt6yf5AmGEpO1q8DgosmUc1M,4395
489
+ vellum_ai-0.8.14.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
490
+ vellum_ai-0.8.14.dist-info/RECORD,,