digitalhub 0.8.0b2__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.

Files changed (197) hide show
  1. digitalhub/__init__.py +2 -2
  2. digitalhub/client/builder.py +3 -3
  3. digitalhub/client/{objects/dhcore.py → dhcore/client.py} +3 -48
  4. digitalhub/client/dhcore/env.py +21 -0
  5. digitalhub/client/dhcore/models.py +46 -0
  6. digitalhub/{utils/env_utils.py → client/dhcore/utils.py} +1 -13
  7. digitalhub/client/{objects/local.py → local/client.py} +1 -1
  8. digitalhub/context/builder.py +1 -1
  9. digitalhub/context/context.py +1 -1
  10. digitalhub/datastores/{objects/base.py → _base/datastore.py} +1 -1
  11. digitalhub/datastores/builder.py +6 -6
  12. digitalhub/datastores/{objects/local.py → local/datastore.py} +1 -1
  13. digitalhub/datastores/{objects/remote.py → remote/datastore.py} +1 -1
  14. digitalhub/datastores/{objects/s3.py → s3/datastore.py} +1 -1
  15. digitalhub/datastores/{objects/sql.py → sql/datastore.py} +1 -1
  16. digitalhub/entities/_base/{base.py → _base/entity.py} +1 -1
  17. digitalhub/entities/_base/context/__init__.py +0 -0
  18. digitalhub/entities/_base/{entity/context.py → context/entity.py} +4 -4
  19. digitalhub/entities/_base/crud.py +3 -3
  20. digitalhub/entities/_base/entity/{base.py → entity.py} +6 -6
  21. digitalhub/entities/_base/{metadata.py → entity/metadata.py} +2 -2
  22. digitalhub/entities/_base/{spec/base.py → entity/spec.py} +11 -11
  23. digitalhub/entities/_base/{status/base.py → entity/status.py} +2 -2
  24. digitalhub/entities/_base/executable/__init__.py +0 -0
  25. digitalhub/entities/_base/{entity/executable.py → executable/entity.py} +55 -31
  26. digitalhub/entities/_base/material/__init__.py +0 -0
  27. digitalhub/entities/_base/{entity/material.py → material/entity.py} +4 -4
  28. digitalhub/entities/_base/{spec/material.py → material/spec.py} +3 -3
  29. digitalhub/entities/_base/{status/material.py → material/status.py} +1 -1
  30. digitalhub/entities/_base/unversioned/__init__.py +0 -0
  31. digitalhub/entities/_base/{entity/unversioned.py → unversioned/entity.py} +4 -4
  32. digitalhub/entities/_base/versioned/__init__.py +0 -0
  33. digitalhub/entities/_base/{entity/versioned.py → versioned/entity.py} +4 -4
  34. digitalhub/entities/_builders/entity.py +148 -0
  35. digitalhub/entities/_builders/factory.py +44 -0
  36. digitalhub/entities/_builders/metadata.py +2 -11
  37. digitalhub/entities/_builders/spec.py +1 -1
  38. digitalhub/entities/_builders/status.py +2 -2
  39. digitalhub/entities/artifact/_base/__init__.py +0 -0
  40. digitalhub/entities/artifact/{entity/_base.py → _base/entity.py} +5 -5
  41. digitalhub/entities/artifact/_base/spec.py +15 -0
  42. digitalhub/entities/artifact/_base/status.py +9 -0
  43. digitalhub/entities/artifact/artifact/__init__.py +0 -0
  44. digitalhub/entities/artifact/artifact/entity.py +32 -0
  45. digitalhub/entities/artifact/{spec.py → artifact/spec.py} +4 -16
  46. digitalhub/entities/artifact/{status.py → artifact/status.py} +1 -1
  47. digitalhub/entities/artifact/builder.py +2 -2
  48. digitalhub/entities/artifact/crud.py +3 -3
  49. digitalhub/entities/dataitem/_base/__init__.py +0 -0
  50. digitalhub/entities/dataitem/{entity/_base.py → _base/entity.py} +5 -5
  51. digitalhub/entities/dataitem/_base/spec.py +15 -0
  52. digitalhub/entities/dataitem/_base/status.py +20 -0
  53. digitalhub/entities/dataitem/builder.py +4 -4
  54. digitalhub/entities/dataitem/crud.py +7 -4
  55. digitalhub/entities/dataitem/dataitem/__init__.py +0 -0
  56. digitalhub/entities/dataitem/dataitem/entity.py +32 -0
  57. digitalhub/entities/dataitem/dataitem/spec.py +15 -0
  58. digitalhub/entities/dataitem/dataitem/status.py +9 -0
  59. digitalhub/entities/dataitem/iceberg/__init__.py +0 -0
  60. digitalhub/entities/dataitem/iceberg/entity.py +32 -0
  61. digitalhub/entities/dataitem/iceberg/spec.py +15 -0
  62. digitalhub/entities/dataitem/iceberg/status.py +9 -0
  63. digitalhub/entities/dataitem/table/__init__.py +0 -0
  64. digitalhub/entities/dataitem/{entity/table.py → table/entity.py} +24 -3
  65. digitalhub/entities/dataitem/table/spec.py +25 -0
  66. digitalhub/entities/dataitem/table/status.py +9 -0
  67. digitalhub/entities/function/_base/__init__.py +0 -0
  68. digitalhub/entities/function/{entity.py → _base/entity.py} +6 -6
  69. digitalhub/entities/function/{models.py → _base/models.py} +1 -1
  70. digitalhub/entities/function/_base/spec.py +15 -0
  71. digitalhub/entities/function/_base/status.py +9 -0
  72. digitalhub/entities/function/builder.py +1 -1
  73. digitalhub/entities/function/crud.py +2 -2
  74. digitalhub/entities/model/_base/__init__.py +0 -0
  75. digitalhub/entities/model/{entity/_base.py → _base/entity.py} +5 -5
  76. digitalhub/entities/model/_base/spec.py +49 -0
  77. digitalhub/entities/model/_base/status.py +9 -0
  78. digitalhub/entities/model/builder.py +5 -5
  79. digitalhub/entities/model/crud.py +3 -3
  80. digitalhub/entities/model/huggingface/__init__.py +0 -0
  81. digitalhub/entities/model/huggingface/entity.py +32 -0
  82. digitalhub/entities/model/huggingface/spec.py +36 -0
  83. digitalhub/entities/model/huggingface/status.py +9 -0
  84. digitalhub/entities/model/mlflow/__init__.py +0 -0
  85. digitalhub/entities/model/mlflow/entity.py +32 -0
  86. digitalhub/entities/model/mlflow/spec.py +44 -0
  87. digitalhub/entities/model/mlflow/status.py +9 -0
  88. digitalhub/entities/model/{entity/mlflow.py → mlflow/utils.py} +1 -10
  89. digitalhub/entities/model/model/__init__.py +0 -0
  90. digitalhub/entities/model/model/entity.py +32 -0
  91. digitalhub/entities/model/model/spec.py +15 -0
  92. digitalhub/entities/model/model/status.py +9 -0
  93. digitalhub/entities/model/sklearn/__init__.py +0 -0
  94. digitalhub/entities/model/sklearn/entity.py +32 -0
  95. digitalhub/entities/model/sklearn/spec.py +15 -0
  96. digitalhub/entities/model/sklearn/status.py +9 -0
  97. digitalhub/entities/project/builder.py +1 -1
  98. digitalhub/entities/project/crud.py +2 -2
  99. digitalhub/entities/project/project/__init__.py +0 -0
  100. digitalhub/entities/project/{entity.py → project/entity.py} +12 -12
  101. digitalhub/entities/project/{spec.py → project/spec.py} +4 -4
  102. digitalhub/entities/project/project/status.py +9 -0
  103. digitalhub/entities/registries.py +6 -6
  104. digitalhub/entities/run/_base/__init__.py +0 -0
  105. digitalhub/entities/run/{entity.py → _base/entity.py} +7 -7
  106. digitalhub/entities/run/{spec.py → _base/spec.py} +8 -8
  107. digitalhub/entities/run/{status.py → _base/status.py} +4 -4
  108. digitalhub/entities/run/builder.py +1 -1
  109. digitalhub/entities/run/crud.py +2 -2
  110. digitalhub/entities/secret/builder.py +1 -1
  111. digitalhub/entities/secret/crud.py +11 -3
  112. digitalhub/entities/secret/secret/__init__.py +0 -0
  113. digitalhub/entities/secret/{entity.py → secret/entity.py} +7 -6
  114. digitalhub/entities/secret/{spec.py → secret/spec.py} +4 -4
  115. digitalhub/entities/secret/secret/status.py +9 -0
  116. digitalhub/entities/task/_base/__init__.py +0 -0
  117. digitalhub/entities/task/{entity.py → _base/entity.py} +6 -6
  118. digitalhub/entities/task/{models.py → _base/models.py} +9 -0
  119. digitalhub/entities/task/{spec.py → _base/spec.py} +9 -7
  120. digitalhub/entities/task/_base/status.py +9 -0
  121. digitalhub/entities/task/builder.py +1 -1
  122. digitalhub/entities/task/crud.py +2 -2
  123. digitalhub/entities/utils/__init__.py +0 -0
  124. digitalhub/entities/{utils.py → utils/utils.py} +2 -2
  125. digitalhub/entities/workflow/_base/__init__.py +0 -0
  126. digitalhub/entities/workflow/{entity.py → _base/entity.py} +6 -6
  127. digitalhub/entities/workflow/_base/spec.py +15 -0
  128. digitalhub/entities/workflow/_base/status.py +9 -0
  129. digitalhub/entities/workflow/builder.py +1 -1
  130. digitalhub/entities/workflow/crud.py +2 -2
  131. digitalhub/readers/_base/__init__.py +0 -0
  132. digitalhub/readers/builder.py +1 -1
  133. digitalhub/readers/pandas/__init__.py +0 -0
  134. digitalhub/readers/{objects/pandas.py → pandas/readers.py} +1 -1
  135. digitalhub/readers/registry.py +1 -1
  136. digitalhub/registry/utils.py +4 -3
  137. digitalhub/stores/_base/__init__.py +0 -0
  138. digitalhub/stores/builder.py +6 -6
  139. digitalhub/stores/local/__init__.py +0 -0
  140. digitalhub/stores/{objects/local.py → local/store.py} +1 -1
  141. digitalhub/stores/remote/__init__.py +0 -0
  142. digitalhub/stores/{objects/remote.py → remote/store.py} +1 -1
  143. digitalhub/stores/s3/__init__.py +0 -0
  144. digitalhub/stores/{objects/s3.py → s3/store.py} +1 -1
  145. digitalhub/stores/sql/__init__.py +0 -0
  146. digitalhub/stores/{objects/sql.py → sql/store.py} +1 -1
  147. digitalhub/utils/generic_utils.py +18 -42
  148. digitalhub/utils/s3_utils.py +58 -0
  149. {digitalhub-0.8.0b2.dist-info → digitalhub-0.8.0b3.dist-info}/METADATA +3 -2
  150. digitalhub-0.8.0b3.dist-info/RECORD +214 -0
  151. {digitalhub-0.8.0b2.dist-info → digitalhub-0.8.0b3.dist-info}/WHEEL +1 -1
  152. test/local/CRUD/test_artifacts.py +96 -0
  153. test/local/CRUD/test_dataitems.py +96 -0
  154. test/local/CRUD/test_models.py +95 -0
  155. test/test_crud_functions.py +1 -1
  156. test/test_crud_runs.py +1 -1
  157. test/test_crud_tasks.py +1 -1
  158. digitalhub/entities/artifact/entity/artifact.py +0 -9
  159. digitalhub/entities/dataitem/entity/dataitem.py +0 -9
  160. digitalhub/entities/dataitem/entity/iceberg.py +0 -7
  161. digitalhub/entities/dataitem/spec.py +0 -61
  162. digitalhub/entities/dataitem/status.py +0 -38
  163. digitalhub/entities/function/spec.py +0 -81
  164. digitalhub/entities/function/status.py +0 -9
  165. digitalhub/entities/model/entity/huggingface.py +0 -9
  166. digitalhub/entities/model/entity/model.py +0 -9
  167. digitalhub/entities/model/entity/sklearn.py +0 -9
  168. digitalhub/entities/model/spec.py +0 -146
  169. digitalhub/entities/model/status.py +0 -33
  170. digitalhub/entities/project/status.py +0 -9
  171. digitalhub/entities/secret/status.py +0 -9
  172. digitalhub/entities/task/status.py +0 -9
  173. digitalhub/entities/workflow/spec.py +0 -15
  174. digitalhub/entities/workflow/status.py +0 -9
  175. digitalhub-0.8.0b2.dist-info/RECORD +0 -161
  176. test/test_crud_artifacts.py +0 -96
  177. test/test_crud_dataitems.py +0 -96
  178. /digitalhub/client/{objects → _base}/__init__.py +0 -0
  179. /digitalhub/client/{objects/base.py → _base/client.py} +0 -0
  180. /digitalhub/{datastores/objects → client/dhcore}/__init__.py +0 -0
  181. /digitalhub/{entities/_base/spec → client/local}/__init__.py +0 -0
  182. /digitalhub/{entities/_base/status → datastores/_base}/__init__.py +0 -0
  183. /digitalhub/{entities/artifact/entity → datastores/local}/__init__.py +0 -0
  184. /digitalhub/{entities/dataitem/entity → datastores/remote}/__init__.py +0 -0
  185. /digitalhub/{entities/model/entity → datastores/s3}/__init__.py +0 -0
  186. /digitalhub/{readers/objects → datastores/sql}/__init__.py +0 -0
  187. /digitalhub/{stores/objects → entities/_base/_base}/__init__.py +0 -0
  188. /digitalhub/entities/dataitem/{models.py → table/models.py} +0 -0
  189. /digitalhub/entities/model/{models.py → mlflow/models.py} +0 -0
  190. /digitalhub/entities/{_base → utils}/api.py +0 -0
  191. /digitalhub/entities/{entity_types.py → utils/entity_types.py} +0 -0
  192. /digitalhub/entities/{_base → utils}/state.py +0 -0
  193. /digitalhub/readers/{objects/base.py → _base/readers.py} +0 -0
  194. /digitalhub/stores/{objects/base.py → _base/store.py} +0 -0
  195. {digitalhub-0.8.0b2.dist-info → digitalhub-0.8.0b3.dist-info}/LICENSE.txt +0 -0
  196. {digitalhub-0.8.0b2.dist-info → digitalhub-0.8.0b3.dist-info}/top_level.txt +0 -0
  197. /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
