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.

Files changed (229) hide show
  1. digitalhub/__init__.py +5 -4
  2. digitalhub/client/builder.py +3 -3
  3. digitalhub/client/{objects/dhcore.py → dhcore/client.py} +9 -49
  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/{entity/context.py → context/entity.py} +4 -4
  18. digitalhub/entities/_base/crud.py +3 -3
  19. digitalhub/entities/_base/entity/{base.py → entity.py} +8 -34
  20. digitalhub/entities/_base/{metadata.py → entity/metadata.py} +2 -2
  21. digitalhub/entities/_base/{spec/base.py → entity/spec.py} +11 -11
  22. digitalhub/entities/_base/{status/base.py → entity/status.py} +2 -2
  23. digitalhub/entities/_base/executable/__init__.py +0 -0
  24. digitalhub/entities/_base/{entity/executable.py → executable/entity.py} +55 -31
  25. digitalhub/entities/_base/material/__init__.py +0 -0
  26. digitalhub/entities/_base/{entity/material.py → material/entity.py} +4 -4
  27. digitalhub/entities/_base/{spec/material.py → material/spec.py} +3 -3
  28. digitalhub/entities/_base/{status/material.py → material/status.py} +1 -1
  29. digitalhub/entities/_base/unversioned/__init__.py +0 -0
  30. digitalhub/entities/_base/unversioned/builder.py +66 -0
  31. digitalhub/entities/_base/unversioned/entity.py +49 -0
  32. digitalhub/entities/_base/versioned/__init__.py +0 -0
  33. digitalhub/entities/_base/versioned/builder.py +68 -0
  34. digitalhub/entities/_base/versioned/entity.py +53 -0
  35. digitalhub/entities/_builders/entity.py +153 -0
  36. digitalhub/entities/_builders/metadata.py +5 -21
  37. digitalhub/entities/_builders/spec.py +11 -21
  38. digitalhub/entities/_builders/status.py +10 -20
  39. digitalhub/entities/_builders/uuid.py +4 -11
  40. digitalhub/entities/artifact/_base/__init__.py +0 -0
  41. digitalhub/entities/artifact/_base/builder.py +86 -0
  42. digitalhub/entities/artifact/{entity/_base.py → _base/entity.py} +5 -5
  43. digitalhub/entities/artifact/_base/spec.py +15 -0
  44. digitalhub/entities/artifact/_base/status.py +9 -0
  45. digitalhub/entities/artifact/artifact/__init__.py +0 -0
  46. digitalhub/entities/artifact/artifact/builder.py +18 -0
  47. digitalhub/entities/artifact/artifact/entity.py +32 -0
  48. digitalhub/entities/artifact/{spec.py → artifact/spec.py} +4 -16
  49. digitalhub/entities/artifact/{status.py → artifact/status.py} +1 -1
  50. digitalhub/entities/artifact/builder.py +16 -98
  51. digitalhub/entities/artifact/crud.py +4 -4
  52. digitalhub/entities/builders.py +63 -0
  53. digitalhub/entities/dataitem/_base/__init__.py +0 -0
  54. digitalhub/entities/dataitem/_base/builder.py +86 -0
  55. digitalhub/entities/dataitem/{entity/_base.py → _base/entity.py} +5 -5
  56. digitalhub/entities/dataitem/_base/spec.py +15 -0
  57. digitalhub/entities/dataitem/_base/status.py +20 -0
  58. digitalhub/entities/dataitem/builder.py +16 -109
  59. digitalhub/entities/dataitem/crud.py +8 -5
  60. digitalhub/entities/dataitem/dataitem/__init__.py +0 -0
  61. digitalhub/entities/dataitem/dataitem/builder.py +18 -0
  62. digitalhub/entities/dataitem/dataitem/entity.py +32 -0
  63. digitalhub/entities/dataitem/dataitem/spec.py +15 -0
  64. digitalhub/entities/dataitem/dataitem/status.py +9 -0
  65. digitalhub/entities/dataitem/iceberg/__init__.py +0 -0
  66. digitalhub/entities/dataitem/iceberg/builder.py +18 -0
  67. digitalhub/entities/dataitem/iceberg/entity.py +32 -0
  68. digitalhub/entities/dataitem/iceberg/spec.py +15 -0
  69. digitalhub/entities/dataitem/iceberg/status.py +9 -0
  70. digitalhub/entities/dataitem/table/__init__.py +0 -0
  71. digitalhub/entities/dataitem/table/builder.py +18 -0
  72. digitalhub/entities/dataitem/{entity/table.py → table/entity.py} +24 -3
  73. digitalhub/entities/dataitem/table/spec.py +25 -0
  74. digitalhub/entities/dataitem/table/status.py +9 -0
  75. digitalhub/entities/function/_base/__init__.py +0 -0
  76. digitalhub/entities/function/_base/builder.py +78 -0
  77. digitalhub/entities/function/{entity.py → _base/entity.py} +8 -8
  78. digitalhub/entities/function/{models.py → _base/models.py} +1 -1
  79. digitalhub/entities/function/_base/spec.py +15 -0
  80. digitalhub/entities/function/_base/status.py +9 -0
  81. digitalhub/entities/function/builder.py +22 -57
  82. digitalhub/entities/function/crud.py +3 -3
  83. digitalhub/entities/model/_base/__init__.py +0 -0
  84. digitalhub/entities/model/_base/builder.py +86 -0
  85. digitalhub/entities/model/{entity/_base.py → _base/entity.py} +5 -5
  86. digitalhub/entities/model/_base/spec.py +49 -0
  87. digitalhub/entities/model/_base/status.py +9 -0
  88. digitalhub/entities/model/builder.py +16 -117
  89. digitalhub/entities/model/crud.py +4 -4
  90. digitalhub/entities/model/huggingface/__init__.py +0 -0
  91. digitalhub/entities/model/huggingface/builder.py +18 -0
  92. digitalhub/entities/model/huggingface/entity.py +32 -0
  93. digitalhub/entities/model/huggingface/spec.py +36 -0
  94. digitalhub/entities/model/huggingface/status.py +9 -0
  95. digitalhub/entities/model/mlflow/__init__.py +0 -0
  96. digitalhub/entities/model/mlflow/builder.py +18 -0
  97. digitalhub/entities/model/mlflow/entity.py +32 -0
  98. digitalhub/entities/model/mlflow/spec.py +44 -0
  99. digitalhub/entities/model/mlflow/status.py +9 -0
  100. digitalhub/entities/model/{entity/mlflow.py → mlflow/utils.py} +1 -10
  101. digitalhub/entities/model/model/__init__.py +0 -0
  102. digitalhub/entities/model/model/builder.py +18 -0
  103. digitalhub/entities/model/model/entity.py +32 -0
  104. digitalhub/entities/model/model/spec.py +15 -0
  105. digitalhub/entities/model/model/status.py +9 -0
  106. digitalhub/entities/model/sklearn/__init__.py +0 -0
  107. digitalhub/entities/model/sklearn/builder.py +18 -0
  108. digitalhub/entities/model/sklearn/entity.py +32 -0
  109. digitalhub/entities/model/sklearn/spec.py +15 -0
  110. digitalhub/entities/model/sklearn/status.py +9 -0
  111. digitalhub/entities/project/_base/__init__.py +0 -0
  112. digitalhub/entities/project/_base/builder.py +128 -0
  113. digitalhub/entities/project/{entity.py → _base/entity.py} +18 -60
  114. digitalhub/entities/project/{spec.py → _base/spec.py} +4 -4
  115. digitalhub/entities/project/_base/status.py +9 -0
  116. digitalhub/entities/project/builder.py +20 -51
  117. digitalhub/entities/project/crud.py +2 -2
  118. digitalhub/entities/run/_base/__init__.py +0 -0
  119. digitalhub/entities/run/_base/builder.py +73 -0
  120. digitalhub/entities/run/{entity.py → _base/entity.py} +12 -155
  121. digitalhub/entities/run/{spec.py → _base/spec.py} +8 -8
  122. digitalhub/entities/run/{status.py → _base/status.py} +4 -4
  123. digitalhub/entities/run/builder.py +21 -47
  124. digitalhub/entities/run/crud.py +3 -3
  125. digitalhub/entities/secret/_base/__init__.py +0 -0
  126. digitalhub/entities/secret/_base/builder.py +81 -0
  127. digitalhub/entities/secret/{entity.py → _base/entity.py} +7 -6
  128. digitalhub/entities/secret/{spec.py → _base/spec.py} +4 -4
  129. digitalhub/entities/secret/_base/status.py +9 -0
  130. digitalhub/entities/secret/builder.py +20 -62
  131. digitalhub/entities/secret/crud.py +12 -4
  132. digitalhub/entities/task/_base/__init__.py +0 -0
  133. digitalhub/entities/task/_base/builder.py +76 -0
  134. digitalhub/entities/task/{entity.py → _base/entity.py} +6 -6
  135. digitalhub/entities/task/{models.py → _base/models.py} +9 -0
  136. digitalhub/entities/task/{spec.py → _base/spec.py} +9 -7
  137. digitalhub/entities/task/_base/status.py +9 -0
  138. digitalhub/entities/task/builder.py +21 -44
  139. digitalhub/entities/task/crud.py +3 -3
  140. digitalhub/entities/utils/__init__.py +0 -0
  141. digitalhub/entities/{utils.py → utils/utils.py} +2 -2
  142. digitalhub/entities/workflow/_base/__init__.py +0 -0
  143. digitalhub/entities/workflow/_base/builder.py +78 -0
  144. digitalhub/entities/workflow/{entity.py → _base/entity.py} +8 -8
  145. digitalhub/entities/workflow/_base/spec.py +15 -0
  146. digitalhub/entities/workflow/_base/status.py +9 -0
  147. digitalhub/entities/workflow/builder.py +20 -60
  148. digitalhub/entities/workflow/crud.py +3 -3
  149. digitalhub/factory/__init__.py +0 -0
  150. digitalhub/factory/factory.py +204 -0
  151. digitalhub/factory/utils.py +90 -0
  152. digitalhub/readers/_base/__init__.py +0 -0
  153. digitalhub/readers/builder.py +1 -1
  154. digitalhub/readers/pandas/__init__.py +0 -0
  155. digitalhub/readers/{objects/pandas.py → pandas/readers.py} +1 -1
  156. digitalhub/readers/registry.py +1 -1
  157. digitalhub/runtimes/builder.py +24 -41
  158. digitalhub/runtimes/kind_registry.py +14 -0
  159. digitalhub/runtimes/utils.py +28 -0
  160. digitalhub/stores/_base/__init__.py +0 -0
  161. digitalhub/stores/builder.py +6 -6
  162. digitalhub/stores/local/__init__.py +0 -0
  163. digitalhub/stores/{objects/local.py → local/store.py} +1 -1
  164. digitalhub/stores/remote/__init__.py +0 -0
  165. digitalhub/stores/{objects/remote.py → remote/store.py} +1 -1
  166. digitalhub/stores/s3/__init__.py +0 -0
  167. digitalhub/stores/{objects/s3.py → s3/store.py} +1 -1
  168. digitalhub/stores/sql/__init__.py +0 -0
  169. digitalhub/stores/{objects/sql.py → sql/store.py} +1 -1
  170. digitalhub/utils/exceptions.py +6 -0
  171. digitalhub/utils/generic_utils.py +18 -42
  172. digitalhub/utils/s3_utils.py +58 -0
  173. {digitalhub-0.8.0b2.dist-info → digitalhub-0.8.0b4.dist-info}/METADATA +3 -2
  174. digitalhub-0.8.0b4.dist-info/RECORD +232 -0
  175. {digitalhub-0.8.0b2.dist-info → digitalhub-0.8.0b4.dist-info}/WHEEL +1 -1
  176. test/local/CRUD/test_artifacts.py +96 -0
  177. test/local/CRUD/test_dataitems.py +96 -0
  178. test/local/CRUD/test_models.py +95 -0
  179. test/test_crud_functions.py +1 -1
  180. test/test_crud_runs.py +1 -1
  181. test/test_crud_tasks.py +1 -1
  182. digitalhub/entities/_base/entity/unversioned.py +0 -87
  183. digitalhub/entities/_base/entity/versioned.py +0 -94
  184. digitalhub/entities/artifact/entity/artifact.py +0 -9
  185. digitalhub/entities/dataitem/entity/dataitem.py +0 -9
  186. digitalhub/entities/dataitem/entity/iceberg.py +0 -7
  187. digitalhub/entities/dataitem/spec.py +0 -61
  188. digitalhub/entities/dataitem/status.py +0 -38
  189. digitalhub/entities/function/spec.py +0 -81
  190. digitalhub/entities/function/status.py +0 -9
  191. digitalhub/entities/model/entity/huggingface.py +0 -9
  192. digitalhub/entities/model/entity/model.py +0 -9
  193. digitalhub/entities/model/entity/sklearn.py +0 -9
  194. digitalhub/entities/model/spec.py +0 -146
  195. digitalhub/entities/model/status.py +0 -33
  196. digitalhub/entities/project/status.py +0 -9
  197. digitalhub/entities/registries.py +0 -48
  198. digitalhub/entities/secret/status.py +0 -9
  199. digitalhub/entities/task/status.py +0 -9
  200. digitalhub/entities/workflow/spec.py +0 -15
  201. digitalhub/entities/workflow/status.py +0 -9
  202. digitalhub/registry/models.py +0 -87
  203. digitalhub/registry/registry.py +0 -74
  204. digitalhub/registry/utils.py +0 -150
  205. digitalhub-0.8.0b2.dist-info/RECORD +0 -161
  206. test/test_crud_artifacts.py +0 -96
  207. test/test_crud_dataitems.py +0 -96
  208. /digitalhub/client/{objects → _base}/__init__.py +0 -0
  209. /digitalhub/client/{objects/base.py → _base/client.py} +0 -0
  210. /digitalhub/{datastores/objects → client/dhcore}/__init__.py +0 -0
  211. /digitalhub/{entities/_base/spec → client/local}/__init__.py +0 -0
  212. /digitalhub/{entities/_base/status → datastores/_base}/__init__.py +0 -0
  213. /digitalhub/{entities/artifact/entity → datastores/local}/__init__.py +0 -0
  214. /digitalhub/{entities/dataitem/entity → datastores/remote}/__init__.py +0 -0
  215. /digitalhub/{entities/model/entity → datastores/s3}/__init__.py +0 -0
  216. /digitalhub/{readers/objects → datastores/sql}/__init__.py +0 -0
  217. /digitalhub/{registry → entities/_base/_base}/__init__.py +0 -0
  218. /digitalhub/{stores/objects → entities/_base/context}/__init__.py +0 -0
  219. /digitalhub/entities/dataitem/{models.py → table/models.py} +0 -0
  220. /digitalhub/entities/model/{models.py → mlflow/models.py} +0 -0
  221. /digitalhub/entities/{_base → utils}/api.py +0 -0
  222. /digitalhub/entities/{entity_types.py → utils/entity_types.py} +0 -0
  223. /digitalhub/entities/{_base → utils}/state.py +0 -0
  224. /digitalhub/readers/{objects/base.py → _base/readers.py} +0 -0
  225. /digitalhub/runtimes/{base.py → _base.py} +0 -0
  226. /digitalhub/stores/{objects/base.py → _base/store.py} +0 -0
  227. {digitalhub-0.8.0b2.dist-info → digitalhub-0.8.0b4.dist-info}/LICENSE.txt +0 -0
  228. {digitalhub-0.8.0b2.dist-info → digitalhub-0.8.0b4.dist-info}/top_level.txt +0 -0
  229. /test/{test_imports.py → local/imports/test_imports.py} +0 -0
