adaptive-sdk 0.1.2__py3-none-any.whl → 0.1.3__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.
@@ -1,8 +1,8 @@
1
1
  from typing import Any, Dict, Optional
2
2
  from . import CompletionGroupBy
3
- from .custom_fields import AbcampaignFields, CompletionConnectionFields, CompletionFields, CompletionGroupDataConnectionFields, ComputePoolFields, CustomRecipeFields, DatasetFields, GraderFields, JobArtifactFields, JobConnectionFields, JobFields, JudgeFields, MetaObjectFields, MetricFields, ModelFields, PartitionFields, PrebuiltConfigDefinitionFields, PrebuiltCriteriaFields, RemoteConfigOutputFields, RemoteEnvFields, RoleFields, SystemPromptTemplateFields, TeamFields, ToolProviderFields, UsageAggregateItemFields, UsageAggregatePerUseCaseItemFields, UseCaseFields, UserFields
3
+ from .custom_fields import AbcampaignFields, CompletionConnectionFields, CompletionFields, CompletionGroupDataConnectionFields, ComputePoolFields, ContractFields, CustomRecipeFields, DatasetFields, GlobalUsageFields, GraderFields, HarmonyGroupFields, JobArtifactFields, JobConnectionFields, JobFields, JudgeFields, MetaObjectFields, MetricFields, ModelFields, PrebuiltConfigDefinitionFields, PrebuiltCriteriaFields, RemoteConfigOutputFields, RemoteEnvFields, RoleFields, SystemPromptTemplateFields, TeamFields, ToolProviderFields, UsageAggregateItemFields, UsageAggregatePerUseCaseItemFields, UseCaseFields, UserFields
4
4
  from .custom_typing_fields import GraphQLField
5
- from .input_types import AbCampaignFilter, ArtifactFilter, CursorPageInput, CustomRecipeFilterInput, FeedbackFilterInput, ListCompletionsFilterInput, ListJobsFilterInput, ModelFilter, OrderPair, UsageFilterInput, UsagePerUseCaseFilterInput, UseCaseFilter
5
+ from .input_types import AbCampaignFilter, ArtifactFilter, CursorPageInput, CustomRecipeFilterInput, FeedbackFilterInput, GlobalUsageFilterInput, ListCompletionsFilterInput, ListJobsFilterInput, ModelFilter, OrderPair, UsageFilterInput, UsagePerUseCaseFilterInput, UseCaseFilter
6
6
 
7
7
  class Query:
8
8
  """@private"""
@@ -19,6 +19,10 @@ class Query:
19
19
  cleared_arguments = {key: value for (key, value) in arguments.items() if value['value'] is not None}
20
20
  return AbcampaignFields(field_name='abCampaign', arguments=cleared_arguments)
21
21
 
22
+ @classmethod
23
+ def contract(cls) -> ContractFields:
24
+ return ContractFields(field_name='contract')
25
+
22
26
  @classmethod
23
27
  def custom_recipes(cls, use_case: str, filter: CustomRecipeFilterInput) -> CustomRecipeFields:
24
28
  arguments: Dict[str, Dict[str, Any]] = {'useCase': {'type': 'IdOrKey!', 'value': use_case}, 'filter': {'type': 'CustomRecipeFilterInput!', 'value': filter}}
@@ -79,6 +83,12 @@ class Query:
79
83
  cleared_arguments = {key: value for (key, value) in arguments.items() if value['value'] is not None}
80
84
  return UsageAggregatePerUseCaseItemFields(field_name='modelUsageByUseCase', arguments=cleared_arguments)
81
85
 
86
+ @classmethod
87
+ def global_usage(cls, filter: GlobalUsageFilterInput) -> GlobalUsageFields:
88
+ arguments: Dict[str, Dict[str, Any]] = {'filter': {'type': 'GlobalUsageFilterInput!', 'value': filter}}
89
+ cleared_arguments = {key: value for (key, value) in arguments.items() if value['value'] is not None}
90
+ return GlobalUsageFields(field_name='globalUsage', arguments=cleared_arguments)
91
+
82
92
  @classmethod
