digitalhub 0.8.0b2__py3-none-any.whl → 0.8.0b4__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 +5 -4
- digitalhub/client/builder.py +3 -3
- digitalhub/client/{objects/dhcore.py → dhcore/client.py} +9 -49
- digitalhub/client/dhcore/env.py +21 -0
- digitalhub/client/dhcore/models.py +46 -0
- digitalhub/{utils/env_utils.py → client/dhcore/utils.py} +1 -13
- digitalhub/client/{objects/local.py → local/client.py} +1 -1
- digitalhub/context/builder.py +1 -1
- digitalhub/context/context.py +1 -1
- digitalhub/datastores/{objects/base.py → _base/datastore.py} +1 -1
- digitalhub/datastores/builder.py +6 -6
- digitalhub/datastores/{objects/local.py → local/datastore.py} +1 -1
- digitalhub/datastores/{objects/remote.py → remote/datastore.py} +1 -1
- digitalhub/datastores/{objects/s3.py → s3/datastore.py} +1 -1
- digitalhub/datastores/{objects/sql.py → sql/datastore.py} +1 -1
- digitalhub/entities/_base/{base.py → _base/entity.py} +1 -1
- digitalhub/entities/_base/{entity/context.py → context/entity.py} +4 -4
- digitalhub/entities/_base/crud.py +3 -3
- digitalhub/entities/_base/entity/{base.py → entity.py} +8 -34
- digitalhub/entities/_base/{metadata.py → entity/metadata.py} +2 -2
- digitalhub/entities/_base/{spec/base.py → entity/spec.py} +11 -11
- digitalhub/entities/_base/{status/base.py → entity/status.py} +2 -2
- digitalhub/entities/_base/executable/__init__.py +0 -0
- digitalhub/entities/_base/{entity/executable.py → executable/entity.py} +55 -31
- digitalhub/entities/_base/material/__init__.py +0 -0
- digitalhub/entities/_base/{entity/material.py → material/entity.py} +4 -4
- digitalhub/entities/_base/{spec/material.py → material/spec.py} +3 -3
- digitalhub/entities/_base/{status/material.py → material/status.py} +1 -1
- digitalhub/entities/_base/unversioned/__init__.py +0 -0
- digitalhub/entities/_base/unversioned/builder.py +66 -0
- digitalhub/entities/_base/unversioned/entity.py +49 -0
- digitalhub/entities/_base/versioned/__init__.py +0 -0
- digitalhub/entities/_base/versioned/builder.py +68 -0
- digitalhub/entities/_base/versioned/entity.py +53 -0
- digitalhub/entities/_builders/entity.py +153 -0
- digitalhub/entities/_builders/metadata.py +5 -21
- digitalhub/entities/_builders/spec.py +11 -21
- digitalhub/entities/_builders/status.py +10 -20
- digitalhub/entities/_builders/uuid.py +4 -11
- digitalhub/entities/artifact/_base/__init__.py +0 -0
- digitalhub/entities/artifact/_base/builder.py +86 -0
- digitalhub/entities/artifact/{entity/_base.py → _base/entity.py} +5 -5
- digitalhub/entities/artifact/_base/spec.py +15 -0
- digitalhub/entities/artifact/_base/status.py +9 -0
- digitalhub/entities/artifact/artifact/__init__.py +0 -0
- digitalhub/entities/artifact/artifact/builder.py +18 -0
- digitalhub/entities/artifact/artifact/entity.py +32 -0
- digitalhub/entities/artifact/{spec.py → artifact/spec.py} +4 -16
- digitalhub/entities/artifact/{status.py → artifact/status.py} +1 -1
- digitalhub/entities/artifact/builder.py +16 -98
- digitalhub/entities/artifact/crud.py +4 -4
- digitalhub/entities/builders.py +63 -0
- digitalhub/entities/dataitem/_base/__init__.py +0 -0
- digitalhub/entities/dataitem/_base/builder.py +86 -0
- digitalhub/entities/dataitem/{entity/_base.py → _base/entity.py} +5 -5
- digitalhub/entities/dataitem/_base/spec.py +15 -0
- digitalhub/entities/dataitem/_base/status.py +20 -0
- digitalhub/entities/dataitem/builder.py +16 -109
- digitalhub/entities/dataitem/crud.py +8 -5
- digitalhub/entities/dataitem/dataitem/__init__.py +0 -0
- digitalhub/entities/dataitem/dataitem/builder.py +18 -0
- digitalhub/entities/dataitem/dataitem/entity.py +32 -0
- digitalhub/entities/dataitem/dataitem/spec.py +15 -0
- digitalhub/entities/dataitem/dataitem/status.py +9 -0
- digitalhub/entities/dataitem/iceberg/__init__.py +0 -0
- digitalhub/entities/dataitem/iceberg/builder.py +18 -0
- digitalhub/entities/dataitem/iceberg/entity.py +32 -0
- digitalhub/entities/dataitem/iceberg/spec.py +15 -0
- digitalhub/entities/dataitem/iceberg/status.py +9 -0
- digitalhub/entities/dataitem/table/__init__.py +0 -0
- digitalhub/entities/dataitem/table/builder.py +18 -0
- digitalhub/entities/dataitem/{entity/table.py → table/entity.py} +24 -3
- digitalhub/entities/dataitem/table/spec.py +25 -0
- digitalhub/entities/dataitem/table/status.py +9 -0
- digitalhub/entities/function/_base/__init__.py +0 -0
- digitalhub/entities/function/_base/builder.py +78 -0
- digitalhub/entities/function/{entity.py → _base/entity.py} +8 -8
- digitalhub/entities/function/{models.py → _base/models.py} +1 -1
- digitalhub/entities/function/_base/spec.py +15 -0
- digitalhub/entities/function/_base/status.py +9 -0
- digitalhub/entities/function/builder.py +22 -57
- digitalhub/entities/function/crud.py +3 -3
- digitalhub/entities/model/_base/__init__.py +0 -0
- digitalhub/entities/model/_base/builder.py +86 -0
- digitalhub/entities/model/{entity/_base.py → _base/entity.py} +5 -5
- digitalhub/entities/model/_base/spec.py +49 -0
- digitalhub/entities/model/_base/status.py +9 -0
- digitalhub/entities/model/builder.py +16 -117
- digitalhub/entities/model/crud.py +4 -4
- digitalhub/entities/model/huggingface/__init__.py +0 -0
- digitalhub/entities/model/huggingface/builder.py +18 -0
- digitalhub/entities/model/huggingface/entity.py +32 -0
- digitalhub/entities/model/huggingface/spec.py +36 -0
- digitalhub/entities/model/huggingface/status.py +9 -0
- digitalhub/entities/model/mlflow/__init__.py +0 -0
- digitalhub/entities/model/mlflow/builder.py +18 -0
- digitalhub/entities/model/mlflow/entity.py +32 -0
- digitalhub/entities/model/mlflow/spec.py +44 -0
- digitalhub/entities/model/mlflow/status.py +9 -0
- digitalhub/entities/model/{entity/mlflow.py → mlflow/utils.py} +1 -10
- digitalhub/entities/model/model/__init__.py +0 -0
- digitalhub/entities/model/model/builder.py +18 -0
- digitalhub/entities/model/model/entity.py +32 -0
- digitalhub/entities/model/model/spec.py +15 -0
- digitalhub/entities/model/model/status.py +9 -0
- digitalhub/entities/model/sklearn/__init__.py +0 -0
- digitalhub/entities/model/sklearn/builder.py +18 -0
- digitalhub/entities/model/sklearn/entity.py +32 -0
- digitalhub/entities/model/sklearn/spec.py +15 -0
- digitalhub/entities/model/sklearn/status.py +9 -0
- digitalhub/entities/project/_base/__init__.py +0 -0
- digitalhub/entities/project/_base/builder.py +128 -0
- digitalhub/entities/project/{entity.py → _base/entity.py} +18 -60
- digitalhub/entities/project/{spec.py → _base/spec.py} +4 -4
- digitalhub/entities/project/_base/status.py +9 -0
- digitalhub/entities/project/builder.py +20 -51
- digitalhub/entities/project/crud.py +2 -2
- digitalhub/entities/run/_base/__init__.py +0 -0
- digitalhub/entities/run/_base/builder.py +73 -0
- digitalhub/entities/run/{entity.py → _base/entity.py} +12 -155
- digitalhub/entities/run/{spec.py → _base/spec.py} +8 -8
- digitalhub/entities/run/{status.py → _base/status.py} +4 -4
- digitalhub/entities/run/builder.py +21 -47
- digitalhub/entities/run/crud.py +3 -3
- digitalhub/entities/secret/_base/__init__.py +0 -0
- digitalhub/entities/secret/_base/builder.py +81 -0
- digitalhub/entities/secret/{entity.py → _base/entity.py} +7 -6
- digitalhub/entities/secret/{spec.py → _base/spec.py} +4 -4
- digitalhub/entities/secret/_base/status.py +9 -0
- digitalhub/entities/secret/builder.py +20 -62
- digitalhub/entities/secret/crud.py +12 -4
- digitalhub/entities/task/_base/__init__.py +0 -0
- digitalhub/entities/task/_base/builder.py +76 -0
- digitalhub/entities/task/{entity.py → _base/entity.py} +6 -6
- digitalhub/entities/task/{models.py → _base/models.py} +9 -0
- digitalhub/entities/task/{spec.py → _base/spec.py} +9 -7
- digitalhub/entities/task/_base/status.py +9 -0
- digitalhub/entities/task/builder.py +21 -44
- digitalhub/entities/task/crud.py +3 -3
- digitalhub/entities/utils/__init__.py +0 -0
- digitalhub/entities/{utils.py → utils/utils.py} +2 -2
- digitalhub/entities/workflow/_base/__init__.py +0 -0
- digitalhub/entities/workflow/_base/builder.py +78 -0
- digitalhub/entities/workflow/{entity.py → _base/entity.py} +8 -8
- digitalhub/entities/workflow/_base/spec.py +15 -0
- digitalhub/entities/workflow/_base/status.py +9 -0
- digitalhub/entities/workflow/builder.py +20 -60
- digitalhub/entities/workflow/crud.py +3 -3
- digitalhub/factory/__init__.py +0 -0
- digitalhub/factory/factory.py +204 -0
- digitalhub/factory/utils.py +90 -0
- digitalhub/readers/_base/__init__.py +0 -0
- digitalhub/readers/builder.py +1 -1
- digitalhub/readers/pandas/__init__.py +0 -0
- digitalhub/readers/{objects/pandas.py → pandas/readers.py} +1 -1
- digitalhub/readers/registry.py +1 -1
- digitalhub/runtimes/builder.py +24 -41
- digitalhub/runtimes/kind_registry.py +14 -0
- digitalhub/runtimes/utils.py +28 -0
- digitalhub/stores/_base/__init__.py +0 -0
- digitalhub/stores/builder.py +6 -6
- digitalhub/stores/local/__init__.py +0 -0
- digitalhub/stores/{objects/local.py → local/store.py} +1 -1
- digitalhub/stores/remote/__init__.py +0 -0
- digitalhub/stores/{objects/remote.py → remote/store.py} +1 -1
- digitalhub/stores/s3/__init__.py +0 -0
- digitalhub/stores/{objects/s3.py → s3/store.py} +1 -1
- digitalhub/stores/sql/__init__.py +0 -0
- digitalhub/stores/{objects/sql.py → sql/store.py} +1 -1
- digitalhub/utils/exceptions.py +6 -0
- digitalhub/utils/generic_utils.py +18 -42
- digitalhub/utils/s3_utils.py +58 -0
- {digitalhub-0.8.0b2.dist-info → digitalhub-0.8.0b4.dist-info}/METADATA +3 -2
- digitalhub-0.8.0b4.dist-info/RECORD +232 -0
- {digitalhub-0.8.0b2.dist-info → digitalhub-0.8.0b4.dist-info}/WHEEL +1 -1
- test/local/CRUD/test_artifacts.py +96 -0
- test/local/CRUD/test_dataitems.py +96 -0
- test/local/CRUD/test_models.py +95 -0
- test/test_crud_functions.py +1 -1
- test/test_crud_runs.py +1 -1
- test/test_crud_tasks.py +1 -1
- digitalhub/entities/_base/entity/unversioned.py +0 -87
- digitalhub/entities/_base/entity/versioned.py +0 -94
- digitalhub/entities/artifact/entity/artifact.py +0 -9
- digitalhub/entities/dataitem/entity/dataitem.py +0 -9
- digitalhub/entities/dataitem/entity/iceberg.py +0 -7
- digitalhub/entities/dataitem/spec.py +0 -61
- digitalhub/entities/dataitem/status.py +0 -38
- digitalhub/entities/function/spec.py +0 -81
- digitalhub/entities/function/status.py +0 -9
- digitalhub/entities/model/entity/huggingface.py +0 -9
- digitalhub/entities/model/entity/model.py +0 -9
- digitalhub/entities/model/entity/sklearn.py +0 -9
- digitalhub/entities/model/spec.py +0 -146
- digitalhub/entities/model/status.py +0 -33
- digitalhub/entities/project/status.py +0 -9
- digitalhub/entities/registries.py +0 -48
- digitalhub/entities/secret/status.py +0 -9
- digitalhub/entities/task/status.py +0 -9
- digitalhub/entities/workflow/spec.py +0 -15
- digitalhub/entities/workflow/status.py +0 -9
- digitalhub/registry/models.py +0 -87
- digitalhub/registry/registry.py +0 -74
- digitalhub/registry/utils.py +0 -150
- digitalhub-0.8.0b2.dist-info/RECORD +0 -161
- test/test_crud_artifacts.py +0 -96
- test/test_crud_dataitems.py +0 -96
- /digitalhub/client/{objects → _base}/__init__.py +0 -0
- /digitalhub/client/{objects/base.py → _base/client.py} +0 -0
- /digitalhub/{datastores/objects → client/dhcore}/__init__.py +0 -0
- /digitalhub/{entities/_base/spec → client/local}/__init__.py +0 -0
- /digitalhub/{entities/_base/status → datastores/_base}/__init__.py +0 -0
- /digitalhub/{entities/artifact/entity → datastores/local}/__init__.py +0 -0
- /digitalhub/{entities/dataitem/entity → datastores/remote}/__init__.py +0 -0
- /digitalhub/{entities/model/entity → datastores/s3}/__init__.py +0 -0
- /digitalhub/{readers/objects → datastores/sql}/__init__.py +0 -0
- /digitalhub/{registry → entities/_base/_base}/__init__.py +0 -0
- /digitalhub/{stores/objects → entities/_base/context}/__init__.py +0 -0
- /digitalhub/entities/dataitem/{models.py → table/models.py} +0 -0
- /digitalhub/entities/model/{models.py → mlflow/models.py} +0 -0
- /digitalhub/entities/{_base → utils}/api.py +0 -0
- /digitalhub/entities/{entity_types.py → utils/entity_types.py} +0 -0
- /digitalhub/entities/{_base → utils}/state.py +0 -0
- /digitalhub/readers/{objects/base.py → _base/readers.py} +0 -0
- /digitalhub/runtimes/{base.py → _base.py} +0 -0
- /digitalhub/stores/{objects/base.py → _base/store.py} +0 -0
- {digitalhub-0.8.0b2.dist-info → digitalhub-0.8.0b4.dist-info}/LICENSE.txt +0 -0
- {digitalhub-0.8.0b2.dist-info → digitalhub-0.8.0b4.dist-info}/top_level.txt +0 -0
- /test/{test_imports.py → local/imports/test_imports.py} +0 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from digitalhub.entities._base.versioned.builder import VersionedBuilder
|
|
6
|
+
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
7
|
+
from digitalhub.utils.exceptions import EntityError
|
|
8
|
+
|
|
9
|
+
if typing.TYPE_CHECKING:
|
|
10
|
+
from digitalhub.entities.dataitem._base.entity import Dataitem
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class DataitemBuilder(VersionedBuilder):
|
|
14
|
+
"""
|
|
15
|
+
Dataitem builder.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
ENTITY_TYPE = EntityTypes.DATAITEM.value
|
|
19
|
+
|
|
20
|
+
def build(
|
|
21
|
+
self,
|
|
22
|
+
kind: str,
|
|
23
|
+
project: str,
|
|
24
|
+
name: str,
|
|
25
|
+
uuid: str | None = None,
|
|
26
|
+
description: str | None = None,
|
|
27
|
+
labels: list[str] | None = None,
|
|
28
|
+
embedded: bool = True,
|
|
29
|
+
path: str | None = None,
|
|
30
|
+
**kwargs,
|
|
31
|
+
) -> Dataitem:
|
|
32
|
+
"""
|
|
33
|
+
Create a new object.
|
|
34
|
+
|
|
35
|
+
Parameters
|
|
36
|
+
----------
|
|
37
|
+
project : str
|
|
38
|
+
Project name.
|
|
39
|
+
name : str
|
|
40
|
+
Object name.
|
|
41
|
+
kind : str
|
|
42
|
+
Kind the object.
|
|
43
|
+
uuid : str
|
|
44
|
+
ID of the object.
|
|
45
|
+
description : str
|
|
46
|
+
Description of the object (human readable).
|
|
47
|
+
labels : list[str]
|
|
48
|
+
List of labels.
|
|
49
|
+
embedded : bool
|
|
50
|
+
Flag to determine if object spec must be embedded in project spec.
|
|
51
|
+
path : str
|
|
52
|
+
Object path on local file system or remote storage. It is also the destination path of upload() method.
|
|
53
|
+
**kwargs : dict
|
|
54
|
+
Spec keyword arguments.
|
|
55
|
+
|
|
56
|
+
Returns
|
|
57
|
+
-------
|
|
58
|
+
Dataitem
|
|
59
|
+
Object instance.
|
|
60
|
+
"""
|
|
61
|
+
if path is None:
|
|
62
|
+
raise EntityError("Path must be provided.")
|
|
63
|
+
|
|
64
|
+
name = self.build_name(name)
|
|
65
|
+
uuid = self.build_uuid(uuid)
|
|
66
|
+
metadata = self.build_metadata(
|
|
67
|
+
project=project,
|
|
68
|
+
name=name,
|
|
69
|
+
description=description,
|
|
70
|
+
labels=labels,
|
|
71
|
+
embedded=embedded,
|
|
72
|
+
)
|
|
73
|
+
spec = self.build_spec(
|
|
74
|
+
path=path,
|
|
75
|
+
**kwargs,
|
|
76
|
+
)
|
|
77
|
+
status = self.build_status()
|
|
78
|
+
return self.build_entity(
|
|
79
|
+
project=project,
|
|
80
|
+
name=name,
|
|
81
|
+
uuid=uuid,
|
|
82
|
+
kind=kind,
|
|
83
|
+
metadata=metadata,
|
|
84
|
+
spec=spec,
|
|
85
|
+
status=status,
|
|
86
|
+
)
|
|
@@ -3,15 +3,15 @@ from __future__ import annotations
|
|
|
3
3
|
import typing
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
|
-
from digitalhub.entities._base.entity
|
|
7
|
-
from digitalhub.entities.entity_types import EntityTypes
|
|
6
|
+
from digitalhub.entities._base.material.entity import MaterialEntity
|
|
7
|
+
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
8
8
|
from digitalhub.utils.exceptions import EntityError
|
|
9
9
|
from digitalhub.utils.uri_utils import map_uri_scheme
|
|
10
10
|
|
|
11
11
|
if typing.TYPE_CHECKING:
|
|
12
|
-
from digitalhub.entities._base.metadata import Metadata
|
|
13
|
-
from digitalhub.entities.dataitem.spec import DataitemSpec
|
|
14
|
-
from digitalhub.entities.dataitem.status import DataitemStatus
|
|
12
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
13
|
+
from digitalhub.entities.dataitem._base.spec import DataitemSpec
|
|
14
|
+
from digitalhub.entities.dataitem._base.status import DataitemStatus
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class Dataitem(MaterialEntity):
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities._base.material.spec import MaterialSpec, MaterialValidator
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class DataitemSpec(MaterialSpec):
|
|
7
|
+
"""
|
|
8
|
+
DataitemSpec specifications.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class DataitemValidator(MaterialValidator):
|
|
13
|
+
"""
|
|
14
|
+
DataitemValidator validator.
|
|
15
|
+
"""
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities._base.material.status import MaterialStatus
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class DataitemStatus(MaterialStatus):
|
|
7
|
+
"""
|
|
8
|
+
DataitemStatus status.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
def __init__(
|
|
12
|
+
self,
|
|
13
|
+
state: str,
|
|
14
|
+
message: str | None = None,
|
|
15
|
+
files: list[dict] | None = None,
|
|
16
|
+
preview: dict | None = None,
|
|
17
|
+
**kwargs,
|
|
18
|
+
) -> None:
|
|
19
|
+
super().__init__(state, message, files)
|
|
20
|
+
self.preview = preview
|
|
@@ -2,127 +2,32 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
|
-
from digitalhub.
|
|
6
|
-
from digitalhub.
|
|
7
|
-
from digitalhub.entities._builders.spec import build_spec
|
|
8
|
-
from digitalhub.entities._builders.status import build_status
|
|
9
|
-
from digitalhub.entities._builders.uuid import build_uuid
|
|
10
|
-
from digitalhub.utils.exceptions import EntityError
|
|
5
|
+
from digitalhub.factory.factory import factory
|
|
6
|
+
from digitalhub.utils.exceptions import BuilderError
|
|
11
7
|
|
|
12
8
|
if typing.TYPE_CHECKING:
|
|
13
|
-
from digitalhub.entities.dataitem.entity
|
|
9
|
+
from digitalhub.entities.dataitem._base.entity import Dataitem
|
|
14
10
|
|
|
15
|
-
# Manage class mapper
|
|
16
|
-
cls_mapper = {}
|
|
17
|
-
try:
|
|
18
|
-
from digitalhub.entities.dataitem.entity.dataitem import DataitemDataitem
|
|
19
11
|
|
|
20
|
-
|
|
21
|
-
except ImportError:
|
|
22
|
-
...
|
|
23
|
-
try:
|
|
24
|
-
from digitalhub.entities.dataitem.entity.table import DataitemTable
|
|
25
|
-
|
|
26
|
-
cls_mapper["table"] = DataitemTable
|
|
27
|
-
except ImportError:
|
|
28
|
-
...
|
|
29
|
-
try:
|
|
30
|
-
from digitalhub.entities.dataitem.entity.iceberg import DataitemIceberg
|
|
31
|
-
|
|
32
|
-
cls_mapper["iceberg"] = DataitemIceberg
|
|
33
|
-
except ImportError:
|
|
34
|
-
pass
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def _choose_dataitem_type(kind: str) -> type[Dataitem]:
|
|
38
|
-
"""
|
|
39
|
-
Choose class based on kind.
|
|
40
|
-
|
|
41
|
-
Parameters
|
|
42
|
-
----------
|
|
43
|
-
kind : str
|
|
44
|
-
Kind the object.
|
|
45
|
-
|
|
46
|
-
Returns
|
|
47
|
-
-------
|
|
48
|
-
type[Dataitem]
|
|
49
|
-
Class of the dataitem.
|
|
50
|
-
"""
|
|
51
|
-
try:
|
|
52
|
-
return cls_mapper[kind]
|
|
53
|
-
except KeyError:
|
|
54
|
-
raise EntityError(f"Unknown dataitem kind: {kind}")
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
def dataitem_from_parameters(
|
|
58
|
-
project: str,
|
|
59
|
-
name: str,
|
|
60
|
-
kind: str,
|
|
61
|
-
uuid: str | None = None,
|
|
62
|
-
description: str | None = None,
|
|
63
|
-
labels: list[str] | None = None,
|
|
64
|
-
embedded: bool = True,
|
|
65
|
-
path: str | None = None,
|
|
66
|
-
**kwargs,
|
|
67
|
-
) -> Dataitem:
|
|
12
|
+
def dataitem_from_parameters(**kwargs) -> Dataitem:
|
|
68
13
|
"""
|
|
69
14
|
Create a new object.
|
|
70
15
|
|
|
71
16
|
Parameters
|
|
72
17
|
----------
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
name : str
|
|
76
|
-
Object name.
|
|
77
|
-
kind : str
|
|
78
|
-
Kind the object.
|
|
79
|
-
uuid : str
|
|
80
|
-
ID of the object (UUID4, e.g. 40f25c4b-d26b-4221-b048-9527aff291e2).
|
|
81
|
-
description : str
|
|
82
|
-
Description of the object (human readable).
|
|
83
|
-
labels : list[str]
|
|
84
|
-
List of labels.
|
|
85
|
-
embedded : bool
|
|
86
|
-
Flag to determine if object spec must be embedded in project spec.
|
|
87
|
-
path : str
|
|
88
|
-
Object path on local file system or remote storage. It is also the destination path of upload() method.
|
|
89
|
-
**kwargs : dict
|
|
90
|
-
Spec keyword arguments.
|
|
18
|
+
**kwargs
|
|
19
|
+
Keyword arguments.
|
|
91
20
|
|
|
92
21
|
Returns
|
|
93
22
|
-------
|
|
94
23
|
Dataitem
|
|
95
24
|
Object instance.
|
|
96
25
|
"""
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
kind,
|
|
103
|
-
project=project,
|
|
104
|
-
name=name,
|
|
105
|
-
version=uuid,
|
|
106
|
-
description=description,
|
|
107
|
-
labels=labels,
|
|
108
|
-
embedded=embedded,
|
|
109
|
-
)
|
|
110
|
-
spec = build_spec(
|
|
111
|
-
kind,
|
|
112
|
-
path=path,
|
|
113
|
-
**kwargs,
|
|
114
|
-
)
|
|
115
|
-
status = build_status(kind)
|
|
116
|
-
cls = _choose_dataitem_type(kind)
|
|
117
|
-
return cls(
|
|
118
|
-
project=project,
|
|
119
|
-
name=name,
|
|
120
|
-
uuid=uuid,
|
|
121
|
-
kind=kind,
|
|
122
|
-
metadata=metadata,
|
|
123
|
-
spec=spec,
|
|
124
|
-
status=status,
|
|
125
|
-
)
|
|
26
|
+
try:
|
|
27
|
+
kind = kwargs["kind"]
|
|
28
|
+
except KeyError:
|
|
29
|
+
raise BuilderError("Missing 'kind' parameter.")
|
|
30
|
+
return factory.build_entity_from_params(kind, **kwargs)
|
|
126
31
|
|
|
127
32
|
|
|
128
33
|
def dataitem_from_dict(obj: dict) -> Dataitem:
|
|
@@ -139,6 +44,8 @@ def dataitem_from_dict(obj: dict) -> Dataitem:
|
|
|
139
44
|
Dataitem
|
|
140
45
|
Object instance.
|
|
141
46
|
"""
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
47
|
+
try:
|
|
48
|
+
kind = obj["kind"]
|
|
49
|
+
except KeyError:
|
|
50
|
+
raise BuilderError("Missing 'kind' parameter.")
|
|
51
|
+
return factory.build_entity_from_dict(kind, obj)
|
|
@@ -14,15 +14,16 @@ from digitalhub.entities._base.crud import (
|
|
|
14
14
|
)
|
|
15
15
|
from digitalhub.entities._builders.uuid import build_uuid
|
|
16
16
|
from digitalhub.entities.dataitem.builder import dataitem_from_dict, dataitem_from_parameters
|
|
17
|
-
from digitalhub.entities.entity_types import EntityTypes
|
|
18
|
-
from digitalhub.entities.utils import build_log_path_from_filename, build_log_path_from_source, eval_local_source
|
|
17
|
+
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
18
|
+
from digitalhub.entities.utils.utils import build_log_path_from_filename, build_log_path_from_source, eval_local_source
|
|
19
19
|
from digitalhub.readers.builder import get_reader_by_object
|
|
20
20
|
from digitalhub.stores.builder import get_store
|
|
21
21
|
from digitalhub.utils.exceptions import EntityAlreadyExistsError
|
|
22
|
+
from digitalhub.utils.generic_utils import slugify_string
|
|
22
23
|
from digitalhub.utils.io_utils import read_yaml
|
|
23
24
|
|
|
24
25
|
if typing.TYPE_CHECKING:
|
|
25
|
-
from digitalhub.entities.dataitem.entity
|
|
26
|
+
from digitalhub.entities.dataitem._base.entity import Dataitem
|
|
26
27
|
|
|
27
28
|
|
|
28
29
|
ENTITY_TYPE = EntityTypes.DATAITEM.value
|
|
@@ -51,7 +52,7 @@ def new_dataitem(
|
|
|
51
52
|
kind : str
|
|
52
53
|
Kind the object.
|
|
53
54
|
uuid : str
|
|
54
|
-
ID of the object
|
|
55
|
+
ID of the object.
|
|
55
56
|
description : str
|
|
56
57
|
Description of the object (human readable).
|
|
57
58
|
labels : list[str]
|
|
@@ -152,10 +153,12 @@ def log_dataitem(
|
|
|
152
153
|
|
|
153
154
|
# Case where data is provided
|
|
154
155
|
else:
|
|
156
|
+
extension = extension if extension is not None else "parquet"
|
|
155
157
|
if path is None:
|
|
156
158
|
uuid = build_uuid()
|
|
157
159
|
kwargs["uuid"] = uuid
|
|
158
|
-
|
|
160
|
+
slug = slugify_string(name) + f".{extension}"
|
|
161
|
+
path = build_log_path_from_filename(project, ENTITY_TYPE, name, uuid, slug)
|
|
159
162
|
|
|
160
163
|
obj = dataitem_from_parameters(project=project, name=name, kind=kind, path=path, **kwargs)
|
|
161
164
|
if kind == "table":
|
|
File without changes
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities.dataitem._base.builder import DataitemBuilder
|
|
4
|
+
from digitalhub.entities.dataitem.dataitem.entity import DataitemDataitem
|
|
5
|
+
from digitalhub.entities.dataitem.dataitem.spec import DataitemSpecDataitem, DataitemValidatorDataitem
|
|
6
|
+
from digitalhub.entities.dataitem.dataitem.status import DataitemStatusDataitem
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class DataitemDataitemBuilder(DataitemBuilder):
|
|
10
|
+
"""
|
|
11
|
+
DataitemDataitem builder.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
ENTITY_CLASS = DataitemDataitem
|
|
15
|
+
ENTITY_SPEC_CLASS = DataitemSpecDataitem
|
|
16
|
+
ENTITY_SPEC_VALIDATOR = DataitemValidatorDataitem
|
|
17
|
+
ENTITY_STATUS_CLASS = DataitemStatusDataitem
|
|
18
|
+
ENTITY_KIND = "dataitem"
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from digitalhub.entities.dataitem._base.entity import Dataitem
|
|
6
|
+
|
|
7
|
+
if typing.TYPE_CHECKING:
|
|
8
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
9
|
+
from digitalhub.entities.dataitem.dataitem.spec import DataitemSpecDataitem
|
|
10
|
+
from digitalhub.entities.dataitem.dataitem.status import DataitemStatusDataitem
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class DataitemDataitem(Dataitem):
|
|
14
|
+
"""
|
|
15
|
+
DataitemDataitem class.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
def __init__(
|
|
19
|
+
self,
|
|
20
|
+
project: str,
|
|
21
|
+
name: str,
|
|
22
|
+
uuid: str,
|
|
23
|
+
kind: str,
|
|
24
|
+
metadata: Metadata,
|
|
25
|
+
spec: DataitemSpecDataitem,
|
|
26
|
+
status: DataitemStatusDataitem,
|
|
27
|
+
user: str | None = None,
|
|
28
|
+
) -> None:
|
|
29
|
+
super().__init__(project, name, uuid, kind, metadata, spec, status, user)
|
|
30
|
+
|
|
31
|
+
self.spec: DataitemSpecDataitem
|
|
32
|
+
self.status: DataitemStatusDataitem
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities.dataitem._base.spec import DataitemSpec, DataitemValidator
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class DataitemSpecDataitem(DataitemSpec):
|
|
7
|
+
"""
|
|
8
|
+
DataitemSpecDataitem specifications.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class DataitemValidatorDataitem(DataitemValidator):
|
|
13
|
+
"""
|
|
14
|
+
DataitemValidatorDataitem validator.
|
|
15
|
+
"""
|
|
File without changes
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities.dataitem._base.builder import DataitemBuilder
|
|
4
|
+
from digitalhub.entities.dataitem.iceberg.entity import DataitemIceberg
|
|
5
|
+
from digitalhub.entities.dataitem.iceberg.spec import DataitemSpecIceberg, DataitemValidatorIceberg
|
|
6
|
+
from digitalhub.entities.dataitem.iceberg.status import DataitemStatusIceberg
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class DataitemIcebergBuilder(DataitemBuilder):
|
|
10
|
+
"""
|
|
11
|
+
DataitemIceberg builder.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
ENTITY_CLASS = DataitemIceberg
|
|
15
|
+
ENTITY_SPEC_CLASS = DataitemSpecIceberg
|
|
16
|
+
ENTITY_SPEC_VALIDATOR = DataitemValidatorIceberg
|
|
17
|
+
ENTITY_STATUS_CLASS = DataitemStatusIceberg
|
|
18
|
+
ENTITY_KIND = "iceberg"
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from digitalhub.entities.dataitem._base.entity import Dataitem
|
|
6
|
+
|
|
7
|
+
if typing.TYPE_CHECKING:
|
|
8
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
9
|
+
from digitalhub.entities.dataitem.iceberg.spec import DataitemSpecIceberg
|
|
10
|
+
from digitalhub.entities.dataitem.iceberg.status import DataitemStatusIceberg
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class DataitemIceberg(Dataitem):
|
|
14
|
+
"""
|
|
15
|
+
DataitemIceberg class.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
def __init__(
|
|
19
|
+
self,
|
|
20
|
+
project: str,
|
|
21
|
+
name: str,
|
|
22
|
+
uuid: str,
|
|
23
|
+
kind: str,
|
|
24
|
+
metadata: Metadata,
|
|
25
|
+
spec: DataitemSpecIceberg,
|
|
26
|
+
status: DataitemStatusIceberg,
|
|
27
|
+
user: str | None = None,
|
|
28
|
+
) -> None:
|
|
29
|
+
super().__init__(project, name, uuid, kind, metadata, spec, status, user)
|
|
30
|
+
|
|
31
|
+
self.spec: DataitemSpecIceberg
|
|
32
|
+
self.status: DataitemStatusIceberg
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities.dataitem._base.spec import DataitemSpec, DataitemValidator
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class DataitemSpecIceberg(DataitemSpec):
|
|
7
|
+
"""
|
|
8
|
+
DataitemSpecIceberg specifications.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class DataitemValidatorIceberg(DataitemValidator):
|
|
13
|
+
"""
|
|
14
|
+
DataitemValidatorIceberg validator.
|
|
15
|
+
"""
|
|
File without changes
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities.dataitem._base.builder import DataitemBuilder
|
|
4
|
+
from digitalhub.entities.dataitem.table.entity import DataitemTable
|
|
5
|
+
from digitalhub.entities.dataitem.table.spec import DataitemSpecTable, DataitemValidatorTable
|
|
6
|
+
from digitalhub.entities.dataitem.table.status import DataitemStatusTable
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class DataitemTableBuilder(DataitemBuilder):
|
|
10
|
+
"""
|
|
11
|
+
DataitemTable builder.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
ENTITY_CLASS = DataitemTable
|
|
15
|
+
ENTITY_SPEC_CLASS = DataitemSpecTable
|
|
16
|
+
ENTITY_SPEC_VALIDATOR = DataitemValidatorTable
|
|
17
|
+
ENTITY_STATUS_CLASS = DataitemStatusTable
|
|
18
|
+
ENTITY_KIND = "table"
|
|
@@ -1,20 +1,41 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import shutil
|
|
4
|
+
import typing
|
|
4
5
|
from pathlib import Path
|
|
5
6
|
from typing import Any
|
|
6
7
|
|
|
7
8
|
from digitalhub.datastores.builder import get_datastore
|
|
8
|
-
from digitalhub.entities.dataitem.entity
|
|
9
|
+
from digitalhub.entities.dataitem._base.entity import Dataitem
|
|
9
10
|
from digitalhub.utils.uri_utils import check_local_path
|
|
10
11
|
|
|
12
|
+
if typing.TYPE_CHECKING:
|
|
13
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
14
|
+
from digitalhub.entities.dataitem.table.spec import DataitemSpecTable
|
|
15
|
+
from digitalhub.entities.dataitem.table.status import DataitemStatusTable
|
|
11
16
|
|
|
12
|
-
class DataitemTable(Dataitem):
|
|
13
17
|
|
|
18
|
+
class DataitemTable(Dataitem):
|
|
14
19
|
"""
|
|
15
|
-
|
|
20
|
+
DataitemTable class.
|
|
16
21
|
"""
|
|
17
22
|
|
|
23
|
+
def __init__(
|
|
24
|
+
self,
|
|
25
|
+
project: str,
|
|
26
|
+
name: str,
|
|
27
|
+
uuid: str,
|
|
28
|
+
kind: str,
|
|
29
|
+
metadata: Metadata,
|
|
30
|
+
spec: DataitemSpecTable,
|
|
31
|
+
status: DataitemStatusTable,
|
|
32
|
+
user: str | None = None,
|
|
33
|
+
) -> None:
|
|
34
|
+
super().__init__(project, name, uuid, kind, metadata, spec, status, user)
|
|
35
|
+
|
|
36
|
+
self.spec: DataitemSpecTable
|
|
37
|
+
self.status: DataitemStatusTable
|
|
38
|
+
|
|
18
39
|
def as_df(
|
|
19
40
|
self,
|
|
20
41
|
file_format: str | None = None,
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from pydantic import Field
|
|
4
|
+
|
|
5
|
+
from digitalhub.entities.dataitem._base.spec import DataitemSpec, DataitemValidator
|
|
6
|
+
from digitalhub.entities.dataitem.table.models import TableSchema
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class DataitemSpecTable(DataitemSpec):
|
|
10
|
+
"""
|
|
11
|
+
DataitemSpecTable specifications.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
def __init__(self, path: str, schema: dict | None = None) -> None:
|
|
15
|
+
super().__init__(path)
|
|
16
|
+
self.schema = schema
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class DataitemValidatorTable(DataitemValidator):
|
|
20
|
+
"""
|
|
21
|
+
DataitemValidatorTable validator.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
schema_: TableSchema = Field(default=None, alias="schema")
|
|
25
|
+
"""The schema of the dataitem in table schema format."""
|
|
File without changes
|