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
@@ -3,13 +3,13 @@ from __future__ import annotations
3
3
  import typing
4
4
 
5
5
  from digitalhub.entities._base.crud import get_data_api, set_data_api
6
- from digitalhub.entities._base.entity.versioned import VersionedEntity
7
- from digitalhub.entities.entity_types import EntityTypes
6
+ from digitalhub.entities._base.versioned.entity import VersionedEntity
7
+ from digitalhub.entities.utils.entity_types import EntityTypes
8
8
 
9
9
  if typing.TYPE_CHECKING:
10
- from digitalhub.entities._base.metadata import Metadata
11
- from digitalhub.entities.secret.spec import SecretSpec
12
- from digitalhub.entities.secret.status import SecretStatus
10
+ from digitalhub.entities._base.entity.metadata import Metadata
11
+ from digitalhub.entities.secret._base.spec import SecretSpec
12
+ from digitalhub.entities.secret._base.status import SecretStatus
13
13
 
14
14
 
15
15
  class Secret(VersionedEntity):
@@ -70,4 +70,5 @@ class Secret(VersionedEntity):
70
70
  raise NotImplementedError("read_secret() is not implemented for local projects.")
71
71
 
72
72
  params = {"keys": self.name}
73
- return get_data_api(self.project, self.ENTITY_TYPE, params=params)
73
+ data = get_data_api(self.project, self.ENTITY_TYPE, params=params)
74
+ return data[self.name]
@@ -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 SecretSpec(Spec):
7
7
  """
8
- Secret specifications.
8
+ SecretSpec specifications.
9
9
  """
10
10
 
11
11
  def __init__(self, path: str | None = None, provider: str | None = None, **kwargs) -> None:
@@ -23,9 +23,9 @@ class SecretSpec(Spec):
23
23
  self.provider = provider
24
24
 
25
25
 
26
- class SecretParams(SpecParams):
26
+ class SecretValidator(SpecValidator):
27
27
  """
28
- Secret parameters.
28
+ SecretValidator validator.
29
29
  """
30
30
 
31
31
  path: str = None
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities._base.entity.status import Status
4
+
5
+
6
+ class SecretStatus(Status):
7
+ """
8
+ SecretStatus status.
9
+ """
@@ -1,79 +1,33 @@
1
1
  from __future__ import annotations
2
2
 
3
- from digitalhub.entities._builders.metadata import build_metadata
4
- from digitalhub.entities._builders.name import build_name
5
- from digitalhub.entities._builders.spec import build_spec
6
- from digitalhub.entities._builders.status import build_status
7
- from digitalhub.entities._builders.uuid import build_uuid
8
- from digitalhub.entities.secret.entity import Secret
3
+ import typing
9
4
 
5
+ from digitalhub.factory.factory import factory
6
+ from digitalhub.utils.exceptions import BuilderError
10
7
 
11
- def secret_from_parameters(
12
- project: str,
13
- name: str,
14
- kind: str,
15
- uuid: str | None = None,
16
- description: str | None = None,
17
- labels: list[str] | None = None,
18
- embedded: bool = True,
19
- **kwargs,
20
- ) -> Secret:
8
+ if typing.TYPE_CHECKING:
9
+ from digitalhub.entities.secret._base.entity import Secret
10
+
11
+
12
+ def secret_from_parameters(**kwargs) -> Secret:
21
13
  """
22
14
  Create a new object.
23
15
 
24
16
  Parameters
25
17
  ----------
26
- project : str
27
- Project name.
28
- name : str
29
- Object name.
30
- kind : str
31
- Kind the object.
32
- uuid : str
33
- ID of the object (UUID4, e.g. 40f25c4b-d26b-4221-b048-9527aff291e2).
34
- labels : list[str]
35
- List of labels.
36
- description : str
37
- Description of the object (human readable).
38
- embedded : bool
39
- Flag to determine if object spec must be embedded in project spec.
40
- **kwargs : dict
41
- Spec keyword arguments.
18
+ **kwargs
19
+ Keyword arguments.
42
20
 
43
21
  Returns
44
22
  -------
45
23
  Secret
46
24
  Object instance.
47
25
  """