83
93
  def system_prompt_templates(cls) -> SystemPromptTemplateFields:
84
94
  return SystemPromptTemplateFields(field_name='systemPromptTemplates')
@@ -118,12 +128,12 @@ class Query:
118
128
  return ModelFields(field_name='model', arguments=cleared_arguments)
119
129
 
120
130
  @classmethod
121
- def all_partitions(cls) -> PartitionFields:
122
- return PartitionFields(field_name='allPartitions')
131
+ def all_harmony_groups(cls) -> HarmonyGroupFields:
132
+ return HarmonyGroupFields(field_name='allHarmonyGroups')
123
133
 
124
134
  @classmethod
125
- def partitions(cls) -> PartitionFields:
126
- return PartitionFields(field_name='partitions')
135
+ def harmony_groups(cls) -> HarmonyGroupFields:
136
+ return HarmonyGroupFields(field_name='harmonyGroups')
127
137
 
128
138
  @classmethod
129
139
  def compute_pools(cls) -> ComputePoolFields:
@@ -106,6 +106,13 @@ class BatchInferenceJobStageOutputGraphQLField(GraphQLField):
106
106
  self._alias = alias
107
107
  return self
108
108
 
109
+ class BillingUsageGraphQLField(GraphQLField):
110
+ """@private"""
111
+
112
+ def alias(self, alias: str) -> 'BillingUsageGraphQLField':
113
+ self._alias = alias
114
+ return self
115
+
109
116
  class ChatMessageGraphQLField(GraphQLField):
110
117
  """@private"""
111
118
 
@@ -211,6 +218,13 @@ class ComputePoolGraphQLField(GraphQLField):
211
218
  self._alias = alias
212
219
  return self
213
220
 
221
+ class ContractGraphQLField(GraphQLField):
222
+ """@private"""
223
+
224
+ def alias(self, alias: str) -> 'ContractGraphQLField':
225
+ self._alias = alias
226
+ return self
227
+
214
228
  class CustomConfigOutputGraphQLField(GraphQLField):
215
229
  """@private"""
216
230
 
@@ -348,6 +362,13 @@ class EvaluationResultGraphQLField(GraphQLField):
348
362
  self._alias = alias
349
363
  return self
350
364
 
365
+ class GlobalUsageGraphQLField(GraphQLField):
366
+ """@private"""
367
+
368
+ def alias(self, alias: str) -> 'GlobalUsageGraphQLField':
369
+ self._alias = alias
370
+ return self
371
+
351
372
  class GpuAllocationGraphQLField(GraphQLField):
352
373
  """@private"""
353
374
 
@@ -394,6 +415,13 @@ class GuidelinesTrainingParamsOutputGraphQLField(GraphQLField):
394
415
  self._alias = alias
395
416
  return self
396
417
 
418
+ class HarmonyGroupGraphQLField(GraphQLField):
419
+ """@private"""
420
+
421
+ def alias(self, alias: str) -> 'HarmonyGroupGraphQLField':
422
+ self._alias = alias
423
+ return self
424
+
397
425
  class InteractionOutputGraphQLField(GraphQLField):
398
426
  """@private"""
399
427
 
@@ -605,13 +633,6 @@ class PageInfoGraphQLField(GraphQLField):
605
633
  self._alias = alias
606
634
  return self
607
635
 
608
- class PartitionGraphQLField(GraphQLField):
609
- """@private"""
610
-
611
- def alias(self, alias: str) -> 'PartitionGraphQLField':
612
- self._alias = alias
613
- return self
614
-
615
636
  class PpotrainingParamsOutputGraphQLField(GraphQLField):
616
637
  """@private"""
617
638
 
@@ -908,6 +929,20 @@ class UsageAggregatePerUseCaseItemGraphQLField(GraphQLField):
908
929
  self._alias = alias
