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
@@ -0,0 +1,86 @@
1
+ from __future__ import annotations
2
+
3
+ import typing
4
+
5
+ from digitalhub.entities._base.versioned.builder import VersionedBuilder
6
+ from digitalhub.entities.utils.entity_types import EntityTypes
7
+ from digitalhub.utils.exceptions import EntityError
8
+
9
+ if typing.TYPE_CHECKING:
10
+ from digitalhub.entities.dataitem._base.entity import Dataitem
11
+
12
+
13
+ class DataitemBuilder(VersionedBuilder):
14
+ """
15
+ Dataitem builder.
16
+ """
17
+
18
+ ENTITY_TYPE = EntityTypes.DATAITEM.value
19
+
20
+ def build(
21
+ self,
22
+ kind: str,
23
+ project: str,
24
+ name: str,
25
+ uuid: str | None = None,
26
+ description: str | None = None,
27
+ labels: list[str] | None = None,
28
+ embedded: bool = True,
29
+ path: str | None = None,
30
+ **kwargs,
31
+ ) -> Dataitem:
32
+ """
33
+ Create a new object.
34
+
35
+ Parameters
36
+ ----------
37
+ project : str
38
+ Project name.
39
+ name : str
40
+ Object name.
41
+ kind : str
42
+ Kind the object.
43
+ uuid : str
44
+ ID of the object.
45
+ description : str
46
+ Description of the object (human readable).
47
+ labels : list[str]
48
+ List of labels.
49
+ embedded : bool
50
+ Flag to determine if object spec must be embedded in project spec.
51
+ path : str
52
+ Object path on local file system or remote storage. It is also the destination path of upload() method.
53
+ **kwargs : dict
54
+ Spec keyword arguments.
55
+
56
+ Returns
57
+ -------
58
+ Dataitem
59
+ Object instance.
60
+ """
61
+ if path is None:
62
+ raise EntityError("Path must be provided.")
63
+
64
+ name = self.build_name(name)
65
+ uuid = self.build_uuid(uuid)
66
+ metadata = self.build_metadata(
67
+ project=project,
68
+ name=name,
69
+ description=description,
70
+ labels=labels,
71
+ embedded=embedded,
72
+ )
73
+ spec = self.build_spec(
74
+ path=path,
75
+ **kwargs,
76
+ )
77
+ status = self.build_status()
78
+ return self.build_entity(
79
+ project=project,
80
+ name=name,
81
+ uuid=uuid,
82
+ kind=kind,
83
+ metadata=metadata,
84
+ spec=spec,
85
+ status=status,
86
+ )
@@ -3,15 +3,15 @@ from __future__ import annotations
3
3
  import typing
4
4
  from pathlib import Path
5
5
 
6
- from digitalhub.entities._base.entity.material import MaterialEntity
7
- from digitalhub.entities.entity_types import EntityTypes
6
+ from digitalhub.entities._base.material.entity import MaterialEntity
7
+ from digitalhub.entities.utils.entity_types import EntityTypes
8
8
  from digitalhub.utils.exceptions import EntityError
9
9
  from digitalhub.utils.uri_utils import map_uri_scheme
10
10
 
11
11
  if typing.TYPE_CHECKING:
12
- from digitalhub.entities._base.metadata import Metadata
13
- from digitalhub.entities.dataitem.spec import DataitemSpec
14
- from digitalhub.entities.dataitem.status import DataitemStatus
12
+ from digitalhub.entities._base.entity.metadata import Metadata
13
+ from digitalhub.entities.dataitem._base.spec import DataitemSpec
14
+ from digitalhub.entities.dataitem._base.status import DataitemStatus
15
15
 
16
16
 
17
17
  class Dataitem(MaterialEntity):
@@ -0,0 +1,15 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities._base.material.spec import MaterialSpec, MaterialValidator
4
+
5
+
6
+ class DataitemSpec(MaterialSpec):
7
+ """
8
+ DataitemSpec specifications.
9
+ """
10
+
11
+
12
+ class DataitemValidator(MaterialValidator):
13
+ """
14
+ DataitemValidator validator.
15
+ """
@@ -0,0 +1,20 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities._base.material.status import MaterialStatus
4
+
5
+
6
+ class DataitemStatus(MaterialStatus):
7
+ """
8
+ DataitemStatus status.
9
+ """
10
+
11
+ def __init__(
12
+ self,
13
+ state: str,
14
+ message: str | None = None,
15
+ files: list[dict] | None = None,
16
+ preview: dict | None = None,
17
+ **kwargs,
18
+ ) -> None:
19
+ super().__init__(state, message, files)
20
+ self.preview = preview
@@ -2,127 +2,32 @@ from __future__ import annotations
2
2
 
3
3
  import typing
4
4
 
5
- from digitalhub.entities._builders.metadata import build_metadata
6
- from digitalhub.entities._builders.name import build_name
7
- from digitalhub.entities._builders.spec import build_spec
8
- from digitalhub.entities._builders.status import build_status
9
- from digitalhub.entities._builders.uuid import build_uuid
10
- from digitalhub.utils.exceptions import EntityError
5
+ from digitalhub.factory.factory import factory
6
+ from digitalhub.utils.exceptions import BuilderError
11
7
 
