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,36 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities.model._base.spec import ModelSpec, ModelValidator
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ModelSpecHuggingface(ModelSpec):
|
|
7
|
+
"""
|
|
8
|
+
ModelSpecHuggingface specifications.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
def __init__(
|
|
12
|
+
self,
|
|
13
|
+
path: str,
|
|
14
|
+
framework: str | None = None,
|
|
15
|
+
algorithm: str | None = None,
|
|
16
|
+
base_model: str | None = None,
|
|
17
|
+
parameters: dict | None = None,
|
|
18
|
+
metrics: dict | None = None,
|
|
19
|
+
model_id: str | None = None,
|
|
20
|
+
model_revision: str = None,
|
|
21
|
+
) -> None:
|
|
22
|
+
super().__init__(path, framework, algorithm, base_model, parameters, metrics)
|
|
23
|
+
self.model_id = model_id
|
|
24
|
+
self.model_revision = model_revision
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class ModelValidatorHuggingface(ModelValidator):
|
|
28
|
+
"""
|
|
29
|
+
ModelValidatorHuggingface validator.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
model_id: str = None
|
|
33
|
+
"""Huggingface model id. If not specified, the model is loaded from the model path."""
|
|
34
|
+
|
|
35
|
+
model_revision: str = None
|
|
36
|
+
"""Huggingface model revision."""
|
|
File without changes
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities.model._base.builder import ModelBuilder
|
|
4
|
+
from digitalhub.entities.model.mlflow.entity import ModelMlflow
|
|
5
|
+
from digitalhub.entities.model.mlflow.spec import ModelSpecMlflow, ModelValidatorMlflow
|
|
6
|
+
from digitalhub.entities.model.mlflow.status import ModelStatusMlflow
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ModelModelBuilder(ModelBuilder):
|
|
10
|
+
"""
|
|
11
|
+
ModelMlflow builder.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
ENTITY_CLASS = ModelMlflow
|
|
15
|
+
ENTITY_SPEC_CLASS = ModelSpecMlflow
|
|
16
|
+
ENTITY_SPEC_VALIDATOR = ModelValidatorMlflow
|
|
17
|
+
ENTITY_STATUS_CLASS = ModelStatusMlflow
|
|
18
|
+
ENTITY_KIND = "mlflow"
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from digitalhub.entities.model._base.entity import Model
|
|
6
|
+
|
|
7
|
+
if typing.TYPE_CHECKING:
|
|
8
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
9
|
+
from digitalhub.entities.model.mlflow.spec import ModelSpecMlflow
|
|
10
|
+
from digitalhub.entities.model.mlflow.status import ModelStatusMlflow
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ModelMlflow(Model):
|
|
14
|
+
"""
|
|
15
|
+
ModelMlflow 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: ModelSpecMlflow,
|
|
26
|
+
status: ModelStatusMlflow,
|
|
27
|
+
user: str | None = None,
|
|
28
|
+
) -> None:
|
|
29
|
+
super().__init__(project, name, uuid, kind, metadata, spec, status, user)
|
|
30
|
+
|
|
31
|
+
self.spec: ModelSpecMlflow
|
|
32
|
+
self.status: ModelStatusMlflow
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities.model._base.spec import ModelSpec, ModelValidator
|
|
4
|
+
from digitalhub.entities.model.mlflow.models import Dataset, Signature
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class ModelSpecMlflow(ModelSpec):
|
|
8
|
+
"""
|
|
9
|
+
ModelSpecMlflow 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
|
+
flavor: str | None = None,
|
|
21
|
+
model_config: dict | None = None,
|
|
22
|
+
input_datasets: list[Dataset] | None = None,
|
|
23
|
+
signature: Signature = None,
|
|
24
|
+
) -> None:
|
|
25
|
+
super().__init__(path, framework, algorithm, base_model, parameters, metrics)
|
|
26
|
+
self.flavor = flavor
|
|
27
|
+
self.model_config = model_config
|
|
28
|
+
self.input_datasets = input_datasets
|
|
29
|
+
self.signature = signature
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class ModelValidatorMlflow(ModelValidator):
|
|
33
|
+
"""
|
|
34
|
+
ModelValidatorMlflow validator.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
flavor: str = None
|
|
38
|
+
"""Mlflow model flavor."""
|
|
39
|
+
model_config: dict = None
|
|
40
|
+
"""Mlflow model config."""
|
|
41
|
+
input_datasets: list[Dataset] = None
|
|
42
|
+
"""Mlflow input datasets."""
|
|
43
|
+
signature: Signature = None
|
|
44
|
+
"""Mlflow model signature."""
|
|
@@ -1,17 +1,8 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
1
|
from urllib.parse import urlparse
|
|
4
2
|
|
|
5
3
|
import mlflow
|
|
6
4
|
|
|
7
|
-
from digitalhub.entities.model.
|
|
8
|
-
from digitalhub.entities.model.models import Dataset, Signature
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class ModelMlflow(Model):
|
|
12
|
-
"""
|
|
13
|
-
Mlflow model.
|
|
14
|
-
"""
|
|
5
|
+
from digitalhub.entities.model.mlflow.models import Dataset, Signature
|
|
15
6
|
|
|
16
7
|
|
|
17
8
|
def from_mlflow_run(run_id: str) -> dict:
|
|
File without changes
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities.model._base.builder import ModelBuilder
|
|
4
|
+
from digitalhub.entities.model.model.entity import ModelModel
|
|
5
|
+
from digitalhub.entities.model.model.spec import ModelSpecModel, ModelValidatorModel
|
|
6
|
+
from digitalhub.entities.model.model.status import ModelStatusModel
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ModelMlflowBuilder(ModelBuilder):
|
|
10
|
+
"""
|
|
11
|
+
ModelModel builder.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
ENTITY_CLASS = ModelModel
|
|
15
|
+
ENTITY_SPEC_CLASS = ModelSpecModel
|
|
16
|
+
ENTITY_SPEC_VALIDATOR = ModelValidatorModel
|
|
17
|
+
ENTITY_STATUS_CLASS = ModelStatusModel
|
|
18
|
+
ENTITY_KIND = "model"
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from digitalhub.entities.model._base.entity import Model
|
|
6
|
+
|
|
7
|
+
if typing.TYPE_CHECKING:
|
|
8
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
9
|
+
from digitalhub.entities.model.model.spec import ModelSpecModel
|
|
10
|
+
from digitalhub.entities.model.model.status import ModelStatusModel
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ModelModel(Model):
|
|
14
|
+
"""
|
|
15
|
+
ModelModel 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: ModelSpecModel,
|
|
26
|
+
status: ModelStatusModel,
|
|
27
|
+
user: str | None = None,
|
|
28
|
+
) -> None:
|
|
29
|
+
super().__init__(project, name, uuid, kind, metadata, spec, status, user)
|
|
30
|
+
|
|
31
|
+
self.spec: ModelSpecModel
|
|
32
|
+
self.status: ModelStatusModel
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities.model._base.spec import ModelSpec, ModelValidator
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ModelSpecModel(ModelSpec):
|
|
7
|
+
"""
|
|
8
|
+
ModelSpecModel specifications.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ModelValidatorModel(ModelValidator):
|
|
13
|
+
"""
|
|
14
|
+
ModelValidatorModel validator.
|
|
15
|
+
"""
|
|
File without changes
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities.model._base.builder import ModelBuilder
|
|
4
|
+
from digitalhub.entities.model.sklearn.entity import ModelSklearn
|
|
5
|
+
from digitalhub.entities.model.sklearn.spec import ModelSpecSklearn, ModelValidatorSklearn
|
|
6
|
+
from digitalhub.entities.model.sklearn.status import ModelStatusSklearn
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ModelSklearnBuilder(ModelBuilder):
|
|
10
|
+
"""
|
|
11
|
+
ModelSklearn builder.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
ENTITY_CLASS = ModelSklearn
|
|
15
|
+
ENTITY_SPEC_CLASS = ModelSpecSklearn
|
|
16
|
+
ENTITY_SPEC_VALIDATOR = ModelValidatorSklearn
|
|
17
|
+
ENTITY_STATUS_CLASS = ModelStatusSklearn
|
|
18
|
+
ENTITY_KIND = "sklearn"
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from digitalhub.entities.model._base.entity import Model
|
|
6
|
+
|
|
7
|
+
if typing.TYPE_CHECKING:
|
|
8
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
9
|
+
from digitalhub.entities.model.sklearn.spec import ModelSpecSklearn
|
|
10
|
+
from digitalhub.entities.model.sklearn.status import ModelStatusSklearn
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ModelSklearn(Model):
|
|
14
|
+
"""
|
|
15
|
+
ModelSklearn 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: ModelSpecSklearn,
|
|
26
|
+
status: ModelStatusSklearn,
|
|
27
|
+
user: str | None = None,
|
|
28
|
+
) -> None:
|
|
29
|
+
super().__init__(project, name, uuid, kind, metadata, spec, status, user)
|
|
30
|
+
|
|
31
|
+
self.spec: ModelSpecSklearn
|
|
32
|
+
self.status: ModelStatusSklearn
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities.model._base.spec import ModelSpec, ModelValidator
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ModelSpecSklearn(ModelSpec):
|
|
7
|
+
"""
|
|
8
|
+
ModelSpecSklearn specifications.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ModelValidatorSklearn(ModelValidator):
|
|
13
|
+
"""
|
|
14
|
+
ModelValidatorSklearn validator.
|
|
15
|
+
"""
|
|
File without changes
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities._builders.entity import EntityBuilder
|
|
4
|
+
from digitalhub.entities.project._base.entity import Project
|
|
5
|
+
from digitalhub.entities.project._base.spec import ProjectSpec, ProjectValidator
|
|
6
|
+
from digitalhub.entities.project._base.status import ProjectStatus
|
|
7
|
+
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ProjectProjectBuilder(EntityBuilder):
|
|
11
|
+
"""
|
|
12
|
+
ProjectProject builder.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
ENTITY_TYPE = EntityTypes.PROJECT.value
|
|
16
|
+
ENTITY_CLASS = Project
|
|
17
|
+
ENTITY_SPEC_CLASS = ProjectSpec
|
|
18
|
+
ENTITY_SPEC_VALIDATOR = ProjectValidator
|
|
19
|
+
ENTITY_STATUS_CLASS = ProjectStatus
|
|
20
|
+
ENTITY_KIND = "project"
|
|
21
|
+
|
|
22
|
+
def build(
|
|
23
|
+
self,
|
|
24
|
+
name: str,
|
|
25
|
+
kind: str,
|
|
26
|
+
description: str | None = None,
|
|
27
|
+
labels: list[str] | None = None,
|
|
28
|
+
local: bool = False,
|
|
29
|
+
context: str | None = None,
|
|
30
|
+
**kwargs,
|
|
31
|
+
) -> Project:
|
|
32
|
+
"""
|
|
33
|
+
Create a new object.
|
|
34
|
+
|
|
35
|
+
Parameters
|
|
36
|
+
----------
|
|
37
|
+
name : str
|
|
38
|
+
Object name.
|
|
39
|
+
kind : str
|
|
40
|
+
Kind the object.
|
|
41
|
+
description : str
|
|
42
|
+
Description of the object (human readable).
|
|
43
|
+
labels : list[str]
|
|
44
|
+
List of labels.
|
|
45
|
+
local : bool
|
|
46
|
+
If True, use local backend, if False use DHCore backend. Default to False.
|
|
47
|
+
context : str
|
|
48
|
+
The context local folder of the project.
|
|
49
|
+
**kwargs : dict
|
|
50
|
+
Spec keyword arguments.
|
|
51
|
+
|
|
52
|
+
Returns
|
|
53
|
+
-------
|
|
54
|
+
Project
|
|
55
|
+
Object instance.
|
|
56
|
+
"""
|
|
57
|
+
name = self.build_name(name)
|
|
58
|
+
metadata = self.build_metadata(
|
|
59
|
+
project=name,
|
|
60
|
+
name=name,
|
|
61
|
+
description=description,
|
|
62
|
+
labels=labels,
|
|
63
|
+
)
|
|
64
|
+
spec = self.build_spec(
|
|
65
|
+
context=context,
|
|
66
|
+
**kwargs,
|
|
67
|
+
)
|
|
68
|
+
status = self.build_status()
|
|
69
|
+
return self.build_entity(
|
|
70
|
+
name=name,
|
|
71
|
+
kind=kind,
|
|
72
|
+
metadata=metadata,
|
|
73
|
+
spec=spec,
|
|
74
|
+
status=status,
|
|
75
|
+
local=local,
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
def from_dict(self, obj: dict, validate: bool = True) -> Project:
|
|
79
|
+
"""
|
|
80
|
+
Create a new object from dictionary.
|
|
81
|
+
|
|
82
|
+
Parameters
|
|
83
|
+
----------
|
|
84
|
+
obj : dict
|
|
85
|
+
Dictionary to create object from.
|
|
86
|
+
validate : bool
|
|
87
|
+
Flag to indicate if arguments must be validated.
|
|
88
|
+
|
|
89
|
+
Returns
|
|
90
|
+
-------
|
|
91
|
+
Project
|
|
92
|
+
Object instance.
|
|
93
|
+
"""
|
|
94
|
+
parsed_dict = self._parse_dict(obj, validate=validate)
|
|
95
|
+
return self.build_entity(**parsed_dict)
|
|
96
|
+
|
|
97
|
+
def _parse_dict(self, obj: dict, validate: bool = True) -> dict:
|
|
98
|
+
"""
|
|
99
|
+
Get dictionary and parse it to a valid entity dictionary.
|
|
100
|
+
|
|
101
|
+
Parameters
|
|
102
|
+
----------
|
|
103
|
+
entity : str
|
|
104
|
+
Entity type.
|
|
105
|
+
obj : dict
|
|
106
|
+
Dictionary to parse.
|
|
107
|
+
|
|
108
|
+
Returns
|
|
109
|
+
-------
|
|
110
|
+
dict
|
|
111
|
+
A dictionary containing the attributes of the entity instance.
|
|
112
|
+
"""
|
|
113
|
+
name = self.build_name(obj.get("name"))
|
|
114
|
+
kind = obj.get("kind")
|
|
115
|
+
local = obj.get("local", False)
|
|
116
|
+
metadata = self.build_metadata(**obj.get("metadata", {}))
|
|
117
|
+
spec = self.build_spec(validate=validate, **obj.get("spec", {}))
|
|
118
|
+
status = self.build_status(**obj.get("status", {}))
|
|
119
|
+
user = obj.get("user")
|
|
120
|
+
return {
|
|
121
|
+
"name": name,
|
|
122
|
+
"kind": kind,
|
|
123
|
+
"metadata": metadata,
|
|
124
|
+
"spec": spec,
|
|
125
|
+
"status": status,
|
|
126
|
+
"user": user,
|
|
127
|
+
"local": local,
|
|
128
|
+
}
|
|
@@ -12,11 +12,7 @@ from digitalhub.entities._base.crud import (
|
|
|
12
12
|
read_entity_api_ctx,
|
|
13
13
|
update_entity_api_base,
|
|
14
14
|
)
|
|
15
|
-
from digitalhub.entities._base.entity.
|
|
16
|
-
from digitalhub.entities._builders.metadata import build_metadata
|
|
17
|
-
from digitalhub.entities._builders.name import build_name
|
|
18
|
-
from digitalhub.entities._builders.spec import build_spec
|
|
19
|
-
from digitalhub.entities._builders.status import build_status
|
|
15
|
+
from digitalhub.entities._base.entity.entity import Entity
|
|
20
16
|
from digitalhub.entities.artifact.crud import (
|
|
21
17
|
artifact_from_dict,
|
|
22
18
|
delete_artifact,
|
|
@@ -39,7 +35,6 @@ from digitalhub.entities.dataitem.crud import (
|
|
|
39
35
|
new_dataitem,
|
|
40
36
|
update_dataitem,
|
|
41
37
|
)
|
|
42
|
-
from digitalhub.entities.entity_types import EntityTypes
|
|
43
38
|
from digitalhub.entities.function.crud import (
|
|
44
39
|
delete_function,
|
|
45
40
|
function_from_dict,
|
|
@@ -71,6 +66,7 @@ from digitalhub.entities.secret.crud import (
|
|
|
71
66
|
new_secret,
|
|
72
67
|
update_secret,
|
|
73
68
|
)
|
|
69
|
+
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
74
70
|
from digitalhub.entities.workflow.crud import (
|
|
75
71
|
delete_workflow,
|
|
76
72
|
get_workflow,
|
|
@@ -87,16 +83,16 @@ from digitalhub.utils.io_utils import write_yaml
|
|
|
87
83
|
from digitalhub.utils.uri_utils import map_uri_scheme
|
|
88
84
|
|
|
89
85
|
if typing.TYPE_CHECKING:
|
|
90
|
-
from digitalhub.entities._base.metadata import Metadata
|
|
91
|
-
from digitalhub.entities.artifact.entity
|
|
92
|
-
from digitalhub.entities.dataitem.entity
|
|
93
|
-
from digitalhub.entities.function.entity import Function
|
|
94
|
-
from digitalhub.entities.model.entity
|
|
95
|
-
from digitalhub.entities.project.spec import ProjectSpec
|
|
96
|
-
from digitalhub.entities.project.status import ProjectStatus
|
|
97
|
-
from digitalhub.entities.run.entity import Run
|
|
98
|
-
from digitalhub.entities.secret.entity import Secret
|
|
99
|
-
from digitalhub.entities.workflow.entity import Workflow
|
|
86
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
87
|
+
from digitalhub.entities.artifact._base.entity import Artifact
|
|
88
|
+
from digitalhub.entities.dataitem._base.entity import Dataitem
|
|
89
|
+
from digitalhub.entities.function._base.entity import Function
|
|
90
|
+
from digitalhub.entities.model._base.entity import Model
|
|
91
|
+
from digitalhub.entities.project._base.spec import ProjectSpec
|
|
92
|
+
from digitalhub.entities.project._base.status import ProjectStatus
|
|
93
|
+
from digitalhub.entities.run._base.entity import Run
|
|
94
|
+
from digitalhub.entities.secret._base.entity import Secret
|
|
95
|
+
from digitalhub.entities.workflow._base.entity import Workflow
|
|
100
96
|
|
|
101
97
|
|
|
102
98
|
ARTIFACTS = EntityTypes.ARTIFACT.value + "s"
|
|
@@ -308,44 +304,6 @@ class Project(Entity):
|
|
|
308
304
|
except EntityAlreadyExistsError:
|
|
309
305
|
pass
|
|
310
306
|
|
|
311
|
-
##############################
|
|
312
|
-
# Static interface methods
|
|
313
|
-
##############################
|
|
314
|
-
|
|
315
|
-
@staticmethod
|
|
316
|
-
def _parse_dict(obj: dict, validate: bool = True) -> dict:
|
|
317
|
-
"""
|
|
318
|
-
Get dictionary and parse it to a valid entity dictionary.
|
|
319
|
-
|
|
320
|
-
Parameters
|
|
321
|
-
----------
|
|
322
|
-
entity : str
|
|
323
|
-
Entity type.
|
|
324
|
-
obj : dict
|
|
325
|
-
Dictionary to parse.
|
|
326
|
-
|
|
327
|
-
Returns
|
|
328
|
-
-------
|
|
329
|
-
dict
|
|
330
|
-
A dictionary containing the attributes of the entity instance.
|
|
331
|
-
"""
|
|
332
|
-
name = build_name(obj.get("name"))
|
|
333
|
-
kind = obj.get("kind")
|
|
334
|
-
metadata = build_metadata(kind, **obj.get("metadata", {}))
|
|
335
|
-
spec = build_spec(kind, validate=validate, **obj.get("spec", {}))
|
|
336
|
-
status = build_status(kind, **obj.get("status", {}))
|
|
337
|
-
user = obj.get("user")
|
|
338
|
-
local = obj.get("local", False)
|
|
339
|
-
return {
|
|
340
|
-
"name": name,
|
|
341
|
-
"kind": kind,
|
|
342
|
-
"metadata": metadata,
|
|
343
|
-
"spec": spec,
|
|
344
|
-
"status": status,
|
|
345
|
-
"user": user,
|
|
346
|
-
"local": local,
|
|
347
|
-
}
|
|
348
|
-
|
|
349
307
|
##############################
|
|
350
308
|
# Artifacts
|
|
351
309
|
##############################
|
|
@@ -371,7 +329,7 @@ class Project(Entity):
|
|
|
371
329
|
kind : str
|
|
372
330
|
Kind the object.
|
|
373
331
|
uuid : str
|
|
374
|
-
ID of the object
|
|
332
|
+
ID of the object.
|
|
375
333
|
description : str
|
|
376
334
|
Description of the object (human readable).
|
|
377
335
|
labels : list[str]
|
|
@@ -662,7 +620,7 @@ class Project(Entity):
|
|
|
662
620
|
kind : str
|
|
663
621
|
Kind the object.
|
|
664
622
|
uuid : str
|
|
665
|
-
ID of the object
|
|
623
|
+
ID of the object.
|
|
666
624
|
description : str
|
|
667
625
|
Description of the object (human readable).
|
|
668
626
|
labels : list[str]
|
|
@@ -966,7 +924,7 @@ class Project(Entity):
|
|
|
966
924
|
kind : str
|
|
967
925
|
Kind the object.
|
|
968
926
|
uuid : str
|
|
969
|
-
ID of the object
|
|
927
|
+
ID of the object.
|
|
970
928
|
description : str
|
|
971
929
|
Description of the object (human readable).
|
|
972
930
|
labels : list[str]
|
|
@@ -1257,7 +1215,7 @@ class Project(Entity):
|
|
|
1257
1215
|
kind : str
|
|
1258
1216
|
Kind the object.
|
|
1259
1217
|
uuid : str
|
|
1260
|
-
ID of the object
|
|
1218
|
+
ID of the object.
|
|
1261
1219
|
description : str
|
|
1262
1220
|
Description of the object (human readable).
|
|
1263
1221
|
labels : list[str]
|
|
@@ -1503,7 +1461,7 @@ class Project(Entity):
|
|
|
1503
1461
|
kind : str
|
|
1504
1462
|
Kind the object.
|
|
1505
1463
|
uuid : str
|
|
1506
|
-
ID of the object
|
|
1464
|
+
ID of the object.
|
|
1507
1465
|
description : str
|
|
1508
1466
|
Description of the object (human readable).
|
|
1509
1467
|
labels : list[str]
|
|
@@ -1747,7 +1705,7 @@ class Project(Entity):
|
|
|
1747
1705
|
name : str
|
|
1748
1706
|
Object name.
|
|
1749
1707
|
uuid : str
|
|
1750
|
-
ID of the object
|
|
1708
|
+
ID of the object.
|
|
1751
1709
|
description : str
|
|
1752
1710
|
Description of the object (human readable).
|
|
1753
1711
|
labels : list[str]
|
|
@@ -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 ProjectSpec(Spec):
|
|
7
7
|
"""
|
|
8
|
-
|
|
8
|
+
ProjectSpec specifications.
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
11
|
def __init__(
|
|
@@ -26,9 +26,9 @@ class ProjectSpec(Spec):
|
|
|
26
26
|
self.models = models if models is not None else []
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
class
|
|
29
|
+
class ProjectValidator(SpecValidator):
|
|
30
30
|
"""
|
|
31
|
-
|
|
31
|
+
ProjectValidator validator.
|
|
32
32
|
"""
|
|
33
33
|
|
|
34
34
|
context: str = None
|