vellum-ai 0.6.2__py3-none-any.whl → 0.6.4__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. vellum/__init__.py +58 -2
  2. vellum/client.py +11 -15
  3. vellum/core/client_wrapper.py +1 -1
  4. vellum/resources/__init__.py +2 -2
  5. vellum/resources/deployments/client.py +0 -167
  6. vellum/resources/sandboxes/client.py +167 -0
  7. vellum/resources/test_suites/client.py +175 -6
  8. vellum/resources/{prompt_versions → workflow_sandboxes}/client.py +39 -39
  9. vellum/types/__init__.py +60 -0
  10. vellum/types/bulk_create_test_suite_test_case_data_request.py +39 -0
  11. vellum/types/bulk_replace_test_suite_test_case_data_request.py +44 -0
  12. vellum/types/create_enum.py +5 -0
  13. vellum/types/created_enum.py +5 -0
  14. vellum/types/delete_enum.py +5 -0
  15. vellum/types/deleted_enum.py +5 -0
  16. vellum/types/replace_enum.py +5 -0
  17. vellum/types/replaced_enum.py +5 -0
  18. vellum/types/test_suite_test_case_bulk_operation_request.py +46 -0
  19. vellum/types/test_suite_test_case_bulk_result.py +58 -0
  20. vellum/types/test_suite_test_case_create_bulk_operation_request.py +35 -0
  21. vellum/types/test_suite_test_case_created_bulk_result.py +31 -0
  22. vellum/types/test_suite_test_case_created_bulk_result_data.py +29 -0
  23. vellum/types/test_suite_test_case_delete_bulk_operation_data_request.py +25 -0
  24. vellum/types/test_suite_test_case_delete_bulk_operation_request.py +38 -0
  25. vellum/types/test_suite_test_case_deleted_bulk_result.py +35 -0
  26. vellum/types/test_suite_test_case_deleted_bulk_result_data.py +29 -0
  27. vellum/types/test_suite_test_case_rejected_bulk_result.py +37 -0
  28. vellum/types/test_suite_test_case_replace_bulk_operation_request.py +35 -0
  29. vellum/types/test_suite_test_case_replaced_bulk_result.py +35 -0
  30. vellum/types/test_suite_test_case_replaced_bulk_result_data.py +29 -0
  31. {vellum_ai-0.6.2.dist-info → vellum_ai-0.6.4.dist-info}/METADATA +1 -1
  32. {vellum_ai-0.6.2.dist-info → vellum_ai-0.6.4.dist-info}/RECORD +35 -14
  33. /vellum/resources/{prompt_versions → workflow_sandboxes}/__init__.py +0 -0
  34. {vellum_ai-0.6.2.dist-info → vellum_ai-0.6.4.dist-info}/LICENSE +0 -0
  35. {vellum_ai-0.6.2.dist-info → vellum_ai-0.6.4.dist-info}/WHEEL +0 -0
@@ -1,5 +1,6 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
+ import json
3
4
  import typing
4
5
  import urllib.parse
5
6
  from json.decoder import JSONDecodeError
@@ -13,6 +14,8 @@ from ...core.request_options import RequestOptions
13
14
  from ...types.named_test_case_variable_value_request import NamedTestCaseVariableValueRequest
14
15
  from ...types.paginated_test_suite_test_case_list import PaginatedTestSuiteTestCaseList
15
16
  from ...types.test_suite_test_case import TestSuiteTestCase
17
+ from ...types.test_suite_test_case_bulk_operation_request import TestSuiteTestCaseBulkOperationRequest
18
+ from ...types.test_suite_test_case_bulk_result import TestSuiteTestCaseBulkResult
16
19
 
17
20
  # this is used as the default value for optional parameters
18
21
  OMIT = typing.cast(typing.Any, ...)
@@ -114,13 +117,13 @@ class TestSuitesClient:
114
117
  Parameters:
115
118
  - id: str. A UUID string identifying this test suite.
116
119
 
117
- - upsert_test_suite_test_case_request_id: typing.Optional[str].
120
+ - upsert_test_suite_test_case_request_id: typing.Optional[str]. The ID of the Test Case to upsert. If specified and a match is found, the existing Test Case will be updated. If specified and no match is found, a Test Case will be created with the provided ID. If not provided, a new Test Case will be created with an auto-generated ID.
118
121
 
119
122
  - label: typing.Optional[str].
120
123
 
121
- - input_values: typing.Sequence[NamedTestCaseVariableValueRequest].
124
+ - input_values: typing.Sequence[NamedTestCaseVariableValueRequest]. Values for each of the Test Case's input variables
122
125
 
