intellif-aihub 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.
Potentially problematic release.
This version of intellif-aihub might be problematic. Click here for more details.
- aihub/__init__.py +1 -1
- aihub/models/model_training_platform.py +4 -5
- aihub/models/quota_schedule_management.py +0 -5
- aihub/models/task_center.py +13 -11
- aihub/services/model_training_platform.py +39 -36
- {intellif_aihub-0.1.6.dist-info → intellif_aihub-0.1.8.dist-info}/METADATA +2 -2
- {intellif_aihub-0.1.6.dist-info → intellif_aihub-0.1.8.dist-info}/RECORD +10 -10
- {intellif_aihub-0.1.6.dist-info → intellif_aihub-0.1.8.dist-info}/WHEEL +0 -0
- {intellif_aihub-0.1.6.dist-info → intellif_aihub-0.1.8.dist-info}/licenses/LICENSE +0 -0
- {intellif_aihub-0.1.6.dist-info → intellif_aihub-0.1.8.dist-info}/top_level.txt +0 -0
aihub/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.1.
|
|
1
|
+
__version__ = "0.1.8"
|
|
@@ -93,9 +93,6 @@ class CreateTrainingRequest(BaseModel):
|
|
|
93
93
|
category_id: int = Field(alias="category_id", description="分类ID")
|
|
94
94
|
project_id: int = Field(alias="project_id", description="项目ID")
|
|
95
95
|
estimate_run_time: Optional[int] = Field(None, alias="estimate_run_time", description="预计运行时长(s)")
|
|
96
|
-
is_vip: Optional[bool] = Field(False, alias="is_vip", description="是否vip任务")
|
|
97
|
-
preempt_policy: Optional[PreemptPolicy] = Field(None, alias="preempt_policy", description="抢占策略")
|
|
98
|
-
vip_node_names: Optional[List[str]] = Field(default_factory=list, alias="vip_node_names", description="VIP节点名字")
|
|
99
96
|
is_quota_schedule: Optional[bool] = Field(False, alias="is_quota_schedule", description="是否配额调度")
|
|
100
97
|
|
|
101
98
|
model_config = {"use_enum_values": True}
|
|
@@ -150,10 +147,8 @@ class Training(BaseModel):
|
|
|
150
147
|
finished_at: int = Field(alias="finished_at", description="结束时间")
|
|
151
148
|
started_at: int = Field(alias="started_at", description="开始时间")
|
|
152
149
|
estimate_run_time: int = Field(alias="estimate_run_time", description="预计运行时长")
|
|
153
|
-
is_vip: bool = Field(alias="is_vip", description="是否VIP")
|
|
154
150
|
cluster_partition: str = Field(alias="cluster_partition", description="集群分区")
|
|
155
151
|
preempt_policy: PreemptPolicy = Field(alias="preempt_policy", description="抢占策略")
|
|
156
|
-
vip_node_names: List[str] = Field(alias="vip_node_names", description="VIP节点")
|
|
157
152
|
stop_op_user: Optional[User] = Field(None, alias="stop_op_user", description="停止操作人")
|
|
158
153
|
use_new_log: bool = Field(alias="use_new_log", description="是否使用新版日志")
|
|
159
154
|
is_quota_schedule: bool = Field(alias="is_quota_schedule", description="配额调度")
|
|
@@ -266,3 +261,7 @@ class ListTrainingContainersResponse(BaseModel):
|
|
|
266
261
|
page_size: int = Field(alias="page_size", description="每页数量")
|
|
267
262
|
page_num: int = Field(alias="page_num", description="当前页码")
|
|
268
263
|
data: Optional[List[TrainingContainer]] = Field(default_factory=list, description="训练容器列表")
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
class ListStoragesResponse(BaseModel):
|
|
267
|
+
data: List[Storage] = Field(default_factory=list, description="存储列表")
|
|
@@ -101,9 +101,6 @@ class CreateTaskRequest(BaseModel):
|
|
|
101
101
|
category_id: int = Field(alias="category_id", description="分类ID")
|
|
102
102
|
project_id: int = Field(alias="project_id", description="项目ID")
|
|
103
103
|
estimate_run_time: Optional[int] = Field(None, alias="estimate_run_time", description="预计运行时长(s)")
|
|
104
|
-
is_vip: Optional[bool] = Field(False, alias="is_vip", description="是否VIP")
|
|
105
|
-
preempt_policy: Optional[PreemptPolicy] = Field(None, alias="preempt_policy", description="抢占策略")
|
|
106
|
-
vip_node_names: Optional[List[str]] = Field(default_factory=list, alias="vip_node_names", description="VIP节点名字")
|
|
107
104
|
enable_reschedule: Optional[bool] = Field(False, alias="enable_reschedule", description="启用失败重调度")
|
|
108
105
|
|
|
109
106
|
model_config = {"use_enum_values": True}
|
|
@@ -145,10 +142,8 @@ class Task(BaseModel):
|
|
|
145
142
|
finished_at: int = Field(alias="finished_at", description="结束时间")
|
|
146
143
|
started_at: int = Field(alias="started_at", description="开始时间")
|
|
147
144
|
estimate_run_time: int = Field(alias="estimate_run_time", description="预计运行时长")
|
|
148
|
-
is_vip: bool = Field(alias="is_vip", description="是否vip")
|
|
149
145
|
cluster_partition: str = Field(alias="cluster_partition", description="集群分区")
|
|
150
146
|
preempt_policy: PreemptPolicy = Field(alias="preempt_policy", description="抢占策略")
|
|
151
|
-
vip_node_names: Optional[List[str]] = Field(None, alias="vip_node_names", description="VIP节点")
|
|
152
147
|
stop_op_user: Optional[User] = Field(None, alias="stop_op_user", description="停止操作人")
|
|
153
148
|
use_new_log: bool = Field(alias="use_new_log", description="新版日志")
|
|
154
149
|
is_quota_schedule: bool = Field(alias="is_quota_schedule", description="是否配额调度")
|
aihub/models/task_center.py
CHANGED
|
@@ -50,8 +50,8 @@ class ProjectInfo(BaseModel):
|
|
|
50
50
|
class TaskDetailOtherInfo(BaseModel):
|
|
51
51
|
"""任务详情附加信息"""
|
|
52
52
|
label_project_type: LabelProjectTypeEnum = Field(LabelProjectTypeEnum.IMAGE_CLASSIFICATION, description="标注枚举")
|
|
53
|
-
dataset_id: int = Field(alias="dataset_id", description="数据集ID")
|
|
54
|
-
dataset_version_id: int = Field(alias="dataset_version_id", description="数据集版本ID")
|
|
53
|
+
dataset_id: Optional[int] = Field(default=None, alias="dataset_id", description="数据集ID")
|
|
54
|
+
dataset_version_id: Optional[int] = Field(default=None, alias="dataset_version_id", description="数据集版本ID")
|
|
55
55
|
doc_id: int = Field(alias="doc_id", description="文档中心文档ID")
|
|
56
56
|
doc_type: str = Field(alias="doc_type", default="doc_center", description="文档类型")
|
|
57
57
|
label_projects: Optional[List[ProjectInfo]] = Field(alias="label_projects", default=None,
|
|
@@ -83,23 +83,25 @@ class CreateTaskResp(BaseModel):
|
|
|
83
83
|
class LabelTaskDetail(BaseModel):
|
|
84
84
|
"""任务详情"""
|
|
85
85
|
name: str = Field(description="任务名称")
|
|
86
|
-
description: Optional[str] = Field(alias="description", description="任务描述")
|
|
87
|
-
task_priority: Optional[str] = Field(alias="task_priority", description="优先级")
|
|
88
|
-
type: Optional[str] = Field(alias="type", description="任务类型")
|
|
89
|
-
receiver_id: Optional[int] = Field(alias="receiver_id", description="接收人ID")
|
|
90
|
-
project_id: Optional[int] = Field(None, description="项目ID")
|
|
91
|
-
other_info: TaskDetailOtherInfo = Field(alias="other_info", description="附加信息")
|
|
92
|
-
estimated_delivery_at: Optional[int] = Field(None, description="预计交付时间")
|
|
86
|
+
description: Optional[str] = Field(default=None, alias="description", description="任务描述")
|
|
87
|
+
task_priority: Optional[str] = Field(default=None, alias="task_priority", description="优先级")
|
|
88
|
+
type: Optional[str] = Field(default=None, alias="type", description="任务类型")
|
|
89
|
+
receiver_id: Optional[int] = Field(default=None, alias="receiver_id", description="接收人ID")
|
|
90
|
+
project_id: Optional[int] = Field(default=None, description="项目ID")
|
|
91
|
+
other_info: Optional[TaskDetailOtherInfo] = Field(default=None, alias="other_info", description="附加信息")
|
|
92
|
+
estimated_delivery_at: Optional[int] = Field(default=None, description="预计交付时间")
|
|
93
93
|
|
|
94
94
|
@field_serializer("other_info")
|
|
95
|
-
def serialize_other_info(self, value: TaskDetailOtherInfo) -> str:
|
|
95
|
+
def serialize_other_info(self, value: Optional[TaskDetailOtherInfo]) -> Optional[str]:
|
|
96
96
|
"""将 other_info 序列化为 JSON 字符串"""
|
|
97
|
-
return value.model_dump_json()
|
|
97
|
+
return value.model_dump_json() if value else None
|
|
98
98
|
|
|
99
99
|
@field_validator("other_info", mode="before")
|
|
100
100
|
@classmethod
|
|
101
101
|
def parse_other_info(cls, value):
|
|
102
102
|
"""将字符串解析为 TaskDetailOtherInfo 对象"""
|
|
103
|
+
if value is None:
|
|
104
|
+
return None
|
|
103
105
|
if isinstance(value, str):
|
|
104
106
|
try:
|
|
105
107
|
# 解析 JSON 字符串为字典
|
|
@@ -33,6 +33,7 @@ from ..models.model_training_platform import (
|
|
|
33
33
|
ListTrainingUsersResponse,
|
|
34
34
|
ListTrainingContainersResponse,
|
|
35
35
|
Pod,
|
|
36
|
+
ListStoragesResponse,
|
|
36
37
|
)
|
|
37
38
|
|
|
38
39
|
_BASE = "/model-training-platform/api/v1"
|
|
@@ -43,6 +44,7 @@ class ModelTrainingPlatformService:
|
|
|
43
44
|
|
|
44
45
|
def __init__(self, http: httpx.Client):
|
|
45
46
|
self._training = _Training(http)
|
|
47
|
+
self._storage = _Storage(http)
|
|
46
48
|
|
|
47
49
|
def create_training(self, payload: CreateTrainingRequest) -> int:
|
|
48
50
|
"""创建训练任务
|
|
@@ -167,10 +169,22 @@ class ModelTrainingPlatformService:
|
|
|
167
169
|
"""
|
|
168
170
|
return self._training.list_training_containers(payload)
|
|
169
171
|
|
|
172
|
+
def list_storages(self) -> ListStoragesResponse:
|
|
173
|
+
"""获取存储列表
|
|
174
|
+
|
|
175
|
+
Returns:
|
|
176
|
+
ListStoragesResponse: 存储列表
|
|
177
|
+
"""
|
|
178
|
+
return self._storage.list_storages()
|
|
179
|
+
|
|
170
180
|
@property
|
|
171
181
|
def training(self) -> _Training:
|
|
172
182
|
return self._training
|
|
173
183
|
|
|
184
|
+
@property
|
|
185
|
+
def storage(self) -> _Storage:
|
|
186
|
+
return self._storage
|
|
187
|
+
|
|
174
188
|
|
|
175
189
|
class _Training:
|
|
176
190
|
|
|
@@ -178,20 +192,14 @@ class _Training:
|
|
|
178
192
|
self._http = http
|
|
179
193
|
|
|
180
194
|
def create(self, payload: CreateTrainingRequest) -> int:
|
|
181
|
-
resp = self._http.post(
|
|
182
|
-
f"{_BASE}/trainings",
|
|
183
|
-
json=payload.model_dump(by_alias=True, exclude_none=True),
|
|
184
|
-
)
|
|
195
|
+
resp = self._http.post(f"{_BASE}/trainings", json=payload.model_dump(by_alias=True, exclude_none=True))
|
|
185
196
|
wrapper = APIWrapper[CreateTrainingResponse].model_validate(resp.json())
|
|
186
197
|
if wrapper.code != 0:
|
|
187
198
|
raise APIError(f"backend code {wrapper.code}: {wrapper.msg}")
|
|
188
199
|
return wrapper.data.id
|
|
189
200
|
|
|
190
201
|
def list(self, payload: ListTrainingsRequest) -> ListTrainingsResponse:
|
|
191
|
-
resp = self._http.get(
|
|
192
|
-
f"{_BASE}/trainings",
|
|
193
|
-
params=payload.model_dump(by_alias=True, exclude_none=True),
|
|
194
|
-
)
|
|
202
|
+
resp = self._http.get(f"{_BASE}/trainings", params=payload.model_dump(by_alias=True, exclude_none=True))
|
|
195
203
|
wrapper = APIWrapper[ListTrainingsResponse].model_validate(resp.json())
|
|
196
204
|
if wrapper.code != 0:
|
|
197
205
|
raise APIError(f"backend code {wrapper.code}: {wrapper.msg}")
|
|
@@ -210,13 +218,9 @@ class _Training:
|
|
|
210
218
|
if wrapper.code != 0:
|
|
211
219
|
raise APIError(f"backend code {wrapper.code}: {wrapper.msg}")
|
|
212
220
|
|
|
213
|
-
def list_training_pods(
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
resp = self._http.get(
|
|
217
|
-
f"{_BASE}/trainings/{training_id}/pods",
|
|
218
|
-
params=payload.model_dump(by_alias=True, exclude_none=True),
|
|
219
|
-
)
|
|
221
|
+
def list_training_pods(self, training_id: int, payload: ListTrainingPodsRequest) -> ListTrainingPodsResponse:
|
|
222
|
+
resp = self._http.get(f"{_BASE}/trainings/{training_id}/pods",
|
|
223
|
+
params=payload.model_dump(by_alias=True, exclude_none=True))
|
|
220
224
|
wrapper = APIWrapper[ListTrainingPodsResponse].model_validate(resp.json())
|
|
221
225
|
if wrapper.code != 0:
|
|
222
226
|
raise APIError(f"backend code {wrapper.code}: {wrapper.msg}")
|
|
@@ -229,51 +233,50 @@ class _Training:
|
|
|
229
233
|
raise APIError(f"backend code {wrapper.code}: {wrapper.msg}")
|
|
230
234
|
return wrapper.data
|
|
231
235
|
|
|
232
|
-
def get_training_logs_new(
|
|
233
|
-
self, training_id: int, pod_id: int
|
|
234
|
-
) -> GetTrainingPodLogsNewResponse:
|
|
236
|
+
def get_training_logs_new(self, training_id: int, pod_id: int) -> GetTrainingPodLogsNewResponse:
|
|
235
237
|
resp = self._http.get(f"{_BASE}/trainings/{training_id}/pods/{pod_id}/logs/new")
|
|
236
238
|
wrapper = APIWrapper[GetTrainingPodLogsNewResponse].model_validate(resp.json())
|
|
237
239
|
if wrapper.code != 0:
|
|
238
240
|
raise APIError(f"backend code {wrapper.code}: {wrapper.msg}")
|
|
239
241
|
return wrapper.data
|
|
240
242
|
|
|
241
|
-
def get_training_spec(
|
|
242
|
-
self, training_id: int, pod_id: int
|
|
243
|
-
) -> GetTrainingPodSpecResponse:
|
|
243
|
+
def get_training_spec(self, training_id: int, pod_id: int) -> GetTrainingPodSpecResponse:
|
|
244
244
|
resp = self._http.get(f"{_BASE}/trainings/{training_id}/pods/{pod_id}/spec")
|
|
245
245
|
wrapper = APIWrapper[GetTrainingPodSpecResponse].model_validate(resp.json())
|
|
246
246
|
if wrapper.code != 0:
|
|
247
247
|
raise APIError(f"backend code {wrapper.code}: {wrapper.msg}")
|
|
248
248
|
return wrapper.data
|
|
249
249
|
|
|
250
|
-
def get_training_events(
|
|
251
|
-
self, training_id: int, pod_id: int
|
|
252
|
-
) -> GetTrainingPodEventsResponse:
|
|
250
|
+
def get_training_events(self, training_id: int, pod_id: int) -> GetTrainingPodEventsResponse:
|
|
253
251
|
resp = self._http.get(f"{_BASE}/trainings/{training_id}/pods/{pod_id}/events")
|
|
254
252
|
wrapper = APIWrapper[GetTrainingPodEventsResponse].model_validate(resp.json())
|
|
255
253
|
if wrapper.code != 0:
|
|
256
254
|
raise APIError(f"backend code {wrapper.code}: {wrapper.msg}")
|
|
257
255
|
return wrapper.data
|
|
258
256
|
|
|
259
|
-
def list_training_users(
|
|
260
|
-
|
|
261
|
-
) -> ListTrainingUsersResponse:
|
|
262
|
-
resp = self._http.get(
|
|
263
|
-
f"{_BASE}/training-users", params=payload.model_dump(by_alias=True)
|
|
264
|
-
)
|
|
257
|
+
def list_training_users(self, payload: ListTrainingUsersRequest) -> ListTrainingUsersResponse:
|
|
258
|
+
resp = self._http.get(f"{_BASE}/training-users", params=payload.model_dump(by_alias=True))
|
|
265
259
|
wrapper = APIWrapper[ListTrainingUsersResponse].model_validate(resp.json())
|
|
266
260
|
if wrapper.code != 0:
|
|
267
261
|
raise APIError(f"backend code {wrapper.code}: {wrapper.msg}")
|
|
268
262
|
return wrapper.data
|
|
269
263
|
|
|
270
|
-
def list_training_containers(
|
|
271
|
-
|
|
272
|
-
) -> ListTrainingContainersResponse:
|
|
273
|
-
resp = self._http.get(
|
|
274
|
-
f"{_BASE}/training-containers", params=payload.model_dump(by_alias=True)
|
|
275
|
-
)
|
|
264
|
+
def list_training_containers(self, payload: ListTrainingContainersRequest) -> ListTrainingContainersResponse:
|
|
265
|
+
resp = self._http.get(f"{_BASE}/training-containers", params=payload.model_dump(by_alias=True))
|
|
276
266
|
wrapper = APIWrapper[ListTrainingContainersResponse].model_validate(resp.json())
|
|
277
267
|
if wrapper.code != 0:
|
|
278
268
|
raise APIError(f"backend code {wrapper.code}: {wrapper.msg}")
|
|
279
269
|
return wrapper.data
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
class _Storage:
|
|
273
|
+
|
|
274
|
+
def __init__(self, http: httpx.Client):
|
|
275
|
+
self._http = http
|
|
276
|
+
|
|
277
|
+
def list_storages(self) -> ListStoragesResponse:
|
|
278
|
+
resp = self._http.get(f"{_BASE}/storages")
|
|
279
|
+
wrapper = APIWrapper[ListStoragesResponse].model_validate(resp.json())
|
|
280
|
+
if wrapper.code != 0:
|
|
281
|
+
raise APIError(f"backend code {wrapper.code}: {wrapper.msg}")
|
|
282
|
+
return wrapper.data
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: intellif-aihub
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.8
|
|
4
4
|
Summary: Intellif AI-hub SDK.
|
|
5
5
|
Author-email: Platform Team <aihub@example.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -44,7 +44,7 @@ aihub_sdk/
|
|
|
44
44
|
```bash
|
|
45
45
|
# PyPI 安装
|
|
46
46
|
pip install intellif-aihub
|
|
47
|
-
# 运行环境:Python ≥ 3.
|
|
47
|
+
# 运行环境:Python ≥ 3.9
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
---
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
aihub/__init__.py,sha256=
|
|
1
|
+
aihub/__init__.py,sha256=C69ADlbQREQlR15trneyA2sk8x0-oH4rDAX5fsv19_U,22
|
|
2
2
|
aihub/client.py,sha256=bIYL-NoXarSFnPwLzEcWqUjdiTZ7sau5DmGz8YX4-RQ,5144
|
|
3
3
|
aihub/exceptions.py,sha256=l2cMAvipTqQOio3o11fXsCCSCevbuK4PTsxofkobFjk,500
|
|
4
4
|
aihub/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -10,10 +10,10 @@ aihub/models/document_center.py,sha256=JVA-6hYSY-efmhDmb6nNJEFk-MK5TZjXpwjwxWPfs
|
|
|
10
10
|
aihub/models/eval.py,sha256=4Gon4Sg4dOkyCx3KH2mO5ip3AhrBwrPC0UZA447HeoQ,910
|
|
11
11
|
aihub/models/labelfree.py,sha256=nljprYO6ECuctTVbHqriQ73N5EEyYURhBrnU28Ngfvc,1589
|
|
12
12
|
aihub/models/model_center.py,sha256=K94u6tsIP86Ws3P93O8uoO1gBmnamVnoxlDzvjiPLSo,5719
|
|
13
|
-
aihub/models/model_training_platform.py,sha256=
|
|
14
|
-
aihub/models/quota_schedule_management.py,sha256=
|
|
13
|
+
aihub/models/model_training_platform.py,sha256=UrSbKDQq6evu4Gsw1RYO_INxkLbFHnf1-FgbDIpK4VI,11510
|
|
14
|
+
aihub/models/quota_schedule_management.py,sha256=1nZAX9FbFwruT46U7kKEsECCbvfY-c4-xyYVTki5NVg,12256
|
|
15
15
|
aihub/models/tag_resource_management.py,sha256=-FgiKyDIG7bZagzVRf-8rXWuqH9GyciDadxz5W2f3I8,2195
|
|
16
|
-
aihub/models/task_center.py,sha256=
|
|
16
|
+
aihub/models/task_center.py,sha256=7PlfAsOGBfv_KqfWmPYaWyle4WCKJdc8tTl9aRid_Ws,5502
|
|
17
17
|
aihub/models/user_system.py,sha256=0L_pBkWL9v1tv_mclOyRgCyWibuuj_XU3mPoe2v48vQ,12216
|
|
18
18
|
aihub/models/workflow_center.py,sha256=5li_nZ_UuiAfVG5waSwP3mYViQZ6Z7dlwxv67HNUc_I,19879
|
|
19
19
|
aihub/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -24,7 +24,7 @@ aihub/services/document_center.py,sha256=dG67Ji-DOnzL2t-4x4gVfMt9fbSj_IjVHCLw5R-
|
|
|
24
24
|
aihub/services/eval.py,sha256=V1nBISIyYWg9JJO24xzy4-kit9NsaCYp1EWIX_fgJkQ,2128
|
|
25
25
|
aihub/services/labelfree.py,sha256=xua62UWhVXTxJjHRyy86waaormnJjmpQwepcARBy_h0,1450
|
|
26
26
|
aihub/services/model_center.py,sha256=QZXlldPZrbC6YkVG3eGw5_53qvFAim2QlXg3DflByTA,6215
|
|
27
|
-
aihub/services/model_training_platform.py,sha256=
|
|
27
|
+
aihub/services/model_training_platform.py,sha256=38o6HJnyi3htFzpX7qj6UhzdqTchcXLRTYU0nM7ffJg,10176
|
|
28
28
|
aihub/services/quota_schedule_management.py,sha256=UYOMwjXxJTgkpN6Rv5GzlcejtpZfu23PXlSKr0WihTY,9586
|
|
29
29
|
aihub/services/reporter.py,sha256=ot93SmhxgwDJOzlHSCwlxDOuSydTWUEUQ-Ctp97wJBQ,669
|
|
30
30
|
aihub/services/tag_resource_management.py,sha256=Bm_inSIzZbTc-e4LU9kvwtsPpM_yLwm8xzdrALjb6uY,2666
|
|
@@ -35,8 +35,8 @@ aihub/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
35
35
|
aihub/utils/download.py,sha256=yC3SoL5uE68pMB-IsNz233wj-gFrHB7D7ALzQA5JkFM,2155
|
|
36
36
|
aihub/utils/http.py,sha256=rSNh4uNP7E3YGm3H1indRHctxC5Wu5xNBPvDrb9UHt4,421
|
|
37
37
|
aihub/utils/s3.py,sha256=ISIBP-XdBPkURpXnN56ZnIWokOOg2SRUh_qvxJk-G1Q,2187
|
|
38
|
-
intellif_aihub-0.1.
|
|
39
|
-
intellif_aihub-0.1.
|
|
40
|
-
intellif_aihub-0.1.
|
|
41
|
-
intellif_aihub-0.1.
|
|
42
|
-
intellif_aihub-0.1.
|
|
38
|
+
intellif_aihub-0.1.8.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
39
|
+
intellif_aihub-0.1.8.dist-info/METADATA,sha256=KvnHK0E9xn_TyvLVtR7XPX6LWQ2sY4iVG7lYDcAO7s0,2916
|
|
40
|
+
intellif_aihub-0.1.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
41
|
+
intellif_aihub-0.1.8.dist-info/top_level.txt,sha256=vIvTtSIN73xv46BpYM-ctVGnyOiUQ9EWP_6ngvdIlvw,6
|
|
42
|
+
intellif_aihub-0.1.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|