adaptive-sdk 0.1.6__py3-none-any.whl → 0.1.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,106 @@
1
+ """
2
+ Wrapper for JobData that adds eval_result functionality without modifying autogenerated code.
3
+ """
4
+
5
+ from __future__ import annotations
6
+ from typing import TYPE_CHECKING
7
+ from pydantic import BaseModel, Field
8
+
9
+ from adaptive_sdk.graphql_client import JobData, JobArtifactKind, JobDataDetailsArtifactsByproductsEvaluationByproducts
10
+
11
+ if TYPE_CHECKING:
12
+ pass
13
+
14
+
15
+ class EvalMetricScore(BaseModel):
16
+ """A single metric score for a model in an evaluation."""
17
+
18
+ metric_key: str = Field(description="The key of the metric")
19
+ metric_name: str = Field(description="The human-readable name of the metric")
20
+ mean: float = Field(description="The mean score for this metric")
21
+ min: float = Field(description="The minimum score for this metric")
22
+ max: float = Field(description="The maximum score for this metric")
23
+ stddev: float = Field(description="The standard deviation of scores")
24
+ count: int = Field(description="The number of samples evaluated")
25
+ feedback_count: int = Field(description="The number of feedbacks received")
26
+
27
+
28
+ class ModelEvalResult(BaseModel):
29
+ """Evaluation results for a single model."""
30
+
31
+ model_key: str = Field(description="The key of the model that was evaluated")
32
+ model_name: str = Field(description="The human-readable name of the model")
33
+ scores: list[EvalMetricScore] = Field(description="List of metric scores for this model", default_factory=list)
34
+
35
+
36
+ class JobDataPlus(JobData):
37
+ """
38
+ Extended JobData that adds eval_result() method.
39
+ Inherits all attributes and methods from JobData.
40
+ """
41
+
42
+ @classmethod
43
+ def from_job_data(cls, job_data: JobData) -> "JobDataPlus":
44
+ """
45
+ Create a JobDataWrapper from a JobData instance.
46
+
47
+ Args:
48
+ job_data: The JobData instance to wrap
49
+
50
+ Returns:
51
+ A new JobDataWrapper with all the same data
52
+ """
53
+ # Use model_validate to create a new instance with the same data
54
+ return cls.model_validate(job_data.model_dump())
55
+
56
+ @property
57
+ def eval_results(self) -> list[ModelEvalResult] | None:
58
+ """
59
+ Extract and organize evaluation results from this job.
60
+
61
+ Returns:
62
+ A list of ModelEvalResult objects (one per model), or None if no eval results exist
63
+ """
64
+ if not self.details or not self.details.artifacts:
65
+ return None
66
+
67
+ # Dictionary to group scores by model
68
+ model_results: dict[str, ModelEvalResult] = {}
69
+
70
+ # Iterate through all artifacts looking for evaluation byproducts
71
+ for artifact in self.details.artifacts:
72
+ if not artifact.byproducts:
73
+ continue
74
+
75
+ # Check if this is an EvaluationByproducts with eval_results
76
+ if artifact.kind == JobArtifactKind.EVALUATION:
77
+ if artifact.byproducts is not None:
78
+ assert isinstance(artifact.byproducts, JobDataDetailsArtifactsByproductsEvaluationByproducts)
79
+
80
+ for eval_result in artifact.byproducts.eval_results:
81
+ model_key = eval_result.model_service.key
82
+ model_name = eval_result.model_service.name
83
+
84
+ # Create or get the model result entry
85
+ if model_key not in model_results:
86
+ model_results[model_key] = ModelEvalResult(
87
+ model_key=model_key, model_name=model_name, scores=[]
88
+ )
89
+
90
+ # Add the metric score to this model's results
91
+ metric_score = EvalMetricScore(
92
+ metric_key=eval_result.metric.key,
93
+ metric_name=eval_result.metric.name,
94
+ mean=eval_result.mean,
95
+ min=eval_result.min,
96
+ max=eval_result.max,
97
+ stddev=eval_result.stddev,
98
+ count=eval_result.count,
99
+ feedback_count=eval_result.feedback_count,
100
+ )
101
+ model_results[model_key].scores.append(metric_score)
102
+
103
+ if not model_results:
104
+ return None
105
+
106
+ return list(model_results.values())
@@ -14,7 +14,10 @@ from adaptive_sdk.graphql_client import (
14
14
  DatasetCreateFromMultipartUpload,
15
15
  )
