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 +103 -34
- vellum/core/__init__.py +2 -1
- vellum/core/client_wrapper.py +1 -1
- vellum/core/file.py +30 -11
- vellum/core/http_client.py +6 -2
- vellum/core/pydantic_utilities.py +44 -13
- vellum/core/serialization.py +18 -0
- vellum/resources/ad_hoc/client.py +31 -10
- vellum/resources/deployments/client.py +13 -4
- vellum/resources/document_indexes/client.py +7 -2
- vellum/resources/documents/client.py +8 -8
- vellum/resources/sandboxes/client.py +7 -2
- vellum/resources/test_suite_runs/client.py +7 -2
- vellum/resources/test_suites/client.py +27 -6
- vellum/types/api_node_result_data.py +6 -2
- vellum/types/chat_message_prompt_block_properties_request.py +4 -0
- vellum/types/chat_message_prompt_block_request.py +3 -0
- vellum/types/metadata_filter_config_request.py +6 -1
- vellum/types/search_filters_request.py +6 -0
- vellum/types/search_request_options_request.py +6 -0
- {vellum_ai-0.8.12.dist-info → vellum_ai-0.8.14.dist-info}/METADATA +1 -1
- {vellum_ai-0.8.12.dist-info → vellum_ai-0.8.14.dist-info}/RECORD +24 -24
- {vellum_ai-0.8.12.dist-info → vellum_ai-0.8.14.dist-info}/LICENSE +0 -0
- {vellum_ai-0.8.12.dist-info → vellum_ai-0.8.14.dist-info}/WHEEL +0 -0
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":
|
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":
|
206
|
-
|
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":
|
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":
|
375
|
-
|
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":
|
512
|
-
|
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":
|
653
|
-
|
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":
|
776
|
-
|
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":
|
919
|
-
|
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":
|
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":
|
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":
|
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":
|
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":
|
1395
|
-
|
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":
|
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":
|
1572
|
-
|
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":
|
1717
|
-
|
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":
|
1866
|
-
|
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":
|
1997
|
-
|
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":
|
2148
|
-
|
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":
|
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":
|
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":
|
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
|
]
|
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.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
|
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 =
|
8
|
-
File =
|
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
|
-
|
12
|
+
Tuple[Optional[str], FileContent],
|
13
13
|
# (filename, file (or bytes), content_type)
|
14
|
-
|
14
|
+
Tuple[Optional[str], FileContent, Optional[str]],
|
15
15
|
# (filename, file (or bytes), content_type, headers)
|
16
|
-
|
17
|
-
|
16
|
+
Tuple[
|
17
|
+
Optional[str],
|
18
18
|
FileContent,
|
19
|
-
|
20
|
-
|
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:
|
27
|
-
) ->
|
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)
|
vellum/core/http_client.py
CHANGED
@@ -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))
|
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))
|
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(
|
63
|
+
return adapter.validate_python(dealiased_object)
|
62
64
|
else:
|
63
|
-
return pydantic.parse_obj_as(type_,
|
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
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
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
|
-
|
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
|
-
|
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
|
vellum/core/serialization.py
CHANGED
@@ -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":
|
137
|
-
|
138
|
-
|
139
|
-
"
|
140
|
-
|
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":
|
318
|
-
|
319
|
-
|
320
|
-
"
|
321
|
-
|
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":
|
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":
|
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":
|
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":
|
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":
|
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":
|
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]] =
|
265
|
-
external_id: typing.Optional[str] =
|
266
|
-
keywords: typing.Optional[typing.List[str]] =
|
267
|
-
metadata: typing.Optional[str] =
|
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]] =
|
657
|
-
external_id: typing.Optional[str] =
|
658
|
-
keywords: typing.Optional[typing.List[str]] =
|
659
|
-
metadata: typing.Optional[str] =
|
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":
|
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":
|
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":
|
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":
|
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":
|
169
|
-
|
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=
|
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":
|
493
|
-
|
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=
|
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
|
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_:
|
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,17 +1,17 @@
|
|
1
1
|
vellum/__init__.py,sha256=ZjILSZ1gKX9YUZjjOzr0wngRMV7aYaCvuCXgoxt7n2o,30148
|
2
|
-
vellum/client.py,sha256=
|
3
|
-
vellum/core/__init__.py,sha256=
|
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=
|
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=
|
8
|
-
vellum/core/http_client.py,sha256=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
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=
|
97
|
-
vellum/types/chat_message_prompt_block_request.py,sha256=
|
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=
|
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=
|
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=
|
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.
|
488
|
-
vellum_ai-0.8.
|
489
|
-
vellum_ai-0.8.
|
490
|
-
vellum_ai-0.8.
|
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,,
|
File without changes
|
File without changes
|