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.
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
@@ -1,11 +1,11 @@
1
1
  from __future__ import annotations
2
2
 
3
- from digitalhub.entities._base.spec.base import Spec, SpecParams
3
+ from digitalhub.entities._base.entity.spec import Spec, SpecValidator
4
4
 
5
5
 
6
6
  class MaterialSpec(Spec):
7
7
  """
8
- Material specification class.
8
+ Material specifications.class.
9
9
  """
10
10
 
11
11
  def __init__(self, path: str, **kwargs) -> None:
@@ -13,7 +13,7 @@ class MaterialSpec(Spec):
13
13
  self.path = path
14
14
 
15
15
 
16
- class MaterialParams(SpecParams):
16
+ class MaterialValidator(SpecValidator):
17
17
  """
18
18
  Material parameters class.
19
19
  """
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from digitalhub.entities._base.status.base import Status
3
+ from digitalhub.entities._base.entity.status import Status
4
4
 
5
5
 
6
6
  class MaterialStatus(Status):
File without changes
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import typing
4
4
 
5
- from digitalhub.entities._base.entity.context import ContextEntity
5
+ from digitalhub.entities._base.context.entity import ContextEntity
6
6
  from digitalhub.entities._builders.metadata import build_metadata
7
7
  from digitalhub.entities._builders.spec import build_spec
8
8
  from digitalhub.entities._builders.status import build_status
@@ -10,9 +10,9 @@ from digitalhub.entities._builders.uuid import build_uuid
10
10
  from digitalhub.utils.io_utils import write_yaml
11
11
 
12
12
  if typing.TYPE_CHECKING:
13
- from digitalhub.entities._base.metadata import Metadata
14
- from digitalhub.entities._base.spec.base import Spec
15
- from digitalhub.entities._base.status.base import Status
13
+ from digitalhub.entities._base.entity.metadata import Metadata
14
+ from digitalhub.entities._base.entity.spec import Spec
15
+ from digitalhub.entities._base.entity.status import Status
16
16
 
17
17
 
18
18
  class UnversionedEntity(ContextEntity):
File without changes
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import typing
4
4
 
5
- from digitalhub.entities._base.entity.context import ContextEntity
5
+ from digitalhub.entities._base.context.entity import ContextEntity
6
6
  from digitalhub.entities._builders.metadata import build_metadata
7
7
  from digitalhub.entities._builders.name import build_name
8
8
  from digitalhub.entities._builders.spec import build_spec
@@ -11,9 +11,9 @@ from digitalhub.entities._builders.uuid import build_uuid
11
11
  from digitalhub.utils.io_utils import write_yaml
12
12
 
13
13
  if typing.TYPE_CHECKING:
14
- from digitalhub.entities._base.metadata import Metadata
15
- from digitalhub.entities._base.spec.base import Spec
16
- from digitalhub.entities._base.status.base import Status
14
+ from digitalhub.entities._base.entity.metadata import Metadata
15
+ from digitalhub.entities._base.entity.spec import Spec
16
+ from digitalhub.entities._base.entity.status import Status
17
17
 
18
18
 
19
19
  class VersionedEntity(ContextEntity):