12
8
  if typing.TYPE_CHECKING:
13
- from digitalhub.entities.dataitem.entity._base import Dataitem
9
+ from digitalhub.entities.dataitem._base.entity import Dataitem
14
10
 
15
- # Manage class mapper
16
- cls_mapper = {}
17
- try:
18
- from digitalhub.entities.dataitem.entity.dataitem import DataitemDataitem
19
11
 
20
- cls_mapper["dataitem"] = DataitemDataitem
21
- except ImportError:
22
- ...
23
- try:
24
- from digitalhub.entities.dataitem.entity.table import DataitemTable
25
-
26
- cls_mapper["table"] = DataitemTable
27
- except ImportError:
28
- ...
29
- try:
30
- from digitalhub.entities.dataitem.entity.iceberg import DataitemIceberg
31
-
32
- cls_mapper["iceberg"] = DataitemIceberg
33
- except ImportError:
34
- pass
35
-
36
-
37
- def _choose_dataitem_type(kind: str) -> type[Dataitem]:
38
- """
39
- Choose class based on kind.
40
-
41
- Parameters
42
- ----------
43
- kind : str
44
- Kind the object.
45
-
46
- Returns
47
- -------
48
- type[Dataitem]
49
- Class of the dataitem.
50
- """
51
- try:
52
- return cls_mapper[kind]
53
- except KeyError:
54
- raise EntityError(f"Unknown dataitem kind: {kind}")
55
-
56
-
57
- def dataitem_from_parameters(
58
- project: str,
59
- name: str,
60
- kind: str,
61
- uuid: str | None = None,
62
- description: str | None = None,
63
- labels: list[str] | None = None,
64
- embedded: bool = True,
65
- path: str | None = None,
66
- **kwargs,
67
- ) -> Dataitem:
12
+ def dataitem_from_parameters(**kwargs) -> Dataitem:
68
13
  """
69
14
  Create a new object.
70
15
 
71
16
  Parameters
72
17
  ----------
73
- project : str
74
- Project name.
75
- name : str
76
- Object name.
77
- kind : str
78
- Kind the object.
79
- uuid : str
80
- ID of the object (UUID4, e.g. 40f25c4b-d26b-4221-b048-9527aff291e2).
81
- description : str
82
- Description of the object (human readable).
83
- labels : list[str]
84
- List of labels.
85
- embedded : bool
86
- Flag to determine if object spec must be embedded in project spec.
87
- path : str
88
- Object path on local file system or remote storage. It is also the destination path of upload() method.
89
- **kwargs : dict
90
- Spec keyword arguments.
18
+ **kwargs
19
+ Keyword arguments.
91
20
 
92
21
  Returns
93
22
  -------
94
23
  Dataitem
95
24
  Object instance.
96
25
  """
97
- if path is None:
98
- raise EntityError("Dataitem path must be provided")
99
- name = build_name(name)
100
- uuid = build_uuid(uuid)
101
- metadata = build_metadata(
102
- kind,
103
- project=project,
104
- name=name,
105
- version=uuid,
106
- description=description,
107
- labels=labels,
108
- embedded=embedded,
109
- )
110
- spec = build_spec(
111
- kind,
112
- path=path,
113
- **kwargs,
114
- )
115
- status = build_status(kind)
116
- cls = _choose_dataitem_type(kind)
117
- return cls(
118
- project=project,
119
- name=name,
120
- uuid=uuid,
121
- kind=kind,
122
- metadata=metadata,
123
- spec=spec,
124
- status=status,
125
- )
26
+ try:
27
+ kind = kwargs["kind"]
28
+ except KeyError:
29
+ raise BuilderError("Missing 'kind' parameter.")
30
+ return factory.build_entity_from_params(kind, **kwargs)
126
31
 
127
32
 
128
33
  def dataitem_from_dict(obj: dict) -> Dataitem:
@@ -139,6 +44,8 @@ def dataitem_from_dict(obj: dict) -> Dataitem:
139
44
  Dataitem
140
45
  Object instance.