16
16
  from adaptive_sdk.graphql_client.custom_mutations import Mutation
17
- from adaptive_sdk.graphql_client.custom_fields import DatasetFields
17
+ from adaptive_sdk.graphql_client.custom_fields import (
18
+ DatasetFields,
19
+ DatasetUploadProcessingStatusFields,
20
+ )
18
21
  from adaptive_sdk.rest import rest_types
19
22
  from adaptive_sdk.error_handling import rest_error_handler
20
23
 
@@ -178,12 +181,12 @@ class Datasets(SyncAPIResource, UseCaseResource): # type: ignore[misc]
178
181
 
179
182
  mutation_field = Mutation.create_dataset_from_multipart_upload(input=input)
180
183
  mutation_field.fields(
181
- DatasetFields.id,
182
- DatasetFields.key,
183
- DatasetFields.name,
184
- DatasetFields.created_at,
185
- DatasetFields.kind,
186
- DatasetFields.records,
184
+ DatasetUploadProcessingStatusFields.dataset_id,
185
+ DatasetUploadProcessingStatusFields.total_parts,
186
+ DatasetUploadProcessingStatusFields.processed_parts,
187
+ DatasetUploadProcessingStatusFields.progress,
188
+ DatasetUploadProcessingStatusFields.error,
189
+ DatasetUploadProcessingStatusFields.status,
187
190
  )