123
- - evaluation_values: typing.Sequence[NamedTestCaseVariableValueRequest].
126
+ - evaluation_values: typing.Sequence[NamedTestCaseVariableValueRequest]. Values for each of the Test Case's evaluation variables
124
127
 
125
128
  - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
126
129
  ---
@@ -177,6 +180,89 @@ class TestSuitesClient:
177
180
  raise ApiError(status_code=_response.status_code, body=_response.text)
178
181
  raise ApiError(status_code=_response.status_code, body=_response_json)
179
182
 
183
+ def test_suite_test_cases_bulk(
184
+ self,
185
+ id: str,
186
+ *,
187
+ request: typing.Sequence[TestSuiteTestCaseBulkOperationRequest],
188
+ request_options: typing.Optional[RequestOptions] = None,
189
+ ) -> typing.Iterator[typing.List[TestSuiteTestCaseBulkResult]]:
190
+ """
191
+ Created, replace, and delete Test Cases within the specified Test Suite in bulk
192
+
193
+ Parameters:
194
+ - id: str. A UUID string identifying this test suite.
195
+
196
+ - request: typing.Sequence[TestSuiteTestCaseBulkOperationRequest].
197
+
198
+ - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
199
+ ---
200
+ from vellum import (
201
+ BulkCreateTestSuiteTestCaseDataRequest,
202
+ NamedTestCaseVariableValueRequest_String,
203
+ TestSuiteTestCaseBulkOperationRequest_Create,
204
+ )
205
+ from vellum.client import Vellum
206
+
207
+ client = Vellum(
208
+ api_key="YOUR_API_KEY",
209
+ )
210
+ client.test_suites.test_suite_test_cases_bulk(
211
+ id="string",
212
+ request=[
213
+ TestSuiteTestCaseBulkOperationRequest_Create(
214
+ id="string",
215
+ data=BulkCreateTestSuiteTestCaseDataRequest(
216
+ label="string",
217
+ input_values=[NamedTestCaseVariableValueRequest_String()],
218
+ evaluation_values=[NamedTestCaseVariableValueRequest_String()],
219
+ ),
220
+ )
221
+ ],
222
+ )
223
+ """
224
+ with self._client_wrapper.httpx_client.stream(
225
+ method="POST",
226
+ url=urllib.parse.urljoin(
227
+ f"{self._client_wrapper.get_environment().default}/",
228
+ f"v1/test-suites/{jsonable_encoder(id)}/test-cases-bulk",
229
+ ),
230
+ params=jsonable_encoder(
231
+ request_options.get("additional_query_parameters") if request_options is not None else None
232
+ ),
233
+ json=jsonable_encoder(request)
234
+ if request_options is None or request_options.get("additional_body_parameters") is None
235
+ else {
236
+ **jsonable_encoder(request),
237
+ **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
238
+ },
239
+ headers=jsonable_encoder(
240
+ remove_none_from_dict(
241
+ {
242
+ **self._client_wrapper.get_headers(),
243
+ **(request_options.get("additional_headers", {}) if request_options is not None else {}),
244
+ }
245
+ )
246
+ ),
247
+ timeout=request_options.get("timeout_in_seconds")
248
+ if request_options is not None and request_options.get("timeout_in_seconds") is not None
249
+ else self._client_wrapper.get_timeout(),
250
+ retries=0,
251
+ max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
252
+ ) as _response:
253
+ if 200 <= _response.status_code < 300:
254
+ for _text in _response.iter_lines():
255
+ if len(_text) == 0:
256
+ continue
257
+ yield pydantic_v1.parse_obj_as(typing.List[TestSuiteTestCaseBulkResult], json.loads(_text)) # type: ignore
258
+ return
259
+ _response.read()
260
+ try:
261
+ _response_json = _response.json()
262
+ except JSONDecodeError:
263
+ raise ApiError(status_code=_response.status_code, body=_response.text)
264
+ raise ApiError(status_code=_response.status_code, body=_response_json)
265
+
180
266
  def delete_test_suite_test_case(
181
267
  self, id: str, test_case_id: str, *, request_options: typing.Optional[RequestOptions] = None
182
268
  ) -> None:
@@ -328,13 +414,13 @@ class AsyncTestSuitesClient:
328
414
  Parameters:
329
415
  - id: str. A UUID string identifying this test suite.
330
416
 
331
- - upsert_test_suite_test_case_request_id: typing.Optional[str].
417
+ - upsert_test_suite_test_case_request_id: typing.Optional[str]. The ID of the Test Case to upsert. If specified and a match is found, the existing Test Case will be updated. If specified and no match is found, a Test Case will be created with the provided ID. If not provided, a new Test Case will be created with an auto-generated ID.
332
418
 