@@ -1,146 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from digitalhub.entities._base.spec.material import MaterialParams, MaterialSpec
4
- from digitalhub.entities.model.models import Dataset, Signature
5
-
6
-
7
- class ModelSpec(MaterialSpec):
8
- """
9
- Model specifications.
10
- """
11
-
12
- def __init__(
13
- self,
14
- path: str,
15
- framework: str | None = None,
16
- algorithm: str | None = None,
17
- base_model: str | None = None,
18
- parameters: dict | None = None,
19
- metrics: dict | None = None,
20
- ) -> None:
21
- self.path = path
22
- self.framework = framework
23
- self.algorithm = algorithm
24
- self.base_model = base_model
25
- self.parameters = parameters
26
- self.metrics = metrics
27
-
28
-
29
- class ModelParams(MaterialParams):
30
- """
31
- Model parameters.
32
- """
33
-
34
- path: str
35
- """Path to the model."""
36
-
37
- framework: str = None
38
- """Model framework (e.g. 'pytorch')."""
39
-
40
- algorithm: str = None
41
- """Model algorithm (e.g. 'resnet')."""
42
-
43
- base_model: str = None
44
- """Base model."""
45
-
46
- parameters: dict = None
47
- """Model parameters."""
48
-
49
- metrics: dict = None
50
- """Model metrics."""
51
-
52
-
53
- class ModelSpecModel(ModelSpec):
54
- """
55
- Model specifications.
56
- """
57
-
58
-
59
- class ModelParamsModel(ModelParams):
60
- """
61
- Model parameters.
62
- """
63
-
64
-
65
- class ModelSpecMlflow(ModelSpec):
66
- """
67
- Mlflow model specifications.
68
- """
69
-
70
- def __init__(
71
- self,
72
- path: str,
73
- framework: str | None = None,
74
- algorithm: str | None = None,
75
- base_model: str | None = None,
76
- parameters: dict | None = None,
77
- metrics: dict | None = None,
78
- flavor: str | None = None,
79
- model_config: dict | None = None,
80
- input_datasets: list[Dataset] | None = None,
81
- signature: Signature = None,
82
- ) -> None:
83
- super().__init__(path, framework, algorithm, base_model, parameters, metrics)
84
- self.flavor = flavor
85
- self.model_config = model_config
86
- self.input_datasets = input_datasets
87
- self.signature = signature
88
-
89
-
90
- class ModelParamsMlflow(ModelParams):
91
- """
92
- Mlflow model parameters.
93
- """
94
-
95
- flavor: str = None
96
- """Mlflow model flavor."""
97
- model_config: dict = None
98
- """Mlflow model config."""
99
- input_datasets: list[Dataset] = None
100
- """Mlflow input datasets."""
101
- signature: Signature = None
102
- """Mlflow model signature."""
103
-
104
-
105
- class ModelSpecSklearn(ModelSpec):
106
- """
107
- SKLearn model specifications.
108
- """
109
-
110
-
111
- class ModelParamsSklearn(ModelParams):
112
- """
113
- SKLearn model parameters.
114
- """
115
-
116
-
117
- class ModelSpecHuggingface(ModelSpec):
118
- """
119
- Huggingface model specifications.
120
- """
121
-
122
- def __init__(
123
- self,
124
- path: str,
125
- framework: str | None = None,
126
- algorithm: str | None = None,
127
- base_model: str | None = None,
128
- parameters: dict | None = None,
129
- metrics: dict | None = None,
130
- model_id: str | None = None,
131
- model_revision: str = None,
132
- ) -> None:
133
- super().__init__(path, framework, algorithm, base_model, parameters, metrics)
134
- self.model_id = model_id
135
- self.model_revision = model_revision
136
-
137
-
138
- class ModelParamsHuggingface(ModelParams):
139
- """
140
- Huggingface model parameters.
141
- """
142
-
143
- model_id: str = None
144
- """Huggingface model id. Optional. If not specified, the model is loaded from the model path"""
145
- model_revision: str = None
146
- """Huggingface model revision. Optional."""
@@ -1,33 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from digitalhub.entities._base.status.material import MaterialStatus
4
-
5
-
6
- class ModelStatus(MaterialStatus):
7
- """
8
- Status class for model entities.
9
- """
10
-
11
-
12
- class ModelStatusModel(ModelStatus):
13
- """
14
- Status class for model entities.
15
- """
16
-
17
-
18
- class ModelStatusMlflow(ModelStatus):
19
- """
20
- Status class for model entities.
21
- """
22
-
23
-
24
- class ModelStatusSklearn(ModelStatus):
25
- """
26
- Status class for model entities.
27
- """
28
-
29
-
30
- class ModelStatusHuggingface(ModelStatus):
31
- """
32
- Status class for model entities.
33
- """
@@ -1,9 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from digitalhub.entities._base.status.base import Status
4
-
5
-
6
- class ProjectStatus(Status):
7
- """
8
- Status class for project entities.
9
- """
@@ -1,48 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from digitalhub.entities.entity_types import EntityTypes
4
- from digitalhub.registry.registry import registry
5
- from digitalhub.registry.utils import create_info
6
-
7
- # Root module
8
- root = "digitalhub.entities"
9
-
10
- # Projects
11
- entity_type = EntityTypes.PROJECT.value
12
- prefix = entity_type.capitalize()
13
- project_info = create_info(root, entity_type, prefix)
14
- registry.register("project", project_info)
15
-
16
-
17
- # Secrets
18
- entity_type = EntityTypes.SECRET.value
19
- prefix = entity_type.capitalize()
20
- secret_info = create_info(root, entity_type, prefix)
21
- registry.register("secret", secret_info)
22
-
23
-
24
- # Artifacts
25
- entity_type = EntityTypes.ARTIFACT.value
26
- for i in ["artifact"]:
27
- prefix = entity_type.capitalize()
28
- suffix = i.capitalize()
29
- artifact_info = create_info(root, entity_type, prefix, suffix)
30
- registry.register(i, artifact_info)
31
-
32
-
33
- # Dataitems
34
- entity_type = EntityTypes.DATAITEM.value
35
- for i in ["dataitem", "table"]:
36
- prefix = entity_type.capitalize()
37
- suffix = i.capitalize()
38
- dataitem_info = create_info(root, entity_type, prefix, suffix)
39
- registry.register(i, dataitem_info)
40
-
41
-
42
- # Models
43
- entity_type = EntityTypes.MODEL.value
44
- for i in ["model", "mlflow", "sklearn", "huggingface"]:
45
- prefix = entity_type.capitalize()
46
- suffix = i.capitalize()
47
- model_info = create_info(root, entity_type, prefix, suffix)
48
- registry.register(i, model_info)
@@ -1,9 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from digitalhub.entities._base.status.base import Status
4
-
5
-
6
- class SecretStatus(Status):
7
- """
8
- Status class for secret entities.
9
- """
@@ -1,9 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from digitalhub.entities._base.status.base import Status
4
-
5
-
6
- class TaskStatus(Status):
7
- """
8
- Status class for task entities.
9
- """
@@ -1,15 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from digitalhub.entities._base.spec.base import Spec, SpecParams
4
-
5
-
6
- class WorkflowSpec(Spec):
7
- """
8
- Workflow specifications.
9
- """
10
-
11
-
12
- class WorkflowParams(SpecParams):
13
- """
14
- Workflow parameters.
15
- """
@@ -1,9 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from digitalhub.entities._base.status.base import Status
4
-
5
-
6
- class WorkflowStatus(Status):
7
- """
8
- Status class for workflow entities.
9
- """
@@ -1,87 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from pydantic import BaseModel
4
-
5
-
6
- class RuntimeEntry(BaseModel):
7
- """
8
- Model for Runtime entry.
9
- It specifies the module path and the runtime class name.
10
- """
11
-
12
- module: str
13
- """Module path."""
14
-
15
- class_name: str
16
- """Class name."""
17
-
18
- kind_registry_module: str
19
- """Kind registry module path."""
20
-
21
- kind_registry_class_name: str
22
- """Kind registry class name."""
23
-
24
-
25
- class SpecEntry(BaseModel):
26
- """
27
- Model for Spec entry.
28
- It specifies the module path, the spec class name
29
- and the spec pydantic class validator.
30
- """
31
-
32
- module: str
33
- """Module path."""
34
-
35
- class_name: str
36
- """Class name."""
37
-
38
- parameters_validator: str
39
- """Class name of the parameter validator."""
40
-
41
-
42
- class StatusEntry(BaseModel):
43
- """
44
- Model for Status entry.
45
- It specifies the module path and the status class name.
46
- """
47
-
48
- module: str
49
- """Module path."""
50
-
51
- class_name: str
52
- """Class name."""
53
-
54
-
55
- class MetadataEntry(BaseModel):
56
- """
57
- Model for Metadata entry.
58
- It specifies the module path and the metadata class name.
59
- """
60
-
61
- module: str
62
- """Module path."""
63
-
64
- class_name: str
65
- """Class name."""
66
-
67
-
68
- class RegistryEntry(BaseModel):
69
- """
70
- Basic entry model for every entity.
71
- Functions, tasks and runs specify also the runtime field.
72
- """
73
-
74
- entity_type: str
75
- """Entity type."""
76
-
77
- spec: SpecEntry
78
- """Spec infos."""
79
-
80
- status: StatusEntry
81
- """Status infos."""
82
-
83
- metadata: MetadataEntry
84
- """Metadata infos."""
85
-
86
- runtime: RuntimeEntry = None
87
- """Runtime infos."""
@@ -1,74 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from digitalhub.registry.models import RegistryEntry
4
-
5
-
6
- class GlobalEntityRegistry:
7
- """
8
- Global entity registry where all entities classpaths are stored.
9
- It keeps track of all entities that are registered in the system.
10
- """
11
-
12
- def register(self, entity_kind: str, entry: dict) -> None:
13
- """
14
- Register an entity kind.
15
-
16
- Parameters
17
- ----------
18
- entity_kind : str
19
- Entity kind to be registered.
20
- entry : dict
21
- Entry to be registered.
22
-
23
- Returns
24
- -------
25
- None
26
-
27
- """
28
- if hasattr(self, entity_kind):
29
- raise ValueError(f"Entity kind {entity_kind} already registered")
30
- entry = RegistryEntry(**entry)
31
- setattr(self, entity_kind, entry)
32
-
33
- def update(self, entity_kind: str, entry: dict) -> None:
34
- """
35
- Update an entity kind.
36
-
37
- Parameters
38
- ----------
39
- entity_kind : str
40
- Entity kind to be updated.
41
- entry : dict
42
- Entry to be updated.
43
-
44
- Returns
45
- -------
46
- None
47
- """
48
- if hasattr(self, entity_kind):
49
- entry = RegistryEntry(**entry)
50
- setattr(self, entity_kind, entry)
51
- else:
52
- raise ValueError(f"Entity kind {entity_kind} not registered")
53
-
54
- def get_entity_type(self, entity_kind: str) -> str:
55
- """
56
- Get entity type from kind.
57
-
58
- Parameters
59
- ----------
60
- entity_kind : str
61
- Entity kind.
62
-
63
- Returns
64
- -------
65
- str
66
- Entity type.
67
- """
68
- if not hasattr(self, entity_kind):
69
- raise ValueError(f"Entity kind {entity_kind} not registered")
70
- entry: RegistryEntry = getattr(self, entity_kind)
71
- return entry.entity_type
72
-
73
-
74
- registry = GlobalEntityRegistry()
@@ -1,150 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import importlib
4
- import importlib.metadata
5
- import pkgutil
6
- import re
7
- from types import ModuleType
8
-
9
-
10
- def import_module(package: str) -> ModuleType:
11
- """
12
- Import modules from package name.
13
-
14
- Parameters
15
- ----------
16
- package : str
17
- Package name.
18
-
19
- Returns
20
- -------
21
- ModuleType
22
- Module.
23
- """
24
- try:
25
- return importlib.import_module(package)
26
- except ModuleNotFoundError:
27
- raise ModuleNotFoundError(f"Package {package} not found.")
28
- except Exception as e:
29
- raise e
30
-
31
-
32
- def import_class(module_to_import: str, class_name: str) -> type:
33
- """
34
- Import class from implemented module.
35
-
36
- Parameters
37
- ----------
38
- module_to_import : str
39
- Module name.
40
- class_name : str
41
- Class name.
42
-
43
- Returns
44
- -------
45
- type
46
- Class.
47
- """
48
- module = import_module(module_to_import)
49
- try:
50
- return getattr(module, class_name)
51
- except AttributeError:
52
- raise ModuleNotFoundError(f"Module {module_to_import} has no '{class_name}' class.")
53
-
54
-
55
- def list_runtimes() -> list[str]:
56
- """
57
- List installed runtimes for digitalhub.
58
-
59
- Returns
60
- -------
61
- list
62
- List of installed runtimes names.
63
- """
64
- pattern = r"digitalhub_runtime_.*"
65
- runtimes = []
66
- try:
67
- for _, name, _ in pkgutil.iter_modules():
68
- if re.match(pattern, name):
69
- runtimes.append(name)
70
- return runtimes
71
- except Exception:
72
- raise RuntimeError("Error listing installed runtimes.")
73
-
74
-
75
- def register_runtimes_entities() -> None:
76
- """
77
- Register runtimes and related entities into registry.
78
-
79
- Returns
80
- -------
81
- None
82
- """
83
- for package in list_runtimes():
84
- import_module(package)
85
-
86
-
87
- def register_entities() -> None:
88
- """
89
- Register layer and related entities into registry.
90
-
91
- Returns
92
- -------
93
- None
94
- """
95
- # Try ot import registry from entities.registries module
96
- try:
97
- import_module("digitalhub.entities.registries")
98
- except Exception:
99
- pass
100
-
101
-
102
- def create_info(
103
- root: str,
104
- entity_type: str,
105
- prefix: str,
106
- suffix: str | None = "",
107
- runtime_info: dict | None = None,
108
- ) -> dict:
109
- """
110
- Create entity info.
111
-
112
- Parameters
113
- ----------
114
- root : str
115
- Root module.
116
- entity_type : str
117
- Entity type.
118
- prefix : str
119
- Entity prefix.
120
- suffix : str
121
- Entity suffix.
122
- runtime_info : dict
123
- Runtime info.
124
-
125
- Returns
126
- -------
127
- dict
128
- Entity info.
129
- """
130
- dict_ = {
131
- "entity_type": entity_type,
132
- "spec": {
133
- "module": f"{root}.{entity_type}.spec",
134
- "class_name": f"{prefix}Spec{suffix}",
135
- "parameters_validator": f"{prefix}Params{suffix}",
136
- },
137
- "status": {
138
- "module": f"{root}.{entity_type}.status",
139
- "class_name": f"{prefix}Status{suffix}",
140
- },
141
- "metadata": {
142
- "module": "digitalhub.entities._base.metadata",
143
- "class_name": "Metadata",
144
- },
145
- }
146
- # Add runtime only if provided
147
- # (in functions, tasks, runs and workflows)
148
- if runtime_info is not None:
149
- dict_["runtime"] = runtime_info
150
- return dict_