digitalhub 0.8.0__py3-none-any.whl → 0.8.0b1__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 (248) hide show
  1. digitalhub/__init__.py +4 -5
  2. digitalhub/client/builder.py +58 -3
  3. digitalhub/client/{dhcore/client.py → objects/dhcore.py} +60 -48
  4. digitalhub/client/{local/client.py → objects/local.py} +2 -2
  5. digitalhub/context/builder.py +85 -1
  6. digitalhub/context/context.py +1 -1
  7. digitalhub/datastores/builder.py +37 -13
  8. digitalhub/datastores/{_base/datastore.py → objects/base.py} +3 -3
  9. digitalhub/datastores/{local/datastore.py → objects/local.py} +2 -10
  10. digitalhub/datastores/{remote/datastore.py → objects/remote.py} +1 -9
  11. digitalhub/datastores/{s3/datastore.py → objects/s3.py} +2 -10
  12. digitalhub/datastores/{sql/datastore.py → objects/sql.py} +2 -10
  13. digitalhub/entities/_base/{_base/entity.py → base.py} +1 -1
  14. digitalhub/entities/_base/crud.py +389 -247
  15. digitalhub/entities/_base/entity/{entity.py → base.py} +34 -8
  16. digitalhub/entities/_base/{context/entity.py → entity/context.py} +6 -6
  17. digitalhub/entities/_base/{executable/entity.py → entity/executable.py} +36 -61
  18. digitalhub/entities/_base/{material/entity.py → entity/material.py} +6 -6
  19. digitalhub/entities/_base/entity/unversioned.py +87 -0
  20. digitalhub/entities/_base/entity/versioned.py +94 -0
  21. digitalhub/entities/_base/{entity/metadata.py → metadata.py} +2 -2
  22. digitalhub/entities/_base/{entity/spec.py → spec/base.py} +11 -11
  23. digitalhub/entities/_base/{material/spec.py → spec/material.py} +3 -3
  24. digitalhub/entities/_base/{entity/status.py → status/base.py} +3 -14
  25. digitalhub/entities/_base/{material/status.py → status/material.py} +1 -1
  26. digitalhub/entities/_builders/metadata.py +60 -0
  27. digitalhub/entities/_builders/spec.py +43 -0
  28. digitalhub/entities/_builders/status.py +62 -0
  29. digitalhub/entities/{_base/entity/_constructors → _builders}/uuid.py +11 -4
  30. digitalhub/entities/artifact/builder.py +133 -0
  31. digitalhub/entities/artifact/crud.py +48 -22
  32. digitalhub/entities/artifact/{_base/entity.py → entity/_base.py} +5 -5
  33. digitalhub/entities/artifact/entity/artifact.py +9 -0
  34. digitalhub/entities/artifact/{artifact/spec.py → spec.py} +16 -4
  35. digitalhub/entities/artifact/{artifact/status.py → status.py} +1 -1
  36. digitalhub/entities/dataitem/builder.py +144 -0
  37. digitalhub/entities/dataitem/crud.py +52 -29
  38. digitalhub/entities/dataitem/{_base/entity.py → entity/_base.py} +5 -5
  39. digitalhub/entities/dataitem/entity/dataitem.py +9 -0
  40. digitalhub/entities/dataitem/entity/iceberg.py +7 -0
  41. digitalhub/entities/dataitem/{table/entity.py → entity/table.py} +4 -25
  42. digitalhub/entities/dataitem/spec.py +61 -0
  43. digitalhub/entities/dataitem/status.py +38 -0
  44. digitalhub/entities/function/builder.py +86 -0
  45. digitalhub/entities/function/crud.py +43 -17
  46. digitalhub/entities/function/{_base/entity.py → entity.py} +12 -9
  47. digitalhub/entities/function/{_base/models.py → models.py} +1 -1
  48. digitalhub/entities/function/spec.py +81 -0
  49. digitalhub/entities/function/status.py +9 -0
  50. digitalhub/entities/model/builder.py +152 -0
  51. digitalhub/entities/model/crud.py +48 -21
  52. digitalhub/entities/model/{_base/entity.py → entity/_base.py} +5 -5
  53. digitalhub/entities/model/entity/huggingface.py +9 -0
  54. digitalhub/entities/model/{mlflow/utils.py → entity/mlflow.py} +10 -1
  55. digitalhub/entities/model/entity/model.py +9 -0
  56. digitalhub/entities/model/entity/sklearn.py +9 -0
  57. digitalhub/entities/model/spec.py +146 -0
  58. digitalhub/entities/model/status.py +33 -0
  59. digitalhub/entities/project/builder.py +82 -0
  60. digitalhub/entities/project/crud.py +12 -19
  61. digitalhub/entities/project/{_base/entity.py → entity.py} +102 -120
  62. digitalhub/entities/project/{_base/spec.py → spec.py} +4 -4
  63. digitalhub/entities/project/status.py +9 -0
  64. digitalhub/entities/registries.py +48 -0
  65. digitalhub/entities/run/builder.py +77 -0
  66. digitalhub/entities/run/crud.py +33 -20
  67. digitalhub/entities/run/{_base/entity.py → entity.py} +189 -35
  68. digitalhub/entities/run/spec.py +153 -0
  69. digitalhub/entities/run/status.py +114 -0
  70. digitalhub/entities/secret/builder.py +93 -0
  71. digitalhub/entities/secret/crud.py +31 -27
  72. digitalhub/entities/secret/{_base/entity.py → entity.py} +7 -8
  73. digitalhub/entities/secret/{_base/spec.py → spec.py} +4 -4
  74. digitalhub/entities/secret/status.py +9 -0
  75. digitalhub/entities/task/builder.py +74 -0
  76. digitalhub/entities/task/crud.py +33 -20
  77. digitalhub/entities/task/{_base/entity.py → entity.py} +8 -9
  78. digitalhub/entities/task/{_base/models.py → models.py} +0 -9
  79. digitalhub/entities/task/{_base/spec.py → spec.py} +7 -9
  80. digitalhub/entities/task/status.py +9 -0
  81. digitalhub/entities/{utils/utils.py → utils.py} +2 -20
  82. digitalhub/entities/workflow/builder.py +91 -0
  83. digitalhub/entities/workflow/crud.py +43 -17
  84. digitalhub/entities/workflow/{_base/entity.py → entity.py} +12 -9
  85. digitalhub/entities/workflow/spec.py +15 -0
  86. digitalhub/entities/workflow/status.py +9 -0
  87. digitalhub/readers/builder.py +54 -0
  88. digitalhub/readers/{pandas/reader.py → objects/pandas.py} +1 -1
  89. digitalhub/readers/registry.py +15 -0
  90. digitalhub/registry/models.py +87 -0
  91. digitalhub/registry/registry.py +74 -0
  92. digitalhub/registry/utils.py +150 -0
  93. digitalhub/runtimes/{_base.py → base.py} +65 -3
  94. digitalhub/runtimes/builder.py +40 -19
  95. digitalhub/runtimes/kind_registry.py +170 -0
  96. digitalhub/stores/builder.py +52 -6
  97. digitalhub/stores/{local/store.py → objects/local.py} +1 -1
  98. digitalhub/stores/{remote/store.py → objects/remote.py} +1 -1
  99. digitalhub/stores/{s3/store.py → objects/s3.py} +1 -1
  100. digitalhub/stores/{sql/store.py → objects/sql.py} +1 -1
  101. digitalhub/{client/dhcore/utils.py → utils/env_utils.py} +14 -2
  102. digitalhub/utils/exceptions.py +0 -12
  103. digitalhub/utils/generic_utils.py +42 -18
  104. digitalhub/utils/io_utils.py +2 -39
  105. {digitalhub-0.8.0.dist-info → digitalhub-0.8.0b1.dist-info}/METADATA +2 -3
  106. digitalhub-0.8.0b1.dist-info/RECORD +161 -0
  107. {digitalhub-0.8.0.dist-info → digitalhub-0.8.0b1.dist-info}/WHEEL +1 -1
  108. test/test_crud_artifacts.py +96 -0
  109. test/test_crud_dataitems.py +96 -0
  110. test/test_crud_functions.py +1 -1
  111. test/test_crud_runs.py +1 -1
  112. test/test_crud_tasks.py +1 -1
  113. digitalhub/client/api.py +0 -63
  114. digitalhub/client/dhcore/env.py +0 -21
  115. digitalhub/client/dhcore/models.py +0 -46
  116. digitalhub/context/api.py +0 -93
  117. digitalhub/datastores/api.py +0 -37
  118. digitalhub/entities/_base/api_utils.py +0 -620
  119. digitalhub/entities/_base/entity/_constructors/metadata.py +0 -44
  120. digitalhub/entities/_base/entity/_constructors/spec.py +0 -33
  121. digitalhub/entities/_base/entity/_constructors/status.py +0 -52
  122. digitalhub/entities/_base/entity/builder.py +0 -175
  123. digitalhub/entities/_base/executable/__init__.py +0 -0
  124. digitalhub/entities/_base/material/__init__.py +0 -0
  125. digitalhub/entities/_base/runtime_entity/__init__.py +0 -0
  126. digitalhub/entities/_base/runtime_entity/builder.py +0 -106
  127. digitalhub/entities/_base/unversioned/__init__.py +0 -0
  128. digitalhub/entities/_base/unversioned/builder.py +0 -66
  129. digitalhub/entities/_base/unversioned/entity.py +0 -49
  130. digitalhub/entities/_base/versioned/__init__.py +0 -0
  131. digitalhub/entities/_base/versioned/builder.py +0 -68
  132. digitalhub/entities/_base/versioned/entity.py +0 -53
  133. digitalhub/entities/artifact/_base/__init__.py +0 -0
  134. digitalhub/entities/artifact/_base/builder.py +0 -86
  135. digitalhub/entities/artifact/_base/spec.py +0 -15
  136. digitalhub/entities/artifact/_base/status.py +0 -9
  137. digitalhub/entities/artifact/artifact/__init__.py +0 -0
  138. digitalhub/entities/artifact/artifact/builder.py +0 -18
  139. digitalhub/entities/artifact/artifact/entity.py +0 -32
  140. digitalhub/entities/builders.py +0 -63
  141. digitalhub/entities/dataitem/_base/__init__.py +0 -0
  142. digitalhub/entities/dataitem/_base/builder.py +0 -86
  143. digitalhub/entities/dataitem/_base/spec.py +0 -15
  144. digitalhub/entities/dataitem/_base/status.py +0 -20
  145. digitalhub/entities/dataitem/dataitem/__init__.py +0 -0
  146. digitalhub/entities/dataitem/dataitem/builder.py +0 -18
  147. digitalhub/entities/dataitem/dataitem/entity.py +0 -32
  148. digitalhub/entities/dataitem/dataitem/spec.py +0 -15
  149. digitalhub/entities/dataitem/dataitem/status.py +0 -9
  150. digitalhub/entities/dataitem/iceberg/__init__.py +0 -0
  151. digitalhub/entities/dataitem/iceberg/builder.py +0 -18
  152. digitalhub/entities/dataitem/iceberg/entity.py +0 -32
  153. digitalhub/entities/dataitem/iceberg/spec.py +0 -15
  154. digitalhub/entities/dataitem/iceberg/status.py +0 -9
  155. digitalhub/entities/dataitem/table/__init__.py +0 -0
  156. digitalhub/entities/dataitem/table/builder.py +0 -18
  157. digitalhub/entities/dataitem/table/spec.py +0 -25
  158. digitalhub/entities/dataitem/table/status.py +0 -9
  159. digitalhub/entities/function/_base/__init__.py +0 -0
  160. digitalhub/entities/function/_base/builder.py +0 -79
  161. digitalhub/entities/function/_base/spec.py +0 -15
  162. digitalhub/entities/function/_base/status.py +0 -9
  163. digitalhub/entities/model/_base/__init__.py +0 -0
  164. digitalhub/entities/model/_base/builder.py +0 -86
  165. digitalhub/entities/model/_base/spec.py +0 -49
  166. digitalhub/entities/model/_base/status.py +0 -9
  167. digitalhub/entities/model/huggingface/__init__.py +0 -0
  168. digitalhub/entities/model/huggingface/builder.py +0 -18
  169. digitalhub/entities/model/huggingface/entity.py +0 -32
  170. digitalhub/entities/model/huggingface/spec.py +0 -36
  171. digitalhub/entities/model/huggingface/status.py +0 -9
  172. digitalhub/entities/model/mlflow/__init__.py +0 -0
  173. digitalhub/entities/model/mlflow/builder.py +0 -18
  174. digitalhub/entities/model/mlflow/entity.py +0 -32
  175. digitalhub/entities/model/mlflow/spec.py +0 -44
  176. digitalhub/entities/model/mlflow/status.py +0 -9
  177. digitalhub/entities/model/model/__init__.py +0 -0
  178. digitalhub/entities/model/model/builder.py +0 -18
  179. digitalhub/entities/model/model/entity.py +0 -32
  180. digitalhub/entities/model/model/spec.py +0 -15
  181. digitalhub/entities/model/model/status.py +0 -9
  182. digitalhub/entities/model/sklearn/__init__.py +0 -0
  183. digitalhub/entities/model/sklearn/builder.py +0 -18
  184. digitalhub/entities/model/sklearn/entity.py +0 -32
  185. digitalhub/entities/model/sklearn/spec.py +0 -15
  186. digitalhub/entities/model/sklearn/status.py +0 -9
  187. digitalhub/entities/project/_base/__init__.py +0 -0
  188. digitalhub/entities/project/_base/builder.py +0 -128
  189. digitalhub/entities/project/_base/status.py +0 -9
  190. digitalhub/entities/run/_base/__init__.py +0 -0
  191. digitalhub/entities/run/_base/builder.py +0 -94
  192. digitalhub/entities/run/_base/spec.py +0 -50
  193. digitalhub/entities/run/_base/status.py +0 -9
  194. digitalhub/entities/secret/_base/__init__.py +0 -0
  195. digitalhub/entities/secret/_base/builder.py +0 -81
  196. digitalhub/entities/secret/_base/status.py +0 -9
  197. digitalhub/entities/task/_base/__init__.py +0 -0
  198. digitalhub/entities/task/_base/builder.py +0 -91
  199. digitalhub/entities/task/_base/status.py +0 -9
  200. digitalhub/entities/utils/__init__.py +0 -0
  201. digitalhub/entities/workflow/_base/__init__.py +0 -0
  202. digitalhub/entities/workflow/_base/builder.py +0 -79
  203. digitalhub/entities/workflow/_base/spec.py +0 -15
  204. digitalhub/entities/workflow/_base/status.py +0 -9
  205. digitalhub/factory/__init__.py +0 -0
  206. digitalhub/factory/api.py +0 -277
  207. digitalhub/factory/factory.py +0 -268
  208. digitalhub/factory/utils.py +0 -90
  209. digitalhub/readers/_base/__init__.py +0 -0
  210. digitalhub/readers/_base/builder.py +0 -26
  211. digitalhub/readers/api.py +0 -80
  212. digitalhub/readers/factory.py +0 -133
  213. digitalhub/readers/pandas/__init__.py +0 -0
  214. digitalhub/readers/pandas/builder.py +0 -29
  215. digitalhub/stores/_base/__init__.py +0 -0
  216. digitalhub/stores/api.py +0 -54
  217. digitalhub/stores/local/__init__.py +0 -0
  218. digitalhub/stores/remote/__init__.py +0 -0
  219. digitalhub/stores/s3/__init__.py +0 -0
  220. digitalhub/stores/sql/__init__.py +0 -0
  221. digitalhub/utils/s3_utils.py +0 -58
  222. digitalhub-0.8.0.dist-info/RECORD +0 -231
  223. test/local/CRUD/test_artifacts.py +0 -96
  224. test/local/CRUD/test_dataitems.py +0 -96
  225. test/local/CRUD/test_models.py +0 -95
  226. /digitalhub/client/{_base → objects}/__init__.py +0 -0
  227. /digitalhub/client/{_base/client.py → objects/base.py} +0 -0
  228. /digitalhub/{client/dhcore → datastores/objects}/__init__.py +0 -0
  229. /digitalhub/entities/{utils → _base}/api.py +0 -0
  230. /digitalhub/{client/local → entities/_base/spec}/__init__.py +0 -0
  231. /digitalhub/entities/{utils → _base}/state.py +0 -0
  232. /digitalhub/{datastores/_base → entities/_base/status}/__init__.py +0 -0
  233. /digitalhub/{datastores/local → entities/_builders}/__init__.py +0 -0
  234. /digitalhub/entities/{_base/entity/_constructors → _builders}/name.py +0 -0
  235. /digitalhub/{datastores/remote → entities/artifact/entity}/__init__.py +0 -0
  236. /digitalhub/{datastores/s3 → entities/dataitem/entity}/__init__.py +0 -0
  237. /digitalhub/entities/dataitem/{table/models.py → models.py} +0 -0
  238. /digitalhub/entities/{utils/entity_types.py → entity_types.py} +0 -0
  239. /digitalhub/{datastores/sql → entities/model/entity}/__init__.py +0 -0
  240. /digitalhub/entities/model/{mlflow/models.py → models.py} +0 -0
  241. /digitalhub/{entities/_base/_base → readers/objects}/__init__.py +0 -0
  242. /digitalhub/readers/{_base/reader.py → objects/base.py} +0 -0
  243. /digitalhub/{entities/_base/context → registry}/__init__.py +0 -0
  244. /digitalhub/{entities/_base/entity/_constructors → stores/objects}/__init__.py +0 -0
  245. /digitalhub/stores/{_base/store.py → objects/base.py} +0 -0
  246. {digitalhub-0.8.0.dist-info → digitalhub-0.8.0b1.dist-info}/LICENSE.txt +0 -0
  247. {digitalhub-0.8.0.dist-info → digitalhub-0.8.0b1.dist-info}/top_level.txt +0 -0
  248. /test/{local/imports/test_imports.py → test_imports.py} +0 -0
