digitalhub 0.7.0b2__py3-none-any.whl → 0.8.0__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 (232) hide show
  1. digitalhub/__init__.py +63 -93
  2. digitalhub/client/__init__.py +0 -0
  3. digitalhub/client/_base/__init__.py +0 -0
  4. digitalhub/client/_base/client.py +56 -0
  5. digitalhub/client/api.py +63 -0
  6. digitalhub/client/builder.py +50 -0
  7. digitalhub/client/dhcore/__init__.py +0 -0
  8. digitalhub/client/dhcore/client.py +669 -0
  9. digitalhub/client/dhcore/env.py +21 -0
  10. digitalhub/client/dhcore/models.py +46 -0
  11. digitalhub/client/dhcore/utils.py +111 -0
  12. digitalhub/client/local/__init__.py +0 -0
  13. digitalhub/client/local/client.py +533 -0
  14. digitalhub/context/__init__.py +0 -0
  15. digitalhub/context/api.py +93 -0
  16. digitalhub/context/builder.py +94 -0
  17. digitalhub/context/context.py +136 -0
  18. digitalhub/datastores/__init__.py +0 -0
  19. digitalhub/datastores/_base/__init__.py +0 -0
  20. digitalhub/datastores/_base/datastore.py +85 -0
  21. digitalhub/datastores/api.py +37 -0
  22. digitalhub/datastores/builder.py +110 -0
  23. digitalhub/datastores/local/__init__.py +0 -0
  24. digitalhub/datastores/local/datastore.py +50 -0
  25. digitalhub/datastores/remote/__init__.py +0 -0
  26. digitalhub/datastores/remote/datastore.py +31 -0
  27. digitalhub/datastores/s3/__init__.py +0 -0
  28. digitalhub/datastores/s3/datastore.py +46 -0
  29. digitalhub/datastores/sql/__init__.py +0 -0
  30. digitalhub/datastores/sql/datastore.py +68 -0
  31. digitalhub/entities/__init__.py +0 -0
  32. digitalhub/entities/_base/__init__.py +0 -0
  33. digitalhub/entities/_base/_base/__init__.py +0 -0
  34. digitalhub/entities/_base/_base/entity.py +82 -0
  35. digitalhub/entities/_base/api_utils.py +620 -0
  36. digitalhub/entities/_base/context/__init__.py +0 -0
  37. digitalhub/entities/_base/context/entity.py +118 -0
  38. digitalhub/entities/_base/crud.py +468 -0
  39. digitalhub/entities/_base/entity/__init__.py +0 -0
  40. digitalhub/entities/_base/entity/_constructors/__init__.py +0 -0
  41. digitalhub/entities/_base/entity/_constructors/metadata.py +44 -0
  42. digitalhub/entities/_base/entity/_constructors/name.py +31 -0
  43. digitalhub/entities/_base/entity/_constructors/spec.py +33 -0
  44. digitalhub/entities/_base/entity/_constructors/status.py +52 -0
  45. digitalhub/entities/_base/entity/_constructors/uuid.py +26 -0
  46. digitalhub/entities/_base/entity/builder.py +175 -0
  47. digitalhub/entities/_base/entity/entity.py +106 -0
  48. digitalhub/entities/_base/entity/metadata.py +59 -0
  49. digitalhub/entities/_base/entity/spec.py +58 -0
  50. digitalhub/entities/_base/entity/status.py +43 -0
  51. digitalhub/entities/_base/executable/__init__.py +0 -0
  52. digitalhub/entities/_base/executable/entity.py +405 -0
  53. digitalhub/entities/_base/material/__init__.py +0 -0
  54. digitalhub/entities/_base/material/entity.py +214 -0
  55. digitalhub/entities/_base/material/spec.py +22 -0
  56. digitalhub/entities/_base/material/status.py +49 -0
  57. digitalhub/entities/_base/runtime_entity/__init__.py +0 -0
  58. digitalhub/entities/_base/runtime_entity/builder.py +106 -0
  59. digitalhub/entities/_base/unversioned/__init__.py +0 -0
  60. digitalhub/entities/_base/unversioned/builder.py +66 -0
  61. digitalhub/entities/_base/unversioned/entity.py +49 -0
  62. digitalhub/entities/_base/versioned/__init__.py +0 -0
  63. digitalhub/entities/_base/versioned/builder.py +68 -0
  64. digitalhub/entities/_base/versioned/entity.py +53 -0
  65. digitalhub/entities/artifact/__init__.py +0 -0
  66. digitalhub/entities/artifact/_base/__init__.py +0 -0
  67. digitalhub/entities/artifact/_base/builder.py +86 -0
  68. digitalhub/entities/artifact/_base/entity.py +39 -0
  69. digitalhub/entities/artifact/_base/spec.py +15 -0
  70. digitalhub/entities/artifact/_base/status.py +9 -0
  71. digitalhub/entities/artifact/artifact/__init__.py +0 -0
  72. digitalhub/entities/artifact/artifact/builder.py +18 -0
  73. digitalhub/entities/artifact/artifact/entity.py +32 -0
  74. digitalhub/entities/artifact/artifact/spec.py +27 -0
  75. digitalhub/entities/artifact/artifact/status.py +15 -0
  76. digitalhub/entities/artifact/crud.py +332 -0
  77. digitalhub/entities/builders.py +63 -0
  78. digitalhub/entities/dataitem/__init__.py +0 -0
  79. digitalhub/entities/dataitem/_base/__init__.py +0 -0
  80. digitalhub/entities/dataitem/_base/builder.py +86 -0
  81. digitalhub/entities/dataitem/_base/entity.py +75 -0
  82. digitalhub/entities/dataitem/_base/spec.py +15 -0
  83. digitalhub/entities/dataitem/_base/status.py +20 -0
  84. digitalhub/entities/dataitem/crud.py +372 -0
  85. digitalhub/entities/dataitem/dataitem/__init__.py +0 -0
  86. digitalhub/entities/dataitem/dataitem/builder.py +18 -0
  87. digitalhub/entities/dataitem/dataitem/entity.py +32 -0
  88. digitalhub/entities/dataitem/dataitem/spec.py +15 -0
  89. digitalhub/entities/dataitem/dataitem/status.py +9 -0
  90. digitalhub/entities/dataitem/iceberg/__init__.py +0 -0
  91. digitalhub/entities/dataitem/iceberg/builder.py +18 -0
  92. digitalhub/entities/dataitem/iceberg/entity.py +32 -0
  93. digitalhub/entities/dataitem/iceberg/spec.py +15 -0
  94. digitalhub/entities/dataitem/iceberg/status.py +9 -0
  95. digitalhub/entities/dataitem/table/__init__.py +0 -0
  96. digitalhub/entities/dataitem/table/builder.py +18 -0
  97. digitalhub/entities/dataitem/table/entity.py +146 -0
  98. digitalhub/entities/dataitem/table/models.py +62 -0
  99. digitalhub/entities/dataitem/table/spec.py +25 -0
  100. digitalhub/entities/dataitem/table/status.py +9 -0
  101. digitalhub/entities/function/__init__.py +0 -0
  102. digitalhub/entities/function/_base/__init__.py +0 -0
  103. digitalhub/entities/function/_base/builder.py +79 -0
  104. digitalhub/entities/function/_base/entity.py +98 -0
  105. digitalhub/entities/function/_base/models.py +118 -0
  106. digitalhub/entities/function/_base/spec.py +15 -0
  107. digitalhub/entities/function/_base/status.py +9 -0
  108. digitalhub/entities/function/crud.py +279 -0
  109. digitalhub/entities/model/__init__.py +0 -0
  110. digitalhub/entities/model/_base/__init__.py +0 -0
  111. digitalhub/entities/model/_base/builder.py +86 -0
  112. digitalhub/entities/model/_base/entity.py +34 -0
  113. digitalhub/entities/model/_base/spec.py +49 -0
  114. digitalhub/entities/model/_base/status.py +9 -0
  115. digitalhub/entities/model/crud.py +331 -0
  116. digitalhub/entities/model/huggingface/__init__.py +0 -0
  117. digitalhub/entities/model/huggingface/builder.py +18 -0
  118. digitalhub/entities/model/huggingface/entity.py +32 -0
  119. digitalhub/entities/model/huggingface/spec.py +36 -0
  120. digitalhub/entities/model/huggingface/status.py +9 -0
  121. digitalhub/entities/model/mlflow/__init__.py +0 -0
  122. digitalhub/entities/model/mlflow/builder.py +18 -0
  123. digitalhub/entities/model/mlflow/entity.py +32 -0
  124. digitalhub/entities/model/mlflow/models.py +26 -0
  125. digitalhub/entities/model/mlflow/spec.py +44 -0
  126. digitalhub/entities/model/mlflow/status.py +9 -0
  127. digitalhub/entities/model/mlflow/utils.py +81 -0
  128. digitalhub/entities/model/model/__init__.py +0 -0
  129. digitalhub/entities/model/model/builder.py +18 -0
  130. digitalhub/entities/model/model/entity.py +32 -0
  131. digitalhub/entities/model/model/spec.py +15 -0
  132. digitalhub/entities/model/model/status.py +9 -0
  133. digitalhub/entities/model/sklearn/__init__.py +0 -0
  134. digitalhub/entities/model/sklearn/builder.py +18 -0
  135. digitalhub/entities/model/sklearn/entity.py +32 -0
  136. digitalhub/entities/model/sklearn/spec.py +15 -0
  137. digitalhub/entities/model/sklearn/status.py +9 -0
  138. digitalhub/entities/project/__init__.py +0 -0
  139. digitalhub/entities/project/_base/__init__.py +0 -0
  140. digitalhub/entities/project/_base/builder.py +128 -0
  141. digitalhub/entities/project/_base/entity.py +2078 -0
  142. digitalhub/entities/project/_base/spec.py +50 -0
  143. digitalhub/entities/project/_base/status.py +9 -0
  144. digitalhub/entities/project/crud.py +357 -0
  145. digitalhub/entities/run/__init__.py +0 -0
  146. digitalhub/entities/run/_base/__init__.py +0 -0
  147. digitalhub/entities/run/_base/builder.py +94 -0
  148. digitalhub/entities/run/_base/entity.py +307 -0
  149. digitalhub/entities/run/_base/spec.py +50 -0
  150. digitalhub/entities/run/_base/status.py +9 -0
  151. digitalhub/entities/run/crud.py +219 -0
  152. digitalhub/entities/secret/__init__.py +0 -0
  153. digitalhub/entities/secret/_base/__init__.py +0 -0
  154. digitalhub/entities/secret/_base/builder.py +81 -0
  155. digitalhub/entities/secret/_base/entity.py +74 -0
  156. digitalhub/entities/secret/_base/spec.py +35 -0
  157. digitalhub/entities/secret/_base/status.py +9 -0
  158. digitalhub/entities/secret/crud.py +290 -0
  159. digitalhub/entities/task/__init__.py +0 -0
  160. digitalhub/entities/task/_base/__init__.py +0 -0
  161. digitalhub/entities/task/_base/builder.py +91 -0
  162. digitalhub/entities/task/_base/entity.py +136 -0
  163. digitalhub/entities/task/_base/models.py +208 -0
  164. digitalhub/entities/task/_base/spec.py +53 -0
  165. digitalhub/entities/task/_base/status.py +9 -0
  166. digitalhub/entities/task/crud.py +228 -0
  167. digitalhub/entities/utils/__init__.py +0 -0
  168. digitalhub/entities/utils/api.py +346 -0
  169. digitalhub/entities/utils/entity_types.py +19 -0
  170. digitalhub/entities/utils/state.py +31 -0
  171. digitalhub/entities/utils/utils.py +202 -0
  172. digitalhub/entities/workflow/__init__.py +0 -0
  173. digitalhub/entities/workflow/_base/__init__.py +0 -0
  174. digitalhub/entities/workflow/_base/builder.py +79 -0
  175. digitalhub/entities/workflow/_base/entity.py +74 -0
  176. digitalhub/entities/workflow/_base/spec.py +15 -0
  177. digitalhub/entities/workflow/_base/status.py +9 -0
  178. digitalhub/entities/workflow/crud.py +278 -0
  179. digitalhub/factory/__init__.py +0 -0
  180. digitalhub/factory/api.py +277 -0
  181. digitalhub/factory/factory.py +268 -0
  182. digitalhub/factory/utils.py +90 -0
  183. digitalhub/readers/__init__.py +0 -0
  184. digitalhub/readers/_base/__init__.py +0 -0
  185. digitalhub/readers/_base/builder.py +26 -0
  186. digitalhub/readers/_base/reader.py +70 -0
  187. digitalhub/readers/api.py +80 -0
  188. digitalhub/readers/factory.py +133 -0
  189. digitalhub/readers/pandas/__init__.py +0 -0
  190. digitalhub/readers/pandas/builder.py +29 -0
  191. digitalhub/readers/pandas/reader.py +207 -0
  192. digitalhub/runtimes/__init__.py +0 -0
  193. digitalhub/runtimes/_base.py +102 -0
  194. digitalhub/runtimes/builder.py +32 -0
  195. digitalhub/stores/__init__.py +0 -0
  196. digitalhub/stores/_base/__init__.py +0 -0
  197. digitalhub/stores/_base/store.py +189 -0
  198. digitalhub/stores/api.py +54 -0
  199. digitalhub/stores/builder.py +211 -0
  200. digitalhub/stores/local/__init__.py +0 -0
  201. digitalhub/stores/local/store.py +230 -0
  202. digitalhub/stores/remote/__init__.py +0 -0
  203. digitalhub/stores/remote/store.py +143 -0
  204. digitalhub/stores/s3/__init__.py +0 -0
  205. digitalhub/stores/s3/store.py +563 -0
  206. digitalhub/stores/sql/__init__.py +0 -0
  207. digitalhub/stores/sql/store.py +328 -0
  208. digitalhub/utils/__init__.py +0 -0
  209. digitalhub/utils/data_utils.py +127 -0
  210. digitalhub/utils/exceptions.py +67 -0
  211. digitalhub/utils/file_utils.py +204 -0
  212. digitalhub/utils/generic_utils.py +183 -0
  213. digitalhub/utils/git_utils.py +148 -0
  214. digitalhub/utils/io_utils.py +116 -0
  215. digitalhub/utils/logger.py +17 -0
  216. digitalhub/utils/s3_utils.py +58 -0
  217. digitalhub/utils/uri_utils.py +56 -0
  218. {digitalhub-0.7.0b2.dist-info → digitalhub-0.8.0.dist-info}/METADATA +30 -13
  219. digitalhub-0.8.0.dist-info/RECORD +231 -0
  220. {digitalhub-0.7.0b2.dist-info → digitalhub-0.8.0.dist-info}/WHEEL +1 -1
  221. test/local/CRUD/test_artifacts.py +96 -0
  222. test/local/CRUD/test_dataitems.py +96 -0
  223. test/local/CRUD/test_models.py +95 -0
  224. test/test_crud_functions.py +1 -1
  225. test/test_crud_runs.py +1 -1
  226. test/test_crud_tasks.py +1 -1
  227. digitalhub-0.7.0b2.dist-info/RECORD +0 -14
  228. test/test_crud_artifacts.py +0 -96
  229. test/test_crud_dataitems.py +0 -96
  230. {digitalhub-0.7.0b2.dist-info → digitalhub-0.8.0.dist-info}/LICENSE.txt +0 -0
  231. {digitalhub-0.7.0b2.dist-info → digitalhub-0.8.0.dist-info}/top_level.txt +0 -0
  232. /test/{test_imports.py → local/imports/test_imports.py} +0 -0