@@ -0,0 +1,148 @@
1
+ from __future__ import annotations
2
+
3
+ import typing
4
+ from abc import ABCMeta, abstractmethod
5
+
6
+ from digitalhub.entities._builders.metadata import build_metadata
7
+ from digitalhub.entities._builders.name import build_name
8
+ from digitalhub.entities._builders.spec import build_spec
9
+ from digitalhub.entities._builders.status import build_status
10
+ from digitalhub.entities._builders.uuid import build_uuid
11
+
12
+ if typing.TYPE_CHECKING:
13
+ from digitalhub.entities._base.entity.entity import Entity
14
+ from digitalhub.entities._base.entity.metadata import Metadata
15
+ from digitalhub.entities._base.entity.spec import Spec, SpecValidator
16
+ from digitalhub.entities._base.entity.status import Status
17
+
18
+
19
+ class EntityBuilder(metaclass=ABCMeta):
20
+ """
21
+ Builder class for building entities.
22
+ """
23
+
24
+ # Class variables
25
+ ENTITY_CLASS: Entity = None
26
+ ENTITY_SPEC_CLASS: Spec = None
27
+ ENTITY_SPEC_VALIDATOR: SpecValidator = None
28
+ ENTITY_STATUS_CLASS: Status = None
29
+
30
+ def __init__(self) -> None:
31
+ if self.ENTITY_CLASS is None:
32
+ raise ValueError("ENTITY_CLASS must be set")
33
+ if self.ENTITY_SPEC_CLASS is None:
34
+ raise ValueError("ENTITY_SPEC_CLASS must be set")
35
+ if self.ENTITY_SPEC_VALIDATOR is None:
36
+ raise ValueError("ENTITY_SPEC_VALIDATOR must be set")
37
+ if self.ENTITY_STATUS_CLASS is None:
38
+ raise ValueError("ENTITY_STATUS_CLASS must be set")
39
+
40
+ def build_name(self, name: str) -> str:
41
+ """
42
+ Build entity name.
43
+
44
+ Parameters
45
+ ----------
46
+ name : str
47
+ Entity name.
48
+
49
+ Returns
50
+ -------
51
+ str
52
+ Entity name.
53
+ """
54
+ return build_name(name)
55
+
56
+ def build_uuid(self, uuid: str) -> str:
57
+ """
58
+ Build entity uuid.
59
+
60
+ Parameters
61
+ ----------
62
+ uuid : str
63
+ Entity uuid.
64
+
65
+ Returns
66
+ -------
67
+ str
68
+ Entity uuid.
69
+ """
70
+ return build_uuid(uuid)
71
+
72
+ def build_metadata(self, kind: str, **kwargs) -> Metadata:
73
+ """
74
+ Build entity metadata object.
75
+
76
+ Parameters
77
+ ----------
78
+ kind : str
79
+ Registry entry kind.
80
+ **kwargs : dict
81
+ Keyword arguments for the constructor.
82
+
83
+ Returns
84
+ -------
85
+ Metadata
86
+ Metadata object.
87
+ """
88
+ return build_metadata(kind, **kwargs)
89
+
90
+ def build_spec(self, kind: str, **kwargs) -> Spec:
91
+ """
92
+ Build entity spec object.
93
+
94
+ Parameters
95
+ ----------
96
+ kind : str
97
+ Registry entry kind.
98
+ **kwargs : dict
99
+ Keyword arguments for the constructor.
100
+
101
+ Returns
102
+ -------
103
+ Spec
104
+ Spec object.
105
+ """
106
+ return build_spec(kind, **kwargs)
107
+
108
+ def build_status(self, kind: str, **kwargs) -> Status:
109
+ """
110
+ Build entity status object.
111
+
112
+ Parameters
113
+ ----------
114
+ kind : str
115
+ Registry entry kind.
116
+ **kwargs : dict
117
+ Keyword arguments for the constructor.
118
+
119
+ Returns
120
+ -------
121
+ Status
122
+ Status object.
123
+ """
124
+ return build_status(kind, **kwargs)
125
+
126
+ @abstractmethod
127
+ def build(self, _validate: bool = True, **kwargs) -> Entity:
128
+ """
129
+ Build entity object.
130
+ """
131
+
132
+ def from_dict(self, obj: dict, validate: bool = True) -> Entity:
133
+ """
134
+ Build entity from dictionary.
135
+
136
+ Parameters
137
+ ----------
138
+ obj : dict
139
+ Dictionary to build the entity from.
140
+ validate : bool
141
+ Whether to validate the entity.
142
+
143
+ Returns
144
+ -------
145
+ ArtifactArtifact
146
+ Entity built from the dictionary.
147
+ """
148
+ return self.build(**obj, _validate=validate)
@@ -0,0 +1,44 @@
1
+ from __future__ import annotations
2
+
3
+ import typing
4
+
5
+ if typing.TYPE_CHECKING:
6
+ from digitalhub.entities._base.entity.entity import Entity
7
+
8
+
9
+ class EntityFactory:
10
+ """
11
+ Factory class for building entities.
12
+ """
13
+
14
+ def __init__(self):
15
+ self._builders = {}
16
+
17
+ def add_builder(self, name: str, builder):
18
+ self._builders[name] = builder
19
+
20
+ def build(self, entity_type: str, **kwargs) -> Entity:
21
+ """
22
+ Build entity object. The builder takes as input
23
+ the type of entity's object to build and the keyword
24
+ arguments to pass to the various entity's constructor.
25
+ The specific Entity class is searched in the global
26
+ registry, where lies info about where to find the class.
27
+ The arguments are parsed, eventually adding default values,
28
+ and then passed to the constructor.
29
+
30
+ Parameters
31
+ ----------
32
+ entity_type : str
33
+ Registry entry kind.
34
+ **kwargs : dict
35
+ Keyword arguments for the constructor.
36
+
37
+ Returns
38
+ -------
39
+ Entity
40
+ Entity object.
41
+ """
42
+ if entity_type not in self._builders:
43
+ raise ValueError(f"Entity type {entity_type} not found")
44
+ return self._builders[entity_type](**kwargs)
@@ -1,15 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
- import typing
4
-
5
- from digitalhub.registry.registry import registry
6
- from digitalhub.registry.utils import import_class
3
+ from digitalhub.entities._base.entity.metadata import Metadata
7
4
  from digitalhub.utils.generic_utils import get_timestamp
