digitalhub 0.8.0b1__py3-none-any.whl → 0.8.0b3__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 +2 -2
- digitalhub/client/builder.py +3 -3
- digitalhub/client/{objects/dhcore.py → dhcore/client.py} +3 -48
- 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/context/__init__.py +0 -0
- 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} +6 -6
- 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/{entity/unversioned.py → unversioned/entity.py} +4 -4
- digitalhub/entities/_base/versioned/__init__.py +0 -0
- digitalhub/entities/_base/{entity/versioned.py → versioned/entity.py} +4 -4
- digitalhub/entities/_builders/entity.py +148 -0
- digitalhub/entities/_builders/factory.py +44 -0
- digitalhub/entities/_builders/metadata.py +2 -11
- digitalhub/entities/_builders/spec.py +1 -1
- digitalhub/entities/_builders/status.py +2 -2
- digitalhub/entities/artifact/_base/__init__.py +0 -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/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 +2 -2
- digitalhub/entities/artifact/crud.py +3 -3
- digitalhub/entities/dataitem/_base/__init__.py +0 -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 +4 -4
- digitalhub/entities/dataitem/crud.py +7 -4
- digitalhub/entities/dataitem/dataitem/__init__.py +0 -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/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/{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/{entity.py → _base/entity.py} +6 -6
- 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 +1 -1
- digitalhub/entities/function/crud.py +2 -2
- digitalhub/entities/model/_base/__init__.py +0 -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 +5 -5
- digitalhub/entities/model/crud.py +3 -3
- digitalhub/entities/model/huggingface/__init__.py +0 -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/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/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/entity.py +32 -0
- digitalhub/entities/model/sklearn/spec.py +15 -0
- digitalhub/entities/model/sklearn/status.py +9 -0
- digitalhub/entities/project/builder.py +1 -1
- digitalhub/entities/project/crud.py +2 -2
- digitalhub/entities/project/project/__init__.py +0 -0
- digitalhub/entities/project/{entity.py → project/entity.py} +12 -12
- digitalhub/entities/project/{spec.py → project/spec.py} +4 -4
- digitalhub/entities/project/project/status.py +9 -0
- digitalhub/entities/registries.py +6 -6
- digitalhub/entities/run/_base/__init__.py +0 -0
- digitalhub/entities/run/{entity.py → _base/entity.py} +7 -7
- digitalhub/entities/run/{spec.py → _base/spec.py} +8 -8
- digitalhub/entities/run/{status.py → _base/status.py} +9 -9
- digitalhub/entities/run/builder.py +1 -1
- digitalhub/entities/run/crud.py +2 -2
- digitalhub/entities/secret/builder.py +1 -1
- digitalhub/entities/secret/crud.py +11 -3
- digitalhub/entities/secret/secret/__init__.py +0 -0
- digitalhub/entities/secret/{entity.py → secret/entity.py} +7 -6
- digitalhub/entities/secret/{spec.py → secret/spec.py} +4 -4
- digitalhub/entities/secret/secret/status.py +9 -0
- digitalhub/entities/task/_base/__init__.py +0 -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 +1 -1
- digitalhub/entities/task/crud.py +2 -2
- 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/{entity.py → _base/entity.py} +6 -6
- digitalhub/entities/workflow/_base/spec.py +15 -0
- digitalhub/entities/workflow/_base/status.py +9 -0
- digitalhub/entities/workflow/builder.py +1 -1
- digitalhub/entities/workflow/crud.py +2 -2
- 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/registry/utils.py +5 -4
- 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/generic_utils.py +18 -42
- digitalhub/utils/s3_utils.py +58 -0
- {digitalhub-0.8.0b1.dist-info → digitalhub-0.8.0b3.dist-info}/METADATA +3 -2
- digitalhub-0.8.0b3.dist-info/RECORD +214 -0
- {digitalhub-0.8.0b1.dist-info → digitalhub-0.8.0b3.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/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/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-0.8.0b1.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/{stores/objects → entities/_base/_base}/__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/stores/{objects/base.py → _base/store.py} +0 -0
- {digitalhub-0.8.0b1.dist-info → digitalhub-0.8.0b3.dist-info}/LICENSE.txt +0 -0
- {digitalhub-0.8.0b1.dist-info → digitalhub-0.8.0b3.dist-info}/top_level.txt +0 -0
- /test/{test_imports.py → local/imports/test_imports.py} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from digitalhub.entities._base.spec
|
|
3
|
+
from digitalhub.entities._base.entity.spec import Spec, SpecValidator
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
class MaterialSpec(Spec):
|
|
7
7
|
"""
|
|
8
|
-
Material
|
|
8
|
+
Material specifications.class.
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
11
|
def __init__(self, path: str, **kwargs) -> None:
|
|
@@ -13,7 +13,7 @@ class MaterialSpec(Spec):
|
|
|
13
13
|
self.path = path
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
class
|
|
16
|
+
class MaterialValidator(SpecValidator):
|
|
17
17
|
"""
|
|
18
18
|
Material parameters class.
|
|
19
19
|
"""
|
|
File without changes
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
|
-
from digitalhub.entities._base.entity
|
|
5
|
+
from digitalhub.entities._base.context.entity import ContextEntity
|
|
6
6
|
from digitalhub.entities._builders.metadata import build_metadata
|
|
7
7
|
from digitalhub.entities._builders.spec import build_spec
|
|
8
8
|
from digitalhub.entities._builders.status import build_status
|
|
@@ -10,9 +10,9 @@ from digitalhub.entities._builders.uuid import build_uuid
|
|
|
10
10
|
from digitalhub.utils.io_utils import write_yaml
|
|
11
11
|
|
|
12
12
|
if typing.TYPE_CHECKING:
|
|
13
|
-
from digitalhub.entities._base.metadata import Metadata
|
|
14
|
-
from digitalhub.entities._base.spec
|
|
15
|
-
from digitalhub.entities._base.status
|
|
13
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
14
|
+
from digitalhub.entities._base.entity.spec import Spec
|
|
15
|
+
from digitalhub.entities._base.entity.status import Status
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class UnversionedEntity(ContextEntity):
|
|
File without changes
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
|
-
from digitalhub.entities._base.entity
|
|
5
|
+
from digitalhub.entities._base.context.entity import ContextEntity
|
|
6
6
|
from digitalhub.entities._builders.metadata import build_metadata
|
|
7
7
|
from digitalhub.entities._builders.name import build_name
|
|
8
8
|
from digitalhub.entities._builders.spec import build_spec
|
|
@@ -11,9 +11,9 @@ from digitalhub.entities._builders.uuid import build_uuid
|
|
|
11
11
|
from digitalhub.utils.io_utils import write_yaml
|
|
12
12
|
|
|
13
13
|
if typing.TYPE_CHECKING:
|
|
14
|
-
from digitalhub.entities._base.metadata import Metadata
|
|
15
|
-
from digitalhub.entities._base.spec
|
|
16
|
-
from digitalhub.entities._base.status
|
|
14
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
15
|
+
from digitalhub.entities._base.entity.spec import Spec
|
|
16
|
+
from digitalhub.entities._base.entity.status import Status
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class VersionedEntity(ContextEntity):
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
from abc import ABCMeta, abstractmethod
|
|
5
|
+
|
|
6
|
+
from digitalhub.entities._builders.metadata import build_metadata
|
|
7
|
+
from digitalhub.entities._builders.name import build_name
|
|
8
|
+
from digitalhub.entities._builders.spec import build_spec
|
|
9
|
+
from digitalhub.entities._builders.status import build_status
|
|
10
|
+
from digitalhub.entities._builders.uuid import build_uuid
|
|
11
|
+
|
|
12
|
+
if typing.TYPE_CHECKING:
|
|
13
|
+
from digitalhub.entities._base.entity.entity import Entity
|
|
14
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
15
|
+
from digitalhub.entities._base.entity.spec import Spec, SpecValidator
|
|
16
|
+
from digitalhub.entities._base.entity.status import Status
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class EntityBuilder(metaclass=ABCMeta):
|
|
20
|
+
"""
|
|
21
|
+
Builder class for building entities.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
# Class variables
|
|
25
|
+
ENTITY_CLASS: Entity = None
|
|
26
|
+
ENTITY_SPEC_CLASS: Spec = None
|
|
27
|
+
ENTITY_SPEC_VALIDATOR: SpecValidator = None
|
|
28
|
+
ENTITY_STATUS_CLASS: Status = None
|
|
29
|
+
|
|
30
|
+
def __init__(self) -> None:
|
|
31
|
+
if self.ENTITY_CLASS is None:
|
|
32
|
+
raise ValueError("ENTITY_CLASS must be set")
|
|
33
|
+
if self.ENTITY_SPEC_CLASS is None:
|
|
34
|
+
raise ValueError("ENTITY_SPEC_CLASS must be set")
|
|
35
|
+
if self.ENTITY_SPEC_VALIDATOR is None:
|
|
36
|
+
raise ValueError("ENTITY_SPEC_VALIDATOR must be set")
|
|
37
|
+
if self.ENTITY_STATUS_CLASS is None:
|
|
38
|
+
raise ValueError("ENTITY_STATUS_CLASS must be set")
|
|
39
|
+
|
|
40
|
+
def build_name(self, name: str) -> str:
|
|
41
|
+
"""
|
|
42
|
+
Build entity name.
|
|
43
|
+
|
|
44
|
+
Parameters
|
|
45
|
+
----------
|
|
46
|
+
name : str
|
|
47
|
+
Entity name.
|
|
48
|
+
|
|
49
|
+
Returns
|
|
50
|
+
-------
|
|
51
|
+
str
|
|
52
|
+
Entity name.
|
|
53
|
+
"""
|
|
54
|
+
return build_name(name)
|
|
55
|
+
|
|
56
|
+
def build_uuid(self, uuid: str) -> str:
|
|
57
|
+
"""
|
|
58
|
+
Build entity uuid.
|
|
59
|
+
|
|
60
|
+
Parameters
|
|
61
|
+
----------
|
|
62
|
+
uuid : str
|
|
63
|
+
Entity uuid.
|
|
64
|
+
|
|
65
|
+
Returns
|
|
66
|
+
-------
|
|
67
|
+
str
|
|
68
|
+
Entity uuid.
|
|
69
|
+
"""
|
|
70
|
+
return build_uuid(uuid)
|
|
71
|
+
|
|
72
|
+
def build_metadata(self, kind: str, **kwargs) -> Metadata:
|
|
73
|
+
"""
|
|
74
|
+
Build entity metadata object.
|
|
75
|
+
|
|
76
|
+
Parameters
|
|
77
|
+
----------
|
|
78
|
+
kind : str
|
|
79
|
+
Registry entry kind.
|
|
80
|
+
**kwargs : dict
|
|
81
|
+
Keyword arguments for the constructor.
|
|
82
|
+
|
|
83
|
+
Returns
|
|
84
|
+
-------
|
|
85
|
+
Metadata
|
|
86
|
+
Metadata object.
|
|
87
|
+
"""
|
|
88
|
+
return build_metadata(kind, **kwargs)
|
|
89
|
+
|
|
90
|
+
def build_spec(self, kind: str, **kwargs) -> Spec:
|
|
91
|
+
"""
|
|
92
|
+
Build entity spec object.
|
|
93
|
+
|
|
94
|
+
Parameters
|
|
95
|
+
----------
|
|
96
|
+
kind : str
|
|
97
|
+
Registry entry kind.
|
|
98
|
+
**kwargs : dict
|
|
99
|
+
Keyword arguments for the constructor.
|
|
100
|
+
|
|
101
|
+
Returns
|
|
102
|
+
-------
|
|
103
|
+
Spec
|
|
104
|
+
Spec object.
|
|
105
|
+
"""
|
|
106
|
+
return build_spec(kind, **kwargs)
|
|
107
|
+
|
|
108
|
+
def build_status(self, kind: str, **kwargs) -> Status:
|
|
109
|
+
"""
|
|
110
|
+
Build entity status object.
|
|
111
|
+
|
|
112
|
+
Parameters
|
|
113
|
+
----------
|
|
114
|
+
kind : str
|
|
115
|
+
Registry entry kind.
|
|
116
|
+
**kwargs : dict
|
|
117
|
+
Keyword arguments for the constructor.
|
|
118
|
+
|
|
119
|
+
Returns
|
|
120
|
+
-------
|
|
121
|
+
Status
|
|
122
|
+
Status object.
|
|
123
|
+
"""
|
|
124
|
+
return build_status(kind, **kwargs)
|
|
125
|
+
|
|
126
|
+
@abstractmethod
|
|
127
|
+
def build(self, _validate: bool = True, **kwargs) -> Entity:
|
|
128
|
+
"""
|
|
129
|
+
Build entity object.
|
|
130
|
+
"""
|
|
131
|
+
|
|
132
|
+
def from_dict(self, obj: dict, validate: bool = True) -> Entity:
|
|
133
|
+
"""
|
|
134
|
+
Build entity from dictionary.
|
|
135
|
+
|
|
136
|
+
Parameters
|
|
137
|
+
----------
|
|
138
|
+
obj : dict
|
|
139
|
+
Dictionary to build the entity from.
|
|
140
|
+
validate : bool
|
|
141
|
+
Whether to validate the entity.
|
|
142
|
+
|
|
143
|
+
Returns
|
|
144
|
+
-------
|
|
145
|
+
ArtifactArtifact
|
|
146
|
+
Entity built from the dictionary.
|
|
147
|
+
"""
|
|
148
|
+
return self.build(**obj, _validate=validate)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
if typing.TYPE_CHECKING:
|
|
6
|
+
from digitalhub.entities._base.entity.entity import Entity
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class EntityFactory:
|
|
10
|
+
"""
|
|
11
|
+
Factory class for building entities.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
def __init__(self):
|
|
15
|
+
self._builders = {}
|
|
16
|
+
|
|
17
|
+
def add_builder(self, name: str, builder):
|
|
18
|
+
self._builders[name] = builder
|
|
19
|
+
|
|
20
|
+
def build(self, entity_type: str, **kwargs) -> Entity:
|
|
21
|
+
"""
|
|
22
|
+
Build entity object. The builder takes as input
|
|
23
|
+
the type of entity's object to build and the keyword
|
|
24
|
+
arguments to pass to the various entity's constructor.
|
|
25
|
+
The specific Entity class is searched in the global
|
|
26
|
+
registry, where lies info about where to find the class.
|
|
27
|
+
The arguments are parsed, eventually adding default values,
|
|
28
|
+
and then passed to the constructor.
|
|
29
|
+
|
|
30
|
+
Parameters
|
|
31
|
+
----------
|
|
32
|
+
entity_type : str
|
|
33
|
+
Registry entry kind.
|
|
34
|
+
**kwargs : dict
|
|
35
|
+
Keyword arguments for the constructor.
|
|
36
|
+
|
|
37
|
+
Returns
|
|
38
|
+
-------
|
|
39
|
+
Entity
|
|
40
|
+
Entity object.
|
|
41
|
+
"""
|
|
42
|
+
if entity_type not in self._builders:
|
|
43
|
+
raise ValueError(f"Entity type {entity_type} not found")
|
|
44
|
+
return self._builders[entity_type](**kwargs)
|
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
from digitalhub.registry.registry import registry
|
|
6
|
-
from digitalhub.registry.utils import import_class
|
|
3
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
7
4
|
from digitalhub.utils.generic_utils import get_timestamp
|
|
8
5
|
|
|
9
|
-
if typing.TYPE_CHECKING:
|
|
10
|
-
from digitalhub.entities._base.metadata import Metadata
|
|
11
|
-
from digitalhub.registry.models import RegistryEntry
|
|
12
|
-
|
|
13
6
|
|
|
14
7
|
def build_metadata(kind: str, **kwargs) -> Metadata:
|
|
15
8
|
"""
|
|
@@ -33,10 +26,8 @@ def build_metadata(kind: str, **kwargs) -> Metadata:
|
|
|
33
26
|
Metadata
|
|
34
27
|
Metadata object.
|
|
35
28
|
"""
|
|
36
|
-
infos: RegistryEntry = getattr(registry, kind)
|
|
37
|
-
metadata = import_class(infos.metadata.module, infos.metadata.class_name)
|
|
38
29
|
kwargs = parse_arguments(**kwargs)
|
|
39
|
-
return
|
|
30
|
+
return Metadata(**kwargs)
|
|
40
31
|
|
|
41
32
|
|
|
42
33
|
def parse_arguments(**kwargs) -> dict:
|
|
@@ -6,7 +6,7 @@ from digitalhub.registry.registry import registry
|
|
|
6
6
|
from digitalhub.registry.utils import import_class
|
|
7
7
|
|
|
8
8
|
if typing.TYPE_CHECKING:
|
|
9
|
-
from digitalhub.entities._base.spec
|
|
9
|
+
from digitalhub.entities._base.entity.spec import Spec
|
|
10
10
|
from digitalhub.registry.models import RegistryEntry
|
|
11
11
|
|
|
12
12
|
|
|
@@ -2,12 +2,12 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
|
-
from digitalhub.entities.
|
|
5
|
+
from digitalhub.entities.utils.state import State
|
|
6
6
|
from digitalhub.registry.registry import registry
|
|
7
7
|
from digitalhub.registry.utils import import_class
|
|
8
8
|
|
|
9
9
|
if typing.TYPE_CHECKING:
|
|
10
|
-
from digitalhub.entities._base.status
|
|
10
|
+
from digitalhub.entities._base.entity.status import Status
|
|
11
11
|
from digitalhub.registry.models import RegistryEntry
|
|
12
12
|
|
|
13
13
|
|
|
File without changes
|
|
@@ -2,13 +2,13 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
|
-
from digitalhub.entities._base.entity
|
|
6
|
-
from digitalhub.entities.entity_types import EntityTypes
|
|
5
|
+
from digitalhub.entities._base.material.entity import MaterialEntity
|
|
6
|
+
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
7
7
|
|
|
8
8
|
if typing.TYPE_CHECKING:
|
|
9
|
-
from digitalhub.entities._base.metadata import Metadata
|
|
10
|
-
from digitalhub.entities.artifact.spec import ArtifactSpec
|
|
11
|
-
from digitalhub.entities.artifact.status import ArtifactStatus
|
|
9
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
10
|
+
from digitalhub.entities.artifact._base.spec import ArtifactSpec
|
|
11
|
+
from digitalhub.entities.artifact._base.status import ArtifactStatus
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class Artifact(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 ArtifactSpec(MaterialSpec):
|
|
7
|
+
"""
|
|
8
|
+
ArtifactSpec specifications.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ArtifactValidator(MaterialValidator):
|
|
13
|
+
"""
|
|
14
|
+
ArtifactValidator validator.
|
|
15
|
+
"""
|
|
File without changes
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from digitalhub.entities.artifact._base.entity import Artifact
|
|
6
|
+
|
|
7
|
+
if typing.TYPE_CHECKING:
|
|
8
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
9
|
+
from digitalhub.entities.artifact.artifact.spec import ArtifactSpecArtifact
|
|
10
|
+
from digitalhub.entities.artifact.artifact.status import ArtifactStatusArtifact
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ArtifactArtifact(Artifact):
|
|
14
|
+
"""
|
|
15
|
+
ArtifactArtifact 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: ArtifactSpecArtifact,
|
|
26
|
+
status: ArtifactStatusArtifact,
|
|
27
|
+
user: str | None = None,
|
|
28
|
+
) -> None:
|
|
29
|
+
super().__init__(project, name, uuid, kind, metadata, spec, status, user)
|
|
30
|
+
|
|
31
|
+
self.spec: ArtifactSpecArtifact
|
|
32
|
+
self.status: ArtifactStatusArtifact
|
|
@@ -1,23 +1,11 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from digitalhub.entities._base.spec
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class ArtifactSpec(MaterialSpec):
|
|
7
|
-
"""
|
|
8
|
-
Artifact specification.
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class ArtifactParams(MaterialParams):
|
|
13
|
-
"""
|
|
14
|
-
Artifact base parameters.
|
|
15
|
-
"""
|
|
3
|
+
from digitalhub.entities.artifact._base.spec import ArtifactSpec, ArtifactValidator
|
|
16
4
|
|
|
17
5
|
|
|
18
6
|
class ArtifactSpecArtifact(ArtifactSpec):
|
|
19
7
|
"""
|
|
20
|
-
|
|
8
|
+
ArtifactSpecArtifact specifications.
|
|
21
9
|
"""
|
|
22
10
|
|
|
23
11
|
def __init__(
|
|
@@ -30,9 +18,9 @@ class ArtifactSpecArtifact(ArtifactSpec):
|
|
|
30
18
|
self.src_path = src_path
|
|
31
19
|
|
|
32
20
|
|
|
33
|
-
class
|
|
21
|
+
class ArtifactValidatorArtifact(ArtifactValidator):
|
|
34
22
|
"""
|
|
35
|
-
|
|
23
|
+
ArtifactValidatorArtifact validator.
|
|
36
24
|
"""
|
|
37
25
|
|
|
38
26
|
src_path: str = None
|
|
@@ -10,13 +10,13 @@ from digitalhub.entities._builders.uuid import build_uuid
|
|
|
10
10
|
from digitalhub.utils.exceptions import EntityError
|
|
11
11
|
|
|
12
12
|
if typing.TYPE_CHECKING:
|
|
13
|
-
from digitalhub.entities.artifact.entity
|
|
13
|
+
from digitalhub.entities.artifact._base.entity import Artifact
|
|
14
14
|
|
|
15
15
|
# Manage class mapper
|
|
16
16
|
cls_mapper = {}
|
|
17
17
|
|
|
18
18
|
try:
|
|
19
|
-
from digitalhub.entities.artifact.entity
|
|
19
|
+
from digitalhub.entities.artifact.artifact.entity import ArtifactArtifact
|
|
20
20
|
|
|
21
21
|
cls_mapper["artifact"] = ArtifactArtifact
|
|
22
22
|
except ImportError:
|
|
@@ -11,13 +11,13 @@ from digitalhub.entities._base.crud import (
|
|
|
11
11
|
)
|
|
12
12
|
from digitalhub.entities._builders.uuid import build_uuid
|
|
13
13
|
from digitalhub.entities.artifact.builder import artifact_from_dict, artifact_from_parameters
|
|
14
|
-
from digitalhub.entities.entity_types import EntityTypes
|
|
15
|
-
from digitalhub.entities.utils import build_log_path_from_source, eval_local_source
|
|
14
|
+
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
15
|
+
from digitalhub.entities.utils.utils import build_log_path_from_source, eval_local_source
|
|
16
16
|
from digitalhub.utils.exceptions import EntityAlreadyExistsError
|
|
17
17
|
from digitalhub.utils.io_utils import read_yaml
|
|
18
18
|
|
|
19
19
|
if typing.TYPE_CHECKING:
|
|
20
|
-
from digitalhub.entities.artifact.entity
|
|
20
|
+
from digitalhub.entities.artifact._base.entity import Artifact
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
ENTITY_TYPE = EntityTypes.ARTIFACT.value
|
|
File without changes
|
|
@@ -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
|
|
@@ -10,24 +10,24 @@ from digitalhub.entities._builders.uuid import build_uuid
|
|
|
10
10
|
from digitalhub.utils.exceptions import EntityError
|
|
11
11
|
|
|
12
12
|
if typing.TYPE_CHECKING:
|
|
13
|
-
from digitalhub.entities.dataitem.entity
|
|
13
|
+
from digitalhub.entities.dataitem._base.entity import Dataitem
|
|
14
14
|
|
|
15
15
|
# Manage class mapper
|
|
16
16
|
cls_mapper = {}
|
|
17
17
|
try:
|
|
18
|
-
from digitalhub.entities.dataitem.entity
|
|
18
|
+
from digitalhub.entities.dataitem.dataitem.entity import DataitemDataitem
|
|
19
19
|
|
|
20
20
|
cls_mapper["dataitem"] = DataitemDataitem
|
|
21
21
|
except ImportError:
|
|
22
22
|
...
|
|
23
23
|
try:
|
|
24
|
-
from digitalhub.entities.dataitem.entity
|
|
24
|
+
from digitalhub.entities.dataitem.table.entity import DataitemTable
|
|
25
25
|
|
|
26
26
|
cls_mapper["table"] = DataitemTable
|
|
27
27
|
except ImportError:
|
|
28
28
|
...
|
|
29
29
|
try:
|
|
30
|
-
from digitalhub.entities.dataitem.entity
|
|
30
|
+
from digitalhub.entities.dataitem.iceberg.entity import DataitemIceberg
|
|
31
31
|
|
|
32
32
|
cls_mapper["iceberg"] = DataitemIceberg
|
|
33
33
|
except ImportError:
|
|
@@ -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 sanitize_filename
|
|
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
|
|
@@ -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 = sanitize_filename(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,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
|