@@ -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
+ """
@@ -0,0 +1,81 @@
1
+ from urllib.parse import urlparse
2
+
3
+ import mlflow
4
+
5
+ from digitalhub.entities.model.mlflow.models import Dataset, Signature
6
+
7
+
8
+ def from_mlflow_run(run_id: str) -> dict:
9
+ """
10
+ Extract from mlflow run spec for Digitalhub Model.
11
+
12
+ Parameters
13
+ ----------
14
+ run_id : str
15
+ The id of the mlflow run.
16
+
17
+ Returns
18
+ -------
19
+ dict
20
+ The extracted spec.
21
+ """
22
+
23
+ # Get MLFlow run
24
+ client = mlflow.MlflowClient()
25
+ run = client.get_run(run_id)
26
+
27
+ # Extract spec
28
+ data = run.data
29
+ parameters = data.params
30
+ metrics = data.metrics
31
+ source_path = urlparse(run.info.artifact_uri).path
32
+ model_uri = f"runs:/{run_id}/model"
33
+ model = mlflow.pyfunc.load_model(model_uri=model_uri)
34
+ model_config = model.model_config
35
+ flavor = None
36
+ for f in model.metadata.flavors:
37
+ if f != "python_function":
38
+ flavor = f
39
+ break
40
+
41
+ # Extract signature
42
+ mlflow_signature = model.metadata.signature
43
+ signature = Signature(
44
+ inputs=mlflow_signature.inputs.to_json() if mlflow_signature.inputs else None,
45
+ outputs=mlflow_signature.outputs.to_json() if mlflow_signature.outputs else None,
46
+ params=mlflow_signature.params.to_json() if mlflow_signature.params else None,
47
+ ).dict()
48
+
49
+ # Extract datasets
50
+ datasets = []
51
+ if run.inputs and run.inputs.dataset_inputs:
52
+ datasets = [
53
+ Dataset(
54
+ name=d.dataset.name,
55
+ digest=d.dataset.digest,
56
+ profile=d.dataset.profile,
57
+ schema=d.dataset.schema,
58
+ source=d.dataset.source,
59
+ source_type=d.dataset.source_type,
60
+ ).dict()
61
+ for d in run.inputs.dataset_inputs
62
+ ]
63
+
64
+ # Create model params
65
+ model_params = {}
66
+
67
+ # source path
68
+ model_params["source"] = source_path
69
+
70
+ # common properties
71
+ model_params["framework"] = flavor
72
+ model_params["parameters"] = parameters
73
+ model_params["metrics"] = metrics
74
+
75
+ # specific to MLFlow
76
+ model_params["flavor"] = flavor
77
+ model_params["model_config"] = model_config
78
+ model_params["input_datasets"] = datasets
79
+ model_params["signature"] = signature
80
+
81
+ return model_params
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
+ """
@@ -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
@@ -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
+ """
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities.model._base.status import ModelStatus
4
+
5
+
6
+ class ModelStatusSklearn(ModelStatus):
7
+ """
8
+ ModelStatusSklearn status.
9
+ """
File without changes
File without changes
@@ -0,0 +1,128 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities._base.entity.builder 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
+ }