digitalhub 0.8.0b6__py3-none-any.whl → 0.8.0b10__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 digitalhub might be problematic. Click here for more details.
- digitalhub/__init__.py +1 -1
- digitalhub/client/api.py +63 -0
- digitalhub/client/builder.py +0 -55
- digitalhub/client/dhcore/utils.py +1 -1
- digitalhub/context/api.py +93 -0
- digitalhub/context/builder.py +0 -84
- digitalhub/datastores/_base/datastore.py +2 -2
- digitalhub/datastores/api.py +37 -0
- digitalhub/datastores/builder.py +7 -31
- digitalhub/datastores/local/datastore.py +9 -1
- digitalhub/datastores/remote/datastore.py +8 -0
- digitalhub/datastores/s3/datastore.py +9 -1
- digitalhub/datastores/sql/datastore.py +9 -1
- digitalhub/entities/_base/api_utils.py +620 -0
- digitalhub/entities/_base/context/entity.py +2 -2
- digitalhub/entities/_base/crud.py +204 -408
- digitalhub/entities/_base/entity/entity.py +1 -1
- digitalhub/entities/_base/entity/status.py +12 -1
- digitalhub/entities/_base/executable/entity.py +7 -6
- digitalhub/entities/_base/material/entity.py +2 -2
- digitalhub/entities/artifact/crud.py +16 -42
- digitalhub/entities/dataitem/crud.py +19 -45
- digitalhub/entities/dataitem/table/entity.py +1 -1
- digitalhub/entities/function/crud.py +13 -39
- digitalhub/entities/model/crud.py +15 -42
- digitalhub/entities/project/_base/entity.py +65 -38
- digitalhub/entities/project/crud.py +8 -8
- digitalhub/entities/run/_base/entity.py +1 -14
- digitalhub/entities/run/_base/spec.py +0 -103
- digitalhub/entities/run/_base/status.py +0 -105
- digitalhub/entities/run/crud.py +17 -30
- digitalhub/entities/secret/_base/builder.py +1 -1
- digitalhub/entities/secret/_base/entity.py +1 -1
- digitalhub/entities/secret/crud.py +15 -27
- digitalhub/entities/task/_base/entity.py +3 -2
- digitalhub/entities/task/crud.py +17 -30
- digitalhub/entities/utils/utils.py +18 -0
- digitalhub/entities/workflow/crud.py +13 -39
- digitalhub/factory/api.py +31 -25
- digitalhub/factory/factory.py +7 -5
- digitalhub/readers/_base/builder.py +26 -0
- digitalhub/readers/api.py +80 -0
- digitalhub/readers/factory.py +133 -0
- digitalhub/readers/pandas/builder.py +29 -0
- digitalhub/readers/pandas/{readers.py → reader.py} +1 -1
- digitalhub/stores/api.py +54 -0
- digitalhub/stores/builder.py +0 -46
- {digitalhub-0.8.0b6.dist-info → digitalhub-0.8.0b10.dist-info}/METADATA +1 -1
- {digitalhub-0.8.0b6.dist-info → digitalhub-0.8.0b10.dist-info}/RECORD +53 -55
- digitalhub/entities/artifact/builder.py +0 -51
- digitalhub/entities/dataitem/builder.py +0 -51
- digitalhub/entities/function/builder.py +0 -51
- digitalhub/entities/model/builder.py +0 -51
- digitalhub/entities/project/builder.py +0 -51
- digitalhub/entities/run/builder.py +0 -51
- digitalhub/entities/secret/builder.py +0 -51
- digitalhub/entities/task/builder.py +0 -51
- digitalhub/entities/workflow/builder.py +0 -51
- digitalhub/readers/builder.py +0 -54
- digitalhub/readers/registry.py +0 -15
- /digitalhub/readers/_base/{readers.py → reader.py} +0 -0
- {digitalhub-0.8.0b6.dist-info → digitalhub-0.8.0b10.dist-info}/LICENSE.txt +0 -0
- {digitalhub-0.8.0b6.dist-info → digitalhub-0.8.0b10.dist-info}/WHEEL +0 -0
- {digitalhub-0.8.0b6.dist-info → digitalhub-0.8.0b10.dist-info}/top_level.txt +0 -0
|
@@ -10,9 +10,20 @@ class Status(Base):
|
|
|
10
10
|
for example, the state of a RUNNING run, and eventual error message.
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
|
-
def __init__(
|
|
13
|
+
def __init__(
|
|
14
|
+
self,
|
|
15
|
+
state: str,
|
|
16
|
+
message: str | None = None,
|
|
17
|
+
transitions: list[dict] | None = None,
|
|
18
|
+
k8s: dict | None = None,
|
|
19
|
+
**kwargs,
|
|
20
|
+
) -> None:
|
|
14
21
|
self.state = state
|
|
15
22
|
self.message = message
|
|
23
|
+
self.transitions = transitions
|
|
24
|
+
self.k8s = k8s
|
|
25
|
+
|
|
26
|
+
self._any_setter(**kwargs)
|
|
16
27
|
|
|
17
28
|
@classmethod
|
|
18
29
|
def from_dict(cls, obj: dict) -> Status:
|
|
@@ -2,11 +2,12 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
|
-
from digitalhub.entities._base.
|
|
5
|
+
from digitalhub.entities._base.api_utils import list_entity_api_ctx
|
|
6
6
|
from digitalhub.entities._base.versioned.entity import VersionedEntity
|
|
7
7
|
from digitalhub.entities.run.crud import delete_run, get_run, list_runs
|
|
8
|
-
from digitalhub.entities.task.crud import delete_task
|
|
8
|
+
from digitalhub.entities.task.crud import delete_task
|
|
9
9
|
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
10
|
+
from digitalhub.factory.api import build_entity_from_dict, build_entity_from_params
|
|
10
11
|
from digitalhub.utils.exceptions import EntityAlreadyExistsError, EntityError
|
|
11
12
|
|
|
12
13
|
if typing.TYPE_CHECKING:
|
|
@@ -101,7 +102,7 @@ class ExecutableEntity(VersionedEntity):
|
|
|
101
102
|
# Create a new object from dictionary.
|
|
102
103
|
# the form in which tasks are stored in function
|
|
103
104
|
# status
|
|
104
|
-
task_obj =
|
|
105
|
+
task_obj = build_entity_from_dict(task)
|
|
105
106
|
|
|
106
107
|
# Try to save it in backend to been able to use
|
|
107
108
|
# it for launching runs. In fact, tasks must be
|
|
@@ -144,7 +145,7 @@ class ExecutableEntity(VersionedEntity):
|
|
|
144
145
|
kwargs["kind"] = task_kind
|
|
145
146
|
|
|
146
147
|
# Create object instance
|
|
147
|
-
task =
|
|
148
|
+
task = build_entity_from_params(**kwargs)
|
|
148
149
|
task.save()
|
|
149
150
|
|
|
150
151
|
self._tasks[task_kind] = task
|
|
@@ -175,7 +176,7 @@ class ExecutableEntity(VersionedEntity):
|
|
|
175
176
|
resp = self._get_task_from_backend(kind)
|
|
176
177
|
if not resp:
|
|
177
178
|
raise EntityError(f"Task {kind} is not created")
|
|
178
|
-
self._tasks[kind] =
|
|
179
|
+
self._tasks[kind] = build_entity_from_dict(resp[0])
|
|
179
180
|
return self._tasks[kind]
|
|
180
181
|
|
|
181
182
|
def update_task(self, kind: str, **kwargs) -> Task:
|
|
@@ -206,7 +207,7 @@ class ExecutableEntity(VersionedEntity):
|
|
|
206
207
|
kwargs["uuid"] = self._tasks[kind].id
|
|
207
208
|
|
|
208
209
|
# Update task
|
|
209
|
-
task =
|
|
210
|
+
task = build_entity_from_params(**kwargs)
|
|
210
211
|
task.save(update=True)
|
|
211
212
|
self._tasks[kind] = task
|
|
212
213
|
return task
|
|
@@ -3,9 +3,9 @@ from __future__ import annotations
|
|
|
3
3
|
import typing
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
|
-
from digitalhub.entities._base.
|
|
6
|
+
from digitalhub.entities._base.api_utils import files_info_get_api, files_info_put_api
|
|
7
7
|
from digitalhub.entities._base.versioned.entity import VersionedEntity
|
|
8
|
-
from digitalhub.stores.
|
|
8
|
+
from digitalhub.stores.api import get_store
|
|
9
9
|
|
|
10
10
|
if typing.TYPE_CHECKING:
|
|
11
11
|
from digitalhub.entities._base.entity.metadata import Metadata
|
|
@@ -2,19 +2,18 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
|
-
from digitalhub.context.builder import check_context
|
|
6
5
|
from digitalhub.entities._base.crud import (
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
delete_entity,
|
|
7
|
+
get_material_entity,
|
|
8
|
+
get_material_entity_versions,
|
|
9
|
+
import_context_entity,
|
|
10
|
+
list_material_entities,
|
|
11
|
+
new_context_entity,
|
|
11
12
|
)
|
|
12
13
|
from digitalhub.entities._base.entity._constructors.uuid import build_uuid
|
|
13
|
-
from digitalhub.entities.artifact.
|
|
14
|
+
from digitalhub.entities.artifact._base.entity import Artifact
|
|
14
15
|
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
15
16
|
from digitalhub.entities.utils.utils import build_log_path_from_source, eval_local_source
|
|
16
|
-
from digitalhub.utils.exceptions import EntityAlreadyExistsError
|
|
17
|
-
from digitalhub.utils.io_utils import read_yaml
|
|
18
17
|
|
|
19
18
|
if typing.TYPE_CHECKING:
|
|
20
19
|
from digitalhub.entities.artifact._base.entity import Artifact
|
|
@@ -70,8 +69,7 @@ def new_artifact(
|
|
|
70
69
|
>>> kind="artifact",
|
|
71
70
|
>>> path="s3://my-bucket/my-key")
|
|
72
71
|
"""
|
|
73
|
-
|
|
74
|
-
obj = artifact_from_parameters(
|
|
72
|
+
return new_context_entity(
|
|
75
73
|
project=project,
|
|
76
74
|
name=name,
|
|
77
75
|
kind=kind,
|
|
@@ -82,8 +80,6 @@ def new_artifact(
|
|
|
82
80
|
path=path,
|
|
83
81
|
**kwargs,
|
|
84
82
|
)
|
|
85
|
-
obj.save()
|
|
86
|
-
return obj
|
|
87
83
|
|
|
88
84
|
|
|
89
85
|
def log_artifact(
|
|
@@ -171,16 +167,13 @@ def get_artifact(
|
|
|
171
167
|
>>> project="my-project",
|
|
172
168
|
>>> entity_id="my-artifact-id")
|
|
173
169
|
"""
|
|
174
|
-
|
|
175
|
-
identifier,
|
|
176
|
-
ENTITY_TYPE,
|
|
170
|
+
return get_material_entity(
|
|
171
|
+
identifier=identifier,
|
|
172
|
+
entity_type=ENTITY_TYPE,
|
|
177
173
|
project=project,
|
|
178
174
|
entity_id=entity_id,
|
|
179
175
|
**kwargs,
|
|
180
176
|
)
|
|
181
|
-
entity = artifact_from_dict(obj)
|
|
182
|
-
entity._get_files_info()
|
|
183
|
-
return entity
|
|
184
177
|
|
|
185
178
|
|
|
186
179
|
def get_artifact_versions(
|
|
@@ -214,18 +207,12 @@ def get_artifact_versions(
|
|
|
214
207
|
>>> obj = get_artifact_versions("my-artifact-name"
|
|
215
208
|
>>> project="my-project")
|
|
216
209
|
"""
|
|
217
|
-
|
|
218
|
-
identifier,
|
|
210
|
+
return get_material_entity_versions(
|
|
211
|
+
identifier=identifier,
|
|
219
212
|
entity_type=ENTITY_TYPE,
|
|
220
213
|
project=project,
|
|
221
214
|
**kwargs,
|
|
222
215
|
)
|
|
223
|
-
objects = []
|
|
224
|
-
for o in objs:
|
|
225
|
-
entity = artifact_from_dict(o)
|
|
226
|
-
entity._get_files_info()
|
|
227
|
-
objects.append(entity)
|
|
228
|
-
return objects
|
|
229
216
|
|
|
230
217
|
|
|
231
218
|
def list_artifacts(project: str, **kwargs) -> list[Artifact]:
|
|
@@ -248,17 +235,11 @@ def list_artifacts(project: str, **kwargs) -> list[Artifact]:
|
|
|
248
235
|
--------
|
|
249
236
|
>>> objs = list_artifacts(project="my-project")
|
|
250
237
|
"""
|
|
251
|
-
|
|
238
|
+
return list_material_entities(
|
|
252
239
|
project=project,
|
|
253
240
|
entity_type=ENTITY_TYPE,
|
|
254
241
|
**kwargs,
|
|
255
242
|
)
|
|
256
|
-
objects = []
|
|
257
|
-
for o in objs:
|
|
258
|
-
entity = artifact_from_dict(o)
|
|
259
|
-
entity._get_files_info()
|
|
260
|
-
objects.append(entity)
|
|
261
|
-
return objects
|
|
262
243
|
|
|
263
244
|
|
|
264
245
|
def import_artifact(file: str) -> Artifact:
|
|
@@ -279,14 +260,7 @@ def import_artifact(file: str) -> Artifact:
|
|
|
279
260
|
--------
|
|
280
261
|
>>> obj = import_artifact("my-artifact.yaml")
|
|
281
262
|
"""
|
|
282
|
-
|
|
283
|
-
obj = artifact_from_dict(dict_obj)
|
|
284
|
-
try:
|
|
285
|
-
obj.save()
|
|
286
|
-
except EntityAlreadyExistsError:
|
|
287
|
-
pass
|
|
288
|
-
finally:
|
|
289
|
-
return obj
|
|
263
|
+
return import_context_entity(file)
|
|
290
264
|
|
|
291
265
|
|
|
292
266
|
def update_artifact(entity: Artifact) -> Artifact:
|
|
@@ -348,7 +322,7 @@ def delete_artifact(
|
|
|
348
322
|
>>> project="my-project",
|
|
349
323
|
>>> delete_all_versions=True)
|
|
350
324
|
"""
|
|
351
|
-
return
|
|
325
|
+
return delete_entity(
|
|
352
326
|
identifier=identifier,
|
|
353
327
|
entity_type=ENTITY_TYPE,
|
|
354
328
|
project=project,
|
|
@@ -5,22 +5,21 @@ from pathlib import Path
|
|
|
5
5
|
from typing import Any
|
|
6
6
|
from urllib.parse import urlparse
|
|
7
7
|
|
|
8
|
-
from digitalhub.context.builder import check_context
|
|
9
8
|
from digitalhub.entities._base.crud import (
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
delete_entity,
|
|
10
|
+
get_material_entity,
|
|
11
|
+
get_material_entity_versions,
|
|
12
|
+
import_context_entity,
|
|
13
|
+
list_material_entities,
|
|
14
|
+
new_context_entity,
|
|
14
15
|
)
|
|
15
16
|
from digitalhub.entities._base.entity._constructors.uuid import build_uuid
|
|
16
|
-
from digitalhub.entities.dataitem.builder import dataitem_from_dict, dataitem_from_parameters
|
|
17
17
|
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
18
18
|
from digitalhub.entities.utils.utils import build_log_path_from_filename, build_log_path_from_source, eval_local_source
|
|
19
|
-
from digitalhub.
|
|
20
|
-
from digitalhub.
|
|
21
|
-
from digitalhub.
|
|
19
|
+
from digitalhub.factory.api import build_entity_from_params
|
|
20
|
+
from digitalhub.readers.api import get_reader_by_object
|
|
21
|
+
from digitalhub.stores.api import get_store
|
|
22
22
|
from digitalhub.utils.generic_utils import slugify_string
|
|
23
|
-
from digitalhub.utils.io_utils import read_yaml
|
|
24
23
|
|
|
25
24
|
if typing.TYPE_CHECKING:
|
|
26
25
|
from digitalhub.entities.dataitem._base.entity import Dataitem
|
|
@@ -76,8 +75,7 @@ def new_dataitem(
|
|
|
76
75
|
>>> kind="dataitem",
|
|
77
76
|
>>> path="s3://my-bucket/my-key")
|
|
78
77
|
"""
|
|
79
|
-
|
|
80
|
-
obj = dataitem_from_parameters(
|
|
78
|
+
return new_context_entity(
|
|
81
79
|
project=project,
|
|
82
80
|
name=name,
|
|
83
81
|
kind=kind,
|
|
@@ -88,8 +86,6 @@ def new_dataitem(
|
|
|
88
86
|
path=path,
|
|
89
87
|
**kwargs,
|
|
90
88
|
)
|
|
91
|
-
obj.save()
|
|
92
|
-
return obj
|
|
93
89
|
|
|
94
90
|
|
|
95
91
|
def log_dataitem(
|
|
@@ -160,7 +156,7 @@ def log_dataitem(
|
|
|
160
156
|
slug = slugify_string(name) + f".{extension}"
|
|
161
157
|
path = build_log_path_from_filename(project, ENTITY_TYPE, name, uuid, slug)
|
|
162
158
|
|
|
163
|
-
obj =
|
|
159
|
+
obj = build_entity_from_params(project=project, name=name, kind=kind, path=path, **kwargs)
|
|
164
160
|
if kind == "table":
|
|
165
161
|
dst = obj.write_df(df=data, extension=extension)
|
|
166
162
|
reader = get_reader_by_object(data)
|
|
@@ -211,16 +207,13 @@ def get_dataitem(
|
|
|
211
207
|
>>> project="my-project",
|
|
212
208
|
>>> entity_id="my-dataitem-id")
|
|
213
209
|
"""
|
|
214
|
-
|
|
215
|
-
identifier,
|
|
216
|
-
ENTITY_TYPE,
|
|
210
|
+
return get_material_entity(
|
|
211
|
+
identifier=identifier,
|
|
212
|
+
entity_type=ENTITY_TYPE,
|
|
217
213
|
project=project,
|
|
218
214
|
entity_id=entity_id,
|
|
219
215
|
**kwargs,
|
|
220
216
|
)
|
|
221
|
-
entity = dataitem_from_dict(obj)
|
|
222
|
-
entity._get_files_info()
|
|
223
|
-
return entity
|
|
224
217
|
|
|
225
218
|
|
|
226
219
|
def get_dataitem_versions(
|
|
@@ -254,18 +247,12 @@ def get_dataitem_versions(
|
|
|
254
247
|
>>> objs = get_dataitem_versions("my-dataitem-name",
|
|
255
248
|
>>> project="my-project")
|
|
256
249
|
"""
|
|
257
|
-
|
|
258
|
-
identifier,
|
|
250
|
+
return get_material_entity_versions(
|
|
251
|
+
identifier=identifier,
|
|
259
252
|
entity_type=ENTITY_TYPE,
|
|
260
253
|
project=project,
|
|
261
254
|
**kwargs,
|
|
262
255
|
)
|
|
263
|
-
objects = []
|
|
264
|
-
for o in objs:
|
|
265
|
-
entity = dataitem_from_dict(o)
|
|
266
|
-
entity._get_files_info()
|
|
267
|
-
objects.append(entity)
|
|
268
|
-
return objects
|
|
269
256
|
|
|
270
257
|
|
|
271
258
|
def list_dataitems(project: str, **kwargs) -> list[Dataitem]:
|
|
@@ -288,17 +275,11 @@ def list_dataitems(project: str, **kwargs) -> list[Dataitem]:
|
|
|
288
275
|
--------
|
|
289
276
|
>>> objs = list_dataitems(project="my-project")
|
|
290
277
|
"""
|
|
291
|
-
|
|
278
|
+
return list_material_entities(
|
|
292
279
|
project=project,
|
|
293
280
|
entity_type=ENTITY_TYPE,
|
|
294
281
|
**kwargs,
|
|
295
282
|
)
|
|
296
|
-
objects = []
|
|
297
|
-
for o in objs:
|
|
298
|
-
entity = dataitem_from_dict(o)
|
|
299
|
-
entity._get_files_info()
|
|
300
|
-
objects.append(entity)
|
|
301
|
-
return objects
|
|
302
283
|
|
|
303
284
|
|
|
304
285
|
def import_dataitem(file: str) -> Dataitem:
|
|
@@ -319,14 +300,7 @@ def import_dataitem(file: str) -> Dataitem:
|
|
|
319
300
|
--------
|
|
320
301
|
>>> obj = import_dataitem("my-dataitem.yaml")
|
|
321
302
|
"""
|
|
322
|
-
|
|
323
|
-
obj = dataitem_from_dict(dict_obj)
|
|
324
|
-
try:
|
|
325
|
-
obj.save()
|
|
326
|
-
except EntityAlreadyExistsError:
|
|
327
|
-
pass
|
|
328
|
-
finally:
|
|
329
|
-
return obj
|
|
303
|
+
return import_context_entity(file)
|
|
330
304
|
|
|
331
305
|
|
|
332
306
|
def update_dataitem(entity: Dataitem) -> Dataitem:
|
|
@@ -388,7 +362,7 @@ def delete_dataitem(
|
|
|
388
362
|
>>> project="my-project",
|
|
389
363
|
>>> delete_all_versions=True)
|
|
390
364
|
"""
|
|
391
|
-
return
|
|
365
|
+
return delete_entity(
|
|
392
366
|
identifier=identifier,
|
|
393
367
|
entity_type=ENTITY_TYPE,
|
|
394
368
|
project=project,
|
|
@@ -5,7 +5,7 @@ import typing
|
|
|
5
5
|
from pathlib import Path
|
|
6
6
|
from typing import Any
|
|
7
7
|
|
|
8
|
-
from digitalhub.datastores.
|
|
8
|
+
from digitalhub.datastores.api import get_datastore
|
|
9
9
|
from digitalhub.entities.dataitem._base.entity import Dataitem
|
|
10
10
|
from digitalhub.utils.uri_utils import check_local_path
|
|
11
11
|
|
|
@@ -2,17 +2,15 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
|
-
from digitalhub.context.builder import check_context
|
|
6
5
|
from digitalhub.entities._base.crud import (
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
delete_entity,
|
|
7
|
+
get_context_entity_versions,
|
|
8
|
+
get_versioned_entity,
|
|
9
|
+
import_executable_entity,
|
|
10
|
+
list_context_entities,
|
|
11
|
+
new_context_entity,
|
|
11
12
|
)
|
|
12
|
-
from digitalhub.entities.function.builder import function_from_dict, function_from_parameters
|
|
13
13
|
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
14
|
-
from digitalhub.utils.exceptions import EntityAlreadyExistsError
|
|
15
|
-
from digitalhub.utils.io_utils import read_yaml
|
|
16
14
|
|
|
17
15
|
if typing.TYPE_CHECKING:
|
|
18
16
|
from digitalhub.entities.function._base.entity import Function
|
|
@@ -65,8 +63,7 @@ def new_function(
|
|
|
65
63
|
>>> code_src="function.py",
|
|
66
64
|
>>> handler="function-handler")
|
|
67
65
|
"""
|
|
68
|
-
|
|
69
|
-
obj = function_from_parameters(
|
|
66
|
+
return new_context_entity(
|
|
70
67
|
project=project,
|
|
71
68
|
name=name,
|
|
72
69
|
kind=kind,
|
|
@@ -76,8 +73,6 @@ def new_function(
|
|
|
76
73
|
embedded=embedded,
|
|
77
74
|
**kwargs,
|
|
78
75
|
)
|
|
79
|
-
obj.save()
|
|
80
|
-
return obj
|
|
81
76
|
|
|
82
77
|
|
|
83
78
|
def get_function(
|
|
@@ -115,14 +110,13 @@ def get_function(
|
|
|
115
110
|
>>> project="my-project",
|
|
116
111
|
>>> entity_id="my-function-id")
|
|
117
112
|
"""
|
|
118
|
-
|
|
113
|
+
return get_versioned_entity(
|
|
119
114
|
identifier,
|
|
120
|
-
ENTITY_TYPE,
|
|
115
|
+
entity_type=ENTITY_TYPE,
|
|
121
116
|
project=project,
|
|
122
117
|
entity_id=entity_id,
|
|
123
118
|
**kwargs,
|
|
124
119
|
)
|
|
125
|
-
return function_from_dict(obj)
|
|
126
120
|
|
|
127
121
|
|
|
128
122
|
def get_function_versions(
|
|
@@ -156,13 +150,12 @@ def get_function_versions(
|
|
|
156
150
|
>>> obj = get_function_versions("my-function-name"
|
|
157
151
|
>>> project="my-project")
|
|
158
152
|
"""
|
|
159
|
-
|
|
153
|
+
return get_context_entity_versions(
|
|
160
154
|
identifier,
|
|
161
155
|
entity_type=ENTITY_TYPE,
|
|
162
156
|
project=project,
|
|
163
157
|
**kwargs,
|
|
164
158
|
)
|
|
165
|
-
return [function_from_dict(o) for o in obj]
|
|
166
159
|
|
|
167
160
|
|
|
168
161
|
def list_functions(project: str, **kwargs) -> list[Function]:
|
|
@@ -185,12 +178,11 @@ def list_functions(project: str, **kwargs) -> list[Function]:
|
|
|
185
178
|
--------
|
|
186
179
|
>>> objs = list_functions(project="my-project")
|
|
187
180
|
"""
|
|
188
|
-
|
|
181
|
+
return list_context_entities(
|
|
189
182
|
project=project,
|
|
190
183
|
entity_type=ENTITY_TYPE,
|
|
191
184
|
**kwargs,
|
|
192
185
|
)
|
|
193
|
-
return [function_from_dict(obj) for obj in objs]
|
|
194
186
|
|
|
195
187
|
|
|
196
188
|
def import_function(file: str) -> Function:
|
|
@@ -211,25 +203,7 @@ def import_function(file: str) -> Function:
|
|
|
211
203
|
--------
|
|
212
204
|
>>> obj = import_function("my-function.yaml")
|
|
213
205
|
"""
|
|
214
|
-
|
|
215
|
-
if isinstance(dict_obj, list):
|
|
216
|
-
fnc_dict = dict_obj[0]
|
|
217
|
-
tsk_dicts = dict_obj[1:]
|
|
218
|
-
else:
|
|
219
|
-
fnc_dict = dict_obj
|
|
220
|
-
tsk_dicts = []
|
|
221
|
-
|
|
222
|
-
check_context(fnc_dict.get("project"))
|
|
223
|
-
obj = function_from_dict(fnc_dict)
|
|
224
|
-
|
|
225
|
-
obj.import_tasks(tsk_dicts)
|
|
226
|
-
|
|
227
|
-
try:
|
|
228
|
-
obj.save()
|
|
229
|
-
except EntityAlreadyExistsError:
|
|
230
|
-
pass
|
|
231
|
-
finally:
|
|
232
|
-
return obj
|
|
206
|
+
return import_executable_entity(file)
|
|
233
207
|
|
|
234
208
|
|
|
235
209
|
def update_function(entity: Function) -> Function:
|
|
@@ -294,7 +268,7 @@ def delete_function(
|
|
|
294
268
|
>>> project="my-project",
|
|
295
269
|
>>> delete_all_versions=True)
|
|
296
270
|
"""
|
|
297
|
-
return
|
|
271
|
+
return delete_entity(
|
|
298
272
|
identifier=identifier,
|
|
299
273
|
entity_type=ENTITY_TYPE,
|
|
300
274
|
project=project,
|
|
@@ -2,19 +2,17 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
|
-
from digitalhub.context.builder import check_context
|
|
6
5
|
from digitalhub.entities._base.crud import (
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
delete_entity,
|
|
7
|
+
get_material_entity,
|
|
8
|
+
get_material_entity_versions,
|
|
9
|
+
import_context_entity,
|
|
10
|
+
list_material_entities,
|
|
11
|
+
new_context_entity,
|
|
11
12
|
)
|
|
12
13
|
from digitalhub.entities._base.entity._constructors.uuid import build_uuid
|
|
13
|
-
from digitalhub.entities.model.builder import model_from_dict, model_from_parameters
|
|
14
14
|
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
15
15
|
from digitalhub.entities.utils.utils import build_log_path_from_source, eval_local_source
|
|
16
|
-
from digitalhub.utils.exceptions import EntityAlreadyExistsError
|
|
17
|
-
from digitalhub.utils.io_utils import read_yaml
|
|
18
16
|
|
|
19
17
|
if typing.TYPE_CHECKING:
|
|
20
18
|
from digitalhub.entities.model._base.entity import Model
|
|
@@ -70,8 +68,7 @@ def new_model(
|
|
|
70
68
|
>>> kind="model",
|
|
71
69
|
>>> path="s3://my-bucket/my-key")
|
|
72
70
|
"""
|
|
73
|
-
|
|
74
|
-
obj = model_from_parameters(
|
|
71
|
+
return new_context_entity(
|
|
75
72
|
project=project,
|
|
76
73
|
name=name,
|
|
77
74
|
kind=kind,
|
|
@@ -82,8 +79,6 @@ def new_model(
|
|
|
82
79
|
path=path,
|
|
83
80
|
**kwargs,
|
|
84
81
|
)
|
|
85
|
-
obj.save()
|
|
86
|
-
return obj
|
|
87
82
|
|
|
88
83
|
|
|
89
84
|
def log_model(
|
|
@@ -171,16 +166,13 @@ def get_model(
|
|
|
171
166
|
>>> project="my-project",
|
|
172
167
|
>>> entity_id="my-model-id")
|
|
173
168
|
"""
|
|
174
|
-
|
|
175
|
-
identifier,
|
|
176
|
-
ENTITY_TYPE,
|
|
169
|
+
return get_material_entity(
|
|
170
|
+
identifier=identifier,
|
|
171
|
+
entity_type=ENTITY_TYPE,
|
|
177
172
|
project=project,
|
|
178
173
|
entity_id=entity_id,
|
|
179
174
|
**kwargs,
|
|
180
175
|
)
|
|
181
|
-
entity = model_from_dict(obj)
|
|
182
|
-
entity._get_files_info()
|
|
183
|
-
return entity
|
|
184
176
|
|
|
185
177
|
|
|
186
178
|
def get_model_versions(
|
|
@@ -214,18 +206,12 @@ def get_model_versions(
|
|
|
214
206
|
>>> objs = get_model_versions("my-model-name",
|
|
215
207
|
>>> project="my-project")
|
|
216
208
|
"""
|
|
217
|
-
|
|
218
|
-
identifier,
|
|
209
|
+
return get_material_entity_versions(
|
|
210
|
+
identifier=identifier,
|
|
219
211
|
entity_type=ENTITY_TYPE,
|
|
220
212
|
project=project,
|
|
221
213
|
**kwargs,
|
|
222
214
|
)
|
|
223
|
-
objects = []
|
|
224
|
-
for o in objs:
|
|
225
|
-
entity = model_from_dict(o)
|
|
226
|
-
entity._get_files_info()
|
|
227
|
-
objects.append(entity)
|
|
228
|
-
return objects
|
|
229
215
|
|
|
230
216
|
|
|
231
217
|
def list_models(project: str, **kwargs) -> list[Model]:
|
|
@@ -248,17 +234,11 @@ def list_models(project: str, **kwargs) -> list[Model]:
|
|
|
248
234
|
--------
|
|
249
235
|
>>> objs = list_models(project="my-project")
|
|
250
236
|
"""
|
|
251
|
-
|
|
237
|
+
return list_material_entities(
|
|
252
238
|
project=project,
|
|
253
239
|
entity_type=ENTITY_TYPE,
|
|
254
240
|
**kwargs,
|
|
255
241
|
)
|
|
256
|
-
objects = []
|
|
257
|
-
for o in objs:
|
|
258
|
-
entity = model_from_dict(o)
|
|
259
|
-
entity._get_files_info()
|
|
260
|
-
objects.append(entity)
|
|
261
|
-
return objects
|
|
262
242
|
|
|
263
243
|
|
|
264
244
|
def import_model(file: str) -> Model:
|
|
@@ -279,14 +259,7 @@ def import_model(file: str) -> Model:
|
|
|
279
259
|
--------
|
|
280
260
|
>>> obj = import_model("my-model.yaml")
|
|
281
261
|
"""
|
|
282
|
-
|
|
283
|
-
obj = model_from_dict(dict_obj)
|
|
284
|
-
try:
|
|
285
|
-
obj.save()
|
|
286
|
-
except EntityAlreadyExistsError:
|
|
287
|
-
pass
|
|
288
|
-
finally:
|
|
289
|
-
return obj
|
|
262
|
+
return import_context_entity(file)
|
|
290
263
|
|
|
291
264
|
|
|
292
265
|
def update_model(entity: Model) -> Model:
|
|
@@ -348,7 +321,7 @@ def delete_model(
|
|
|
348
321
|
>>> project="my-project",
|
|
349
322
|
>>> delete_all_versions=True)
|
|
350
323
|
"""
|
|
351
|
-
return
|
|
324
|
+
return delete_entity(
|
|
352
325
|
identifier=identifier,
|
|
353
326
|
entity_type=ENTITY_TYPE,
|
|
354
327
|
project=project,
|