909
930
  return self
910
931
 
932
+ class UsageStatsGraphQLField(GraphQLField):
933
+ """@private"""
934
+
935
+ def alias(self, alias: str) -> 'UsageStatsGraphQLField':
936
+ self._alias = alias
937
+ return self
938
+
939
+ class UsageStatsByModelGraphQLField(GraphQLField):
940
+ """@private"""
941
+
942
+ def alias(self, alias: str) -> 'UsageStatsByModelGraphQLField':
943
+ self._alias = alias
944
+ return self
945
+
911
946
  class UseCaseGraphQLField(GraphQLField):
912
947
  """@private"""
913
948
 
@@ -0,0 +1,12 @@
1
+ from typing import Optional
2
+ from .base_model import BaseModel
3
+ from .fragments import JobData
4
+
5
+ class DescribeJob(BaseModel):
6
+ """@public"""
7
+ job: Optional['DescribeJobJob']
8
+
9
+ class DescribeJobJob(JobData):
10
+ """@public"""
11
+ pass
12
+ DescribeJob.model_rebuild()
@@ -11,6 +11,10 @@ class AuthProviderKind(str, Enum):
11
11
  """@public"""
12
12
  OIDC = 'OIDC'
13
13
 
14
+ class BillingCycle(str, Enum):
15
+ """@public"""
16
+ YEARLY = 'YEARLY'
17
+
14
18
  class CompletionGroupBy(str, Enum):
15
19
  """@public"""
16
20
  MODEL = 'MODEL'
@@ -50,6 +54,7 @@ class DatasetSource(str, Enum):
50
54
 
51
55
  class DateBucketUnit(str, Enum):
52
56
  """@public"""
57
+ HOUR = 'HOUR'
53
58
  DAY = 'DAY'
54
59
  WEEK = 'WEEK'
55
60
  MONTH = 'MONTH'
@@ -97,6 +102,11 @@ class GraderTypeEnum(str, Enum):
97
102
  REMOTE = 'REMOTE'
98
103
  CUSTOM = 'CUSTOM'
99
104
 
105
+ class HarmonyStatus(str, Enum):
106
+ """@public"""
107
+ ONLINE = 'ONLINE'
108
+ OFFLINE = 'OFFLINE'
109
+
100
110
  class JobArtifactKind(str, Enum):
101
111
  """@public"""
102
112
  EVALUATION = 'EVALUATION'
@@ -186,11 +196,6 @@ class OpenAIModel(str, Enum):
186
196
  GPT5_NANO = 'GPT5_NANO'
187
197
  GPT41_MINI = 'GPT41_MINI'
188
198
 
189
- class PartitionStatus(str, Enum):
190
- """@public"""
191
- ONLINE = 'ONLINE'
192
- OFFLINE = 'OFFLINE'
193
-
194
199
  class PrebuiltCriteriaKey(str, Enum):
195
200
  """@public"""
196
201
  FAITHFULNESS = 'FAITHFULNESS'
@@ -234,6 +239,7 @@ class TimeseriesInterval(str, Enum):
234
239
  MONTH = 'MONTH'
235
240
  QUARTER = 'QUARTER'
236
241
  YEAR = 'YEAR'
242
+ MILLENNIUM = 'MILLENNIUM'
237
243
 
238
244
  class TrainingJobStatus(str, Enum):
239
245
  """@public"""
@@ -1,7 +1,7 @@
1
1
  from typing import Annotated, Any, List, Literal, Optional, Union
2
2
  from pydantic import Field
3
3
  from .base_model import BaseModel
