vellum-ai 0.3.18__py3-none-any.whl → 0.3.20__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
vellum/__init__.py CHANGED
@@ -210,6 +210,7 @@ from .types import (
210
210
  PaginatedSlimDocumentList,
211
211
  PaginatedSlimWorkflowDeploymentList,
212
212
  PaginatedTestSuiteRunExecutionList,
213
+ PaginatedTestSuiteTestCaseList,
213
214
  ProcessingFailureReasonEnum,
214
215
  ProcessingStateEnum,
215
216
  PromptDeploymentExpandMetaRequestRequest,
@@ -372,6 +373,9 @@ from .types import (
372
373
  TestSuiteRunMetricOutput,
373
374
  TestSuiteRunMetricOutput_Error,
374
375
  TestSuiteRunMetricOutput_Number,
376
+ TestSuiteRunMetricOutput_String,
377
+ TestSuiteRunMetricStringOutput,
378
+ TestSuiteRunMetricStringOutputTypeEnum,
375
379
  TestSuiteRunRead,
376
380
  TestSuiteRunState,
377
381
  TestSuiteRunTestSuite,
@@ -700,6 +704,7 @@ __all__ = [
700
704
  "PaginatedSlimDocumentList",
701
705
  "PaginatedSlimWorkflowDeploymentList",
702
706
  "PaginatedTestSuiteRunExecutionList",
707
+ "PaginatedTestSuiteTestCaseList",
703
708
  "ProcessingFailureReasonEnum",
704
709
  "ProcessingStateEnum",
705
710
  "PromptDeploymentExpandMetaRequestRequest",
@@ -862,6 +867,9 @@ __all__ = [
862
867
  "TestSuiteRunMetricOutput",
863
868
  "TestSuiteRunMetricOutput_Error",
864
869
  "TestSuiteRunMetricOutput_Number",
870
+ "TestSuiteRunMetricOutput_String",
871
+ "TestSuiteRunMetricStringOutput",
872
+ "TestSuiteRunMetricStringOutputTypeEnum",
865
873
  "TestSuiteRunRead",
866
874
  "TestSuiteRunState",
867
875
  "TestSuiteRunTestSuite",
@@ -18,7 +18,7 @@ class BaseClientWrapper:
18
18
  headers: typing.Dict[str, str] = {
19
19
  "X-Fern-Language": "Python",
20
20
  "X-Fern-SDK-Name": "vellum-ai",
21
- "X-Fern-SDK-Version": "0.3.18",
21
+ "X-Fern-SDK-Version": "0.3.20",
22
22
  }
23
23
  headers["X_API_KEY"] = self.api_key
24
24
  return headers
@@ -10,6 +10,7 @@ from ...core.jsonable_encoder import jsonable_encoder
10
10
  from ...core.remove_none_from_dict import remove_none_from_dict
11
11
  from ...core.request_options import RequestOptions
12
12
  from ...types.named_test_case_variable_value_request import NamedTestCaseVariableValueRequest
13
+ from ...types.paginated_test_suite_test_case_list import PaginatedTestSuiteTestCaseList
13
14
  from ...types.test_suite_test_case import TestSuiteTestCase
14
15
 
15
16
  try:
@@ -25,6 +26,76 @@ class TestSuitesClient:
25
26
  def __init__(self, *, client_wrapper: SyncClientWrapper):
26
27
  self._client_wrapper = client_wrapper
27
28
 
29
+ def list_test_suite_test_cases(
30
+ self,
31
+ id: str,
32
+ *,
33
+ limit: typing.Optional[int] = None,
34
+ offset: typing.Optional[int] = None,
35
+ request_options: typing.Optional[RequestOptions] = None,
36
+ ) -> PaginatedTestSuiteTestCaseList:
37
+ """
38
+ List the Test Cases associated with a Test Suite
39
+
40
+ Parameters:
41
+ - id: str. A UUID string identifying this test suite.
42
+
43
+ - limit: typing.Optional[int]. Number of results to return per page.
44
+
45
+ - offset: typing.Optional[int]. The initial index from which to return the results.
46
+
47
+ - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
48
+ ---
49
+ from vellum.client import Vellum
50
+
51
+ client = Vellum(
52
+ api_key="YOUR_API_KEY",
53
+ )
54
+ client.test_suites.list_test_suite_test_cases(
55
+ id="id",
56
+ )
57
+ """
58
+ _response = self._client_wrapper.httpx_client.request(
59
+ "GET",
60
+ urllib.parse.urljoin(
61
+ f"{self._client_wrapper.get_environment().default}/",
62
+ f"v1/test-suites/{jsonable_encoder(id)}/test-cases",
63
+ ),
64
+ params=jsonable_encoder(
65
+ remove_none_from_dict(
66
+ {
67
+ "limit": limit,
68
+ "offset": offset,
69
+ **(
70
+ request_options.get("additional_query_parameters", {})
71
+ if request_options is not None
72
+ else {}
73
+ ),
74
+ }
75
+ )
76
+ ),
77
+ headers=jsonable_encoder(
78
+ remove_none_from_dict(
79
+ {
80
+ **self._client_wrapper.get_headers(),
81
+ **(request_options.get("additional_headers", {}) if request_options is not None else {}),
82
+ }
83
+ )
84
+ ),
85
+ timeout=request_options.get("timeout_in_seconds")
86
+ if request_options is not None and request_options.get("timeout_in_seconds") is not None
87
+ else self._client_wrapper.get_timeout(),
88
+ retries=0,
89
+ max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
90
+ )
91
+ if 200 <= _response.status_code < 300:
92
+ return pydantic.parse_obj_as(PaginatedTestSuiteTestCaseList, _response.json()) # type: ignore
93
+ try:
94
+ _response_json = _response.json()
95
+ except JSONDecodeError:
96
+ raise ApiError(status_code=_response.status_code, body=_response.text)
97
+ raise ApiError(status_code=_response.status_code, body=_response_json)
98
+
28
99
  def upsert_test_suite_test_case(
29
100
  self,
30
101
  id: str,
@@ -169,6 +240,76 @@ class AsyncTestSuitesClient:
169
240
  def __init__(self, *, client_wrapper: AsyncClientWrapper):
170
241
  self._client_wrapper = client_wrapper
171
242
 
243
+ async def list_test_suite_test_cases(
244
+ self,
245
+ id: str,
246
+ *,
247
+ limit: typing.Optional[int] = None,
248
+ offset: typing.Optional[int] = None,
249
+ request_options: typing.Optional[RequestOptions] = None,
250
+ ) -> PaginatedTestSuiteTestCaseList:
251
+ """
252
+ List the Test Cases associated with a Test Suite
253
+
254
+ Parameters:
255
+ - id: str. A UUID string identifying this test suite.
256
+
257
+ - limit: typing.Optional[int]. Number of results to return per page.
258
+
259
+ - offset: typing.Optional[int]. The initial index from which to return the results.
260
+
261
+ - request_options: typing.Optional[RequestOptions]. Request-specific configuration.
262
+ ---
263
+ from vellum.client import AsyncVellum
264
+
265
+ client = AsyncVellum(
266
+ api_key="YOUR_API_KEY",
267
+ )
268
+ await client.test_suites.list_test_suite_test_cases(
269
+ id="id",
270
+ )
271
+ """
272
+ _response = await self._client_wrapper.httpx_client.request(
273
+ "GET",
274
+ urllib.parse.urljoin(
275
+ f"{self._client_wrapper.get_environment().default}/",
276
+ f"v1/test-suites/{jsonable_encoder(id)}/test-cases",
277
+ ),
278
+ params=jsonable_encoder(
279
+ remove_none_from_dict(
280
+ {
281
+ "limit": limit,
282
+ "offset": offset,
283
+ **(
284
+ request_options.get("additional_query_parameters", {})
285
+ if request_options is not None
286
+ else {}
287
+ ),
288
+ }
289
+ )
290
+ ),
291
+ headers=jsonable_encoder(
292
+ remove_none_from_dict(
293
+ {
294
+ **self._client_wrapper.get_headers(),
295
+ **(request_options.get("additional_headers", {}) if request_options is not None else {}),
296
+ }
297
+ )
298
+ ),
299
+ timeout=request_options.get("timeout_in_seconds")
300
+ if request_options is not None and request_options.get("timeout_in_seconds") is not None
301
+ else self._client_wrapper.get_timeout(),
302
+ retries=0,
303
+ max_retries=request_options.get("max_retries") if request_options is not None else 0, # type: ignore
304
+ )
305
+ if 200 <= _response.status_code < 300:
306
+ return pydantic.parse_obj_as(PaginatedTestSuiteTestCaseList, _response.json()) # type: ignore
307
+ try:
308
+ _response_json = _response.json()
309
+ except JSONDecodeError:
310
+ raise ApiError(status_code=_response.status_code, body=_response.text)
311
+ raise ApiError(status_code=_response.status_code, body=_response_json)
312
+
172
313
  async def upsert_test_suite_test_case(
173
314
  self,
174
315
  id: str,
vellum/types/__init__.py CHANGED
@@ -233,6 +233,7 @@ from .paginated_slim_deployment_read_list import PaginatedSlimDeploymentReadList
233
233
  from .paginated_slim_document_list import PaginatedSlimDocumentList
234
234
  from .paginated_slim_workflow_deployment_list import PaginatedSlimWorkflowDeploymentList
235
235
  from .paginated_test_suite_run_execution_list import PaginatedTestSuiteRunExecutionList
236
+ from .paginated_test_suite_test_case_list import PaginatedTestSuiteTestCaseList
236
237
  from .processing_failure_reason_enum import ProcessingFailureReasonEnum
237
238
  from .processing_state_enum import ProcessingStateEnum
238
239
  from .prompt_deployment_expand_meta_request_request import PromptDeploymentExpandMetaRequestRequest
@@ -418,7 +419,10 @@ from .test_suite_run_metric_output import (
418
419
  TestSuiteRunMetricOutput,
419
420
  TestSuiteRunMetricOutput_Error,
420
421
  TestSuiteRunMetricOutput_Number,
422
+ TestSuiteRunMetricOutput_String,
421
423
  )
424
+ from .test_suite_run_metric_string_output import TestSuiteRunMetricStringOutput
425
+ from .test_suite_run_metric_string_output_type_enum import TestSuiteRunMetricStringOutputTypeEnum
422
426
  from .test_suite_run_read import TestSuiteRunRead
423
427
  from .test_suite_run_state import TestSuiteRunState
424
428
  from .test_suite_run_test_suite import TestSuiteRunTestSuite
@@ -731,6 +735,7 @@ __all__ = [
731
735
  "PaginatedSlimDocumentList",
732
736
  "PaginatedSlimWorkflowDeploymentList",
733
737
  "PaginatedTestSuiteRunExecutionList",
738
+ "PaginatedTestSuiteTestCaseList",
734
739
  "ProcessingFailureReasonEnum",
735
740
  "ProcessingStateEnum",
736
741
  "PromptDeploymentExpandMetaRequestRequest",
@@ -893,6 +898,9 @@ __all__ = [
893
898
  "TestSuiteRunMetricOutput",
894
899
  "TestSuiteRunMetricOutput_Error",
895
900
  "TestSuiteRunMetricOutput_Number",
901
+ "TestSuiteRunMetricOutput_String",
902
+ "TestSuiteRunMetricStringOutput",
903
+ "TestSuiteRunMetricStringOutputTypeEnum",
896
904
  "TestSuiteRunRead",
897
905
  "TestSuiteRunState",
898
906
  "TestSuiteRunTestSuite",
@@ -0,0 +1,33 @@
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 .test_suite_test_case import TestSuiteTestCase
8
+
9
+ try:
10
+ import pydantic.v1 as pydantic # type: ignore
11
+ except ImportError:
12
+ import pydantic # type: ignore
13
+
14
+
15
+ class PaginatedTestSuiteTestCaseList(pydantic.BaseModel):
16
+ count: int
17
+ next: typing.Optional[str] = None
18
+ previous: typing.Optional[str] = None
19
+ results: typing.List[TestSuiteTestCase]
20
+
21
+ def json(self, **kwargs: typing.Any) -> str:
22
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
23
+ return super().json(**kwargs_with_defaults)
24
+
25
+ def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
26
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
27
+ return super().dict(**kwargs_with_defaults)
28
+
29
+ class Config:
30
+ frozen = True
31
+ smart_union = True
32
+ extra = pydantic.Extra.allow
33
+ json_encoders = {dt.datetime: serialize_datetime}
@@ -6,6 +6,17 @@ import typing
6
6
 
7
7
  from .test_suite_run_metric_error_output import TestSuiteRunMetricErrorOutput
8
8
  from .test_suite_run_metric_number_output import TestSuiteRunMetricNumberOutput
9
+ from .test_suite_run_metric_string_output import TestSuiteRunMetricStringOutput
10
+
11
+
12
+ class TestSuiteRunMetricOutput_String(TestSuiteRunMetricStringOutput):
13
+ type: typing.Literal["STRING"] = "STRING"
14
+
15
+ class Config:
16
+ frozen = True
17
+ smart_union = True
18
+ allow_population_by_field_name = True
19
+ populate_by_name = True
9
20
 
10
21
 
11
22
  class TestSuiteRunMetricOutput_Number(TestSuiteRunMetricNumberOutput):
@@ -28,4 +39,6 @@ class TestSuiteRunMetricOutput_Error(TestSuiteRunMetricErrorOutput):
28
39
  populate_by_name = True
29
40
 
30
41
 
31
- TestSuiteRunMetricOutput = typing.Union[TestSuiteRunMetricOutput_Number, TestSuiteRunMetricOutput_Error]
42
+ TestSuiteRunMetricOutput = typing.Union[
43
+ TestSuiteRunMetricOutput_String, TestSuiteRunMetricOutput_Number, TestSuiteRunMetricOutput_Error
44
+ ]
@@ -0,0 +1,34 @@
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
+
8
+ try:
9
+ import pydantic.v1 as pydantic # type: ignore
10
+ except ImportError:
11
+ import pydantic # type: ignore
12
+
13
+
14
+ class TestSuiteRunMetricStringOutput(pydantic.BaseModel):
15
+ """
16
+ Output for a test suite run metric that is of type STRING
17
+ """
18
+
19
+ value: str
20
+ name: str
21
+
22
+ def json(self, **kwargs: typing.Any) -> str:
23
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
24
+ return super().json(**kwargs_with_defaults)
25
+
26
+ def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
27
+ kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
28
+ return super().dict(**kwargs_with_defaults)
29
+
30
+ class Config:
31
+ frozen = True
32
+ smart_union = True
33
+ extra = pydantic.Extra.allow
34
+ 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
+ TestSuiteRunMetricStringOutputTypeEnum = typing.Literal["STRING"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vellum-ai
3
- Version: 0.3.18
3
+ Version: 0.3.20
4
4
  Summary:
5
5
  Requires-Python: >=3.8,<4.0
6
6
  Classifier: Programming Language :: Python :: 3
@@ -1,8 +1,8 @@
1
- vellum/__init__.py,sha256=17WXNkvq4OC3V1VqGWc64nJklzsPgBH0D_uux72OYng,33627
1
+ vellum/__init__.py,sha256=S-isP5rieWJQq1Bf7EcvFjLzGVfEaxtBJcgiMJcnSXE,33941
2
2
  vellum/client.py,sha256=XB_tltKpWwPoZpsm4g0ftLPKFYjZSLjLAteJwp-xSWA,96636
3
3
  vellum/core/__init__.py,sha256=RWfyDqkzWsf8e3VGc3NV60MovfJbg5XWzNFGB2DZ0hA,790
4
4
  vellum/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
5
- vellum/core/client_wrapper.py,sha256=q7IN9X3O0e7gE_jCujRH9gpJBAT3a1q6Lg2vgp8xSYI,1698
5
+ vellum/core/client_wrapper.py,sha256=uMDH7uKGgjUsZeA_L_bmnHsCUdhpqhH-dlHoV1B71Jo,1698
6
6
  vellum/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
7
7
  vellum/core/file.py,sha256=sy1RUGZ3aJYuw998bZytxxo6QdgKmlnlgBaMvwEKCGg,1480
8
8
  vellum/core/http_client.py,sha256=5ok6hqgZDJhg57EHvMnr0BBaHdG50QxFPKaCZ9aVWTc,5059
@@ -39,12 +39,12 @@ vellum/resources/sandboxes/client.py,sha256=gW_DTrJ3w6BfaSATZxB0Z-bxVUXQ0JtPAjL6
39
39
  vellum/resources/test_suite_runs/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
40
40
  vellum/resources/test_suite_runs/client.py,sha256=T5vF1S5jDfQLxKOg-2Q2XYCF9g5W-dos6Ff6Av21gr8,17120
41
41
  vellum/resources/test_suites/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
42
- vellum/resources/test_suites/client.py,sha256=zB8Ne4rUqwyazytyBWNKuI449C8MB7S5dugRg5NBjd4,13316
42
+ vellum/resources/test_suites/client.py,sha256=7PmEjJ_2TlvqJoP3C4XkdA8SyYMHVQwREB4T8LowZbM,18966
43
43
  vellum/resources/workflow_deployments/__init__.py,sha256=-5BCA0kSmW6WUh4gqLuQtHv4zFdt9lccuDwMU5YvEu4,173
44
44
  vellum/resources/workflow_deployments/client.py,sha256=DUY1h8mvXqwP-zilmwoek_XbLNTFeeVbxgd7M-k2IzA,11164
45
45
  vellum/resources/workflow_deployments/types/__init__.py,sha256=rmS_4dtbgLHGNQJ_pOloygrjl4sNbKZjTEKBxbMyz6E,208
46
46
  vellum/resources/workflow_deployments/types/workflow_deployments_list_request_status.py,sha256=8-G1SalBR6-AfRnb6POOR9M3tvZa3CGwFIs1ArZb6uw,542
47
- vellum/types/__init__.py,sha256=59p1m_erR_1kg_kWmTUWaBafV5zzijV_5EZ7yJXIRvI,44795
47
+ vellum/types/__init__.py,sha256=8PerhxFNQHQwWDScY8jYUQySE3qHluQhXjT9iiEnbZs,45251
48
48
  vellum/types/api_node_result.py,sha256=aLOooryBCfglTeZwOuyyqRoHz5oPTja2mYYY7Gj8XxA,1040
49
49
  vellum/types/api_node_result_data.py,sha256=cQcZiwI1hjRvQFlkVEGxyaD360vEklIfjBmhBAeI75U,1215
50
50
  vellum/types/array_chat_message_content.py,sha256=Z7nKH8RNgot0i4-159w95OHywLjc-376gBPOovbw2hk,1087
@@ -184,6 +184,7 @@ vellum/types/paginated_slim_deployment_read_list.py,sha256=4pMZYAVl7pLI8d9-CE3NY
184
184
  vellum/types/paginated_slim_document_list.py,sha256=Zvr_VzHcUEEiqAXEitoaM5YcPcaTKgEx8fziy3SH1CU,1127
185
185
  vellum/types/paginated_slim_workflow_deployment_list.py,sha256=dCew3Xy72Mo5MHIBdCbcuDaH0v2yeCRNBDt4m-8tb0A,1168
186
186
  vellum/types/paginated_test_suite_run_execution_list.py,sha256=pwT-FeIxOBnP_S3kpqlAUOtlXEYfFgfViRGxeFTebRI,1117
187
+ vellum/types/paginated_test_suite_test_case_list.py,sha256=0XlghGkiSubI41oR1UGSdYOKDUM4XLCgmcElKaYFdkA,1101
187
188
  vellum/types/processing_failure_reason_enum.py,sha256=MDj2vNyO1Y-2WHuolkrGez8F1cZqS6ultfsqvGI4Fg8,752
188
189
  vellum/types/processing_state_enum.py,sha256=rMhw5oLZNfhR4QkIgFfLMWRSLXgHt9qhiguEqWQNz5k,962
189
190
  vellum/types/prompt_deployment_expand_meta_request_request.py,sha256=jvi3NW0nJxyLwNEhk35oEdAm_aDOuy48eNy5LqvkkRs,1885
@@ -301,7 +302,9 @@ vellum/types/test_suite_run_metric_error_output.py,sha256=N0ZRTO1QV4Bobrh9u1-k5q
301
302
  vellum/types/test_suite_run_metric_error_output_type_enum.py,sha256=ZPKy0jkcgfuMhI2hG_3UUcw2sYH1BlV_ze8Axlq5nIU,144
302
303
  vellum/types/test_suite_run_metric_number_output.py,sha256=vedeqnSpDl7Y23DdgAlcl16Gxd1WlNo4m4PQ2SGI8Tk,1020
303
304
  vellum/types/test_suite_run_metric_number_output_type_enum.py,sha256=sXoES0zoliicpd66SwlF6xsVUjWSezGNkuxp6CthO2s,146
304
- vellum/types/test_suite_run_metric_output.py,sha256=O_v0dGiAnXXRc_MpEZT3La5p6iBPPRNfNWJesGIHe9M,907
305
+ vellum/types/test_suite_run_metric_output.py,sha256=QkHRKO1tnQWoeCq7xc7TfSiAjC927Ha2hdePBJeEn0A,1291
306
+ vellum/types/test_suite_run_metric_string_output.py,sha256=FxScPpKm8kj6pGTTQ9slJgkb1PQZn5LBa0ZFOnCUxJw,1018
307
+ vellum/types/test_suite_run_metric_string_output_type_enum.py,sha256=6OKwFyk0SUq4IKp6yg_FAc3ADM0jVCK-chq5JR9iwqo,146
305
308
  vellum/types/test_suite_run_read.py,sha256=bb6kgQaMQpkshETe_dXiMNVCx3r05t12ajaiqTAnvHg,1551
306
309
  vellum/types/test_suite_run_state.py,sha256=myD2yLYpEiTUK4AyRZwl3MrXOKYkDA8k4fpqnDnALAY,1111
307
310
  vellum/types/test_suite_run_test_suite.py,sha256=jsSjV803xCQ4zQ29MCvCM06rH1PCviCZ7G8KzR-LiOA,953
@@ -359,7 +362,7 @@ vellum/types/workflow_result_event_output_data_search_results.py,sha256=wYc76-DW
359
362
  vellum/types/workflow_result_event_output_data_string.py,sha256=7SR46tKt-I_cGd_eVeKU8ymQ7R3vKkA_dFHCgAU1GcQ,1533
360
363
  vellum/types/workflow_stream_event.py,sha256=KA6Bkk_XA6AIPWR-1vKnwF1A8l_Bm5y0arQCWWWRpsk,911
361
364
  vellum/version.py,sha256=neLt8HBHHUtDF9M5fsyUzHT-pKooEPvceaLDqqIGb0s,77
362
- vellum_ai-0.3.18.dist-info/LICENSE,sha256=CcaljEIoOBaU-wItPH4PmM_mDCGpyuUY0Er1BGu5Ti8,1073
363
- vellum_ai-0.3.18.dist-info/METADATA,sha256=xmyy_uoCv2fdkBQIDhrNBct_jo_Rv5gu2Ws3TLg-UGE,3550
364
- vellum_ai-0.3.18.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
365
- vellum_ai-0.3.18.dist-info/RECORD,,
365
+ vellum_ai-0.3.20.dist-info/LICENSE,sha256=CcaljEIoOBaU-wItPH4PmM_mDCGpyuUY0Er1BGu5Ti8,1073
366
+ vellum_ai-0.3.20.dist-info/METADATA,sha256=lYn0SJcCZkYtLCFoarsT7BVerGQAFRPoWnzdCZsBlDY,3550
367
+ vellum_ai-0.3.20.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
368
+ vellum_ai-0.3.20.dist-info/RECORD,,