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
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities.dataitem._base.spec import DataitemSpec, DataitemValidator
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class DataitemSpecDataitem(DataitemSpec):
|
|
7
|
+
"""
|
|
8
|
+
DataitemSpecDataitem specifications.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class DataitemValidatorDataitem(DataitemValidator):
|
|
13
|
+
"""
|
|
14
|
+
DataitemValidatorDataitem validator.
|
|
15
|
+
"""
|
|
File without changes
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import typing
|
|
4
|
+
|
|
5
|
+
from digitalhub.entities.dataitem._base.entity import Dataitem
|
|
6
|
+
|
|
7
|
+
if typing.TYPE_CHECKING:
|
|
8
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
9
|
+
from digitalhub.entities.dataitem.iceberg.spec import DataitemSpecIceberg
|
|
10
|
+
from digitalhub.entities.dataitem.iceberg.status import DataitemStatusIceberg
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class DataitemIceberg(Dataitem):
|
|
14
|
+
"""
|
|
15
|
+
DataitemIceberg class.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
def __init__(
|
|
19
|
+
self,
|
|
20
|
+
project: str,
|
|
21
|
+
name: str,
|
|
22
|
+
uuid: str,
|
|
23
|
+
kind: str,
|
|
24
|
+
metadata: Metadata,
|
|
25
|
+
spec: DataitemSpecIceberg,
|
|
26
|
+
status: DataitemStatusIceberg,
|
|
27
|
+
user: str | None = None,
|
|
28
|
+
) -> None:
|
|
29
|
+
super().__init__(project, name, uuid, kind, metadata, spec, status, user)
|
|
30
|
+
|
|
31
|
+
self.spec: DataitemSpecIceberg
|
|
32
|
+
self.status: DataitemStatusIceberg
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities.dataitem._base.spec import DataitemSpec, DataitemValidator
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class DataitemSpecIceberg(DataitemSpec):
|
|
7
|
+
"""
|
|
8
|
+
DataitemSpecIceberg specifications.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class DataitemValidatorIceberg(DataitemValidator):
|
|
13
|
+
"""
|
|
14
|
+
DataitemValidatorIceberg validator.
|
|
15
|
+
"""
|
|
File without changes
|
|
@@ -1,20 +1,41 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import shutil
|
|
4
|
+
import typing
|
|
4
5
|
from pathlib import Path
|
|
5
6
|
from typing import Any
|
|
6
7
|
|
|
7
8
|
from digitalhub.datastores.builder import get_datastore
|
|
8
|
-
from digitalhub.entities.dataitem.entity
|
|
9
|
+
from digitalhub.entities.dataitem._base.entity import Dataitem
|
|
9
10
|
from digitalhub.utils.uri_utils import check_local_path
|
|
10
11
|
|
|
12
|
+
if typing.TYPE_CHECKING:
|
|
13
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
14
|
+
from digitalhub.entities.dataitem.table.spec import DataitemSpecTable
|
|
15
|
+
from digitalhub.entities.dataitem.table.status import DataitemStatusTable
|
|
11
16
|
|
|
12
|
-
class DataitemTable(Dataitem):
|
|
13
17
|
|
|
18
|
+
class DataitemTable(Dataitem):
|
|
14
19
|
"""
|
|
15
|
-
|
|
20
|
+
DataitemTable class.
|
|
16
21
|
"""
|
|
17
22
|
|
|
23
|
+
def __init__(
|
|
24
|
+
self,
|
|
25
|
+
project: str,
|
|
26
|
+
name: str,
|
|
27
|
+
uuid: str,
|
|
28
|
+
kind: str,
|
|
29
|
+
metadata: Metadata,
|
|
30
|
+
spec: DataitemSpecTable,
|
|
31
|
+
status: DataitemStatusTable,
|
|
32
|
+
user: str | None = None,
|
|
33
|
+
) -> None:
|
|
34
|
+
super().__init__(project, name, uuid, kind, metadata, spec, status, user)
|
|
35
|
+
|
|
36
|
+
self.spec: DataitemSpecTable
|
|
37
|
+
self.status: DataitemStatusTable
|
|
38
|
+
|
|
18
39
|
def as_df(
|
|
19
40
|
self,
|
|
20
41
|
file_format: str | None = None,
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from pydantic import Field
|
|
4
|
+
|
|
5
|
+
from digitalhub.entities.dataitem._base.spec import DataitemSpec, DataitemValidator
|
|
6
|
+
from digitalhub.entities.dataitem.table.models import TableSchema
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class DataitemSpecTable(DataitemSpec):
|
|
10
|
+
"""
|
|
11
|
+
DataitemSpecTable specifications.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
def __init__(self, path: str, schema: dict | None = None) -> None:
|
|
15
|
+
super().__init__(path)
|
|
16
|
+
self.schema = schema
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class DataitemValidatorTable(DataitemValidator):
|
|
20
|
+
"""
|
|
21
|
+
DataitemValidatorTable validator.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
schema_: TableSchema = Field(default=None, alias="schema")
|
|
25
|
+
"""The schema of the dataitem in table schema format."""
|
|
File without changes
|
|
@@ -3,16 +3,16 @@ from __future__ import annotations
|
|
|
3
3
|
import typing
|
|
4
4
|
from concurrent.futures import ThreadPoolExecutor
|
|
5
5
|
|
|
6
|
-
from digitalhub.entities._base.entity
|
|
7
|
-
from digitalhub.entities.entity_types import EntityTypes
|
|
6
|
+
from digitalhub.entities._base.executable.entity import ExecutableEntity
|
|
7
|
+
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
8
8
|
from digitalhub.runtimes.builder import get_kind_registry
|
|
9
9
|
from digitalhub.utils.exceptions import BackendError
|
|
10
10
|
|
|
11
11
|
if typing.TYPE_CHECKING:
|
|
12
|
-
from digitalhub.entities._base.metadata import Metadata
|
|
13
|
-
from digitalhub.entities.function.spec import FunctionSpec
|
|
14
|
-
from digitalhub.entities.function.status import FunctionStatus
|
|
15
|
-
from digitalhub.entities.run.entity import Run
|
|
12
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
13
|
+
from digitalhub.entities.function._base.spec import FunctionSpec
|
|
14
|
+
from digitalhub.entities.function._base.status import FunctionStatus
|
|
15
|
+
from digitalhub.entities.run._base.entity import Run
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class Function(ExecutableEntity):
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities._base.entity.spec import Spec, SpecValidator
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class FunctionSpec(Spec):
|
|
7
|
+
"""
|
|
8
|
+
FunctionSpec specifications.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class FunctionValidator(SpecValidator):
|
|
13
|
+
"""
|
|
14
|
+
FunctionValidator validator.
|
|
15
|
+
"""
|
|
@@ -5,7 +5,7 @@ from digitalhub.entities._builders.name import build_name
|
|
|
5
5
|
from digitalhub.entities._builders.spec import build_spec
|
|
6
6
|
from digitalhub.entities._builders.status import build_status
|
|
7
7
|
from digitalhub.entities._builders.uuid import build_uuid
|
|
8
|
-
from digitalhub.entities.function.entity import Function
|
|
8
|
+
from digitalhub.entities.function._base.entity import Function
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
def function_from_parameters(
|
|
@@ -9,13 +9,13 @@ from digitalhub.entities._base.crud import (
|
|
|
9
9
|
read_entity_api_ctx,
|
|
10
10
|
read_entity_api_ctx_versions,
|
|
11
11
|
)
|
|
12
|
-
from digitalhub.entities.entity_types import EntityTypes
|
|
13
12
|
from digitalhub.entities.function.builder import function_from_dict, function_from_parameters
|
|
13
|
+
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
14
14
|
from digitalhub.utils.exceptions import EntityAlreadyExistsError
|
|
15
15
|
from digitalhub.utils.io_utils import read_yaml
|
|
16
16
|
|
|
17
17
|
if typing.TYPE_CHECKING:
|
|
18
|
-
from digitalhub.entities.function.entity import Function
|
|
18
|
+
from digitalhub.entities.function._base.entity import Function
|
|
19
19
|
|
|
20
20
|
ENTITY_TYPE = EntityTypes.FUNCTION.value
|
|
21
21
|
|
|
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.model.spec import ModelSpec
|
|
11
|
-
from digitalhub.entities.model.status import ModelStatus
|
|
9
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
10
|
+
from digitalhub.entities.model._base.spec import ModelSpec
|
|
11
|
+
from digitalhub.entities.model._base.status import ModelStatus
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class Model(MaterialEntity):
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from digitalhub.entities._base.material.spec import MaterialSpec, MaterialValidator
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ModelSpec(MaterialSpec):
|
|
7
|
+
"""
|
|
8
|
+
ModelSpec 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
|
+
) -> None:
|
|
20
|
+
self.path = path
|
|
21
|
+
self.framework = framework
|
|
22
|
+
self.algorithm = algorithm
|
|
23
|
+
self.base_model = base_model
|
|
24
|
+
self.parameters = parameters
|
|
25
|
+
self.metrics = metrics
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class ModelValidator(MaterialValidator):
|
|
29
|
+
"""
|
|
30
|
+
ModelValidator validator.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
path: str
|
|
34
|
+
"""Path to the model."""
|
|
35
|
+
|
|
36
|
+
framework: str = None
|
|
37
|
+
"""Model framework (e.g. 'pytorch')."""
|
|
38
|
+
|
|
39
|
+
algorithm: str = None
|
|
40
|
+
"""Model algorithm (e.g. 'resnet')."""
|
|
41
|
+
|
|
42
|
+
base_model: str = None
|
|
43
|
+
"""Base model."""
|
|
44
|
+
|
|
45
|
+
parameters: dict = None
|
|
46
|
+
"""Model validator."""
|
|
47
|
+
|
|
48
|
+
metrics: dict = None
|
|
49
|
+
"""Model metrics."""
|
|
@@ -10,32 +10,32 @@ 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.model.entity
|
|
13
|
+
from digitalhub.entities.model._base.entity import Model
|
|
14
14
|
|
|
15
15
|
# Manage class mapper
|
|
16
16
|
cls_mapper = {}
|
|
17
17
|
|
|
18
18
|
try:
|
|
19
|
-
from digitalhub.entities.model.entity
|
|
19
|
+
from digitalhub.entities.model.model.entity import ModelModel
|
|
20
20
|
|
|
21
21
|
cls_mapper["model"] = ModelModel
|
|
22
22
|
except ImportError:
|
|
23
23
|
...
|
|
24
24
|
|
|
25
25
|
try:
|
|
26
|
-
from digitalhub.entities.model.entity
|
|
26
|
+
from digitalhub.entities.model.mlflow.entity import ModelMlflow
|
|
27
27
|
|
|
28
28
|
cls_mapper["mlflow"] = ModelMlflow
|
|
29
29
|
except ImportError:
|
|
30
30
|
...
|
|
31
31
|
try:
|
|
32
|
-
from digitalhub.entities.model.entity
|
|
32
|
+
from digitalhub.entities.model.sklearn.entity import ModelSklearn
|
|
33
33
|
|
|
34
34
|
cls_mapper["sklearn"] = ModelSklearn
|
|
35
35
|
except ImportError:
|
|
36
36
|
...
|
|
37
37
|
try:
|
|
38
|
-
from digitalhub.entities.model.entity
|
|
38
|
+
from digitalhub.entities.model.huggingface.entity import ModelHuggingface
|
|
39
39
|
|
|
40
40
|
cls_mapper["huggingface"] = ModelHuggingface
|
|
41
41
|
except ImportError:
|
|
@@ -10,14 +10,14 @@ from digitalhub.entities._base.crud import (
|
|
|
10
10
|
read_entity_api_ctx_versions,
|
|
11
11
|
)
|
|
12
12
|
from digitalhub.entities._builders.uuid import build_uuid
|
|
13
|
-
from digitalhub.entities.entity_types import EntityTypes
|
|
14
13
|
from digitalhub.entities.model.builder import model_from_dict, model_from_parameters
|
|
15
|
-
from digitalhub.entities.utils import
|
|
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.model.entity
|
|
20
|
+
from digitalhub.entities.model._base.entity import Model
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
ENTITY_TYPE = EntityTypes.MODEL.value
|
|
File without changes
|
|
@@ -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.huggingface.spec import ModelSpecHuggingface
|
|
10
|
+
from digitalhub.entities.model.huggingface.status import ModelStatusHuggingface
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ModelHuggingface(Model):
|
|
14
|
+
"""
|
|
15
|
+
ModelHuggingface 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: ModelSpecHuggingface,
|
|
26
|
+
status: ModelStatusHuggingface,
|
|
27
|
+
user: str | None = None,
|
|
28
|
+
) -> None:
|
|
29
|
+
super().__init__(project, name, uuid, kind, metadata, spec, status, user)
|
|
30
|
+
|
|
31
|
+
self.spec: ModelSpecHuggingface
|
|
32
|
+
self.status: ModelStatusHuggingface
|
|
@@ -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,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,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
|