48
- name = build_name(name)
49
- uuid = build_uuid(uuid)
50
- metadata = build_metadata(
51
- kind,
52
- project=project,
53
- name=name,
54
- version=uuid,
55
- description=description,
56
- labels=labels,
57
- embedded=embedded,
58
- )
59
- path = f"kubernetes://dhcore-proj-secrets-{project}/{name}"
60
- provider = "kubernetes"
61
- spec = build_spec(
62
- kind,
63
- path=path,
64
- provider=provider,
65
- **kwargs,
66
- )
67
- status = build_status(kind)
68
- return Secret(
69
- project=project,
70
- name=name,
71
- uuid=uuid,
72
- kind=kind,
73
- metadata=metadata,
74
- spec=spec,
75
- status=status,
76
- )
26
+ try:
27
+ kind = kwargs["kind"]
28
+ except KeyError:
29
+ raise BuilderError("Missing 'kind' parameter.")
30
+ return factory.build_entity_from_params(kind, **kwargs)
77
31
 
78
32
 
79
33
  def secret_from_dict(obj: dict) -> Secret:
@@ -90,4 +44,8 @@ def secret_from_dict(obj: dict) -> Secret:
90
44
  Secret
91
45
  Object instance.
92
46
  """
93
- return Secret.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)
@@ -9,13 +9,13 @@ from digitalhub.entities._base.crud import (
9
9
  read_entity_api_ctx,
10
10
  read_entity_api_ctx_versions,
11
11
  )
12
- from digitalhub.entities.entity_types import EntityTypes
13
12
  from digitalhub.entities.secret.builder import secret_from_dict, secret_from_parameters
14
- from digitalhub.utils.exceptions import EntityAlreadyExistsError
13
+ from digitalhub.entities.utils.entity_types import EntityTypes
14
+ from digitalhub.utils.exceptions import EntityAlreadyExistsError, EntityNotExistsError
15
15
  from digitalhub.utils.io_utils import read_yaml
16
16
 
17
17
  if typing.TYPE_CHECKING:
18
- from digitalhub.entities.secret.entity import Secret
18
+ from digitalhub.entities.secret._base.entity import Secret
19
19
 
20
20
 
21
21
  ENTITY_TYPE = EntityTypes.SECRET.value
@@ -41,7 +41,7 @@ def new_secret(
41
41
  name : str
42
42
  Object name.
43
43
  uuid : str
44
- ID of the object (UUID4, e.g. 40f25c4b-d26b-4221-b048-9527aff291e2).
44
+ ID of the object.
45
45
  description : str
46
46
  Description of the object (human readable).
47
47
  labels : list[str]
@@ -119,6 +119,14 @@ def get_secret(
119
119
  >>> project="my-project",
120
120
  >>> entity_id="my-secret-id")
121
121
  """