8
5
 
9
- if typing.TYPE_CHECKING:
10
- from digitalhub.entities._base.metadata import Metadata
11
- from digitalhub.registry.models import RegistryEntry
12
-
13
6
 
14
7
  def build_metadata(kind: str, **kwargs) -> Metadata:
15
8
  """
@@ -33,10 +26,8 @@ def build_metadata(kind: str, **kwargs) -> Metadata:
33
26
  Metadata
34
27
  Metadata object.
35
28
  """
36
- infos: RegistryEntry = getattr(registry, kind)
37
- metadata = import_class(infos.metadata.module, infos.metadata.class_name)
38
29
  kwargs = parse_arguments(**kwargs)
39
- return metadata(**kwargs)
30
+ return Metadata(**kwargs)
40
31
 
41
32
 
42
33
  def parse_arguments(**kwargs) -> dict:
@@ -6,7 +6,7 @@ from digitalhub.registry.registry import registry
6
6
  from digitalhub.registry.utils import import_class
7
7
 
8
8
  if typing.TYPE_CHECKING:
9
- from digitalhub.entities._base.spec.base import Spec
9
+ from digitalhub.entities._base.entity.spec import Spec
10
10
  from digitalhub.registry.models import RegistryEntry
11
11
 
12
12
 
@@ -2,12 +2,12 @@ from __future__ import annotations
2
2
 
3
3
  import typing
4
4
 
5
- from digitalhub.entities._base.state import State
5
+ from digitalhub.entities.utils.state import State
6
6
  from digitalhub.registry.registry import registry
7
7
  from digitalhub.registry.utils import import_class
8
8
 
9
9
  if typing.TYPE_CHECKING:
10
- from digitalhub.entities._base.status.base import Status
10
+ from digitalhub.entities._base.entity.status import Status
11
11
  from digitalhub.registry.models import RegistryEntry
12
12
 
13
13
 
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.artifact.spec import ArtifactSpec
11
- from digitalhub.entities.artifact.status import ArtifactStatus
9
+ from digitalhub.entities._base.entity.metadata import Metadata
10
+ from digitalhub.entities.artifact._base.spec import ArtifactSpec
11
+ from digitalhub.entities.artifact._base.status import ArtifactStatus
12
12
 
13
13
 