4
- from .enums import AbcampaignStatus, CompletionSource, CompletionSourceOutput, DatasetKind, FeedbackType, GraderTypeEnum, JobArtifactKind, JobKind, JobStatus, JobStatusOutput, JudgeCapability, MetricKind, MetricScoringType, ModelKindFilter, ModelOnline, PartitionStatus, PrebuiltCriteriaKey, ProviderName, RemoteEnvStatus
4
+ from .enums import AbcampaignStatus, CompletionSource, CompletionSourceOutput, DatasetKind, FeedbackType, GraderTypeEnum, HarmonyStatus, JobArtifactKind, JobKind, JobStatus, JobStatusOutput, JudgeCapability, MetricKind, MetricScoringType, ModelKindFilter, ModelOnline, PrebuiltCriteriaKey, ProviderName, RemoteEnvStatus
5
5
 
6
6
  class AbCampaignCreateData(BaseModel):
7
7
  """@public"""
@@ -330,6 +330,27 @@ class GraderDataMetric(MetricData):
330
330
  """@public"""
331
331
  pass
332
332
 
333
+ class HarmonyGroupData(BaseModel):
334
+ """@public"""
335
+ id: Any
336
+ key: str
337
+ compute_pool: Optional['HarmonyGroupDataComputePool'] = Field(alias='computePool')
338
+ status: HarmonyStatus
339
+ url: str
340
+ world_size: int = Field(alias='worldSize')
341
+ gpu_types: str = Field(alias='gpuTypes')
342
+ created_at: int = Field(alias='createdAt')
343
+ online_models: List['HarmonyGroupDataOnlineModels'] = Field(alias='onlineModels')
344
+
345
+ class HarmonyGroupDataComputePool(BaseModel):
346
+ """@public"""
347
+ key: str
348
+ name: str
349
+
350
+ class HarmonyGroupDataOnlineModels(ModelData):
351
+ """@public"""
352
+ pass
353
+
333
354
  class JobData(BaseModel):
334
355
  """@public"""
335
356
  id: Any
@@ -566,27 +587,6 @@ class ModelServiceDataModelBackbone(ModelData):
566
587
  """@public"""
567
588
  pass
568
589
 
569
- class PartitionData(BaseModel):
570
- """@public"""
571
- id: Any
572
- key: str
573
- compute_pool: Optional['PartitionDataComputePool'] = Field(alias='computePool')
574
- status: PartitionStatus
575
- url: str
576
- world_size: int = Field(alias='worldSize')
577
- gpu_types: str = Field(alias='gpuTypes')
578
- created_at: int = Field(alias='createdAt')
579
- online_models: List['PartitionDataOnlineModels'] = Field(alias='onlineModels')
580
-
581
- class PartitionDataComputePool(BaseModel):
582
- """@public"""
583
- key: str
584
- name: str
585
-
586
- class PartitionDataOnlineModels(ModelData):
587
- """@public"""
588
- pass
589
-
590
590
  class RemoteEnvData(BaseModel):
591
591
  """@public"""
592
592
  id: Any
@@ -677,6 +677,7 @@ CustomRecipeData.model_rebuild()
677
677
  DatasetData.model_rebuild()
678
678
  ModelData.model_rebuild()
679
679
  GraderData.model_rebuild()
680
+ HarmonyGroupData.model_rebuild()
680
681
  JobData.model_rebuild()
681
682
  JobStageOutputData.model_rebuild()
682
683
  JudgeData.model_rebuild()
@@ -685,7 +686,6 @@ MetricDataAdmin.model_rebuild()
685
686
  MetricWithContextData.model_rebuild()
686
687
  ModelDataAdmin.model_rebuild()
687
688
  ModelServiceData.model_rebuild()
688
- PartitionData.model_rebuild()
689
689
  RemoteEnvData.model_rebuild()
690
690
  UseCaseData.model_rebuild()
691
691
  UserData.model_rebuild()
@@ -1,10 +1,11 @@
1
+ from typing import Optional
1
2
  from pydantic import Field
2
3
  from .base_model import BaseModel
3
4
  from .fragments import CustomRecipeData
4
5
 
5
6
  class GetCustomRecipe(BaseModel):
6
7
  """@public"""
7
- custom_recipe: 'GetCustomRecipeCustomRecipe' = Field(alias='customRecipe')
8
+ custom_recipe: Optional['GetCustomRecipeCustomRecipe'] = Field(alias='customRecipe')
8
9
 