@@ -2,118 +2,215 @@ from __future__ import annotations
2
2
 
3
3
  import typing
4
4
 
5
- from digitalhub.client.api import build_client, get_client
6
- from digitalhub.context.api import check_context
7
- from digitalhub.entities._base.api_utils import (
8
- delete_entity_api_ctx,
9
- list_entity_api_ctx,
10
- read_entity_api_base,
11
- read_entity_api_ctx,
12
- read_entity_api_ctx_versions,
5
+ from digitalhub.context.builder import get_context
6
+ from digitalhub.entities._base.api import (
7
+ api_base_create,
8
+ api_base_delete,
9
+ api_base_list,
10
+ api_base_read,
11
+ api_base_update,
12
+ api_ctx_create,
13
+ api_ctx_data,
14
+ api_ctx_delete,
15
+ api_ctx_files,
16
+ api_ctx_list,
17
+ api_ctx_logs,
18
+ api_ctx_read,
19
+ api_ctx_resume,
20
+ api_ctx_stop,
21
+ api_ctx_update,
13
22
  )
14
- from digitalhub.entities.utils.entity_types import EntityTypes
15
- from digitalhub.entities.utils.utils import parse_entity_key
16
- from digitalhub.factory.api import build_entity_from_dict, build_entity_from_params
17
- from digitalhub.utils.exceptions import ContextError, EntityAlreadyExistsError, EntityError, EntityNotExistsError
18
- from digitalhub.utils.io_utils import read_yaml
23
+ from digitalhub.entities.utils import parse_entity_key
19
24
 
20
25
  if typing.TYPE_CHECKING:
21
- from digitalhub.entities._base.context.entity import ContextEntity
22
- from digitalhub.entities._base.executable.entity import ExecutableEntity
23
- from digitalhub.entities._base.material.entity import MaterialEntity
24
- from digitalhub.entities._base.unversioned.entity import UnversionedEntity
25
- from digitalhub.entities._base.versioned.entity import VersionedEntity
26
+ from digitalhub.client.objects.base import Client
26
27
 
27
28
 
28
- def _check_context(project: str) -> None:
29
+ def create_entity_api_base(
30
+ client: Client,
31
+ entity_type: str,
32
+ entity_dict: dict,
33
+ **kwargs,
34
+ ) -> dict:
29
35
  """
30
- Check if the given project is in the context.
31
- Otherwise try to get the project from remote.
36
+ Create object in backend.
32
37
 
33
38
  Parameters
34
39
  ----------
35
- project : str
36
- Project name.
40
+ client : Client
41
+ Client instance.
42
+ entity_type : str
43
+ Entity type.
44
+ entity_dict : dict
45
+ Object instance.
46
+ **kwargs : dict
47
+ Parameters to pass to the API call.
37
48
 
38
49
  Returns
39
50
  -------
40
- None
51
+ dict
52
+ Object instance.
41
53
  """
42
- try:
43
- check_context(project)
44
- except ContextError:
45
- try:
46
- build_client()
47
- client = get_client()
48
- obj = read_entity_api_base(client, EntityTypes.PROJECT.value, project)
49
- build_entity_from_dict(obj)
50
- except EntityNotExistsError:
51
- raise ContextError(f"Project '{project}' not found.")
54
+ api = api_base_create(entity_type)
55
+ return client.create_object(api, entity_dict, **kwargs)
52
56
 
53
57
 
54
- def _check_project_from_identifier(identifier: str, project: str | None = None) -> None:
58
+ def read_entity_api_base(
59
+ client: Client,
60
+ entity_type: str,
61
+ entity_name: str,
62
+ **kwargs,
63
+ ) -> dict:
55
64
  """
56
- Check if the given project is in the context.
57
- Otherwise try to get the project from remote.
65
+ Read object from backend.
58
66
 
59
67
  Parameters
60
68
  ----------
61
- identifier : str
62
- Entity key (store://...) or entity name.
63
- project : str
64
- Project name.
69
+ client : Client
70
+ Client instance.
71
+ entity_type : str
72
+ Entity type.
73
+ entity_name : str
74
+ Entity name.
75
+ **kwargs : dict
76
+ Parameters to pass to the API call.
65
77
 
66
78
  Returns
67
79
  -------
68
- None
80
+ dict
81
+ Object instance.
69
82
  """
70
- if not identifier.startswith("store://"):
71
- if project is None:
72
- raise EntityError("Specify project if you do not specify entity key.")
83
+ api = api_base_read(entity_type, entity_name)
84
+ return client.read_object(api, **kwargs)
73
85
 
74
- else:
75
- project, _, _, _, _ = parse_entity_key(identifier)
76
86
 
77
- _check_context(project)
87
+ def update_entity_api_base(
88
+ client: Client,
89
+ entity_type: str,
90
+ entity_name: str,
91
+ entity_dict: dict,
92
+ **kwargs,
93
+ ) -> dict:
94
+ """
95
+ Update object. Note that object spec are immutable.
96
+
97
+ Parameters
98
+ ----------
99
+ client : Client
100
+ Client instance.
101
+ entity_type : str
102
+ Entity type.
103
+ entity_name : str
104
+ Entity name.
105
+ entity_dict : dict
106
+ Object instance.
107
+ **kwargs : dict
108
+ Parameters to pass to the API call.
109
+
110
+ Returns
111
+ -------
112
+ dict
113
+ Object instance.
114
+ """
115
+ api = api_base_update(entity_type, entity_name)
116
+ return client.update_object(api, entity_dict, **kwargs)
117
+
118
+
119
+ def delete_entity_api_base(
120
+ client: Client,
121
+ entity_type: str,
122
+ entity_name: str,
123
+ **kwargs,
124
+ ) -> dict:
125
+ """
126
+ Delete object from backend.
127
+
128
+ Parameters
129
+ ----------
130
+ client : Client
131
+ Client instance.
132
+ entity_type : str
133
+ Entity type.
134
+ entity_name : str
135
+ Entity name.
136
+ **kwargs : dict
137
+ Parameters to pass to the API call.
138
+
139
+ Returns
140
+ -------
141
+ dict
142
+ Object instance.
143
+ """
144
+ if "params" not in kwargs:
145
+ kwargs["params"] = {}
146
+ if "cascade" in kwargs["params"]:
147
+ kwargs["params"]["cascade"] = str(kwargs["cascade"]).lower()
148
+ if "cascade" in kwargs:
149
+ kwargs["params"]["cascade"] = str(kwargs.pop("cascade")).lower()
150
+ api = api_base_delete(entity_type, entity_name)
151
+ return client.delete_object(api, **kwargs)
152
+
153
+
154
+ def list_entity_api_base(
155
+ client: Client,
156
+ entity_type: str,
157
+ **kwargs,
158
+ ) -> list[dict]:
159
+ """
160
+ List objects from backend.
78
161
 
162
+ Parameters
163
+ ----------
164
+ entity_type : str
165
+ Entity type.
166
+ **kwargs : dict
167
+ Parameters to pass to the API call.
79
168
 
80
- def new_context_entity(**kwargs) -> ContextEntity:
169
+ Returns
170
+ -------
171
+ list[dict]
172
+ List of objects.
173
+ """
174
+ api = api_base_list(entity_type)
175
+ return client.list_objects(api, **kwargs)
176
+
177
+
178
+ def create_entity_api_ctx(
179
+ project: str,
180
+ entity_type: str,
181
+ entity_dict: dict,
182
+ **kwargs,
183
+ ) -> dict:
81
184
  """
82
- Create a new object.
185
+ Create object in backend.
83
186
 
84
187
  Parameters
85
188
  ----------
86
189
  project : str
87
190
  Project name.
88
- kind : str
89
- Kind the object.
90
- uuid : str
91
- ID of the object.
92
- description : str
93
- Description of the object (human readable).
94
- labels : list[str]
95
- List of labels.
96
- embedded : bool
97
- Flag to determine if object spec must be embedded in project spec.
191
+ entity_type : str
192
+ Entity type.
193
+ entity_dict : dict
194
+ Object instance.
195
+ **kwargs : dict
196
+ Parameters to pass to the API call.
98
197
 
99
198
  Returns
100
199
  -------
101
- ContextEntity
200
+ dict
102
201
  Object instance.
103
202
  """
104
- _check_context(kwargs["project"])
105
- obj = build_entity_from_params(**kwargs)
106
- obj.save()
107
- return obj
203
+ api = api_ctx_create(project, entity_type)
204
+ return get_context(project).create_object(api, entity_dict, **kwargs)
108
205
 
109
206
 
110
- def get_versioned_entity(
207
+ def read_entity_api_ctx(
111
208
  identifier: str,
112
209
  entity_type: str | None = None,
113
210
  project: str | None = None,
114
211
  entity_id: str | None = None,
115
212
  **kwargs,
116
- ) -> VersionedEntity:
213
+ ) -> dict:
117
214
  """
118
215
  Get object from backend.
119
216
 
@@ -132,105 +229,112 @@ def get_versioned_entity(
132
229
 
133
230
  Returns
134
231
  -------
135
- VersionedEntity
232
+ dict
136
233
  Object instance.
137
234
  """
138
- _check_project_from_identifier(identifier, project)
139
- obj = read_entity_api_ctx(
140
- identifier,
141
- entity_type=entity_type,
142
- project=project,
143
- entity_id=entity_id,
144
- **kwargs,
145
- )
146
- return build_entity_from_dict(obj)
147
235
 
236
+ if identifier.startswith("store://"):
237
+ project, entity_type, _, _, entity_id = parse_entity_key(identifier)
238
+ api = api_ctx_read(project, entity_type, entity_id)
239
+ return get_context(project).read_object(api, **kwargs)
240
+
241
+ if project is None or entity_type is None:
242
+ raise ValueError("Project and entity type must be specified.")
243
+
244
+ if "params" not in kwargs:
245
+ kwargs["params"] = {}
246
+
247
+ if entity_id is None:
248
+ kwargs["params"]["name"] = identifier
249
+ api = api_ctx_list(project, entity_type)
250
+ return get_context(project).list_first_object(api, **kwargs)
148
251
 
149
- def get_unversioned_entity(
252
+ api = api_ctx_read(project, entity_type, entity_id)
253
+ return get_context(project).read_object(api, **kwargs)
254
+
255
+
256
+ def read_entity_api_ctx_versions(
150
257
  identifier: str,
151
258
  entity_type: str | None = None,
152
259
  project: str | None = None,
153
260
  **kwargs,
154
- ) -> UnversionedEntity:
261
+ ) -> list[dict]:
155
262
  """
156
- Get object from backend.
263
+ Get all versions object from backend.
157
264
 
158
265
  Parameters
159
266
  ----------
160
- entity_type : str
161
- Entity type.
162
267
  identifier : str
163
268
  Entity key (store://...) or entity name.
269
+ entity_type : str
270
+ Entity type.
164
271
  project : str
165
272
  Project name.
166
- entity_id : str
167
- Entity ID.
168
273
  **kwargs : dict
169
274
  Parameters to pass to the API call.
170
275
 
171
276
  Returns
172
277
  -------
173
- UnversionedEntity
174
- Object instance.
278
+ list[dict]
279
+ Object instances.
175
280
  """
176
- _check_project_from_identifier(identifier, project)
281
+ if not identifier.startswith("store://"):
282
+ if project is None or entity_type is None:
283
+ raise ValueError("Project and entity type must be specified.")
284
+ entity_name = identifier
285
+ else:
286
+ project, entity_type, _, entity_name, _ = parse_entity_key(identifier)
177
287
 
178
- obj = read_entity_api_ctx(
179
- identifier,
180
- entity_type=entity_type,
181
- project=project,
182
- **kwargs,
183
- )
184
- return build_entity_from_dict(obj)
288
+ if "params" not in kwargs:
289
+ kwargs["params"] = {}
290
+ kwargs["params"]["name"] = entity_name
291
+ kwargs["params"]["versions"] = "all"
185
292
 
293
+ api = api_ctx_list(project, entity_type)
294
+ return get_context(project).list_objects(api, **kwargs)
186
295
 
187
- def get_material_entity(
188
- identifier: str,
189
- entity_type: str | None = None,
190
- project: str | None = None,
191
- entity_id: str | None = None,
296
+
297
+ def update_entity_api_ctx(
298
+ project: str,
299
+ entity_type: str,
300
+ entity_id: str,
301
+ entity_dict: dict,
192
302
  **kwargs,
193
- ) -> MaterialEntity:
303
+ ) -> dict:
194
304
  """
195
- Get object from backend.
305
+ Update object. Note that object spec are immutable.
196
306
 
197
307
  Parameters
198
308
  ----------
199
- identifier : str
200
- Entity key (store://...) or entity name.
201
- entity_type : str
202
- Entity type.
203
309
  project : str
204
310
  Project name.
311
+ entity_type : str
312
+ Entity type.
205
313
  entity_id : str
206
314
  Entity ID.
315
+ entity_dict : dict
316
+ Entity dictionary.
207
317
  **kwargs : dict
208
318
  Parameters to pass to the API call.
209
319
 
210
320
  Returns
211
321
  -------
212
- MaterialEntity
213
- Object instance.
322
+ dict
323
+ Response from backend.
214
324
  """
215
- obj: MaterialEntity = get_versioned_entity(
216
- identifier,
217
- entity_type=entity_type,
218
- project=project,
219
- entity_id=entity_id,
220
- **kwargs,
221
- )
222
- obj._get_files_info()
223
- return obj
325
+ api = api_ctx_update(project, entity_type, entity_id=entity_id)
326
+ return get_context(project).update_object(api, entity_dict, **kwargs)
224
327
 
225
328
 
226
- def get_context_entity_versions(
329
+ def delete_entity_api_ctx(
227
330
  identifier: str,
228
- entity_type: str | None = None,
331
+ entity_type: str,
229
332
  project: str | None = None,
333
+ entity_id: str | None = None,
230
334
  **kwargs,
231
- ) -> list[ContextEntity]:
335
+ ) -> dict:
232
336
  """
233
- Get object versions from backend.
337
+ Delete object from backend.
234
338
 
235
339
  Parameters
236
340
  ----------
@@ -240,67 +344,81 @@ def get_context_entity_versions(
240
344
  Entity type.
241
345
  project : str
242
346
  Project name.
347
+ entity_id : str
348
+ Entity ID.
243
349
  **kwargs : dict
244
350
  Parameters to pass to the API call.
245
351
 
246
352
  Returns
247
353
  -------
248
- list[ContextEntity]
249
- List of object instances.
354
+ dict
355
+ Response from backend.
250
356
  """
251
- _check_project_from_identifier(identifier, project)
252
- obj = read_entity_api_ctx_versions(
253
- identifier,
254
- entity_type=entity_type,
255
- project=project,
256
- **kwargs,
257
- )
258
- return [build_entity_from_dict(o) for o in obj]
357
+ if "params" not in kwargs:
358
+ kwargs["params"] = {}
359
+ if "cascade" in kwargs["params"]:
360
+ kwargs["params"]["cascade"] = str(kwargs["cascade"]).lower()
361
+ if "cascade" in kwargs:
362
+ kwargs["params"]["cascade"] = str(kwargs.pop("cascade")).lower()
259
363
 
364
+ delete_all_versions: bool = kwargs.pop("delete_all_versions", False)
260
365
 
261
- def get_material_entity_versions(
262
- identifier: str,
263
- entity_type: str | None = None,
264
- project: str | None = None,
366
+ if identifier.startswith("store://"):
367
+ project, _, _, _, entity_id = parse_entity_key(identifier)
368
+ api = api_ctx_delete(project, entity_type, entity_id)
369
+ return get_context(project).delete_object(api, **kwargs)
370
+
371
+ if project is None:
372
+ raise ValueError("Project must be provided.")
373
+
374
+ if entity_id is not None:
375
+ api = api_ctx_delete(project, entity_type, entity_id)
376
+ else:
377
+ kwargs["params"]["name"] = identifier
378
+ api = api_ctx_list(project, entity_type)
379
+ if delete_all_versions:
380
+ return get_context(project).delete_object(api, **kwargs)
381
+ obj = get_context(project).list_first_object(api, **kwargs)
382
+ entity_id = obj["id"]
383
+
384
+ api = api_ctx_delete(project, entity_type, entity_id)
385
+ return get_context(project).delete_object(api, **kwargs)
386
+
387
+
388
+ def list_entity_api_ctx(
389
+ project: str,
390
+ entity_type: str,
265
391
  **kwargs,
266
- ) -> list[MaterialEntity]:
392
+ ) -> list[dict]:
267
393
  """
268
- Get object versions from backend.
394
+ List objects from backend.
269
395
 
270
396
  Parameters
271
397
  ----------
272
- identifier : str
273
- Entity key (store://...) or entity name.
274
- entity_type : str
275
- Entity type.
276
398
  project : str
277
399
  Project name.
400
+ entity_type : str
401
+ Entity type.
278
402
  **kwargs : dict
279
403
  Parameters to pass to the API call.
280
404
 
281
405
  Returns
282
406
  -------
283
- list[MaterialEntity]
284
- List of object instances.
407
+ list[dict]
408
+ List of objects.
285
409
  """
286
- _check_project_from_identifier(identifier, project)
287
- objs = read_entity_api_ctx_versions(
288
- identifier,
289
- entity_type=entity_type,
290
- project=project,
291
- **kwargs,
292
- )
293
- objects = []
294
- for o in objs:
295
- entity: MaterialEntity = build_entity_from_dict(o)
296
- entity._get_files_info()
297
- objects.append(entity)
298
- return objects
410
+ api = api_ctx_list(project, entity_type)
411
+ return get_context(project).list_objects(api, **kwargs)
299
412
 
300
413
 
301
- def list_context_entities(project: str, entity_type: str, **kwargs) -> list[ContextEntity]:
414
+ def set_data_api(
415
+ project: str,
416
+ entity_type: str,
417
+ data: dict,
418
+ **kwargs,
419
+ ) -> None:
302
420
  """
303
- List all latest version objects from backend.
421
+ Set data in backend.
304
422
 
305
423
  Parameters
306
424
  ----------
@@ -308,30 +426,26 @@ def list_context_entities(project: str, entity_type: str, **kwargs) -> list[Cont
308
426
  Project name.
309
427
  entity_type : str
310
428
  Entity type.
429
+ data : dict
430
+ Data dictionary.
311
431
  **kwargs : dict
312
432
  Parameters to pass to the API call.
313
433
 
314
434
  Returns
315
435
  -------
316
- list[ContextEntity]
317
- List of object instances.
436
+ None
318
437
  """
319
- _check_context(project)
320
- objs = list_entity_api_ctx(
321
- project=project,
322
- entity_type=entity_type,
323
- **kwargs,
324
- )
325
- return [build_entity_from_dict(obj) for obj in objs]
438
+ api = api_ctx_data(project, entity_type)
439
+ get_context(project).update_object(api, data, **kwargs)
326
440
 
327
441
 
328
- def list_material_entities(
442
+ def get_data_api(
329
443
  project: str,
330
444
  entity_type: str,
331
445
  **kwargs,
332
- ) -> list[MaterialEntity]:
446
+ ) -> dict:
333
447
  """
334
- List all latest version objects from backend.
448
+ Read data from backend.
335
449
 
336
450
  Parameters
337
451
  ----------
@@ -344,125 +458,153 @@ def list_material_entities(
344
458
 
345
459
  Returns
346
460
  -------
347
- list[MaterialEntity]
348
- List of object instances.
461
+ dict
462
+ Response from backend.
349
463
  """
350
- _check_context(project)
351
- objs = list_entity_api_ctx(
352
- project=project,
353
- entity_type=entity_type,
354
- **kwargs,
355
- )
356
- objects = []
357
- for o in objs:
358
- entity: MaterialEntity = build_entity_from_dict(o)
359
- entity._get_files_info()
360
- objects.append(entity)
361
- return objects
464
+ api = api_ctx_data(project, entity_type)
465
+ return get_context(project).read_object(api, **kwargs)
362
466
 
363
467
 
364
- def import_context_entity(file: str) -> ContextEntity:
468
+ def logs_api(
469
+ project: str,
470
+ entity_type: str,
471
+ entity_id: str,
472
+ **kwargs,
473
+ ) -> dict:
365
474
  """
366
- Get object from file.
475
+ Read logs from backend.
367
476
 
368
477
  Parameters
369
478
  ----------
370
- file : str
371
- Path to YAML file.
479
+ project : str
480
+ Project name.
481
+ entity_type : str
482
+ Entity type.
483
+ entity_id : str
484
+ Entity ID.
485
+ **kwargs : dict
486
+ Parameters to pass to the API call.
372
487
 
373
488
  Returns
374
489
  -------
375
- ContextEntity
376
- Object instance.
490
+ dict
491
+ Response from backend.
377
492
  """
378
- dict_obj: dict = read_yaml(file)
379
-
380
- _check_context(dict_obj["project"])
381
-
382
- obj = build_entity_from_dict(dict_obj)
383
- try:
384
- obj.save()
385
- except EntityAlreadyExistsError:
386
- pass
387
- return obj
493
+ api = api_ctx_logs(project, entity_type, entity_id)
494
+ return get_context(project).read_object(api, **kwargs)
388
495
 
389
496
 
390
- def import_executable_entity(file: str) -> ExecutableEntity:
497
+ def stop_api(
498
+ project: str,
499
+ entity_type: str,
500
+ entity_id: str,
501
+ **kwargs,
502
+ ) -> None:
391
503
  """
392
- Get object from file.
504
+ Stop object in backend.
393
505
 
394
506
  Parameters
395
507
  ----------
396
- file : str
397
- Path to YAML file.
508
+ project : str
509
+ Project name.
510
+ entity_type : str
511
+ Entity type.
512
+ entity_id : str
513
+ Entity ID.
514
+ **kwargs : dict
515
+ Parameters to pass to the API call.
398
516
 
399
517
  Returns
400
518
  -------
401
- ExecutableEntity
402
- Object instance.
519
+ None
403
520
  """
404
- dict_obj: dict | list[dict] = read_yaml(file)
405
- if isinstance(dict_obj, list):
406
- exec_dict = dict_obj[0]
407
- tsk_dicts = dict_obj[1:]
408
- else:
409
- exec_dict = dict_obj
410
- tsk_dicts = []
521
+ api = api_ctx_stop(project, entity_type, entity_id)
522
+ get_context(project).create_object(api, obj={}, **kwargs)
411
523
 
412
- _check_context(exec_dict["project"])
413
524
 
414
- obj: ExecutableEntity = build_entity_from_dict(exec_dict)
525
+ def resume_api(
526
+ project: str,
527
+ entity_type: str,
528
+ entity_id: str,
529
+ **kwargs,
530
+ ) -> None:
531
+ """
532
+ Resume object in backend.
415
533
 
416
- obj.import_tasks(tsk_dicts)
534
+ Parameters
535
+ ----------
536
+ project : str
537
+ Project name.
538
+ entity_type : str
539
+ Entity type.
540
+ entity_id : str
541
+ Entity ID.
542
+ **kwargs : dict
543
+ Parameters to pass to the API call.
417
544
 
418
- try:
419
- obj.save()
420
- except EntityAlreadyExistsError:
421
- pass
422
- return obj
545
+ Returns
546
+ -------
547
+ None
548
+ """
549
+ api = api_ctx_resume(project, entity_type, entity_id)
550
+ get_context(project).create_object(api, obj={}, **kwargs)
423
551
 
424
552
 
425
- def delete_entity(
426
- identifier: str,
427
- entity_type: str | None = None,
428
- project: str | None = None,
429
- entity_id: str | None = None,
430
- delete_all_versions: bool = False,
431
- cascade: bool = True,
553
+ def files_info_get_api(
554
+ project: str,
555
+ entity_type: str,
556
+ entity_id: str,
432
557
  **kwargs,
433
- ) -> dict:
558
+ ) -> list[dict]:
434
559
  """
435
- Delete object from backend.
560
+ Get files info from backend.
436
561
 
437
562
  Parameters
438
563
  ----------
439
- identifier : str
440
- Entity key (store://...) or entity name.
564
+ project : str
565
+ Project name.
441
566
  entity_type : str
442
567
  Entity type.
568
+ entity_id : str
569
+ Entity ID.
570
+ **kwargs : dict
571
+ Parameters to pass to the API call.
572
+
573
+ Returns
574
+ -------
575
+ list[dict]
576
+ Response from backend.
577
+ """
578
+ api = api_ctx_files(project, entity_type, entity_id)
579
+ return get_context(project).read_object(api, **kwargs)
580
+
581
+
582
+ def files_info_put_api(
583
+ project: str,
584
+ entity_type: str,
585
+ entity_id: str,
586
+ entity_list: list[dict],
587
+ **kwargs,
588
+ ) -> None:
589
+ """
590
+ Get files info from backend.
591
+
592
+ Parameters
593
+ ----------
443
594
  project : str
444
595
  Project name.
596
+ entity_type : str
597
+ Entity type.
445
598
  entity_id : str
446
599
  Entity ID.
447
- delete_all_versions : bool
448
- Delete all versions of the named entity. If True, use entity name instead of entity key as identifier.
449
- cascade : bool
450
- Cascade delete.
600
+ entity_list : list[dict]
601
+ Entity list.
451
602
  **kwargs : dict
452
603
  Parameters to pass to the API call.
453
604
 
454
605
  Returns
455
606
  -------
456
- dict
457
- Response from backend.
607
+ None
458
608
  """
459
- _check_project_from_identifier(identifier, project)
460
- return delete_entity_api_ctx(
461
- identifier=identifier,
462
- entity_type=entity_type,
463
- project=project,
464
- entity_id=entity_id,
465
- delete_all_versions=delete_all_versions,
466
- cascade=cascade,
467
- **kwargs,
468
- )
609
+ api = api_ctx_files(project, entity_type, entity_id)
610
+ get_context(project).update_object(api, entity_list, **kwargs)