+ """
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities.dataitem._base.status import DataitemStatus
4
+
5
+
6
+ class DataitemStatusDataitem(DataitemStatus):
7
+ """
8
+ DataitemStatusDataitem status.
9
+ """
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
+ """
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities.dataitem._base.status import DataitemStatus
4
+
5
+
6
+ class DataitemStatusIceberg(DataitemStatus):
7
+ """
8
+ DataitemStatusIceberg status.
9
+ """
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._base import Dataitem
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
- Table dataitem.
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."""
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities.dataitem._base.status import DataitemStatus
4
+
5
+
6
+ class DataitemStatusTable(DataitemStatus):
7
+ """
8
+ DataitemStatusTable status.
9
+ """
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.executable import ExecutableEntity
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):
@@ -94,7 +94,7 @@ class SourceCodeStruct:
94
94
  return str(self.to_dict())
95
95
 
96
96
 
97
- class SourceCodeParams(BaseModel):
97
+ class SourceCodeValidator(BaseModel):
98
98
  """
99
99
  Source code params.
100
100
  """
@@ -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
+ """
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities._base.entity.status import Status
4
+
5
+
6
+ class FunctionStatus(Status):
7
+ """
8
+ FunctionStatus status.
9
+ """
@@ -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.material import MaterialEntity
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."""
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities._base.material.status import MaterialStatus
4
+
5
+
6
+ class ModelStatus(MaterialStatus):
7
+ """
8
+ ModelStatus status.
9
+ """
@@ -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._base import Model
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.model import ModelModel
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.mlflow import ModelMlflow
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.sklearn import ModelSklearn
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.huggingface import ModelHuggingface
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 build_log_path_from_source, eval_local_source
14
+ from digitalhub.entities.utils.entity_types import EntityTypes
15
+ from digitalhub.entities.utils.utils import build_log_path_from_source, eval_local_source
16
16
  from digitalhub.utils.exceptions import EntityAlreadyExistsError
17
17
  from digitalhub.utils.io_utils import read_yaml
18
18
 
19
19
  if typing.TYPE_CHECKING:
20
- from digitalhub.entities.model.entity._base import Model
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."""
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities.model._base.status import ModelStatus
4
+
5
+
6
+ class ModelStatusHuggingface(ModelStatus):
7
+ """
8
+ ModelStatusHuggingface status.
9
+ """
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."""
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities.model._base.status import ModelStatus
4
+
5
+
6
+ class ModelStatusMlflow(ModelStatus):
7
+ """
8
+ ModelStatusMlflow status.
9
+ """
@@ -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.entity._base import 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
+ """
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities.model._base.status import ModelStatus
4
+
5
+
6
+ class ModelStatusModel(ModelStatus):
7
+ """
8
+ ModelStatusModel status.
9
+ """
File without changes