9
10
  class GetCustomRecipeCustomRecipe(CustomRecipeData):
10
11
  """@public"""
@@ -160,6 +160,12 @@ class FeedbackUpdateInput(BaseModel):
160
160
  value: Optional[Any] = None
161
161
  details: Optional[str] = None
162
162
 
163
+ class GlobalUsageFilterInput(BaseModel):
164
+ """@private"""
165
+ timerange: Optional['TimeRange'] = None
166
+ interval: DateBucketUnit
167
+ timezone: Optional[str] = None
168
+
163
169
  class GoogleProviderDataInput(BaseModel):
164
170
  """@private"""
165
171
  api_key: str = Field(alias='apiKey')
@@ -464,13 +470,14 @@ class UpdateToolProviderInput(BaseModel):
464
470
  class UsageFilterInput(BaseModel):
465
471
  """@private"""
466
472
  model_id: Any = Field(alias='modelId')
467
- timerange: 'TimeRange'
473
+ timerange: Optional['TimeRange'] = None
468
474
  unit: DateBucketUnit
475
+ timezone: Optional[str] = None
469
476
 
470
477
  class UsagePerUseCaseFilterInput(BaseModel):
471
478
  """@private"""
472
479
  model_id: Any = Field(alias='modelId')
473
- timerange: 'TimeRange'
480
+ timerange: Optional['TimeRange'] = None
474
481
 
475
482
  class UseCaseCreate(BaseModel):
476
483
  """@private"""
@@ -537,6 +544,7 @@ CustomRecipeFilterInput.model_rebuild()
537
544
  DatasetGenerate.model_rebuild()
538
545
  DatasetGenerationConfig.model_rebuild()
539
546
  FeedbackFilterInput.model_rebuild()
547
+ GlobalUsageFilterInput.model_rebuild()
540
548
  GraderConfigInput.model_rebuild()
541
549
  GraderCreateInput.model_rebuild()
542
550
  GraderUpdateInput.model_rebuild()
@@ -2,7 +2,7 @@ from typing import Any, List
2
2
  from pydantic import Field
3
3
  from .base_model import BaseModel
4
4
  from .enums import ComputePoolCapability
5
- from .fragments import PartitionData
5
+ from .fragments import HarmonyGroupData
6
6
 
7
7
  class ListComputePools(BaseModel):
8
8
  """@public"""
@@ -15,9 +15,9 @@ class ListComputePoolsComputePools(BaseModel):
15
15
  name: str
16
16
  created_at: int = Field(alias='createdAt')
17
17
  capabilities: List[ComputePoolCapability]
18
- partitions: List['ListComputePoolsComputePoolsPartitions']
18
+ harmony_groups: List['ListComputePoolsComputePoolsHarmonyGroups'] = Field(alias='harmonyGroups')
19
19
 
20
- class ListComputePoolsComputePoolsPartitions(PartitionData):
20
+ class ListComputePoolsComputePoolsHarmonyGroups(HarmonyGroupData):
21
21
  """@public"""
22
22
  pass
23
23
  ListComputePools.model_rebuild()
@@ -0,0 +1,13 @@
1
+ from typing import List
2
+ from pydantic import Field
3
+ from .base_model import BaseModel
4
+ from .fragments import HarmonyGroupData
5
+
6
+ class ListHarmonyGroups(BaseModel):
7
+ """@public"""
8
+ harmony_groups: List['ListHarmonyGroupsHarmonyGroups'] = Field(alias='harmonyGroups')
9
+
10
+ class ListHarmonyGroupsHarmonyGroups(HarmonyGroupData):
11
+ """@public"""
12
+ pass
13
+ ListHarmonyGroups.model_rebuild()
@@ -26,6 +26,9 @@ class Jobs(SyncAPIResource, UseCaseResource): # type: ignore[misc]
26
26
  SyncAPIResource.__init__(self, client)
