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
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from digitalhub.entities._base.spec.material import MaterialParams, MaterialSpec
|
|
4
|
-
from digitalhub.entities.model.models import Dataset, Signature
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class ModelSpec(MaterialSpec):
|
|
8
|
-
"""
|
|
9
|
-
Model specifications.
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
|
-
def __init__(
|
|
13
|
-
self,
|
|
14
|
-
path: str,
|
|
15
|
-
framework: str | None = None,
|
|
16
|
-
algorithm: str | None = None,
|
|
17
|
-
base_model: str | None = None,
|
|
18
|
-
parameters: dict | None = None,
|
|
19
|
-
metrics: dict | None = None,
|
|
20
|
-
) -> None:
|
|
21
|
-
self.path = path
|
|
22
|
-
self.framework = framework
|
|
23
|
-
self.algorithm = algorithm
|
|
24
|
-
self.base_model = base_model
|
|
25
|
-
self.parameters = parameters
|
|
26
|
-
self.metrics = metrics
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class ModelParams(MaterialParams):
|
|
30
|
-
"""
|
|
31
|
-
Model parameters.
|
|
32
|
-
"""
|
|
33
|
-
|
|
34
|
-
path: str
|
|
35
|
-
"""Path to the model."""
|
|
36
|
-
|
|
37
|
-
framework: str = None
|
|
38
|
-
"""Model framework (e.g. 'pytorch')."""
|
|
39
|
-
|
|
40
|
-
algorithm: str = None
|
|
41
|
-
"""Model algorithm (e.g. 'resnet')."""
|
|
42
|
-
|
|
43
|
-
base_model: str = None
|
|
44
|
-
"""Base model."""
|
|
45
|
-
|
|
46
|
-
parameters: dict = None
|
|
47
|
-
"""Model parameters."""
|
|
48
|
-
|
|
49
|
-
metrics: dict = None
|
|
50
|
-
"""Model metrics."""
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
class ModelSpecModel(ModelSpec):
|
|
54
|
-
"""
|
|
55
|
-
Model specifications.
|
|
56
|
-
"""
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
class ModelParamsModel(ModelParams):
|
|
60
|
-
"""
|
|
61
|
-
Model parameters.
|
|
62
|
-
"""
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
class ModelSpecMlflow(ModelSpec):
|
|
66
|
-
"""
|
|
67
|
-
Mlflow model specifications.
|
|
68
|
-
"""
|
|
69
|
-
|
|
70
|
-
def __init__(
|
|
71
|
-
self,
|
|
72
|
-
path: str,
|
|
73
|
-
framework: str | None = None,
|
|
74
|
-
algorithm: str | None = None,
|
|
75
|
-
base_model: str | None = None,
|
|
76
|
-
parameters: dict | None = None,
|
|
77
|
-
metrics: dict | None = None,
|
|
78
|
-
flavor: str | None = None,
|
|
79
|
-
model_config: dict | None = None,
|
|
80
|
-
input_datasets: list[Dataset] | None = None,
|
|
81
|
-
signature: Signature = None,
|
|
82
|
-
) -> None:
|
|
83
|
-
super().__init__(path, framework, algorithm, base_model, parameters, metrics)
|
|
84
|
-
self.flavor = flavor
|
|
85
|
-
self.model_config = model_config
|
|
86
|
-
self.input_datasets = input_datasets
|
|
87
|
-
self.signature = signature
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
class ModelParamsMlflow(ModelParams):
|
|
91
|
-
"""
|
|
92
|
-
Mlflow model parameters.
|
|
93
|
-
"""
|
|
94
|
-
|
|
95
|
-
flavor: str = None
|
|
96
|
-
"""Mlflow model flavor."""
|
|
97
|
-
model_config: dict = None
|
|
98
|
-
"""Mlflow model config."""
|
|
99
|
-
input_datasets: list[Dataset] = None
|
|
100
|
-
"""Mlflow input datasets."""
|
|
101
|
-
signature: Signature = None
|
|
102
|
-
"""Mlflow model signature."""
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
class ModelSpecSklearn(ModelSpec):
|
|
106
|
-
"""
|
|
107
|
-
SKLearn model specifications.
|
|
108
|
-
"""
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
class ModelParamsSklearn(ModelParams):
|
|
112
|
-
"""
|
|
113
|
-
SKLearn model parameters.
|
|
114
|
-
"""
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
class ModelSpecHuggingface(ModelSpec):
|
|
118
|
-
"""
|
|
119
|
-
Huggingface model specifications.
|
|
120
|
-
"""
|
|
121
|
-
|
|
122
|
-
def __init__(
|
|
123
|
-
self,
|
|
124
|
-
path: str,
|
|
125
|
-
framework: str | None = None,
|
|
126
|
-
algorithm: str | None = None,
|
|
127
|
-
base_model: str | None = None,
|
|
128
|
-
parameters: dict | None = None,
|
|
129
|
-
metrics: dict | None = None,
|
|
130
|
-
model_id: str | None = None,
|
|
131
|
-
model_revision: str = None,
|
|
132
|
-
) -> None:
|
|
133
|
-
super().__init__(path, framework, algorithm, base_model, parameters, metrics)
|
|
134
|
-
self.model_id = model_id
|
|
135
|
-
self.model_revision = model_revision
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
class ModelParamsHuggingface(ModelParams):
|
|
139
|
-
"""
|
|
140
|
-
Huggingface model parameters.
|
|
141
|
-
"""
|
|
142
|
-
|
|
143
|
-
model_id: str = None
|
|
144
|
-
"""Huggingface model id. Optional. If not specified, the model is loaded from the model path"""
|
|
145
|
-
model_revision: str = None
|
|
146
|
-
"""Huggingface model revision. Optional."""
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from digitalhub.entities._base.status.material import MaterialStatus
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class ModelStatus(MaterialStatus):
|
|
7
|
-
"""
|
|
8
|
-
Status class for model entities.
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class ModelStatusModel(ModelStatus):
|
|
13
|
-
"""
|
|
14
|
-
Status class for model entities.
|
|
15
|
-
"""
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class ModelStatusMlflow(ModelStatus):
|
|
19
|
-
"""
|
|
20
|
-
Status class for model entities.
|
|
21
|
-
"""
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
class ModelStatusSklearn(ModelStatus):
|
|
25
|
-
"""
|
|
26
|
-
Status class for model entities.
|
|
27
|
-
"""
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
class ModelStatusHuggingface(ModelStatus):
|
|
31
|
-
"""
|
|
32
|
-
Status class for model entities.
|
|
33
|
-
"""
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from digitalhub.entities.entity_types import EntityTypes
|
|
4
|
-
from digitalhub.registry.registry import registry
|
|
5
|
-
from digitalhub.registry.utils import create_info
|
|
6
|
-
|
|
7
|
-
# Root module
|
|
8
|
-
root = "digitalhub.entities"
|
|
9
|
-
|
|
10
|
-
# Projects
|
|
11
|
-
entity_type = EntityTypes.PROJECT.value
|
|
12
|
-
prefix = entity_type.capitalize()
|
|
13
|
-
project_info = create_info(root, entity_type, prefix)
|
|
14
|
-
registry.register("project", project_info)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
# Secrets
|
|
18
|
-
entity_type = EntityTypes.SECRET.value
|
|
19
|
-
prefix = entity_type.capitalize()
|
|
20
|
-
secret_info = create_info(root, entity_type, prefix)
|
|
21
|
-
registry.register("secret", secret_info)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
# Artifacts
|
|
25
|
-
entity_type = EntityTypes.ARTIFACT.value
|
|
26
|
-
for i in ["artifact"]:
|
|
27
|
-
prefix = entity_type.capitalize()
|
|
28
|
-
suffix = i.capitalize()
|
|
29
|
-
artifact_info = create_info(root, entity_type, prefix, suffix)
|
|
30
|
-
registry.register(i, artifact_info)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
# Dataitems
|
|
34
|
-
entity_type = EntityTypes.DATAITEM.value
|
|
35
|
-
for i in ["dataitem", "table"]:
|
|
36
|
-
prefix = entity_type.capitalize()
|
|
37
|
-
suffix = i.capitalize()
|
|
38
|
-
dataitem_info = create_info(root, entity_type, prefix, suffix)
|
|
39
|
-
registry.register(i, dataitem_info)
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
# Models
|
|
43
|
-
entity_type = EntityTypes.MODEL.value
|
|
44
|
-
for i in ["model", "mlflow", "sklearn", "huggingface"]:
|
|
45
|
-
prefix = entity_type.capitalize()
|
|
46
|
-
suffix = i.capitalize()
|
|
47
|
-
model_info = create_info(root, entity_type, prefix, suffix)
|
|
48
|
-
registry.register(i, model_info)
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from digitalhub.entities._base.spec.base import Spec, SpecParams
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class WorkflowSpec(Spec):
|
|
7
|
-
"""
|
|
8
|
-
Workflow specifications.
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class WorkflowParams(SpecParams):
|
|
13
|
-
"""
|
|
14
|
-
Workflow parameters.
|
|
15
|
-
"""
|
digitalhub/registry/models.py
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from pydantic import BaseModel
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class RuntimeEntry(BaseModel):
|
|
7
|
-
"""
|
|
8
|
-
Model for Runtime entry.
|
|
9
|
-
It specifies the module path and the runtime class name.
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
|
-
module: str
|
|
13
|
-
"""Module path."""
|
|
14
|
-
|
|
15
|
-
class_name: str
|
|
16
|
-
"""Class name."""
|
|
17
|
-
|
|
18
|
-
kind_registry_module: str
|
|
19
|
-
"""Kind registry module path."""
|
|
20
|
-
|
|
21
|
-
kind_registry_class_name: str
|
|
22
|
-
"""Kind registry class name."""
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class SpecEntry(BaseModel):
|
|
26
|
-
"""
|
|
27
|
-
Model for Spec entry.
|
|
28
|
-
It specifies the module path, the spec class name
|
|
29
|
-
and the spec pydantic class validator.
|
|
30
|
-
"""
|
|
31
|
-
|
|
32
|
-
module: str
|
|
33
|
-
"""Module path."""
|
|
34
|
-
|
|
35
|
-
class_name: str
|
|
36
|
-
"""Class name."""
|
|
37
|
-
|
|
38
|
-
parameters_validator: str
|
|
39
|
-
"""Class name of the parameter validator."""
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
class StatusEntry(BaseModel):
|
|
43
|
-
"""
|
|
44
|
-
Model for Status entry.
|
|
45
|
-
It specifies the module path and the status class name.
|
|
46
|
-
"""
|
|
47
|
-
|
|
48
|
-
module: str
|
|
49
|
-
"""Module path."""
|
|
50
|
-
|
|
51
|
-
class_name: str
|
|
52
|
-
"""Class name."""
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
class MetadataEntry(BaseModel):
|
|
56
|
-
"""
|
|
57
|
-
Model for Metadata entry.
|
|
58
|
-
It specifies the module path and the metadata class name.
|
|
59
|
-
"""
|
|
60
|
-
|
|
61
|
-
module: str
|
|
62
|
-
"""Module path."""
|
|
63
|
-
|
|
64
|
-
class_name: str
|
|
65
|
-
"""Class name."""
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
class RegistryEntry(BaseModel):
|
|
69
|
-
"""
|
|
70
|
-
Basic entry model for every entity.
|
|
71
|
-
Functions, tasks and runs specify also the runtime field.
|
|
72
|
-
"""
|
|
73
|
-
|
|
74
|
-
entity_type: str
|
|
75
|
-
"""Entity type."""
|
|
76
|
-
|
|
77
|
-
spec: SpecEntry
|
|
78
|
-
"""Spec infos."""
|
|
79
|
-
|
|
80
|
-
status: StatusEntry
|
|
81
|
-
"""Status infos."""
|
|
82
|
-
|
|
83
|
-
metadata: MetadataEntry
|
|
84
|
-
"""Metadata infos."""
|
|
85
|
-
|
|
86
|
-
runtime: RuntimeEntry = None
|
|
87
|
-
"""Runtime infos."""
|
digitalhub/registry/registry.py
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from digitalhub.registry.models import RegistryEntry
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class GlobalEntityRegistry:
|
|
7
|
-
"""
|
|
8
|
-
Global entity registry where all entities classpaths are stored.
|
|
9
|
-
It keeps track of all entities that are registered in the system.
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
|
-
def register(self, entity_kind: str, entry: dict) -> None:
|
|
13
|
-
"""
|
|
14
|
-
Register an entity kind.
|
|
15
|
-
|
|
16
|
-
Parameters
|
|
17
|
-
----------
|
|
18
|
-
entity_kind : str
|
|
19
|
-
Entity kind to be registered.
|
|
20
|
-
entry : dict
|
|
21
|
-
Entry to be registered.
|
|
22
|
-
|
|
23
|
-
Returns
|
|
24
|
-
-------
|
|
25
|
-
None
|
|
26
|
-
|
|
27
|
-
"""
|
|
28
|
-
if hasattr(self, entity_kind):
|
|
29
|
-
raise ValueError(f"Entity kind {entity_kind} already registered")
|
|
30
|
-
entry = RegistryEntry(**entry)
|
|
31
|
-
setattr(self, entity_kind, entry)
|
|
32
|
-
|
|
33
|
-
def update(self, entity_kind: str, entry: dict) -> None:
|
|
34
|
-
"""
|
|
35
|
-
Update an entity kind.
|
|
36
|
-
|
|
37
|
-
Parameters
|
|
38
|
-
----------
|
|
39
|
-
entity_kind : str
|
|
40
|
-
Entity kind to be updated.
|
|
41
|
-
entry : dict
|
|
42
|
-
Entry to be updated.
|
|
43
|
-
|
|
44
|
-
Returns
|
|
45
|
-
-------
|
|
46
|
-
None
|
|
47
|
-
"""
|
|
48
|
-
if hasattr(self, entity_kind):
|
|
49
|
-
entry = RegistryEntry(**entry)
|
|
50
|
-
setattr(self, entity_kind, entry)
|
|
51
|
-
else:
|
|
52
|
-
raise ValueError(f"Entity kind {entity_kind} not registered")
|
|
53
|
-
|
|
54
|
-
def get_entity_type(self, entity_kind: str) -> str:
|
|
55
|
-
"""
|
|
56
|
-
Get entity type from kind.
|
|
57
|
-
|
|
58
|
-
Parameters
|
|
59
|
-
----------
|
|
60
|
-
entity_kind : str
|
|
61
|
-
Entity kind.
|
|
62
|
-
|
|
63
|
-
Returns
|
|
64
|
-
-------
|
|
65
|
-
str
|
|
66
|
-
Entity type.
|
|
67
|
-
"""
|
|
68
|
-
if not hasattr(self, entity_kind):
|
|
69
|
-
raise ValueError(f"Entity kind {entity_kind} not registered")
|
|
70
|
-
entry: RegistryEntry = getattr(self, entity_kind)
|
|
71
|
-
return entry.entity_type
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
registry = GlobalEntityRegistry()
|
digitalhub/registry/utils.py
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import importlib
|
|
4
|
-
import importlib.metadata
|
|
5
|
-
import pkgutil
|
|
6
|
-
import re
|
|
7
|
-
from types import ModuleType
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def import_module(package: str) -> ModuleType:
|
|
11
|
-
"""
|
|
12
|
-
Import modules from package name.
|
|
13
|
-
|
|
14
|
-
Parameters
|
|
15
|
-
----------
|
|
16
|
-
package : str
|
|
17
|
-
Package name.
|
|
18
|
-
|
|
19
|
-
Returns
|
|
20
|
-
-------
|
|
21
|
-
ModuleType
|
|
22
|
-
Module.
|
|
23
|
-
"""
|
|
24
|
-
try:
|
|
25
|
-
return importlib.import_module(package)
|
|
26
|
-
except ModuleNotFoundError:
|
|
27
|
-
raise ModuleNotFoundError(f"Package {package} not found.")
|
|
28
|
-
except Exception as e:
|
|
29
|
-
raise e
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def import_class(module_to_import: str, class_name: str) -> type:
|
|
33
|
-
"""
|
|
34
|
-
Import class from implemented module.
|
|
35
|
-
|
|
36
|
-
Parameters
|
|
37
|
-
----------
|
|
38
|
-
module_to_import : str
|
|
39
|
-
Module name.
|
|
40
|
-
class_name : str
|
|
41
|
-
Class name.
|
|
42
|
-
|
|
43
|
-
Returns
|
|
44
|
-
-------
|
|
45
|
-
type
|
|
46
|
-
Class.
|
|
47
|
-
"""
|
|
48
|
-
module = import_module(module_to_import)
|
|
49
|
-
try:
|
|
50
|
-
return getattr(module, class_name)
|
|
51
|
-
except AttributeError:
|
|
52
|
-
raise ModuleNotFoundError(f"Module {module_to_import} has no '{class_name}' class.")
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
def list_runtimes() -> list[str]:
|
|
56
|
-
"""
|
|
57
|
-
List installed runtimes for digitalhub.
|
|
58
|
-
|
|
59
|
-
Returns
|
|
60
|
-
-------
|
|
61
|
-
list
|
|
62
|
-
List of installed runtimes names.
|
|
63
|
-
"""
|
|
64
|
-
pattern = r"digitalhub_runtime_.*"
|
|
65
|
-
runtimes = []
|
|
66
|
-
try:
|
|
67
|
-
for _, name, _ in pkgutil.iter_modules():
|
|
68
|
-
if re.match(pattern, name):
|
|
69
|
-
runtimes.append(name)
|
|
70
|
-
return runtimes
|
|
71
|
-
except Exception:
|
|
72
|
-
raise RuntimeError("Error listing installed runtimes.")
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
def register_runtimes_entities() -> None:
|
|
76
|
-
"""
|
|
77
|
-
Register runtimes and related entities into registry.
|
|
78
|
-
|
|
79
|
-
Returns
|
|
80
|
-
-------
|
|
81
|
-
None
|
|
82
|
-
"""
|
|
83
|
-
for package in list_runtimes():
|
|
84
|
-
import_module(package)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
def register_entities() -> None:
|
|
88
|
-
"""
|
|
89
|
-
Register layer and related entities into registry.
|
|
90
|
-
|
|
91
|
-
Returns
|
|
92
|
-
-------
|
|
93
|
-
None
|
|
94
|
-
"""
|
|
95
|
-
# Try ot import registry from entities.registries module
|
|
96
|
-
try:
|
|
97
|
-
import_module("digitalhub.entities.registries")
|
|
98
|
-
except Exception:
|
|
99
|
-
pass
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
def create_info(
|
|
103
|
-
root: str,
|
|
104
|
-
entity_type: str,
|
|
105
|
-
prefix: str,
|
|
106
|
-
suffix: str | None = "",
|
|
107
|
-
runtime_info: dict | None = None,
|
|
108
|
-
) -> dict:
|
|
109
|
-
"""
|
|
110
|
-
Create entity info.
|
|
111
|
-
|
|
112
|
-
Parameters
|
|
113
|
-
----------
|
|
114
|
-
root : str
|
|
115
|
-
Root module.
|
|
116
|
-
entity_type : str
|
|
117
|
-
Entity type.
|
|
118
|
-
prefix : str
|
|
119
|
-
Entity prefix.
|
|
120
|
-
suffix : str
|
|
121
|
-
Entity suffix.
|
|
122
|
-
runtime_info : dict
|
|
123
|
-
Runtime info.
|
|
124
|
-
|
|
125
|
-
Returns
|
|
126
|
-
-------
|
|
127
|
-
dict
|
|
128
|
-
Entity info.
|
|
129
|
-
"""
|
|
130
|
-
dict_ = {
|
|
131
|
-
"entity_type": entity_type,
|
|
132
|
-
"spec": {
|
|
133
|
-
"module": f"{root}.{entity_type}.spec",
|
|
134
|
-
"class_name": f"{prefix}Spec{suffix}",
|
|
135
|
-
"parameters_validator": f"{prefix}Params{suffix}",
|
|
136
|
-
},
|
|
137
|
-
"status": {
|
|
138
|
-
"module": f"{root}.{entity_type}.status",
|
|
139
|
-
"class_name": f"{prefix}Status{suffix}",
|
|
140
|
-
},
|
|
141
|
-
"metadata": {
|
|
142
|
-
"module": "digitalhub.entities._base.metadata",
|
|
143
|
-
"class_name": "Metadata",
|
|
144
|
-
},
|
|
145
|
-
}
|
|
146
|
-
# Add runtime only if provided
|
|
147
|
-
# (in functions, tasks, runs and workflows)
|
|
148
|
-
if runtime_info is not None:
|
|
149
|
-
dict_["runtime"] = runtime_info
|
|
150
|
-
return dict_
|