122
+ if not identifier.startswith("store://"):
123
+ secrets = list_secrets(project=project, **kwargs)
124
+ for secret in secrets:
125
+ if secret.name == identifier:
126
+ return secret
127
+ else:
128
+ raise EntityNotExistsError(f"Secret {identifier} not found.")
129
+
122
130
  obj = read_entity_api_ctx(
123
131
  identifier,
124
132
  ENTITY_TYPE,
File without changes
@@ -0,0 +1,76 @@
1
+ from __future__ import annotations
2
+
3
+ import typing
4
+
5
+ from digitalhub.entities._base.unversioned.builder import UnversionedBuilder
6
+ from digitalhub.entities.utils.entity_types import EntityTypes
7
+ from digitalhub.utils.exceptions import BuilderError
8
+
9
+ if typing.TYPE_CHECKING:
10
+ from digitalhub.entities.task._base.entity import Task
11
+
12
+
13
+ class TaskBuilder(UnversionedBuilder):
14
+ """
15
+ Task builder.
16
+ """
17
+
18
+ ACTION: str = None
19
+ ENTITY_TYPE = EntityTypes.TASK.value
20
+
21
+ def __init__(self) -> None:
22
+ super().__init__()
23
+ if self.ACTION is None:
24
+ raise BuilderError("ACTION must be set")
25
+
26
+ def build(
27
+ self,
28
+ project: str,
29
+ kind: str,
30
+ uuid: str | None = None,
31
+ labels: list[str] | None = None,
32
+ function: str | None = None,
33
+ **kwargs,
34
+ ) -> Task:
35
+ """
36
+ Create a new object.
37
+
38
+ Parameters
39
+ ----------
40
+ project : str
41
+ Project name.
42
+ kind : str
43
+ Kind the object.
44
+ uuid : str
45
+ ID of the object.
46
+ labels : list[str]
47
+ List of labels.
48
+ function : str
49
+ Name of the executable associated with the task.
50
+ **kwargs : dict
51
+ Spec keyword arguments.
52
+
53
+ Returns
54
+ -------
55
+ Task
56
+ Object instance.
57
+ """
58
+ uuid = self.build_uuid(uuid)
59
+ metadata = self.build_metadata(
60
+ project=project,
61
+ name=uuid,
62
+ labels=labels,
63
+ )
64
+ spec = self.build_spec(
65
+ function=function,
66
+ **kwargs,
67
+ )
68
+ status = self.build_status()
69
+ return self.build_entity(
70
+ project=project,
71
+ uuid=uuid,
72
+ kind=kind,
73
+ metadata=metadata,
74
+ spec=spec,
75
+ status=status,
76
+ )
@@ -2,15 +2,15 @@ from __future__ import annotations
2
2
 
3
3
  import typing
4
4
 
5
- from digitalhub.entities._base.entity.unversioned import UnversionedEntity
6
- from digitalhub.entities.entity_types import EntityTypes
5
+ from digitalhub.entities._base.unversioned.entity import UnversionedEntity
7
6
  from digitalhub.entities.run.crud import delete_run, get_run, new_run, run_from_parameters
7
+ from digitalhub.entities.utils.entity_types import EntityTypes
8
8
 
9
9
  if typing.TYPE_CHECKING:
10
- from digitalhub.entities._base.metadata import Metadata
11
- from digitalhub.entities.run.entity import Run
12
- from digitalhub.entities.task.spec import TaskSpec
13
- from digitalhub.entities.task.status import TaskStatus
10
+ from digitalhub.entities._base.entity.metadata import Metadata
11
+ from digitalhub.entities.run._base.entity import Run
12
+ from digitalhub.entities.task._base.spec import TaskSpec
13
+ from digitalhub.entities.task._base.status import TaskStatus
14
14
 
15
15
 
16
16
  class Task(UnversionedEntity):
@@ -197,3 +197,12 @@ class K8s(BaseModel):
197
197
 
198
198
  profile: str = None
199
199
  """Profile template."""
200
+
201
+
202
+ class CorePort(BaseModel):
203
+ """
204
+ Port mapper model.
205
+ """
206
+
207
+ port: int
208
+ target_port: int
@@ -1,17 +1,19 @@
1
1
  from __future__ import annotations
2
2
 
3
- from digitalhub.entities._base.spec.base import Spec, SpecParams
4
- from digitalhub.entities.task.models import K8s
3
+ from digitalhub.entities._base.entity.spec import Spec, SpecValidator
4
+ from digitalhub.entities.task._base.models import K8s
5
5
 
6
6
 
7
7
  class TaskSpec(Spec):
8
- """Task specification."""
8
+ """TaskSpec specifications."""
9
9
 
10
10
  def __init__(self, function: str) -> None:
11
11
  self.function = function
12
12
 
13
13
 
14
14
  class TaskSpecK8s(TaskSpec):
15
+ """TaskSpecK8s specifications."""
16
+
15
17
  def __init__(
16
18
  self,
17
19
  function: str,
@@ -36,16 +38,16 @@ class TaskSpecK8s(TaskSpec):
36
38
  self.profile = profile
37
39
 
38
40
 
39
- class TaskParams(SpecParams):
41
+ class TaskValidator(SpecValidator):
40
42
  """
41
- Base task model.
43
+ TaskValidator validator.
42
44
  """
43
45
 
44
46
  function: str
45
47
  """Function string."""
46
48
 
47
49
 
48
- class TaskParamsK8s(TaskParams, K8s):
50
+ class TaskValidatorK8s(TaskValidator, K8s):
49
51
  """
50
- Kubernetes task model.
52
+ TaskValidatorK8s validator.
51
53
  """
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities._base.entity.status import Status
4
+
5
+
6
+ class TaskStatus(Status):
7
+ """
8
+ TaskStatus status.
9
+ """
@@ -1,60 +1,33 @@
1
1
  from __future__ import annotations
2
2
 
3
- from digitalhub.entities._builders.metadata import build_metadata
4
- from digitalhub.entities._builders.spec import build_spec
5
- from digitalhub.entities._builders.status import build_status
6
- from digitalhub.entities._builders.uuid import build_uuid
7
- from digitalhub.entities.task.entity import Task
3
+ import typing
8
4
 
5
+ from digitalhub.factory.factory import factory
6
+ from digitalhub.utils.exceptions import BuilderError
9
7
 
10
- def task_from_parameters(
11
- project: str,
12
- kind: str,
13
- uuid: str | None = None,
14
- labels: list[str] | None = None,
15
- function: str | None = None,
16
- **kwargs,
17
- ) -> Task:
8
+ if typing.TYPE_CHECKING:
9
+ from digitalhub.entities.task._base.entity import Task
10
+
11
+
12
+ def task_from_parameters(**kwargs) -> Task:
18
13
  """
19
14
  Create a new object.
20
15
 
21
16
  Parameters
22
17
  ----------
23
- project : str
24
- Project name.
25
- kind : str
26
- Kind the object.
27
- uuid : str
28
- ID of the object (UUID4, e.g. 40f25c4b-d26b-4221-b048-9527aff291e2).
29
- labels : list[str]
30
- List of labels.
31
- function : str
32
- Name of the executable associated with the task.
33
- **kwargs : dict
34
- Spec keyword arguments.
18
+ **kwargs
19
+ Keyword arguments.
35
20
 
36
21
  Returns
37
22
  -------
38
23
  Task
39
24
  Object instance.
40
25
  """
41
- uuid = build_uuid(uuid)
42
- metadata = build_metadata(
43
- kind=kind,
44
- project=project,
45
- name=uuid,
46
- labels=labels,
47
- )
48
- spec = build_spec(kind, function=function, **kwargs)
49
- status = build_status(kind)
50
- return Task(
51
- project=project,
52
- uuid=uuid,
53
- kind=kind,
54
- metadata=metadata,
55
- spec=spec,
56
- status=status,
57
- )
26
+ try:
27
+ kind = kwargs["kind"]
28
+ except KeyError:
29
+ raise BuilderError("Missing 'kind' parameter.")
30
+ return factory.build_entity_from_params(kind, **kwargs)
58
31
 
59
32
 
60
33
  def task_from_dict(obj: dict) -> Task:
@@ -64,11 +37,15 @@ def task_from_dict(obj: dict) -> Task:
64
37
  Parameters
65
38
  ----------
66
39
  obj : dict
67
- Dictionary representation of Task.
40
+ Dictionary to create object from.
68
41
 
69
42
  Returns
70
43
  -------
71
44
  Task
72
45
  Object instance.
73
46
  """
74
- return Task.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)
@@ -4,13 +4,13 @@ import typing
4
4
 
5
5
  from digitalhub.context.builder import check_context
6
6
  from digitalhub.entities._base.crud import delete_entity_api_ctx, list_entity_api_ctx, read_entity_api_ctx
7
- from digitalhub.entities.entity_types import EntityTypes
8
7
  from digitalhub.entities.task.builder import task_from_dict, task_from_parameters
8
+ from digitalhub.entities.utils.entity_types import EntityTypes
9
9
  from digitalhub.utils.exceptions import EntityAlreadyExistsError, EntityError
10
10
  from digitalhub.utils.io_utils import read_yaml
11
11
 
12
12
  if typing.TYPE_CHECKING:
13
- from digitalhub.entities.task.entity import Task
13
+ from digitalhub.entities.task._base.entity import Task
14
14
 
15
15
 
16
16
  ENTITY_TYPE = EntityTypes.TASK.value
@@ -34,7 +34,7 @@ def new_task(
34
34
  kind : str
35
35
  Kind the object.
36
36
  uuid : str
37
- ID of the object (UUID4, e.g. 40f25c4b-d26b-4221-b048-9527aff291e2).
37
+ ID of the object.
38
38
  labels : list[str]
39
39
  List of labels.
40
40
  function : str
File without changes
@@ -2,9 +2,9 @@ from __future__ import annotations
2
2
 
3
3
  from pathlib import Path
4
4
 
5
- from digitalhub.entities.entity_types import EntityTypes
6
- from digitalhub.utils.env_utils import get_s3_bucket
5
+ from digitalhub.entities.utils.entity_types import EntityTypes
7
6
  from digitalhub.utils.file_utils import get_file_mime_type
7
+ from digitalhub.utils.s3_utils import get_s3_bucket
8
8
  from digitalhub.utils.uri_utils import check_local_path
9
9
 
10
10
 
File without changes
@@ -0,0 +1,78 @@
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
+
8
+ if typing.TYPE_CHECKING:
9
+ from digitalhub.entities.workflow._base.entity import Workflow
10
+
11
+
12
+ class WorkflowBuilder(VersionedBuilder):
13
+ """
14
+ Workflow builder.
15
+ """
16
+
17
+ ENTITY_TYPE = EntityTypes.WORKFLOW.value
18
+
19
+ def build(
20
+ self,
21
+ kind: str,
22
+ project: str,
23
+ name: str,
24
+ uuid: str | None = None,
25
+ description: str | None = None,
26
+ labels: list[str] | None = None,
27
+ embedded: bool = True,
28
+ **kwargs,
29
+ ) -> Workflow:
30
+ """
31
+ Create a new object.
32
+
33
+ Parameters
34
+ ----------
35
+ project : str
36
+ Project name.
37
+ name : str
38
+ Object name.
39
+ kind : str
40
+ Kind the object.
41
+ uuid : str
42
+ ID of the object.
43
+ description : str
44
+ Description of the object (human readable).
45
+ labels : list[str]
46
+ List of labels.
47
+ embedded : bool
48
+ Flag to determine if object spec must be embedded in project spec.
49
+ **kwargs : dict
50
+ Spec keyword arguments.
51
+
52
+ Returns
53
+ -------
54
+ Workflow
55
+ Object instance.
56
+ """
57
+ name = self.build_name(name)
58
+ uuid = self.build_uuid(uuid)
59
+ metadata = self.build_metadata(
60
+ project=project,
61
+ name=name,
62
+ description=description,
63
+ labels=labels,
64
+ embedded=embedded,
65
+ )
66
+ spec = self.build_spec(
67
+ **kwargs,
68
+ )
69
+ status = self.build_status()
70
+ return self.build_entity(
71
+ project=project,
72
+ name=name,
73
+ uuid=uuid,
74
+ kind=kind,
75
+ metadata=metadata,
76
+ spec=spec,
77
+ status=status,
78
+ )
@@ -2,16 +2,16 @@ from __future__ import annotations
2
2
 
3
3
  import typing
4
4
 
5
- from digitalhub.entities._base.entity.executable import ExecutableEntity
6
- from digitalhub.entities.entity_types import EntityTypes
7
- from digitalhub.runtimes.builder import get_kind_registry
5
+ from digitalhub.entities._base.executable.entity import ExecutableEntity
6
+ from digitalhub.entities.utils.entity_types import EntityTypes
7
+ from digitalhub.runtimes.utils import get_kind_registry
8
8
  from digitalhub.utils.exceptions import BackendError
9
9
 
10
10
  if typing.TYPE_CHECKING:
11
- from digitalhub.entities._base.metadata import Metadata
12
- from digitalhub.entities.run.entity import Run
13
- from digitalhub.entities.workflow.spec import WorkflowSpec
14
- from digitalhub.entities.workflow.status import WorkflowStatus
11
+ from digitalhub.entities._base.entity.metadata import Metadata
12
+ from digitalhub.entities.run._base.entity import Run
13
+ from digitalhub.entities.workflow._base.spec import WorkflowSpec
14
+ from digitalhub.entities.workflow._base.status import WorkflowStatus
15
15
 
16
16
 
17
17
  class Workflow(ExecutableEntity):
@@ -61,7 +61,7 @@ class Workflow(ExecutableEntity):
61
61
  action = "pipeline"
62
62
 
63
63
  # Get kind registry
64
- kind_reg = get_kind_registry(self.kind)
64
+ kind_reg = get_kind_registry(self.kind, self.project)
65
65
 
66
66
  # Get task and run kind
67
67
  task_kind = kind_reg.get_task_kind_from_action(action=action)
@@ -0,0 +1,15 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities._base.entity.spec import Spec, SpecValidator
4
+
5
+
6
+ class WorkflowSpec(Spec):
7
+ """
8
+ WorkflowSpec specifications.
9
+ """
10
+
11
+
12
+ class WorkflowValidator(SpecValidator):
13
+ """
14
+ WorkflowValidator validator.
15
+ """
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from digitalhub.entities._base.entity.status import Status
4
+
5
+
6
+ class WorkflowStatus(Status):
7
+ """
8
+ WorkflowStatus status.
9
+ """