14
14
  class Artifact(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 ArtifactSpec(MaterialSpec):
7
+ """
8
+ ArtifactSpec specifications.
9
+ """
10
+
11
+
12
+ class ArtifactValidator(MaterialValidator):
13
+ """
14
+ ArtifactValidator validator.
15
+ """
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities._base.material.status import MaterialStatus
4
+
5
+
6
+ class ArtifactStatus(MaterialStatus):
7
+ """
8
+ ArtifactStatus status.
9
+ """
File without changes
@@ -0,0 +1,32 @@
1
+ from __future__ import annotations
2
+
3
+ import typing
4
+
5
+ from digitalhub.entities.artifact._base.entity import Artifact
6
+
7
+ if typing.TYPE_CHECKING:
8
+ from digitalhub.entities._base.entity.metadata import Metadata
9
+ from digitalhub.entities.artifact.artifact.spec import ArtifactSpecArtifact
10
+ from digitalhub.entities.artifact.artifact.status import ArtifactStatusArtifact
11
+
12
+
13
+ class ArtifactArtifact(Artifact):
14
+ """
15
+ ArtifactArtifact 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: ArtifactSpecArtifact,
26
+ status: ArtifactStatusArtifact,
27
+ user: str | None = None,
28
+ ) -> None:
29
+ super().__init__(project, name, uuid, kind, metadata, spec, status, user)
30
+
31
+ self.spec: ArtifactSpecArtifact
32
+ self.status: ArtifactStatusArtifact
@@ -1,23 +1,11 @@
1
1
  from __future__ import annotations
2
2
 
3
- from digitalhub.entities._base.spec.material import MaterialParams, MaterialSpec
4
-
5
-
6
- class ArtifactSpec(MaterialSpec):
7
- """
8
- Artifact specification.
9
- """
10
-
11
-
12
- class ArtifactParams(MaterialParams):
13
- """
14
- Artifact base parameters.
15
- """
3
+ from digitalhub.entities.artifact._base.spec import ArtifactSpec, ArtifactValidator
16
4
 
17
5
 
18
6
  class ArtifactSpecArtifact(ArtifactSpec):
19
7
  """
20
- Artifact specification.
8
+ ArtifactSpecArtifact specifications.
21
9
  """
22
10
 
23
11
  def __init__(
@@ -30,9 +18,9 @@ class ArtifactSpecArtifact(ArtifactSpec):
30
18
  self.src_path = src_path
31
19
 
32
20
 
33
- class ArtifactParamsArtifact(ArtifactParams):
21
+ class ArtifactValidatorArtifact(ArtifactValidator):
34
22
  """
35
- Artifact parameters.
23
+ ArtifactValidatorArtifact validator.
36
24
  """
37
25
 
38
26
  src_path: str = None
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from digitalhub.entities._base.status.material import MaterialStatus
3
+ from digitalhub.entities._base.material.status import MaterialStatus
4
4
 
5
5
 
6
6
  class ArtifactStatus(MaterialStatus):
@@ -10,13 +10,13 @@ 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.artifact.entity._base import Artifact
13
+ from digitalhub.entities.artifact._base.entity import Artifact
14
14
 
15
15
  # Manage class mapper
16
16
  cls_mapper = {}
17
17
 
18
18
  try:
19
- from digitalhub.entities.artifact.entity.artifact import ArtifactArtifact
19
+ from digitalhub.entities.artifact.artifact.entity import ArtifactArtifact
20
20
 
21
21
  cls_mapper["artifact"] = ArtifactArtifact
22
22
  except ImportError:
@@ -11,13 +11,13 @@ from digitalhub.entities._base.crud import (
11
11
  )
12
12
  from digitalhub.entities._builders.uuid import build_uuid
13
13
  from digitalhub.entities.artifact.builder import artifact_from_dict, artifact_from_parameters
14
- from digitalhub.entities.entity_types import EntityTypes
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.artifact.entity._base import Artifact
20
+ from digitalhub.entities.artifact._base.entity import Artifact
21
21
 
22
22
 
23
23
  ENTITY_TYPE = EntityTypes.ARTIFACT.value
File without changes
@@ -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
@@ -10,24 +10,24 @@ 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.dataitem.entity._base import Dataitem
13
+ from digitalhub.entities.dataitem._base.entity import Dataitem
14
14
 
15
15
  # Manage class mapper
16
16
  cls_mapper = {}
17
17
  try:
18
- from digitalhub.entities.dataitem.entity.dataitem import DataitemDataitem
18
+ from digitalhub.entities.dataitem.dataitem.entity import DataitemDataitem
19
19
 
20
20
  cls_mapper["dataitem"] = DataitemDataitem
21
21
  except ImportError:
22
22
  ...
23
23
  try:
24
- from digitalhub.entities.dataitem.entity.table import DataitemTable
24
+ from digitalhub.entities.dataitem.table.entity import DataitemTable
25
25
 
26
26
  cls_mapper["table"] = DataitemTable
27
27
  except ImportError:
28
28
  ...
29
29
  try:
30
- from digitalhub.entities.dataitem.entity.iceberg import DataitemIceberg
30
+ from digitalhub.entities.dataitem.iceberg.entity import DataitemIceberg
31
31
 
32
32
  cls_mapper["iceberg"] = DataitemIceberg
33
33
  except ImportError:
@@ -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 sanitize_filename
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
@@ -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 = sanitize_filename(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,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