141
46
  """
142
- kind = obj.get("kind")
143
- cls = _choose_dataitem_type(kind)
144
- return cls.from_dict(obj)
47
+ try:
48
+ kind = obj["kind"]
49
+ except KeyError:
50
+ raise BuilderError("Missing 'kind' parameter.")
51
+ return factory.build_entity_from_dict(kind, obj)
@@ -14,15 +14,16 @@ from digitalhub.entities._base.crud import (
14
14
  )
15
15
  from digitalhub.entities._builders.uuid import build_uuid
16
16
  from digitalhub.entities.dataitem.builder import dataitem_from_dict, dataitem_from_parameters
17
- from digitalhub.entities.entity_types import EntityTypes
18
- from digitalhub.entities.utils import build_log_path_from_filename, build_log_path_from_source, eval_local_source
17
+ from digitalhub.entities.utils.entity_types import EntityTypes
18
+ from digitalhub.entities.utils.utils import build_log_path_from_filename, build_log_path_from_source, eval_local_source
19
19
  from digitalhub.readers.builder import get_reader_by_object
20
20
  from digitalhub.stores.builder import get_store
21
21
  from digitalhub.utils.exceptions import EntityAlreadyExistsError
22
+ from digitalhub.utils.generic_utils import slugify_string
22
23
  from digitalhub.utils.io_utils import read_yaml
23
24
 
24
25
  if typing.TYPE_CHECKING:
25
- from digitalhub.entities.dataitem.entity._base import Dataitem
26
+ from digitalhub.entities.dataitem._base.entity import Dataitem
26
27
 
27
28
 
28
29
  ENTITY_TYPE = EntityTypes.DATAITEM.value
@@ -51,7 +52,7 @@ def new_dataitem(
51
52
  kind : str
52
53
  Kind the object.
53
54
  uuid : str
54
- ID of the object (UUID4, e.g. 40f25c4b-d26b-4221-b048-9527aff291e2).
55
+ ID of the object.
55
56
  description : str
56
57
  Description of the object (human readable).
57
58
  labels : list[str]
@@ -152,10 +153,12 @@ def log_dataitem(
152
153
 
153
154
  # Case where data is provided
154
155
  else:
156
+ extension = extension if extension is not None else "parquet"
155
157
  if path is None:
156
158
  uuid = build_uuid()
157
159
  kwargs["uuid"] = uuid
158
- path = build_log_path_from_filename(project, ENTITY_TYPE, name, uuid, "data.parquet")
160
+ slug = slugify_string(name) + f".{extension}"
161
+ path = build_log_path_from_filename(project, ENTITY_TYPE, name, uuid, slug)
159
162
 
160
163
  obj = dataitem_from_parameters(project=project, name=name, kind=kind, path=path, **kwargs)
161
164
  if kind == "table":
File without changes
@@ -0,0 +1,18 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities.dataitem._base.builder import DataitemBuilder
4
+ from digitalhub.entities.dataitem.dataitem.entity import DataitemDataitem
5
+ from digitalhub.entities.dataitem.dataitem.spec import DataitemSpecDataitem, DataitemValidatorDataitem
6
+ from digitalhub.entities.dataitem.dataitem.status import DataitemStatusDataitem
7
+
8
+
9
+ class DataitemDataitemBuilder(DataitemBuilder):
10
+ """
11
+ DataitemDataitem builder.
12
+ """
13
+
14
+ ENTITY_CLASS = DataitemDataitem
15
+ ENTITY_SPEC_CLASS = DataitemSpecDataitem
16
+ ENTITY_SPEC_VALIDATOR = DataitemValidatorDataitem
17
+ ENTITY_STATUS_CLASS = DataitemStatusDataitem
18
+ ENTITY_KIND = "dataitem"
@@ -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.dataitem.spec import DataitemSpecDataitem
10
+ from digitalhub.entities.dataitem.dataitem.status import DataitemStatusDataitem
11
+
12
+
13
+ class DataitemDataitem(Dataitem):
14
+ """
15
+ DataitemDataitem 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: DataitemSpecDataitem,
26
+ status: DataitemStatusDataitem,
27
+ user: str | None = None,
28
+ ) -> None:
29
+ super().__init__(project, name, uuid, kind, metadata, spec, status, user)
30
+
31
+ self.spec: DataitemSpecDataitem
32
+ self.status: DataitemStatusDataitem
@@ -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,18 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities.dataitem._base.builder import DataitemBuilder
4
+ from digitalhub.entities.dataitem.iceberg.entity import DataitemIceberg
5
+ from digitalhub.entities.dataitem.iceberg.spec import DataitemSpecIceberg, DataitemValidatorIceberg
6
+ from digitalhub.entities.dataitem.iceberg.status import DataitemStatusIceberg
7
+
8
+
9
+ class DataitemIcebergBuilder(DataitemBuilder):
10
+ """
11
+ DataitemIceberg builder.
12
+ """
13
+
14
+ ENTITY_CLASS = DataitemIceberg
15
+ ENTITY_SPEC_CLASS = DataitemSpecIceberg
16
+ ENTITY_SPEC_VALIDATOR = DataitemValidatorIceberg
17
+ ENTITY_STATUS_CLASS = DataitemStatusIceberg
18
+ ENTITY_KIND = "iceberg"
@@ -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
@@ -0,0 +1,18 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities.dataitem._base.builder import DataitemBuilder
4
+ from digitalhub.entities.dataitem.table.entity import DataitemTable
5
+ from digitalhub.entities.dataitem.table.spec import DataitemSpecTable, DataitemValidatorTable
6
+ from digitalhub.entities.dataitem.table.status import DataitemStatusTable
7
+
8
+
9
+ class DataitemTableBuilder(DataitemBuilder):
10
+ """
11
+ DataitemTable builder.
12
+ """
13
+
14
+ ENTITY_CLASS = DataitemTable
15
+ ENTITY_SPEC_CLASS = DataitemSpecTable
16
+ ENTITY_SPEC_VALIDATOR = DataitemValidatorTable
17
+ ENTITY_STATUS_CLASS = DataitemStatusTable
18
+ ENTITY_KIND = "table"
@@ -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