333
419
  - label: typing.Optional[str].
334
420
 
335
- - input_values: typing.Sequence[NamedTestCaseVariableValueRequest].
421
+ - input_values: typing.Sequence[NamedTestCaseVariableValueRequest]. Values for each of the Test Case's input variables
336
422
 
337
- - evaluation_values: typing.Sequence[NamedTestCaseVariableValueRequest].
423
+ - evaluation_values: typing.Sequence[NamedTestCaseVariableValueRequest]. Values for each of the Test Case's evaluation variables
338
424
 
339
425
  - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
340
426
  ---
@@ -391,6 +477,89 @@ class AsyncTestSuitesClient:
391
477
  raise ApiError(status_code=_response.status_code, body=_response.text)
392
478
  raise ApiError(status_code=_response.status_code, body=_response_json)
393
479
 
480
+ async def test_suite_test_cases_bulk(
481
+ self,
482
+ id: str,
483
+ *,
484
+ request: typing.Sequence[TestSuiteTestCaseBulkOperationRequest],
485
+ request_options: typing.Optional[RequestOptions] = None,
486
+ ) -> typing.AsyncIterator[typing.List[TestSuiteTestCaseBulkResult]]:
487
+ """
488
+ Created, replace, and delete Test Cases within the specified Test Suite in bulk
489
+
490
+ Parameters:
491
+ - id: str. A UUID string identifying this test suite.
492
+
493
+ - request: typing.Sequence[TestSuiteTestCaseBulkOperationRequest].
494
+
495
+ - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
496
+ ---
497
+ from vellum import (
498
+ BulkCreateTestSuiteTestCaseDataRequest,
499
+ NamedTestCaseVariableValueRequest_String,
500
+ TestSuiteTestCaseBulkOperationRequest_Create,
501
+ )
502
+ from vellum.client import AsyncVellum
503
+
504
+ client = AsyncVellum(
505
+ api_key="YOUR_API_KEY",
506
+ )
507
+ await client.test_suites.test_suite_test_cases_bulk(
508
+ id="string",
509
+ request=[
510
+ TestSuiteTestCaseBulkOperationRequest_Create(
511
+ id="string",
512
+ data=BulkCreateTestSuiteTestCaseDataRequest(
513
+ label="string",
514
+ input_values=[NamedTestCaseVariableValueRequest_String()],
515
+ evaluation_values=[NamedTestCaseVariableValueRequest_String()],
516
+ ),
517
+ )
518
+ ],
519
+ )
520
+ """
521
+ async with self._client_wrapper.httpx_client.stream(
522
+ method="POST",
523
+ url=urllib.parse.urljoin(
524
+ f"{self._client_wrapper.get_environment().default}/",
525
+ f"v1/test-suites/{jsonable_encoder(id)}/test-cases-bulk",
526
+ ),
527
+ params=jsonable_encoder(
528
+ request_options.get("additional_query_parameters") if request_options is not None else None
529
+ ),
530
+ json=jsonable_encoder(request)
531
+ if request_options is None or request_options.get("additional_body_parameters") is None
532
+ else {
533
+ **jsonable_encoder(request),
534
+ **(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
535
+ },
536
+ headers=jsonable_encoder(
537
+ remove_none_from_dict(
538
+ {
539
+ **self._client_wrapper.get_headers(),
540
+ **(request_options.get("additional_headers", {}) if request_options is not None else {}),
541
+ }
542
+ )
543
+ ),
544
+ timeout=request_options.get("timeout_in_seconds")
545
+ if request_options is not None and request_options.get("timeout_in_seconds") is not None
546
+ else self._client_wrapper.get_timeout(),
547
+ retries=0,
548
+ max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
549
+ ) as _response:
550
+ if 200 <= _response.status_code < 300:
551
+ async for _text in _response.aiter_lines():
552
+ if len(_text) == 0:
553
+ continue
554
+ yield pydantic_v1.parse_obj_as(typing.List[TestSuiteTestCaseBulkResult], json.loads(_text)) # type: ignore
555
+ return
556
+ await _response.aread()
557
+ try:
558
+ _response_json = _response.json()
559
+ except JSONDecodeError:
560
+ raise ApiError(status_code=_response.status_code, body=_response.text)
561
+ raise ApiError(status_code=_response.status_code, body=_response_json)
562
+
394
563
  async def delete_test_suite_test_case(
395
564
  self, id: str, test_case_id: str, *, request_options: typing.Optional[RequestOptions] = None
396
565
  ) -> None:
@@ -10,38 +10,38 @@ from ...core.jsonable_encoder import jsonable_encoder
10
10
  from ...core.pydantic_utilities import pydantic_v1
11
11
  from ...core.remove_none_from_dict import remove_none_from_dict
12
12
  from ...core.request_options import RequestOptions
13
- from ...types.deployment_read import DeploymentRead
13
+ from ...types.workflow_deployment_read import WorkflowDeploymentRead
14
14
 
15
15
  # this is used as the default value for optional parameters
16
16
  OMIT = typing.cast(typing.Any, ...)
17
17
 
18
18
 
19
- class PromptVersionsClient:
19
+ class WorkflowSandboxesClient:
20
20
  def __init__(self, *, client_wrapper: SyncClientWrapper):
21
21
  self._client_wrapper = client_wrapper
22
22
 
23
- def deploy_prompt(
23
+ def deploy_workflow(
24
24
  self,
25
25
  id: str,
26
- prompt_id: str,
26
+ workflow_id: str,
27
27
  *,
28
- prompt_deployment_id: typing.Optional[str] = OMIT,
29
- prompt_deployment_name: typing.Optional[str] = OMIT,
28
+ workflow_deployment_id: typing.Optional[str] = OMIT,
29
+ workflow_deployment_name: typing.Optional[str] = OMIT,
30
30
  label: typing.Optional[str] = OMIT,
31
31
  release_tags: typing.Optional[typing.Sequence[str]] = OMIT,
32
32
  request_options: typing.Optional[RequestOptions] = None,
33
- ) -> DeploymentRead:
33
+ ) -> WorkflowDeploymentRead:
34
34
  """
35
35
  Parameters:
36
- - id: str. A UUID string identifying this sandbox.
36
+ - id: str. A UUID string identifying this workflow sandbox.
37
37
 
38
- - prompt_id: str. An ID identifying the Prompt you'd like to deploy.
38
+ - workflow_id: str. An ID identifying the Workflow you'd like to deploy.
39
39
 
40
- - prompt_deployment_id: typing.Optional[str]. The Vellum-generated ID of the Prompt Deployment you'd like to update. Cannot specify both this and prompt_deployment_name. Leave null to create a new Prompt Deployment.
40
+ - workflow_deployment_id: typing.Optional[str]. The Vellum-generated ID of the Workflow Deployment you'd like to update. Cannot specify both this and workflow_deployment_name. Leave null to create a new Workflow Deployment.
41
41
 
42
- - prompt_deployment_name: typing.Optional[str]. The unique name of the Prompt Deployment you'd like to either create or update. Cannot specify both this and prompt_deployment_id. If provided and matches an existing Prompt Deployment, that Prompt Deployment will be updated. Otherwise, a new Prompt Deployment will be created.
42
+ - workflow_deployment_name: typing.Optional[str]. The unique name of the Workflow Deployment you'd like to either create or update. Cannot specify both this and workflow_deployment_id. If provided and matches an existing Workflow Deployment, that Workflow Deployment will be updated. Otherwise, a new Prompt Deployment will be created.
43
43
 
44
- - label: typing.Optional[str]. In the event that a new Prompt Deployment is created, this will be the label it's given.
44
+ - label: typing.Optional[str]. In the event that a new Workflow Deployment is created, this will be the label it's given.
45
45
 
46
46
  - release_tags: typing.Optional[typing.Sequence[str]]. Optionally provide the release tags that you'd like to be associated with the latest release of the created/updated Prompt Deployment.
47
47
 
@@ -52,16 +52,16 @@ class PromptVersionsClient:
52
52
  client = Vellum(
53
53
  api_key="YOUR_API_KEY",
54
54
  )
55
- client.prompt_versions.deploy_prompt(
55
+ client.workflow_sandboxes.deploy_workflow(
56
56
  id="id",
57
- prompt_id="prompt_id",
57
+ workflow_id="workflow_id",
58
58
  )
59
59
  """
60
60
  _request: typing.Dict[str, typing.Any] = {}
61
- if prompt_deployment_id is not OMIT:
62
- _request["prompt_deployment_id"] = prompt_deployment_id
63
- if prompt_deployment_name is not OMIT:
64
- _request["prompt_deployment_name"] = prompt_deployment_name
61
+ if workflow_deployment_id is not OMIT:
62
+ _request["workflow_deployment_id"] = workflow_deployment_id
63
+ if workflow_deployment_name is not OMIT:
64
+ _request["workflow_deployment_name"] = workflow_deployment_name
65
65
  if label is not OMIT:
66
66
  _request["label"] = label
67
67
  if release_tags is not OMIT:
@@ -70,7 +70,7 @@ class PromptVersionsClient:
70
70
  method="POST",
71
71
  url=urllib.parse.urljoin(
72
72
  f"{self._client_wrapper.get_environment().default}/",
73
- f"v1/sandboxes/{jsonable_encoder(id)}/prompts/{jsonable_encoder(prompt_id)}/deploy",
73
+ f"v1/workflow-sandboxes/{jsonable_encoder(id)}/workflows/{jsonable_encoder(workflow_id)}/deploy",
74
74
  ),
75
75
  params=jsonable_encoder(
76
76
  request_options.get("additional_query_parameters") if request_options is not None else None
@@ -96,7 +96,7 @@ class PromptVersionsClient:
96
96
  max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
97
97
  )
98
98
  if 200 <= _response.status_code < 300:
99
- return pydantic_v1.parse_obj_as(DeploymentRead, _response.json()) # type: ignore
99
+ return pydantic_v1.parse_obj_as(WorkflowDeploymentRead, _response.json()) # type: ignore
100
100
  try:
101
101
  _response_json = _response.json()
102
102
  except JSONDecodeError:
@@ -104,32 +104,32 @@ class PromptVersionsClient:
104
104
  raise ApiError(status_code=_response.status_code, body=_response_json)
105
105
 
106
106
 
107
- class AsyncPromptVersionsClient:
107
+ class AsyncWorkflowSandboxesClient:
108
108
  def __init__(self, *, client_wrapper: AsyncClientWrapper):
109
109
  self._client_wrapper = client_wrapper
110
110
 
111
- async def deploy_prompt(
111
+ async def deploy_workflow(
112
112
  self,
113
113
  id: str,
114
- prompt_id: str,
114
+ workflow_id: str,
115
115
  *,
116
- prompt_deployment_id: typing.Optional[str] = OMIT,
117
- prompt_deployment_name: typing.Optional[str] = OMIT,
116
+ workflow_deployment_id: typing.Optional[str] = OMIT,
117
+ workflow_deployment_name: typing.Optional[str] = OMIT,
118
118
  label: typing.Optional[str] = OMIT,
119
119
  release_tags: typing.Optional[typing.Sequence[str]] = OMIT,
120
120
  request_options: typing.Optional[RequestOptions] = None,
121
- ) -> DeploymentRead:
121
+ ) -> WorkflowDeploymentRead:
122
122
  """
123
123
  Parameters:
124
- - id: str. A UUID string identifying this sandbox.
124
+ - id: str. A UUID string identifying this workflow sandbox.
125
125
 
126
- - prompt_id: str. An ID identifying the Prompt you'd like to deploy.
126
+ - workflow_id: str. An ID identifying the Workflow you'd like to deploy.
127
127
 
128
- - prompt_deployment_id: typing.Optional[str]. The Vellum-generated ID of the Prompt Deployment you'd like to update. Cannot specify both this and prompt_deployment_name. Leave null to create a new Prompt Deployment.
128
+ - workflow_deployment_id: typing.Optional[str]. The Vellum-generated ID of the Workflow Deployment you'd like to update. Cannot specify both this and workflow_deployment_name. Leave null to create a new Workflow Deployment.
129
129
 
130
- - prompt_deployment_name: typing.Optional[str]. The unique name of the Prompt Deployment you'd like to either create or update. Cannot specify both this and prompt_deployment_id. If provided and matches an existing Prompt Deployment, that Prompt Deployment will be updated. Otherwise, a new Prompt Deployment will be created.
130
+ - workflow_deployment_name: typing.Optional[str]. The unique name of the Workflow Deployment you'd like to either create or update. Cannot specify both this and workflow_deployment_id. If provided and matches an existing Workflow Deployment, that Workflow Deployment will be updated. Otherwise, a new Prompt Deployment will be created.
131
131
 
132
- - label: typing.Optional[str]. In the event that a new Prompt Deployment is created, this will be the label it's given.
132
+ - label: typing.Optional[str]. In the event that a new Workflow Deployment is created, this will be the label it's given.
133
133
 
134
134
  - release_tags: typing.Optional[typing.Sequence[str]]. Optionally provide the release tags that you'd like to be associated with the latest release of the created/updated Prompt Deployment.
135
135
 
@@ -140,16 +140,16 @@ class AsyncPromptVersionsClient:
140
140
  client = AsyncVellum(
141
141
  api_key="YOUR_API_KEY",
142
142
  )
143
- await client.prompt_versions.deploy_prompt(
143
+ await client.workflow_sandboxes.deploy_workflow(
144
144
  id="id",
145
- prompt_id="prompt_id",
145
+ workflow_id="workflow_id",
146
146
  )
147
147
  """
148
148
  _request: typing.Dict[str, typing.Any] = {}
149
- if prompt_deployment_id is not OMIT:
150
- _request["prompt_deployment_id"] = prompt_deployment_id
151
- if prompt_deployment_name is not OMIT:
152
- _request["prompt_deployment_name"] = prompt_deployment_name
149
+ if workflow_deployment_id is not OMIT:
150
+ _request["workflow_deployment_id"] = workflow_deployment_id
151
+ if workflow_deployment_name is not OMIT:
152
+ _request["workflow_deployment_name"] = workflow_deployment_name
153
153
  if label is not OMIT:
154
154
  _request["label"] = label
155
155
  if release_tags is not OMIT:
@@ -158,7 +158,7 @@ class AsyncPromptVersionsClient:
158
158
  method="POST",
159
159
  url=urllib.parse.urljoin(
160
160
  f"{self._client_wrapper.get_environment().default}/",
161
- f"v1/sandboxes/{jsonable_encoder(id)}/prompts/{jsonable_encoder(prompt_id)}/deploy",
161
+ f"v1/workflow-sandboxes/{jsonable_encoder(id)}/workflows/{jsonable_encoder(workflow_id)}/deploy",
162
162
  ),
163
163
  params=jsonable_encoder(
164
164
  request_options.get("additional_query_parameters") if request_options is not None else None
@@ -184,7 +184,7 @@ class AsyncPromptVersionsClient:
184
184
  max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
185
185
  )
186
186
  if 200 <= _response.status_code < 300:
187
- return pydantic_v1.parse_obj_as(DeploymentRead, _response.json()) # type: ignore
187
+ return pydantic_v1.parse_obj_as(WorkflowDeploymentRead, _response.json()) # type: ignore
188
188
  try:
189
189
  _response_json = _response.json()
190
190
  except JSONDecodeError:
vellum/types/__init__.py CHANGED
@@ -50,6 +50,8 @@ from .basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_dot_v_1 import
50
50
  from .basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_dot_v_1_request import (
51
51
  BasicVectorizerSentenceTransformersMultiQaMpnetBaseDotV1Request,
52
52
  )
53
+ from .bulk_create_test_suite_test_case_data_request import BulkCreateTestSuiteTestCaseDataRequest
54
+ from .bulk_replace_test_suite_test_case_data_request import BulkReplaceTestSuiteTestCaseDataRequest
53
55
  from .chat_history_enum import ChatHistoryEnum
54
56
  from .chat_history_input_request import ChatHistoryInputRequest
55
57
  from .chat_message import ChatMessage
@@ -92,6 +94,10 @@ from .code_execution_node_search_results_result import CodeExecutionNodeSearchRe
92
94
  from .code_execution_node_string_result import CodeExecutionNodeStringResult
93
95
  from .conditional_node_result import ConditionalNodeResult
94
96
  from .conditional_node_result_data import ConditionalNodeResultData
97
+ from .create_enum import CreateEnum
98
+ from .created_enum import CreatedEnum
99
+ from .delete_enum import DeleteEnum
100
+ from .deleted_enum import DeletedEnum
95
101
  from .deployment_provider_payload_response import DeploymentProviderPayloadResponse
96
102
  from .deployment_read import DeploymentRead
97
103
  from .deployment_release_tag_deployment_history_item import DeploymentReleaseTagDeploymentHistoryItem
@@ -368,6 +374,8 @@ from .rejected_execute_workflow_workflow_result_event import RejectedExecuteWork
368
374
  from .rejected_prompt_execution_meta import RejectedPromptExecutionMeta
369
375
  from .rejected_workflow_node_result_event import RejectedWorkflowNodeResultEvent
370
376
  from .release_tag_source import ReleaseTagSource
377
+ from .replace_enum import ReplaceEnum
378
+ from .replaced_enum import ReplacedEnum
371
379
  from .sandbox_scenario import SandboxScenario
372
380
  from .scenario_input import ScenarioInput, ScenarioInput_ChatHistory, ScenarioInput_String
373
381
  from .scenario_input_chat_history_variable_value import ScenarioInputChatHistoryVariableValue
@@ -544,6 +552,30 @@ from .test_suite_run_workflow_release_tag_exec_config_data_request import (
544
552
  from .test_suite_run_workflow_release_tag_exec_config_request import TestSuiteRunWorkflowReleaseTagExecConfigRequest
545
553
  from .test_suite_run_workflow_release_tag_exec_config_type_enum import TestSuiteRunWorkflowReleaseTagExecConfigTypeEnum
546
554
  from .test_suite_test_case import TestSuiteTestCase
555
+ from .test_suite_test_case_bulk_operation_request import (
556
+ TestSuiteTestCaseBulkOperationRequest,
557
+ TestSuiteTestCaseBulkOperationRequest_Create,
558
+ TestSuiteTestCaseBulkOperationRequest_Delete,
559
+ TestSuiteTestCaseBulkOperationRequest_Replace,
560
+ )
561
+ from .test_suite_test_case_bulk_result import (
562
+ TestSuiteTestCaseBulkResult,
563
+ TestSuiteTestCaseBulkResult_Created,
564
+ TestSuiteTestCaseBulkResult_Deleted,
565
+ TestSuiteTestCaseBulkResult_Rejected,
566
+ TestSuiteTestCaseBulkResult_Replaced,
567
+ )
568
+ from .test_suite_test_case_create_bulk_operation_request import TestSuiteTestCaseCreateBulkOperationRequest
569
+ from .test_suite_test_case_created_bulk_result import TestSuiteTestCaseCreatedBulkResult
570
+ from .test_suite_test_case_created_bulk_result_data import TestSuiteTestCaseCreatedBulkResultData
571
+ from .test_suite_test_case_delete_bulk_operation_data_request import TestSuiteTestCaseDeleteBulkOperationDataRequest
572
+ from .test_suite_test_case_delete_bulk_operation_request import TestSuiteTestCaseDeleteBulkOperationRequest
573
+ from .test_suite_test_case_deleted_bulk_result import TestSuiteTestCaseDeletedBulkResult
574
+ from .test_suite_test_case_deleted_bulk_result_data import TestSuiteTestCaseDeletedBulkResultData
575
+ from .test_suite_test_case_rejected_bulk_result import TestSuiteTestCaseRejectedBulkResult
576
+ from .test_suite_test_case_replace_bulk_operation_request import TestSuiteTestCaseReplaceBulkOperationRequest
577
+ from .test_suite_test_case_replaced_bulk_result import TestSuiteTestCaseReplacedBulkResult
578
+ from .test_suite_test_case_replaced_bulk_result_data import TestSuiteTestCaseReplacedBulkResultData
547
579
  from .text_embedding_3_large_enum import TextEmbedding3LargeEnum
548
580
  from .text_embedding_3_small_enum import TextEmbedding3SmallEnum
549
581
  from .text_embedding_ada_002_enum import TextEmbeddingAda002Enum
@@ -682,6 +714,8 @@ __all__ = [
682
714
  "BasicVectorizerSentenceTransformersMultiQaMpnetBaseCosV1Request",
683
715
  "BasicVectorizerSentenceTransformersMultiQaMpnetBaseDotV1",
684
716
  "BasicVectorizerSentenceTransformersMultiQaMpnetBaseDotV1Request",
717
+ "BulkCreateTestSuiteTestCaseDataRequest",
718
+ "BulkReplaceTestSuiteTestCaseDataRequest",
685
719
  "ChatHistoryEnum",
686
720
  "ChatHistoryInputRequest",
687
721
  "ChatMessage",
@@ -718,6 +752,10 @@ __all__ = [
718
752
  "CodeExecutionNodeStringResult",
719
753
  "ConditionalNodeResult",
720
754
  "ConditionalNodeResultData",
755
+ "CreateEnum",
756
+ "CreatedEnum",
757
+ "DeleteEnum",
758
+ "DeletedEnum",
721
759
  "DeploymentProviderPayloadResponse",
722
760
  "DeploymentRead",
723
761
  "DeploymentReleaseTagDeploymentHistoryItem",
@@ -964,6 +1002,8 @@ __all__ = [
964
1002
  "RejectedPromptExecutionMeta",
965
1003
  "RejectedWorkflowNodeResultEvent",
966
1004
  "ReleaseTagSource",
1005
+ "ReplaceEnum",
1006
+ "ReplacedEnum",
967
1007
  "SandboxScenario",
968
1008
  "ScenarioInput",
969
1009
  "ScenarioInputChatHistoryVariableValue",
@@ -1120,6 +1160,26 @@ __all__ = [
1120
1160
  "TestSuiteRunWorkflowReleaseTagExecConfigRequest",
1121
1161
  "TestSuiteRunWorkflowReleaseTagExecConfigTypeEnum",
1122
1162
  "TestSuiteTestCase",
1163
+ "TestSuiteTestCaseBulkOperationRequest",
1164
+ "TestSuiteTestCaseBulkOperationRequest_Create",
1165
+ "TestSuiteTestCaseBulkOperationRequest_Delete",
1166
+ "TestSuiteTestCaseBulkOperationRequest_Replace",
1167
+ "TestSuiteTestCaseBulkResult",
1168
+ "TestSuiteTestCaseBulkResult_Created",
1169
+ "TestSuiteTestCaseBulkResult_Deleted",
1170
+ "TestSuiteTestCaseBulkResult_Rejected",
1171
+ "TestSuiteTestCaseBulkResult_Replaced",
1172
+ "TestSuiteTestCaseCreateBulkOperationRequest",
1173
+ "TestSuiteTestCaseCreatedBulkResult",
1174
+ "TestSuiteTestCaseCreatedBulkResultData",
1175
+ "TestSuiteTestCaseDeleteBulkOperationDataRequest",
1176
+ "TestSuiteTestCaseDeleteBulkOperationRequest",
1177
+ "TestSuiteTestCaseDeletedBulkResult",
1178
+ "TestSuiteTestCaseDeletedBulkResultData",
1179
+ "TestSuiteTestCaseRejectedBulkResult",
1180
+ "TestSuiteTestCaseReplaceBulkOperationRequest",
1181
+ "TestSuiteTestCaseReplacedBulkResult",
1182
+ "TestSuiteTestCaseReplacedBulkResultData",
1123
1183
  "TextEmbedding3LargeEnum",
1124
1184
  "TextEmbedding3SmallEnum",
1125
1185
  "TextEmbeddingAda002Enum",
@@ -0,0 +1,39 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ from ..core.datetime_utils import serialize_datetime
7
+ from ..core.pydantic_utilities import pydantic_v1
8
+ from .named_test_case_variable_value_request import NamedTestCaseVariableValueRequest
9
+
10
+
11
+ class BulkCreateTestSuiteTestCaseDataRequest(pydantic_v1.BaseModel):
12
+ """
13
+ Information about the Test Case to create
14
+ """
15
+
16
+ label: typing.Optional[str] = None
17
+ input_values: typing.List[NamedTestCaseVariableValueRequest] = pydantic_v1.Field()
18
+ """
19
+ Values for each of the Test Case's input variables
20
+ """
21
+
22
+ evaluation_values: typing.List[NamedTestCaseVariableValueRequest] = pydantic_v1.Field()
23
+ """
24
+ Values for each of the Test Case's evaluation variables
25
+ """
26
+
27
+ def json(self, **kwargs: typing.Any) -> str:
28
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
29
+ return super().json(**kwargs_with_defaults)
30
+
31
+ def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
32
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
33
+ return super().dict(**kwargs_with_defaults)
34
+
35
+ class Config:
36
+ frozen = True
37
+ smart_union = True
38
+ extra = pydantic_v1.Extra.allow
39
+ json_encoders = {dt.datetime: serialize_datetime}
@@ -0,0 +1,44 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ from ..core.datetime_utils import serialize_datetime
7
+ from ..core.pydantic_utilities import pydantic_v1
8
+ from .named_test_case_variable_value_request import NamedTestCaseVariableValueRequest
9
+
10
+
11
+ class BulkReplaceTestSuiteTestCaseDataRequest(pydantic_v1.BaseModel):
12
+ """
13
+ Information about the Test Case to replace
14
+ """
15
+
16
+ id: str = pydantic_v1.Field()
17
+ """
18
+ The ID of the Test Case to replace.
19
+ """
20
+
21
+ label: typing.Optional[str] = None
22
+ input_values: typing.List[NamedTestCaseVariableValueRequest] = pydantic_v1.Field()
23
+ """
24
+ Values for each of the Test Case's input variables
25
+ """
26
+
27
+ evaluation_values: typing.List[NamedTestCaseVariableValueRequest] = pydantic_v1.Field()
28
+ """
29
+ Values for each of the Test Case's evaluation variables
30
+ """
31
+
32
+ def json(self, **kwargs: typing.Any) -> str:
33
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
34
+ return super().json(**kwargs_with_defaults)
35
+
36
+ def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
37
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
38
+ return super().dict(**kwargs_with_defaults)
39
+
40
+ class Config:
41
+ frozen = True
42
+ smart_union = True
43
+ extra = pydantic_v1.Extra.allow
44
+ json_encoders = {dt.datetime: serialize_datetime}
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ CreateEnum = typing.Literal["CREATE"]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ CreatedEnum = typing.Literal["CREATED"]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ DeleteEnum = typing.Literal["DELETE"]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ DeletedEnum = typing.Literal["DELETED"]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ ReplaceEnum = typing.Literal["REPLACE"]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ ReplacedEnum = typing.Literal["REPLACED"]