188
191
  result = self._gql_client.mutation(
189
192
  mutation_field, operation_name="CreateDatasetFromMultipartUpload"
@@ -331,12 +334,12 @@ class AsyncDatasets(AsyncAPIResource, UseCaseResource): # type: ignore[misc]
331
334
 
332
335
  mutation_field = Mutation.create_dataset_from_multipart_upload(input=input)
333
336
  mutation_field.fields(
334
- DatasetFields.id,
335
- DatasetFields.key,
336
- DatasetFields.name,
337
- DatasetFields.created_at,
338
- DatasetFields.kind,
339
- DatasetFields.records,
337
+ DatasetUploadProcessingStatusFields.dataset_id,
338
+ DatasetUploadProcessingStatusFields.total_parts,
339
+ DatasetUploadProcessingStatusFields.processed_parts,
340
+ DatasetUploadProcessingStatusFields.progress,
341
+ DatasetUploadProcessingStatusFields.error,
342
+ DatasetUploadProcessingStatusFields.status,
340
343
  )
341
344
  result = await self._gql_client.mutation(
342
345
  mutation_field, operation_name="CreateDatasetFromMultipartUpload"
@@ -1,17 +1,18 @@
1
1
  from __future__ import annotations
2
- from typing import TYPE_CHECKING, Literal, Any
2
+ from typing import TYPE_CHECKING, Literal, Any, cast
3
3
 
4
4
  from adaptive_sdk.graphql_client import (
5
5
  CursorPageInput,
6
6
  JobInput,
7
7
  ListJobsJobs,
8
8
  ListJobsFilterInput,
9
- JobData,
10
9
  JobKind,
10
+ ListJobsJobsNodes,
11
11
  )
12
12
 
13
13
 
14
14
  from .base_resource import SyncAPIResource, AsyncAPIResource, UseCaseResource
15
+ from adaptive_sdk.output_types import JobDataPlus
15
16
 
16
17
  if TYPE_CHECKING:
17
18
  from adaptive_sdk.client import Adaptive, AsyncAdaptive
@@ -26,8 +27,9 @@ class Jobs(SyncAPIResource, UseCaseResource): # type: ignore[misc]
26
27
  SyncAPIResource.__init__(self, client)
27
28
  UseCaseResource.__init__(self, client)
28
29
 
29
- def get(self, job_id: str) -> JobData | None:
30
- return self._gql_client.describe_job(id=job_id).job
30
+ def get(self, job_id: str) -> JobDataPlus | None:
31
+ job_data = self._gql_client.describe_job(id=job_id).job
32
+ return JobDataPlus.from_job_data(job_data) if job_data else None
31
33
 
32
34
  def list(
33
35
  self,
@@ -55,7 +57,13 @@ class Jobs(SyncAPIResource, UseCaseResource): # type: ignore[misc]
55
57
  useCase=use_case,
56
58
  kind=[JobKind(k) for k in kind] if kind else None,
57
59
  )
58
- return self._gql_client.list_jobs(page=page, filter=validated_filter, order=[]).jobs
60
+ jobs = self._gql_client.list_jobs(page=page, filter=validated_filter, order=[]).jobs
61
+ new_nodes: list[JobDataPlus] = []
62
+ for i in jobs.nodes:
63
+ new_nodes.append(JobDataPlus.from_job_data(i))
64
+ jobs.nodes = cast(list[ListJobsJobsNodes], new_nodes)
65
+
66
+ return jobs
59
67
 
60
68
  def run(
61
69
  self,
@@ -65,8 +73,8 @@ class Jobs(SyncAPIResource, UseCaseResource): # type: ignore[misc]
65
73
  name: str | None = None,
66
74
  use_case: str | None = None,
67
75
  compute_pool: str | None = None,
68
- ) -> JobData:
69
- return self._gql_client.create_job(
76
+ ) -> JobDataPlus:
77
+ job_data = self._gql_client.create_job(
70
78
  input=JobInput(
71
79
  recipe=recipe_key,
72
80
  args=args,
@@ -76,9 +84,11 @@ class Jobs(SyncAPIResource, UseCaseResource): # type: ignore[misc]
76
84
  numGpus=num_gpus,
77
85
  )
78
86
  ).create_job
87
+ return JobDataPlus.from_job_data(job_data)
79
88
 
80
- def cancel(self, job_id: str) -> JobData:
81
- return self._gql_client.cancel_job(job_id=job_id).cancel_job
89
+ def cancel(self, job_id: str) -> JobDataPlus:
90
+ job_data = self._gql_client.cancel_job(job_id=job_id).cancel_job
91
+ return JobDataPlus.from_job_data(job_data)
82
92
 
83
93
 
84
94
  class AsyncJobs(AsyncAPIResource, UseCaseResource): # type: ignore[misc]
@@ -90,8 +100,9 @@ class AsyncJobs(AsyncAPIResource, UseCaseResource): # type: ignore[misc]
90
100
  AsyncAPIResource.__init__(self, client)
91
101
  UseCaseResource.__init__(self, client)
92
102
 
93
- async def get(self, job_id: str) -> JobData | None:
94
- return (await self._gql_client.describe_job(id=job_id)).job
103
+ async def get(self, job_id: str) -> JobDataPlus | None:
104
+ job_data = (await self._gql_client.describe_job(id=job_id)).job
105
+ return JobDataPlus.from_job_data(job_data) if job_data else None
95
106
 
96
107
  async def list(
97
108
  self,
@@ -118,7 +129,12 @@ class AsyncJobs(AsyncAPIResource, UseCaseResource): # type: ignore[misc]
118
129
  useCase=self.use_case_key(use_case),
119
130
  kind=[JobKind[k] for k in kind] if kind else None,
120
131
  )
121
- return (await self._gql_client.list_jobs(page=page, filter=validated_filter)).jobs
132
+ jobs = (await self._gql_client.list_jobs(page=page, filter=validated_filter)).jobs
133
+ new_nodes: list[JobDataPlus] = []
134
+ for i in jobs.nodes:
135
+ new_nodes.append(JobDataPlus.from_job_data(i))
136
+ jobs.nodes = cast(list[ListJobsJobsNodes], new_nodes)
137
+ return jobs
122
138
 
123
139
  async def run(
124
140
  self,
@@ -128,8 +144,8 @@ class AsyncJobs(AsyncAPIResource, UseCaseResource): # type: ignore[misc]
128
144
  name: str | None = None,
129
145
  use_case: str | None = None,
130
146
  compute_pool: str | None = None,
131
- ) -> JobData:
132
- return (
147
+ ) -> JobDataPlus:
148
+ job_data = (
133
149
  await self._gql_client.create_job(
134
150
  input=JobInput(
135
151
  recipe=recipe_key,
@@ -141,6 +157,8 @@ class AsyncJobs(AsyncAPIResource, UseCaseResource): # type: ignore[misc]
141
157
  )
142
158
  )
143
159
  ).create_job
160
+ return JobDataPlus.from_job_data(job_data)
144
161
 
145
- async def cancel(self, job_id: str) -> JobData:
146
- return (await self._gql_client.cancel_job(job_id=job_id)).cancel_job
162
+ async def cancel(self, job_id: str) -> JobDataPlus:
163
+ job_data = (await self._gql_client.cancel_job(job_id=job_id)).cancel_job
164
+ return JobDataPlus.from_job_data(job_data)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: adaptive-sdk
3
- Version: 0.1.6
3
+ Version: 0.1.8
4
4
  Summary: Python SDK for Adaptive Engine
5
5
  Author-email: Vincent Debergue <vincent@adaptive-ml.com>, Joao Moura <joao@adaptive-ml.com>, Yacine Bouraoui <yacine@adaptive-ml.com>
6
6
  Requires-Python: >=3.10
@@ -1,6 +1,6 @@
1
1
  adaptive_sdk/__init__.py,sha256=RQWUHUyEWFSqvTKQpM7Q98nRPnisXRgIZlYd65aJucs,308
2
- adaptive_sdk/base_client.py,sha256=gHLNOdiPRE53JGCo6jA8D8sTS1WQJ5-UCJOpKMyEhxY,4255
3
- adaptive_sdk/client.py,sha256=xhAKU_zSSeQoBaUbtwHqHyZgtRQqYut4hNV8cTMoAw4,5077
2
+ adaptive_sdk/base_client.py,sha256=kDeRwwsoue3MqKSXT-k-aUbUdAUb1Abow8oc_AULTnU,4935
3
+ adaptive_sdk/client.py,sha256=p-kMH1fboIF6fpHx3sSyRqmlN3gbx9mxjEkDEfrgs_U,5509
4
4
  adaptive_sdk/error_handling.py,sha256=emicEqdEOCgWwCgMkQyvB7VWdKRMnfrWA2urEthQ_g0,3345
5
5
  adaptive_sdk/openapi.json,sha256=1zCNC1PsbRnfWy_2TF1MUgF4PDL3pbwYqJbzVTqmm-U,14607
6
6
  adaptive_sdk/patch.py,sha256=mF9iw2VnxirxA7_T7TdatpCTwk3EXfXml9elYAvmy7U,223
@@ -9,24 +9,24 @@ adaptive_sdk/external/__init__.py,sha256=-C_MT56OM6xlNhzkwnQ-ke-VV8fJdZIsOzdbNYm
9
9
  adaptive_sdk/external/base_model.py,sha256=_WSTDyJdV61Pno63gCXsaL0r9dOahw_JoZ7e7Q6z2QE,295
10
10
  adaptive_sdk/external/constants.py,sha256=HaEbIoGG6u0a_tr8_NdNmM-8ApTG1Q0n2G5aGF4Z_nA,280
11
11
  adaptive_sdk/external/requests_journal.py,sha256=nJG2CIhl85dkWHibOyvsmcNh_YDVtoyj0PbyLuOYFT4,4686
12
- adaptive_sdk/external/reward_client.py,sha256=u_kAiASqbOZL7ZIW8xjoSCeZuVEQnWfdeWBNqdSvcM0,6638
12
+ adaptive_sdk/external/reward_client.py,sha256=TSVdi437McUkMModDQV6ZswduaDmmG1Bvkz_jWYTTj4,7324
13
13
  adaptive_sdk/external/reward_server.py,sha256=yT8vqAEIoaq8nFZYaku5IoK0_7fX9uX_dfF1CxcDKnA,7488
14
14
  adaptive_sdk/external/reward_types.py,sha256=aZmTolT0OjgObo-64zJkarUKOY4RdxHnsQt8AKAaq1w,1710
15
15
  adaptive_sdk/external/websocket_utils.py,sha256=QN-K1IRbqe1LdQTz6vXhVgn-R2SjOB80NjGD2w_LaAo,1284
16
- adaptive_sdk/graphql_client/__init__.py,sha256=0Hiaxqe0xTLNz1UAoDGLC4Y5-SXd6a7wZobuSDzpF-Y,20001
16
+ adaptive_sdk/graphql_client/__init__.py,sha256=mlVK5fr6Sazx2vMUsX73SU1cd2-kAFgg1fKCiliYirk,20995
17
17
  adaptive_sdk/graphql_client/add_external_model.py,sha256=9VpQHlJMm5t_Ja_SX2MkYcSG1IQpem6mrdXMfNTa1oo,352
18
18
  adaptive_sdk/graphql_client/add_hf_model.py,sha256=aC2IcYftepe28Hi01Kg0w3A7bjKrStWasx6aXiqghJU,312
19
19
  adaptive_sdk/graphql_client/add_model.py,sha256=Uyhpxkziz1Pv2S7Q0wOaKGK4krjmEf2PeLK0yEs89Hs,461
20
20
  adaptive_sdk/graphql_client/add_remote_env.py,sha256=X94F94tnMzuX9TC_Ieowngw35gJxnKL2YST2sqEJ7CY,328
21
- adaptive_sdk/graphql_client/async_base_client_open_telemetry.py,sha256=FA5yIdgoq2Geq8fzQaG7UNXCwKXPPGi3bf7xVRhU5t0,19773
22
- adaptive_sdk/graphql_client/async_client.py,sha256=MEI7X7vLB_-j6v03CtT2uOnO65JnwnDdhGwz0DVvUoo,112309
21
+ adaptive_sdk/graphql_client/async_base_client_open_telemetry.py,sha256=XSRJGEcyfWnFjrDz4Un6xfQWOxr7jWto1vYjbYTQeo0,19761
22
+ adaptive_sdk/graphql_client/async_client.py,sha256=LvX0-wOVVh7lhyQUzbY9jbeEuyjir8RNharyLXpXmi4,115656
23
23
  adaptive_sdk/graphql_client/attach_model_to_use_case.py,sha256=WyERM4wxKrUS1u9VZ3FUasZu5AVSbRswzy9jmxssTFM,361
24
- adaptive_sdk/graphql_client/base_client_open_telemetry.py,sha256=j_JEzPlgRdqyHgjwWqo85KkpfdaPGUgiyjkSqQRHyFk,9410
24
+ adaptive_sdk/graphql_client/base_client_open_telemetry.py,sha256=IV96gRr5FuH-dWMU5PBvQhTwEsV7udsXU-Dyh-Mx-4k,9398
25
25
  adaptive_sdk/graphql_client/base_model.py,sha256=2xxKA4sIdlGPIezw06XP9bseSxBURU7nivgt_gL44iA,621
26
- adaptive_sdk/graphql_client/base_operation.py,sha256=2DuKKDMdshl-t6mgvN6RYjZMdZ3sVzl5IlZw7xThSn4,4641
26
+ adaptive_sdk/graphql_client/base_operation.py,sha256=aooq1M4r79cvMoganZ2RvQ3-v0io22fGLOVfl3UBqPQ,4635
27
27
  adaptive_sdk/graphql_client/cancel_ab_campaign.py,sha256=JAEpmedz0jOu90U3KR0PYCMAhf2_E6h6WOT30HSE91k,176
28
28
  adaptive_sdk/graphql_client/cancel_job.py,sha256=3ZLoqrULi1mp5A5i4rD-gXliKhD8038IPfvCNBg0dPs,291
29
- adaptive_sdk/graphql_client/client.py,sha256=j4w8k6hZ4YH9A8HA0AJcpQMiV0j4mZ3hUwKVwj1zYtk,111400
29
+ adaptive_sdk/graphql_client/client.py,sha256=P9BgiDKnfU5GOTAQ0MoZpnqLWPzxWnvfvlIzA8OKVV4,114747
30
30
  adaptive_sdk/graphql_client/create_ab_campaign.py,sha256=___2iFSGnWKkjXz_MfxKUxi1EoQcSBv9AX8S7YoUeVw,374
31
31
  adaptive_sdk/graphql_client/create_custom_recipe.py,sha256=eIVLDHbdFG2qWjoZBLC3Xs40Fjy6L-u6wrABV5ibUxo,382
32
32
  adaptive_sdk/graphql_client/create_grader.py,sha256=H6xdf7Zn7JkOehINWMkULH3ObASrtvPLKaX-BjW-3zw,321
@@ -38,10 +38,10 @@ adaptive_sdk/graphql_client/create_role.py,sha256=6aTdNOZxavMyjkH-g01uYOZgpjYWcA
38
38
  adaptive_sdk/graphql_client/create_team.py,sha256=6Alt1ralE1-Xvp2wrEaLUHMW5RtiFqz2fIsUYE_2LbM,370
39
39
  adaptive_sdk/graphql_client/create_use_case.py,sha256=sekD76jWCo3zNCfMsBGhVYfNSIK4JPPBz9066BOt49g,332
40
40
  adaptive_sdk/graphql_client/create_user.py,sha256=gurD0kZgncXt1HBr7Oo5AkK5ubqFKpJvaR1rn506gHo,301
41
- adaptive_sdk/graphql_client/custom_fields.py,sha256=XpyLzICGJQWahfIhZtLHpSH8GgU-4XVYB286SbIq3qg,95761
42
- adaptive_sdk/graphql_client/custom_mutations.py,sha256=Hefsjk0UqSRYPrWg7tLNExV7wa0qQSR-nNZAFNndrU0,24945
43
- adaptive_sdk/graphql_client/custom_queries.py,sha256=E3j7r3qrA37qPOoTDYSNOHVj2gOWYvfXSE7FAozmr84,16850
44
- adaptive_sdk/graphql_client/custom_typing_fields.py,sha256=cU1PgxbzDQiM1lBJyB4C1IzNirxJS_NJRbHqi_PLM50,18935
41
+ adaptive_sdk/graphql_client/custom_fields.py,sha256=T5QG7zjX6URKy1lLkmbfjCNCkTU3pbqHn_3MzuYE3AA,98874
42
+ adaptive_sdk/graphql_client/custom_mutations.py,sha256=meo96-odIhk_NoFL_uDj78xguLOD-_DIYW2bj6ilvII,25341
43
+ adaptive_sdk/graphql_client/custom_queries.py,sha256=QsFX6ovy1W9nUuCD0-wo9GhiJACl9yQGCifHnKIs6Bo,17359
44
+ adaptive_sdk/graphql_client/custom_typing_fields.py,sha256=aS7Oj2z-oLcIqMZrVNNM9wVxXQK6rYSTF1GaXAnFVr4,20608
45
45
  adaptive_sdk/graphql_client/delete_custom_recipe.py,sha256=tsWGqherJyVe5OBFG8QCG5GUdlX8s-nd8MSiMAXfSqk,183
46
46
  adaptive_sdk/graphql_client/delete_dataset.py,sha256=k5enUd6zO89RmA349eVzYajtZigWjOdDdPTcUzTFahI,167
47
47
  adaptive_sdk/graphql_client/delete_grader.py,sha256=U9r26BtvOaThzyf0VGouvkuEaJ1wJGPGjbHluSDWBsc,350
@@ -57,13 +57,13 @@ adaptive_sdk/graphql_client/describe_metric_admin.py,sha256=_SKKwnFhZnbOTT97elEr
57
57
  adaptive_sdk/graphql_client/describe_model.py,sha256=UnsOnAyBjNsnkJaS4q5uwkSSvInHwRqUj3XqAoO0yO4,434
58
58
  adaptive_sdk/graphql_client/describe_model_admin.py,sha256=XUt_CBSMw1HRleUEWZn2snYt2BNSux_siqrVlwtqH-w,484
59
59
  adaptive_sdk/graphql_client/describe_use_case.py,sha256=WW0QkTmdfggN8YBUNGi8ShrP_fr2jXPR6Fer6jlQxu0,353
60
- adaptive_sdk/graphql_client/enums.py,sha256=lEBc54SWx__kz20yhh8CpAWAL_-BaB4ez1iQU53vYW4,4794
60
+ adaptive_sdk/graphql_client/enums.py,sha256=NykoTVLryXuy6pbHDRLfAN3m7EUi8B2Evbgp41Em7sQ,5168
61
61
  adaptive_sdk/graphql_client/exceptions.py,sha256=NiC6v-5S7aRDlvQTcHH3K5KvxWvk-c-PkIQQHkipTB8,2268
62
- adaptive_sdk/graphql_client/fragments.py,sha256=zkGLGnbMdoc9vO5PJL-iDnMtIKetNx-8vRbSl16ExRk,20431
62
+ adaptive_sdk/graphql_client/fragments.py,sha256=_F3IgC3lJN4erM5Ory1bnvnLbzjZ9Z1Xfv4jdw8dJEo,22046
63
63
  adaptive_sdk/graphql_client/get_custom_recipe.py,sha256=7qxBZGQTqpc69k-NwzgFctaHWaRz0tHl7YlVSsEad6U,383
64
64
  adaptive_sdk/graphql_client/get_grader.py,sha256=kubHDBtUcq6mZtUR5_Of0QbjnGUPSYuavF3_xwmwbY8,233
65
65
  adaptive_sdk/graphql_client/get_judge.py,sha256=urEnHW3XfURi5GAFBPfbqzOZGQDxgsGRA6nZmUKmoMA,224
66
- adaptive_sdk/graphql_client/input_types.py,sha256=IjFiu3NZeDpcMXcLbXgEgpo-wpOydKyJ5gWQqMnRmQQ,19822
66
+ adaptive_sdk/graphql_client/input_types.py,sha256=FLa_O8WmkLbTUma7BEaLg5Epe39Ap5cnGBhc6Y_jAuw,20411
67
67
  adaptive_sdk/graphql_client/link_metric.py,sha256=EDH67ckBzzc6MYIGfsmgZRBnjqxLsCGwFUaFMXPEsBY,327
68
68
  adaptive_sdk/graphql_client/list_ab_campaigns.py,sha256=SIbU6I2OQkNHt0Gw6YStoiiwJHUk2rfXnpoGLzrFjxc,379
69
69
  adaptive_sdk/graphql_client/list_compute_pools.py,sha256=4Qli5Foxm3jztbUAL5gbwqtcrElwwlC4LGJMOMBI6Cc,782
@@ -101,17 +101,19 @@ adaptive_sdk/graphql_client/update_model_compute_config.py,sha256=0RtrzzfuMrt-i6
101
101
  adaptive_sdk/graphql_client/update_user.py,sha256=E6vtj177-Hx1uUUo8MiSrynULXrnxtJma3Kq69FPC6M,897
102
102
  adaptive_sdk/input_types/__init__.py,sha256=SVy4Ks4pm1M32LZ_yHN2itlzNW0g2Kg3b3_ibNLI-7s,806
103
103
  adaptive_sdk/input_types/typed_dicts.py,sha256=0HWbJ6nY4zrNCsMg6MynkAO2VUr_7Iu9u9F1Y-71gWE,4942
104
+ adaptive_sdk/output_types/__init__.py,sha256=gIfALHcp-hOt8J7bFO7KAYbJc0JXtp7d_vVBqD0zPLE,136
105
+ adaptive_sdk/output_types/job_wrapper.py,sha256=dXdS33TKLHuTRAVq5LFvA7bsUidsWuhE-NDbq5k59g0,4247
104
106
  adaptive_sdk/resources/__init__.py,sha256=-cHNzI-hg1u-GGe-fVvV_L4JOgat2zJuKnC3E2In-iw,1326
105
107
  adaptive_sdk/resources/abtests.py,sha256=9PCPjxuWwY9ec88ewnq54gkoELq5U5iaBmHhzLCAsFU,7698
106
108
  adaptive_sdk/resources/base_resource.py,sha256=D9adWSFxiDB7chVstDuBu1jcuXkE71UQJexnWENpC4A,1497
107
109
  adaptive_sdk/resources/chat.py,sha256=k-jh_IZfKwqoWNN2P5BhAM3P_f5HLybVZp35pUadwso,11954
108
110
  adaptive_sdk/resources/compute_pools.py,sha256=4eHP8FMkZOsGPjZ-qBvda2PunA6GMyvvJTHnhAEGTo4,938
109
- adaptive_sdk/resources/datasets.py,sha256=G7aq9aJmNu-ZPB3d2_bDaIo_Na3mjw2Bqn6SMweMRWY,14258
111
+ adaptive_sdk/resources/datasets.py,sha256=TjYkU4eKY-Si5ffQhMkX3sIEj5Ybz1U3ksOJs4Fa6BA,14622
110
112
  adaptive_sdk/resources/embeddings.py,sha256=-ov_EChHU6PJJOJRtDlCo4sYyr9hwyvRjnBhub8QNFg,3922
111
113
  adaptive_sdk/resources/feedback.py,sha256=lujqwFIhxi6iovL8JWL05Kr-gkzR4QEwUXZbTx33raA,14116
112
114
  adaptive_sdk/resources/graders.py,sha256=ekQQ5fqmLZpZHeLr6iUm6m45wDevoDJdj3mG-axR-m8,29014
113
115
  adaptive_sdk/resources/interactions.py,sha256=9A0aKyfE5dhMj-rj6NOiF7kxAl89SXksFsRJXXjPGK8,10810
114
- adaptive_sdk/resources/jobs.py,sha256=WpgB7S5EFKFt3ktVfGaRj_MrtC5Wh_VZHtNjSgDRvOo,4429
116
+ adaptive_sdk/resources/jobs.py,sha256=dN19HgOvGEq9O5hhgDZlWhi15noXo4qHLT_fd-qjrAU,5318
115
117
  adaptive_sdk/resources/models.py,sha256=krQbfMnVkjNqXfPG-8irH_xlloDpFpQiqYsbED3-8z8,18591
116
118
  adaptive_sdk/resources/permissions.py,sha256=ckO-oacWkvgcwXBK5iW_8qaK-g0SHXpEEy1qZy5lrB0,1053
117
119
  adaptive_sdk/resources/recipes.py,sha256=f4Q_noEAjx-LGkgzLOU6UtgFTK75cQu0cYBakNjUCv0,13224
@@ -122,6 +124,6 @@ adaptive_sdk/resources/users.py,sha256=SoGWwdDCdhK4KjYOcAws-ZWlW7Edii7D3Vxfdu-NZ
122
124
  adaptive_sdk/rest/__init__.py,sha256=P9uhkOoc9cgUkJ5MBoV5soPgQWSkvPrTwHzPGX7i5tY,610
123
125
  adaptive_sdk/rest/base_model.py,sha256=P06TNhnqXa6JEje_B_94vAa5zqPYIVxMZAp6aZ4d80U,516
124
126
  adaptive_sdk/rest/rest_types.py,sha256=aSN7901_1goByBEl7Ka6onU2ia-_RhlmtH9suFkWkic,8859
125
- adaptive_sdk-0.1.6.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
126
- adaptive_sdk-0.1.6.dist-info/METADATA,sha256=bpycg-FYRxcPfaEUiZADXeW24AWtYKqCZvtCWmxNJdo,1446
127
- adaptive_sdk-0.1.6.dist-info/RECORD,,
127
+ adaptive_sdk-0.1.8.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
128
+ adaptive_sdk-0.1.8.dist-info/METADATA,sha256=stv3nHM_GV-XMi8mtWvzxBw9Of8_fMLFU71wmBoTB-E,1446
129
+ adaptive_sdk-0.1.8.dist-info/RECORD,,