27
27
  UseCaseResource.__init__(self, client)
28
28
 
29
+ def get(self, job_id: str) -> JobData | None:
30
+ return self._gql_client.describe_job(id=job_id).job
31
+
29
32
  def list(
30
33
  self,
31
34
  first: int | None = 100,
@@ -52,13 +55,11 @@ class Jobs(SyncAPIResource, UseCaseResource): # type: ignore[misc]
52
55
  useCase=use_case,
53
56
  kind=[JobKind(k) for k in kind] if kind else None,
54
57
  )
55
- return self._gql_client.list_jobs(
56
- page=page, filter=validated_filter, order=[]
57
- ).jobs
58
+ return self._gql_client.list_jobs(page=page, filter=validated_filter, order=[]).jobs
58
59
 
59
- def create(
60
+ def run(
60
61
  self,
61
- recipe: str,
62
+ recipe_key: str,
62
63
  args: dict[str, Any],
63
64
  num_gpus: int,
64
65
  use_case: str | None = None,
@@ -66,7 +67,7 @@ class Jobs(SyncAPIResource, UseCaseResource): # type: ignore[misc]
66
67
  ) -> JobData:
67
68
  return self._gql_client.create_job(
68
69
  input=JobInput(
69
- recipe=recipe,
70
+ recipe=recipe_key,
70
71
  args=args,
71
72
  useCase=self.use_case_key(use_case),
72
73
  computePool=compute_pool,
@@ -74,7 +75,7 @@ class Jobs(SyncAPIResource, UseCaseResource): # type: ignore[misc]
74
75
  )
75
76
  ).create_job
76
77
 
77
- def cancel_custom(self, job_id: str) -> JobData:
78
+ def cancel(self, job_id: str) -> JobData:
78
79
  return self._gql_client.cancel_job(job_id=job_id).cancel_job
79
80
 
80
81
 
@@ -87,6 +88,9 @@ class AsyncJobs(AsyncAPIResource, UseCaseResource): # type: ignore[misc]
87
88
  AsyncAPIResource.__init__(self, client)
88
89
  UseCaseResource.__init__(self, client)
89
90
 
91
+ async def get(self, job_id: str) -> JobData | None:
92
+ return (await self._gql_client.describe_job(id=job_id)).job
93
+
90
94
  async def list(
91
95
  self,
92
96
  first: int | None = 100,
@@ -112,13 +116,11 @@ class AsyncJobs(AsyncAPIResource, UseCaseResource): # type: ignore[misc]
112
116
  useCase=self.use_case_key(use_case),
113
117
  kind=[JobKind[k] for k in kind] if kind else None,
114
118
  )
115
- return (
116
- await self._gql_client.list_jobs(page=page, filter=validated_filter)
117
- ).jobs
119
+ return (await self._gql_client.list_jobs(page=page, filter=validated_filter)).jobs
118
120
 
119
- async def create_custom(
121
+ async def run(
120
122
  self,
121
- recipe: str,
123
+ recipe_key: str,
122
124
  args: dict[str, Any],
123
125
  num_gpus: int,
124
126
  use_case: str | None = None,
@@ -127,7 +129,7 @@ class AsyncJobs(AsyncAPIResource, UseCaseResource): # type: ignore[misc]
127
129
  return (
128
130
  await self._gql_client.create_job(
129
131
  input=JobInput(
130
- recipe=recipe,
132
+ recipe=recipe_key,
131
133
  args=args,
132
134
  useCase=self.use_case_key(use_case),
133
135
  computePool=compute_pool,
@@ -136,5 +138,5 @@ class AsyncJobs(AsyncAPIResource, UseCaseResource): # type: ignore[misc]
136
138
  )
137
139
  ).create_job
138
140
 
139
- async def cancel_custom(self, job_id: str) -> JobData:
141
+ async def cancel(self, job_id: str) -> JobData:
140
142
  return (await self._gql_client.cancel_job(job_id=job_id)).cancel_job