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
@@ -2,16 +2,14 @@ from __future__ import annotations
2
2
 
3
3
  import base64
4
4
  import json
5
- import os
6
5
  from datetime import datetime
7
6
  from pathlib import Path
8
7
  from typing import Any
9
- from urllib.parse import urlparse
10
8
  from zipfile import ZipFile
11
9
 
12
10
  import numpy as np
13
- from boto3 import client as boto3_client
14
11
  from requests import get as requests_get
12
+ from slugify import slugify
15
13
 
16
14
  from digitalhub.utils.io_utils import read_text
17
15
 
@@ -120,45 +118,6 @@ def extract_archive(path: Path, filename: Path) -> None:
120
118
  zip_file.extractall(path)
121
119
 
122
120
 
123
- def get_s3_source(bucket: str, key: str, filename: Path) -> None:
124
- """
125
- Get S3 source.
126
-
127
- Parameters
128
- ----------
129
- bucket : str
130
- S3 bucket name.
131
- key : str
132
- S3 object key.
133
- filename : Path
134
- Path where to save the function source.
135
-
136
- Returns
137
- -------
138
- None
139
- """
140
- s3 = boto3_client("s3", endpoint_url=os.getenv("S3_ENDPOINT_URL"))
141
- s3.download_file(bucket, key, filename)
142
-
143
-
144
- def get_bucket_and_key(path: str) -> tuple[str, str]:
145
- """
146
- Get bucket and key from path.
147
-
148
- Parameters
149
- ----------
150
- path : str
151
- The source path to get the key from.
152
-
153
- Returns
154
- -------
155
- tuple[str, str]
156
- The bucket and key.
157
- """
158
- parsed = urlparse(path)
159
- return parsed.netloc, parsed.path
160
-
161
-
162
121
  class MyEncoder(json.JSONEncoder):
163
122
  """
164
123
  Custom JSON encoder to handle numpy types.
@@ -205,3 +164,20 @@ def dict_to_json(struct: dict) -> str:
205
164
  The json string.
206
165
  """
207
166
  return json.dumps(struct, cls=MyEncoder)
167
+
168
+
169
+ def slugify_string(filename: str) -> str:
170
+ """
171
+ Sanitize a filename.
172
+
173
+ Parameters
174
+ ----------
175
+ filename : str
176
+ The filename to sanitize.
177
+
178
+ Returns
179
+ -------
180
+ str
181
+ The sanitized filename.
182
+ """
183
+ return slugify(filename, max_length=255)
@@ -0,0 +1,58 @@
1
+ from __future__ import annotations
2
+
3
+ import os
4
+ from pathlib import Path
5
+ from urllib.parse import urlparse
6
+
7
+ from boto3 import client as boto3_client
8
+
9
+
10
+ def get_bucket_and_key(path: str) -> tuple[str, str]:
11
+ """
12
+ Get bucket and key from path.
13
+
14
+ Parameters
15
+ ----------
16
+ path : str
17
+ The source path to get the key from.
18
+
19
+ Returns
20
+ -------
21
+ tuple[str, str]
22
+ The bucket and key.
23
+ """
24
+ parsed = urlparse(path)
25
+ return parsed.netloc, parsed.path
26
+
27
+
28
+ def get_s3_source(bucket: str, key: str, filename: Path) -> None:
29
+ """
30
+ Get S3 source.
31
+
32
+ Parameters
33
+ ----------
34
+ bucket : str
35
+ S3 bucket name.
36
+ key : str
37
+ S3 object key.
38
+ filename : Path
39
+ Path where to save the function source.
40
+
41
+ Returns
42
+ -------
43
+ None
44
+ """
45
+ s3 = boto3_client("s3", endpoint_url=os.getenv("S3_ENDPOINT_URL"))
46
+ s3.download_file(bucket, key, filename)
47
+
48
+
49
+ def get_s3_bucket() -> str | None:
50
+ """
51
+ Function to get S3 bucket name.
52
+
53
+ Returns
54
+ -------
55
+ str
56
+ The S3 bucket name.
57
+ """
58
+ return os.getenv("S3_BUCKET_NAME", "datalake")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: digitalhub
3
- Version: 0.8.0b2
3
+ Version: 0.8.0b4
4
4
  Summary: Python SDK for Digitalhub
5
5
  Author-email: Fondazione Bruno Kessler <dslab@fbk.eu>, Matteo Martini <mmartini@fbk.eu>
6
6
  License: Apache License
@@ -239,6 +239,7 @@ Requires-Dist: PyYAML
239
239
  Requires-Dist: python-dotenv
240
240
  Requires-Dist: GitPython>=3
241
241
  Requires-Dist: psycopg2-binary
242
+ Requires-Dist: python-slugify
242
243
  Provides-Extra: dev
243
244
  Requires-Dist: black; extra == "dev"
244
245
  Requires-Dist: pytest; extra == "dev"
@@ -262,4 +263,4 @@ Requires-Dist: pandas<2.2,>=1.2; extra == "pandas"
262
263
  The Digitalhub SDK library is used to manage entities and executions in Digitalhub from Python.
263
264
  It comes with a suite of tools to help you manage your projects and executions. It exposes CRUD methods to create, read, update and delete entities, and objects methods to excute functions or workflows, collect or store execution results and data.
264
265
 
265
- A more detailed description of the library can be found in the [official documentation](https://scc-digitalhub.github.io/docs/) of Digitalhub.
266
+ A more detailed description of the library can be found in the [official documentation](https://scc-digitalhub.github.io/sdk-docs/).
@@ -0,0 +1,232 @@
1
+ digitalhub/__init__.py,sha256=imbW5YG7vvoMY6Yp_yxD434IF_5xjILHKaWTdg9rxGs,1987
2
+ digitalhub/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ digitalhub/client/builder.py,sha256=gT9rdmdUJ86DCgM-uFSOzjGj71z25rbkjoUpRkBAnZI,2276
4
+ digitalhub/client/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ digitalhub/client/_base/client.py,sha256=HDv9Vr9DZpoaZVsAT5SSBD9j1oHoVuxA4ILGDl0mBz4,1299
6
+ digitalhub/client/dhcore/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ digitalhub/client/dhcore/client.py,sha256=QeSfKmXKgV1NPrtLrVKtiO6mfpmWxkYIcVdE1vVVCeo,18246
8
+ digitalhub/client/dhcore/env.py,sha256=F5A5dPTliwd4UUbpw7hQQ3hoVjZYjcVF8MbniTuTFHE,563
9
+ digitalhub/client/dhcore/models.py,sha256=KiTg5xR8EzI7Xa1pmYmzixabLdnqlnn5kn-IILZDGIw,900
10
+ digitalhub/client/dhcore/utils.py,sha256=rRRS-SA_EfPaFtrceTnM2ZFkoBNZdR5Nv09wyg9dc5g,2994
11
+ digitalhub/client/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ digitalhub/client/local/client.py,sha256=VgV-kazrEJt-JGnaTGhxs29JntunQUIrjYGZ-CzkFaQ,16779
13
+ digitalhub/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
+ digitalhub/context/builder.py,sha256=kWamkduBs8ouuXhpMwlDWvvwcz8oU_s7O70MqDYHLtI,3665
15
+ digitalhub/context/context.py,sha256=hDZEW4riMjR5-v2zWiirt-Z5puxdc7d_Da6vFhyuRF4,3338
16
+ digitalhub/datastores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ digitalhub/datastores/builder.py,sha256=8uUqW_0fN9YBnbD8776apc8gRersZpLB-NLjM4tzVlY,3130
18
+ digitalhub/datastores/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
+ digitalhub/datastores/_base/datastore.py,sha256=FR6dIRBw0qlgR7r8LS_y5viv-Mo_Tgvv4UHHrbv91gc,1998
20
+ digitalhub/datastores/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ digitalhub/datastores/local/datastore.py,sha256=ZcjMk6iYcMWLpiaJGFOFSwd2juZliW5rdLi11eShIvQ,1161
22
+ digitalhub/datastores/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
+ digitalhub/datastores/remote/datastore.py,sha256=s8OILWaTVGqUDftm6G2gt3YOURw8tdgXPsAFGiHQPNg,648
24
+ digitalhub/datastores/s3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
+ digitalhub/datastores/s3/datastore.py,sha256=QK860dgHTXjYtwamfISexmpv9wCDbXsLlHeH9mn6jAA,1021
26
+ digitalhub/datastores/sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ digitalhub/datastores/sql/datastore.py,sha256=XxceWQJs_qCn-I-e7c9k2nnZa3u58yENO_MQtzFjYos,1632
28
+ digitalhub/entities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
+ digitalhub/entities/builders.py,sha256=wKNC3ly-IUrF9uaSXWQ5cMzEj7JikM467uXIOdgko2c,1951
30
+ digitalhub/entities/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
+ digitalhub/entities/_base/crud.py,sha256=GhvagiNE9PIHizEZwpku-IR93Tr4buR60xvOM-X-pSI,13181
32
+ digitalhub/entities/_base/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
+ digitalhub/entities/_base/_base/entity.py,sha256=DLJHhviHVKCo26jCEYg7iXwkfS9mDBQrHxBtHF_yE-0,2180
34
+ digitalhub/entities/_base/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
+ digitalhub/entities/_base/context/entity.py,sha256=xzeK0gQLWh70JTS0xdVbmS68RPZCbWrITTVJfkdZz_c,3054
36
+ digitalhub/entities/_base/entity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ digitalhub/entities/_base/entity/entity.py,sha256=L8AFlIeSxKGTX5AdjJNln6X5YH7K_xUV7yPDgBFmJ-w,2741
38
+ digitalhub/entities/_base/entity/metadata.py,sha256=ew0pFBH0u8m5QjkcL21KboRhBkJAJQDl6EjCeiegyEc,1690
39
+ digitalhub/entities/_base/entity/spec.py,sha256=yY6ScqZGRb-Sbw97g-OQ0GPHmmOX6HGYBDkvax6PKkc,1338
40
+ digitalhub/entities/_base/entity/status.py,sha256=UFr-9c1t--3PJDWTYmgsPhuaV0IeHGiUDN0-P_e8JE4,817
41
+ digitalhub/entities/_base/executable/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
+ digitalhub/entities/_base/executable/entity.py,sha256=Y1IRsS0MIezpZW1os4YIweeqFvusMsXPtC6jsQmE8Pk,10000
43
+ digitalhub/entities/_base/material/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
+ digitalhub/entities/_base/material/entity.py,sha256=sfTlDZwM4WyGvEJRvADH9WrzqamEQNij8oECK-64qWg,6167
45
+ digitalhub/entities/_base/material/spec.py,sha256=jL1OohnYhUSrdTaFF3Rkw817jIjNY0ewm1wB3tgQ_9c,436
46
+ digitalhub/entities/_base/material/status.py,sha256=5qIfUvcOKGoM2PLloMaWqhRz78Ryap56d8cMQHo8KJo,1102
47
+ digitalhub/entities/_base/unversioned/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
+ digitalhub/entities/_base/unversioned/builder.py,sha256=5UqhXdp1jQcUEeKJEA87vS2WKsU9Wnjy9EzXcC7w3JE,1830
49
+ digitalhub/entities/_base/unversioned/entity.py,sha256=Gf00zuWTUeFcRbH4a7vXc12GyNF9TS4Xpcx5sPx98rU,1398
50
+ digitalhub/entities/_base/versioned/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
+ digitalhub/entities/_base/versioned/builder.py,sha256=rHdOx1hh-dyiqNumILQJfHBwI59ojz_6CjRHP-hcCqk,1892
52
+ digitalhub/entities/_base/versioned/entity.py,sha256=YMK_fYyGGm0nizZcIZ9tyilvEUpl5HXSdcYqiZEOk3M,1526
53
+ digitalhub/entities/_builders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
+ digitalhub/entities/_builders/entity.py,sha256=CoRCMZszf1TigLKk9h2c8EgBGT67j9fEC4hPq6iJQ30,4001
55
+ digitalhub/entities/_builders/metadata.py,sha256=IGB1l6EJ1xlnGMdeL-b04kT4tFd_h5lJgo5MXzv3h9o,1058
56
+ digitalhub/entities/_builders/name.py,sha256=sNU54TzzdYug5sqio8uaus6pP5RkEJYIEl6j0fwR4ho,485
57
+ digitalhub/entities/_builders/spec.py,sha256=ymUHuJ6m3B8eVL4622XRdNMQdeYxRwBV5drao0L5MiQ,879
58
+ digitalhub/entities/_builders/status.py,sha256=xrr2u2wlDMmlqrUIV9xVqFRHfn5LV_TqzdrCEWNCzE0,1132
59
+ digitalhub/entities/_builders/uuid.py,sha256=8wys6Uhk8L1uUo18moh7Rq5YnFHtmUVXfNOkcsTVUN8,556
60
+ digitalhub/entities/artifact/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
+ digitalhub/entities/artifact/builder.py,sha256=20T3i14elZPB7P5w2xh5BNO2Zp4ekTYHIj-dS5RvGKc,1072
62
+ digitalhub/entities/artifact/crud.py,sha256=v-hxju_AfR1UuFn4nNrYZy9t0lQHCaiNw76zDFeU5tI,8165
63
+ digitalhub/entities/artifact/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
+ digitalhub/entities/artifact/_base/builder.py,sha256=01yrqe_sbSmFfxymw4CWrcfTYkghTykOfvFB7ohKQyM,2259
65
+ digitalhub/entities/artifact/_base/entity.py,sha256=WDauPDLE3UTCZTgSxGOr01ZarEqpNUJNVznB7wlA7AU,1111
66
+ digitalhub/entities/artifact/_base/spec.py,sha256=7tDvCQT-NJijpPB1ucT34xn9wSZOB79HOHAix1qAn74,300
67
+ digitalhub/entities/artifact/_base/status.py,sha256=qG5KUOlEHWYZWYqLDvvuZxD5EjsV0SYNNI9aHkQRHlY,188
68
+ digitalhub/entities/artifact/artifact/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
+ digitalhub/entities/artifact/artifact/builder.py,sha256=s-ka1xODveZSycdMC6tnRBj7Bs1hZKXIi1mhNoHkUIw,674
70
+ digitalhub/entities/artifact/artifact/entity.py,sha256=hj6UlJMWnWimqizhKGcKpvOpcYHxTFTk6--nQazlnIM,882
71
+ digitalhub/entities/artifact/artifact/spec.py,sha256=iX6czlG6W_ZoW86PD2GPc_-xLk6Zb1Vt3fk8Lzjbp3c,593
72
+ digitalhub/entities/artifact/artifact/status.py,sha256=x-lTgO2KkjwzlJnEhIfUtF9rzJ1DTIAd3-Hn6ZeLRqo,305
73
+ digitalhub/entities/dataitem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
+ digitalhub/entities/dataitem/builder.py,sha256=OmYP4lLkhH8MTN7oAZt3H7p49icKSDXwgc4yQ2RucoU,1072
75
+ digitalhub/entities/dataitem/crud.py,sha256=9-HAM2-8rZG6ibeTNYYndnf1Px4Oa--LgucSdOrasro,9803
76
+ digitalhub/entities/dataitem/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
+ digitalhub/entities/dataitem/_base/builder.py,sha256=uLmpLWqvouTu326TlYBXmBW30ErM8xXgx9bUgHhdGIg,2259
78
+ digitalhub/entities/dataitem/_base/entity.py,sha256=FLpkfhzkaBnmkdE8rKaJS-O3vcOcPwzyHL-xb7HVGA0,1984
79
+ digitalhub/entities/dataitem/_base/spec.py,sha256=7TeEaavMdkXPWBoHMoxagOSt7F4Pn0Bp8qugNwPypSA,300
80
+ digitalhub/entities/dataitem/_base/status.py,sha256=D8eR9FOZoS8VSNkQFDAz8dJkjR7hIq8nFd9qmX19mPc,467
81
+ digitalhub/entities/dataitem/dataitem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
+ digitalhub/entities/dataitem/dataitem/builder.py,sha256=1qOGHiBuqFYYurscdTNJl3ZE0W8dsUVTi_ukhjbOhyA,674
83
+ digitalhub/entities/dataitem/dataitem/entity.py,sha256=-5DCbta_0I8O9hGBB0BntU7LN9cMrvF-rYJluhcAK88,882
84
+ digitalhub/entities/dataitem/dataitem/spec.py,sha256=VaPG4mu2PtJF8J7maYwM8ToCdV3Zf-MbJUrNDoP9LNk,332
85
+ digitalhub/entities/dataitem/dataitem/status.py,sha256=V4K6kUFQymY9UQrmth9m6YqQUoc4Um1PizY6edG77xg,204
86
+ digitalhub/entities/dataitem/iceberg/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
+ digitalhub/entities/dataitem/iceberg/builder.py,sha256=Q6Z67wdt3nrld5aIR1V-LaMgapFMdvrEOZFx0o9h0_A,660
88
+ digitalhub/entities/dataitem/iceberg/entity.py,sha256=UP6xp-RJOHmyniBx4_whIKJrvc1gpKvIyTMxLOsR1lw,872
89
+ digitalhub/entities/dataitem/iceberg/spec.py,sha256=qQebFiY0_pt9Iy1KGsfxXg67CG9s7GCUQ7rXCydQVvI,328
90
+ digitalhub/entities/dataitem/iceberg/status.py,sha256=XRj9i8a-dzjqB-Ci3cfPnXTikc5khLsIgUJnF1xE01I,202
91
+ digitalhub/entities/dataitem/table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
+ digitalhub/entities/dataitem/table/builder.py,sha256=FBTif7EpoLgjBfbhciiiOd79JszZRYVzzOw3gZtWqoM,632
93
+ digitalhub/entities/dataitem/table/entity.py,sha256=qqZv59ri5Bl64BUxHyrzjE8sulE3gY0Wz8qFkkuGDWg,4370
94
+ digitalhub/entities/dataitem/table/models.py,sha256=wfnDMQ3nAM1XAJAuMj7CvaXfOTVMQicG_2I6hZB6iag,1093
95
+ digitalhub/entities/dataitem/table/spec.py,sha256=5boOI9zhIvuwIQo0th0E2941_rQEPIRIIYLhySbwbFY,671
96
+ digitalhub/entities/dataitem/table/status.py,sha256=28-_LoSg84x4OwLbRungCHk-ObuobZ5vKuzk1NoBGZA,198
97
+ digitalhub/entities/function/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
+ digitalhub/entities/function/builder.py,sha256=m1B4VpaK80XA8bOVTHDj2wqbjMUsAsyUaSFEdStDOvw,1072
99
+ digitalhub/entities/function/crud.py,sha256=3ZfUtUhwZWTfAt4RBL-oaVQtaSXzMRa-Vo_KVYFmKBE,6857
100
+ digitalhub/entities/function/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
+ digitalhub/entities/function/_base/builder.py,sha256=CKqv8OXgVoMxKmLVKyNSUDwKFiL_o_ZMCh-DHC2cftI,1934
102
+ digitalhub/entities/function/_base/entity.py,sha256=gQsaZqqJHZjuwcQVFm5q8Gdaf_WMLae1QXGiaK5b5qY,3016
103
+ digitalhub/entities/function/_base/models.py,sha256=6LYyImwnhFxl40mq5nF99mqJ62Mjs3XHUpHVqnSCEkg,2726
104
+ digitalhub/entities/function/_base/spec.py,sha256=SjCtp3JBUTPTLMY_TE8wM1HPKVl7jH_wFEqQXBj1rfo,274
105
+ digitalhub/entities/function/_base/status.py,sha256=N-Z1hw13qV7kWFJLQPaH3rRZ2z7AvZeuWYER95lG344,170
106
+ digitalhub/entities/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
+ digitalhub/entities/model/builder.py,sha256=4XyvhORgjPeZzKvJ1hIu2v5TJeBLi7yPdzl72HLCl9A,1048
108
+ digitalhub/entities/model/crud.py,sha256=Ru5h4swTseW1Qyf6dukk4Tkc5ZqWg_s5zimePCZmdYk,7997
109
+ digitalhub/entities/model/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
+ digitalhub/entities/model/_base/builder.py,sha256=JI73GoKay1BuGtf3HUbV0Na3Pz4cC8PnYpXPGzc9QHo,2238
111
+ digitalhub/entities/model/_base/entity.py,sha256=vcvSIiFkUR3RBPbTV1q8KOkQTj8R9bOqfkqHBgf1rK4,916
112
+ digitalhub/entities/model/_base/spec.py,sha256=eo2FSqIlNi_10VETBdMFAWX177exzb0-oi9EuEPVBbk,1089
113
+ digitalhub/entities/model/_base/status.py,sha256=v-RbusxYeen6BPObVFUvr76k4MKxCdsaF9geSYpKi_8,182
114
+ digitalhub/entities/model/huggingface/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
115
+ digitalhub/entities/model/huggingface/builder.py,sha256=tGmICfAuvjXAxzo6URNUPCdmGTE0dXtTfpK9L6srInM,668
116
+ digitalhub/entities/model/huggingface/entity.py,sha256=BnBWrAmTA8cEM47sqpxQeCLCl4Wu7CbpFKhYvf8qLaA,873
117
+ digitalhub/entities/model/huggingface/spec.py,sha256=48mItA3nutcG-get6qOoBJsopmXQgepUXU3zh9nV-EA,1000
118
+ digitalhub/entities/model/huggingface/status.py,sha256=ZFekC9oPuOpUmDcXMn-cpyXp2Jiiux46Vs4oPiiakIA,195
119
+ digitalhub/entities/model/mlflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
120
+ digitalhub/entities/model/mlflow/builder.py,sha256=HqX5IelpjFtcasHVg1kVMiEC9q_Aw-uIvGDqPy0_Oe0,597
121
+ digitalhub/entities/model/mlflow/entity.py,sha256=RRRnRWlJZS4s9_Aj8PZfCmfw6tNJGUZpygQygAbxm8I,823
122
+ digitalhub/entities/model/mlflow/models.py,sha256=FCCT_jd2j6T517dOZ1NX0ByPapudslir8FJepfQYz4I,464
123
+ digitalhub/entities/model/mlflow/spec.py,sha256=iPW9ZEEEfWhWWia7o7XFeO05qr-CtWSLCkIKw2s8zSM,1286
124
+ digitalhub/entities/model/mlflow/status.py,sha256=bGTTWHAQt3cKFnGCdMinoWNIWzyVEkHi8ybqVT8xA5k,185
125
+ digitalhub/entities/model/mlflow/utils.py,sha256=fHOr3kLqU-yY_FCIMgSLDrniyZx4pFSrHX8sqls2Pvk,2208
126
+ digitalhub/entities/model/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
+ digitalhub/entities/model/model/builder.py,sha256=snsO81hD6oJW7K24Db5jAsl15-OjJ-WVWaqFW_d7cd8,585
128
+ digitalhub/entities/model/model/entity.py,sha256=TlciSy8ELKtDybhVvJlNnhy7Ct6YApmu3D8nJ9xIybs,813
129
+ digitalhub/entities/model/model/spec.py,sha256=vO02rf2nB1TKJ7WPgobq7PuTae5Z5twy1fLVTopLJC8,293
130
+ digitalhub/entities/model/model/status.py,sha256=dF_sh-cm9qGBQTyXDsAm8FkugYW8XHSQxlY-QGcpsLI,183
131
+ digitalhub/entities/model/sklearn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
132
+ digitalhub/entities/model/sklearn/builder.py,sha256=Zvx5R9y7kmnKFxosr3xm8nH2e_cfZWh_hh9J8yy38-A,612
133
+ digitalhub/entities/model/sklearn/entity.py,sha256=pPy4mOqOmbkqNkKFUnhrsIQNt2mGNPUeTS62poZfa6M,833
134
+ digitalhub/entities/model/sklearn/spec.py,sha256=Md0aKlfNHZ2fhZbJgp9wZxF0Hu6XIkcniQHCgwoRdkk,301
135
+ digitalhub/entities/model/sklearn/status.py,sha256=eqkPPtERX-6_BjPb_GD8j1FIeavpl43k-dfXZGqzGI0,187
136
+ digitalhub/entities/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
+ digitalhub/entities/project/builder.py,sha256=jnCxPc13bnwxslheMQMjCYG7rhkMNjqDzuQr3W4RtCs,1064
138
+ digitalhub/entities/project/crud.py,sha256=_RbU4hJdqn8cIkNWuejyqtLnEs4P_vDHvOo5bTQtcWQ,8852
139
+ digitalhub/entities/project/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
+ digitalhub/entities/project/_base/builder.py,sha256=eS6GCriwcgRC0nZSKC3hrP_82KzB2aR7Lrp4idjEwbU,3608
141
+ digitalhub/entities/project/_base/entity.py,sha256=WzKnCOiSnoa6PRrgb7u0BWtWDsq2cftwqaL0k0fSlv8,51717
142
+ digitalhub/entities/project/_base/spec.py,sha256=zRJKFztK7z79LU4spxX7Rykv_1sK6kV9F9Qg95HBc6s,1346
143
+ digitalhub/entities/project/_base/status.py,sha256=w1Hj_yFwr_5X7ZH7SmtZRto4qUdCWb010viFfvbqX48,168
144
+ digitalhub/entities/run/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
145
+ digitalhub/entities/run/builder.py,sha256=Cx8dg_hytb3E0cGhqlpVUNHlQtydXmzP5AT-oqONlMw,1032
146
+ digitalhub/entities/run/crud.py,sha256=TE8xbcA8VmUO0Po89yafdIpXNRKM-ZS6mYbRNjPUS4A,5017
147
+ digitalhub/entities/run/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
148
+ digitalhub/entities/run/_base/builder.py,sha256=pwHGoUr9DXXpzqwmmBY5Pznv-UVeX4U5vpwm2olzDLI,1763
149
+ digitalhub/entities/run/_base/entity.py,sha256=oPxuKgij7b6JtC8j3ViY8Rjn5EqpBvuV4D9sDgTJ1Ho,8413
150
+ digitalhub/entities/run/_base/spec.py,sha256=KKIwKBe2asOQq-CKI7NbveGUvYnQfaVrnS92IEJ-e0s,3929
151
+ digitalhub/entities/run/_base/status.py,sha256=be2TK_KcLwEA5uhpkQXBQHDTc6bPaaIz3e9UZuVhXq4,2850
152
+ digitalhub/entities/secret/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
+ digitalhub/entities/secret/builder.py,sha256=dfSW5dTwiIJJL4w3cIYUJ8f2TPZadX2Qu95xMEyIuVg,1056
154
+ digitalhub/entities/secret/crud.py,sha256=ACtzUUBDOffxCociSprPqOw7Rq0vnCSQOFop_jq-Qb8,6782
155
+ digitalhub/entities/secret/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
156
+ digitalhub/entities/secret/_base/builder.py,sha256=dQsUDqTQsTmcDOtkMRHlQNwwxcmPMkB_aT2WWmNnOWM,2197
157
+ digitalhub/entities/secret/_base/entity.py,sha256=UF-ibEcnrcaNy_nGCrxxyoJqVrcAfyq3ZFUP-sTiEgw,2035
158
+ digitalhub/entities/secret/_base/spec.py,sha256=Ol4bDVd2lR6uUUtFj80YNSgtRsnfYGE3C7UN2c_LUsc,727
159
+ digitalhub/entities/secret/_base/status.py,sha256=TK9CUKA6eg9qegqgR9t-u1g-vEeFGB6v5dN9YJNukw8,166
160
+ digitalhub/entities/task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
161
+ digitalhub/entities/task/builder.py,sha256=D-XfLkMQcf2vz8ni49PbqoTAXNemFXnKmx-MC4xB5hM,1040
162
+ digitalhub/entities/task/crud.py,sha256=p6WLTnEymnUVkoxPRzEpgej3ewVY1_gPBR1iSs9U2cc,5272
163
+ digitalhub/entities/task/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
164
+ digitalhub/entities/task/_base/builder.py,sha256=QspX77Y_yzdlK72V-LC6tYaUPRNfQlmLXMs_bqEm62k,1838
165
+ digitalhub/entities/task/_base/entity.py,sha256=AtmGfu-EDqTWfPxrxNYe59pK5NLyuBlXiri5p_cwP7E,3083
166
+ digitalhub/entities/task/_base/models.py,sha256=Vkequ03zsI1n4L-VGO0vMYDnrhK63rB5I0NshB3s6k4,4254
167
+ digitalhub/entities/task/_base/spec.py,sha256=wc9-i0VguS99WG4jQhYF3s2d_mwwtg_Yrkm8RbDa_vk,1289
168
+ digitalhub/entities/task/_base/status.py,sha256=FCSSQscQ0dHEpXdc5vSrIkTXon9FNNOr0M1KVh2ZVAA,162
169
+ digitalhub/entities/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
170
+ digitalhub/entities/utils/api.py,sha256=jSNYoLzoYSvu2wI-fs6u87AFYGAaboPCX4y6f2LqJ5A,6597
171
+ digitalhub/entities/utils/entity_types.py,sha256=PcAh78WAC9DgwSU6LxGncn0g7Wzb0iZXc-3Ooik8-ks,324
172
+ digitalhub/entities/utils/state.py,sha256=gKxDy__MEHlz-1SrwICZnFOIqDoI-CBo4ylIBM9TaoQ,609
173
+ digitalhub/entities/utils/utils.py,sha256=HD4tQcx8MQ8YVjz9aIgUHgYIk1t4Q9AlkhaY0NgN8Mg,4193
174
+ digitalhub/entities/workflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
175
+ digitalhub/entities/workflow/builder.py,sha256=mNQ49ziCx6mOqRsn_m9WUbD5kApi93b67uTqAO5zsts,1072
176
+ digitalhub/entities/workflow/crud.py,sha256=071LtHfFt6W08ScFKuulzHglQlEUB0wIdCN56jq_1-g,6792
177
+ digitalhub/entities/workflow/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
178
+ digitalhub/entities/workflow/_base/builder.py,sha256=YXXEe1LUGKhYYvv4FZp1uiobbY7IFT6wUMEoZUk0L10,1934
179
+ digitalhub/entities/workflow/_base/entity.py,sha256=8IbKaY29BYFVoAitjghLxuF2diVz-Yeh3QdOyg15PQ4,2192
180
+ digitalhub/entities/workflow/_base/spec.py,sha256=UoKOUEqKDFACQwctDWfwhro77m3kvjhLDGOhhfRvEzQ,274
181
+ digitalhub/entities/workflow/_base/status.py,sha256=W0j0CNdu9o2vbk0awpnDrpgwf_fZpgdtct4s0BxRdyk,170
182
+ digitalhub/factory/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
183
+ digitalhub/factory/factory.py,sha256=8Bv31BD7qeK2rsRPZXSG5P4ulSvctaV11eAJNOgf_K8,5362
184
+ digitalhub/factory/utils.py,sha256=Cp9NF0nt7FITCd9jBDjKzPrDIvg4GlfhzGEw7a72DOQ,2233
185
+ digitalhub/readers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
186
+ digitalhub/readers/builder.py,sha256=H56LA2KWUVk7gbCI_2Y11oXMC5anXMJzYW_56wnq3ws,1313
187
+ digitalhub/readers/registry.py,sha256=k_BJidjIC-fLpOHUNPZNF_OrkDbJzC0V4f3ZNQjKiyg,407
188
+ digitalhub/readers/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
189
+ digitalhub/readers/_base/readers.py,sha256=Fq7liW_ogeucdIUS7_oDYpMzrwuKxVMqwpyf0sKLnwc,1506
190
+ digitalhub/readers/pandas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
+ digitalhub/readers/pandas/readers.py,sha256=Q63mwTKmY1mdpvTtx1scf9x2rBPfgBpbSu1r-4zvIjk,5351
192
+ digitalhub/runtimes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
193
+ digitalhub/runtimes/_base.py,sha256=ddzKh-NESFJCYjt-Y8HdGrWDWKZ7TQhxRgRWKowCX6I,3961
194
+ digitalhub/runtimes/builder.py,sha256=P8j6qkr6gdEk71NSX4eRCL_55u2Zs3_U59PJU-PT9ls,903
195
+ digitalhub/runtimes/kind_registry.py,sha256=ftyk8gE_67qZrCKIND5MySOofaD0PKmlM4_1YNaKw-I,3802
196
+ digitalhub/runtimes/utils.py,sha256=stwDZ1NzAJ3THhmYr7bSAzsndh-A6uD5P756591sXjo,556
197
+ digitalhub/stores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
198
+ digitalhub/stores/builder.py,sha256=xYkHHD-WnPTVD6BB2dSabJVjM1XUtKn3TiMrDDJBL0s,6631
199
+ digitalhub/stores/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
200
+ digitalhub/stores/_base/store.py,sha256=tU-VsTZxkJVLyYpp23Cv_UjnHx74dk6ztdmVhsUO4cA,4171
201
+ digitalhub/stores/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
202
+ digitalhub/stores/local/store.py,sha256=KjJ8OG6vfNrckMWbkbEA8KDM6b0Ds0Ed3fwxvTnGOkQ,5673
203
+ digitalhub/stores/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
204
+ digitalhub/stores/remote/store.py,sha256=MBsotmc5Zk-eT5vgAufnYyR2xJmQvgBR28u3bhaSJtM,3615
205
+ digitalhub/stores/s3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
206
+ digitalhub/stores/s3/store.py,sha256=dS0TumNf3tDkpVcn_0_kp-ERogP3w87tEa-osIU11AQ,15515
207
+ digitalhub/stores/sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
208
+ digitalhub/stores/sql/store.py,sha256=NdELCkP2Rl5ewiRuI4J9eRvTiBzVmpF0cMowZ1NME_8,8654
209
+ digitalhub/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
210
+ digitalhub/utils/data_utils.py,sha256=2eETyxml610Ij7uyDnNc3YiELl2WFLIkj3FL4y6EPk8,2733
211
+ digitalhub/utils/exceptions.py,sha256=MjLhgaGSAe0oJXoR-dnEtAh02RYDj3wZ1ZS1SLFUD4A,964
212
+ digitalhub/utils/file_utils.py,sha256=Qe71D2b6mOil_Y0Hy2QCJbnIaQOyXvhjFRbJoZXhsGQ,4006
213
+ digitalhub/utils/generic_utils.py,sha256=YHWCCF77JFqgm4TNr3_U2GbX4SjEQjUmxA6i9PkRqG8,3527
214
+ digitalhub/utils/git_utils.py,sha256=aFYL1cpfY-2VnlW7eHmjjjlTLECc5UUUfjb_IQPOY5k,3244
215
+ digitalhub/utils/io_utils.py,sha256=SfYl6f-vUOophuWJ7zupBDx2lmHDohcjwcUqcz6sGdI,1809
216
+ digitalhub/utils/logger.py,sha256=ml3ne6D8wuRdNZ4F6ywmvWotSxjmZWnmKgNiuHb4R5M,437
217
+ digitalhub/utils/s3_utils.py,sha256=oXLzp4K7o45IwK0XOMt4OElDyB09fKRic5WTNA82WUA,1113
218
+ digitalhub/utils/uri_utils.py,sha256=wArWRQ3ygGUNHexGKP3YM-aBE7TyGxhPvfEc7R4T4p4,1144
219
+ test/test_crud_functions.py,sha256=tQs_QBaPCuYVSBpbl-he5_6jr_tteCXVmohj1ZluNsA,2769
220
+ test/test_crud_runs.py,sha256=lkssy15UPJKymgazmi5gG6RLxyTsG-tM_CpNCowD2gQ,2220
221
+ test/test_crud_tasks.py,sha256=sIbY-Hq6C2N20hWHfbCMw9c-zpYS0m_UJGnPINR4Q6s,2111
222
+ test/testkfp.py,sha256=01UpLKkVbwAQu4S1BMiddnnq5x1DStMlJtCoHzi9zq8,1060
223
+ test/testkfp_pipeline.py,sha256=WceFrCp-avHI7PcwIvnv7Kgs2xK3oQqU6sjaonGamg8,622
224
+ test/local/CRUD/test_artifacts.py,sha256=Y3J_C7SDRSsQd2SGIZjPIOvyTL92B1sTFrUONG3YG0Y,2968
225
+ test/local/CRUD/test_dataitems.py,sha256=LQqTzI59uwTGy4zoq8jL0yWVe2W9vXlatkgDU9aB6xg,2968
226
+ test/local/CRUD/test_models.py,sha256=msosbZuRwIMbZtmi3ZaOva4TjQ4lrzkNu9AguIFhrSo,2929
227
+ test/local/imports/test_imports.py,sha256=W-YugO0rpJwvtWp57MXaXfEmE-f5iWuCiLY-n0ZU4z8,1271
228
+ digitalhub-0.8.0b4.dist-info/LICENSE.txt,sha256=_yVOtnbW7Ss28mp058UEEc1X4Rgj8-kQBP_kj8_Sc88,11585
229
+ digitalhub-0.8.0b4.dist-info/METADATA,sha256=KKOt3Vvmq4HBREiREDJmOhKpQoCyEiLh7VESm7KHWQY,15288
230
+ digitalhub-0.8.0b4.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
231
+ digitalhub-0.8.0b4.dist-info/top_level.txt,sha256=ae9pDfCF27ZoaVAxuBKONMP0lm5P-N_I-e-no1WlvD8,16
232
+ digitalhub-0.8.0b4.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (75.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -0,0 +1,96 @@
1
+ """
2
+ Unit tests for the entity Artifact
3
+ """
4
+
5
+ import digitalhub as dh
6
+ from digitalhub.entities.artifact._base.entity import Artifact
7
+
8
+
9
+ class TestArtifactCRUD:
10
+ def create_test_dicts(self):
11
+ names = ["test1", "test2", "test3", "test4"]
12
+ uuids = [
13
+ "d150bcca-bb64-451d-8455-dff862254b95",
14
+ "31acdd2d-0c41-428c-b68b-1b133da9e97b",
15
+ "b4a3dfdc-b917-44c4-9a29-613dcf734244",
16
+ "2618d9c4-cd61-440f-aebb-7e5761709f3b",
17
+ ]
18
+ paths = [
19
+ "./data/test.csv",
20
+ "s3://bucket/key.csv",
21
+ "sql://database/schema/table",
22
+ "https://url.com/file.csv",
23
+ ]
24
+ kind = ["artifact", "artifact", "artifact", "artifact"]
25
+
26
+ dicts = []
27
+ for i in range(len(names)):
28
+ dicts.append({"name": names[i], "uuid": uuids[i], "path": paths[i], "kind": kind[i]})
29
+
30
+ return dicts
31
+
32
+ def test_create_delete(self):
33
+ dicts = self.create_test_dicts()
34
+ p = dh.get_or_create_project("test", local=True)
35
+ # Create and delete artifacts
36
+ for i in dicts:
37
+ d = dh.new_artifact(p.name, **i)
38
+ dh.delete_artifact(d.key)
39
+ d = dh.new_artifact(p.name, **i)
40
+ dh.delete_artifact(d.name, project=p.name, entity_id=d.id)
41
+ d = p.new_artifact(**i)
42
+ p.delete_artifact(d.key)
43
+
44
+ assert dh.list_artifacts(p.name) == []
45
+ dh.delete_project("test", local=True, clean_context=True)
46
+
47
+ def test_list(self):
48
+ dicts = self.create_test_dicts()
49
+ p = dh.get_or_create_project("test", local=True)
50
+
51
+ assert dh.list_artifacts(p.name) == []
52
+
53
+ for i in dicts:
54
+ dh.new_artifact(p.name, **i)
55
+
56
+ # List artifacts
57
+ l_obj = dh.list_artifacts(p.name)
58
+ assert isinstance(l_obj, list)
59
+ assert len(l_obj) == 4
60
+ for i in l_obj:
61
+ assert isinstance(i, Artifact)
62
+
63
+ # delete listed objects
64
+ for obj in l_obj:
65
+ dh.delete_artifact(obj.key)
66
+
67
+ assert len(dh.list_artifacts(p.name)) == 0
68
+
69
+ dh.delete_project("test", clean_context=True, local=True)
70
+
71
+ def test_get(self):
72
+ dicts = self.create_test_dicts()
73
+ p = dh.get_or_create_project("test", local=True)
74
+
75
+ for i in dicts:
76
+ o1 = dh.new_artifact(p.name, **i)
77
+ assert isinstance(o1, Artifact)
78
+
79
+ # Get by name and id
80
+ o2 = dh.get_artifact(o1.name, project=p.name, entity_id=o1.id)
81
+ assert isinstance(o2, Artifact)
82
+ assert o1.id == o2.id
83
+
84
+ # Get by key
85
+ o3 = dh.get_artifact(o1.key)
86
+ assert isinstance(o3, Artifact)
87
+ assert o1.id == o3.id
88
+
89
+ # delete listed objects
90
+ l_obj = dh.list_artifacts(p.name)
91
+ for obj in l_obj:
92
+ dh.delete_artifact(obj.key)
93
+
94
+ assert len(dh.list_artifacts(p.name)) == 0
95
+
96
+ dh.delete_project("test", clean_context=True, local=True)
@@ -0,0 +1,96 @@
1
+ """
2
+ Unit tests for the entity Dataitem
3
+ """
4
+
5
+ import digitalhub as dh
6
+ from digitalhub.entities.dataitem._base.entity import Dataitem
7
+
8
+
9
+ class TestDataitemCRUD:
10
+ def create_test_dicts(self):
11
+ names = ["test1", "test2", "test3", "test4"]
12
+ uuids = [
13
+ "d150bcca-bb64-451d-8455-dff862254b95",
14
+ "31acdd2d-0c41-428c-b68b-1b133da9e97b",
15
+ "b4a3dfdc-b917-44c4-9a29-613dcf734244",
16
+ "2618d9c4-cd61-440f-aebb-7e5761709f3b",
17
+ ]
18
+ paths = [
19
+ "./data/test.csv",
20
+ "s3://bucket/key.csv",
21
+ "sql://database/schema/table",
22
+ "https://url.com/file.csv",
23
+ ]
24
+ kind = ["dataitem", "dataitem", "dataitem", "dataitem"]
25
+
26
+ dicts = []
27
+ for i in range(len(names)):
28
+ dicts.append({"name": names[i], "uuid": uuids[i], "path": paths[i], "kind": kind[i]})
29
+
30
+ return dicts
31
+
32
+ def test_create_delete(self):
33
+ dicts = self.create_test_dicts()
34
+ p = dh.get_or_create_project("test", local=True)
35
+ # Create and delete dataitems
36
+ for i in dicts:
37
+ d = dh.new_dataitem(p.name, **i)
38
+ dh.delete_dataitem(d.key)
39
+ d = dh.new_dataitem(p.name, **i)
40
+ dh.delete_dataitem(d.name, project=p.name, entity_id=d.id)
41
+ d = p.new_dataitem(**i)
42
+ p.delete_dataitem(d.key)
43
+
44
+ assert dh.list_dataitems(p.name) == []
45
+ dh.delete_project("test", local=True, clean_context=True)
46
+
47
+ def test_list(self):
48
+ dicts = self.create_test_dicts()
49
+ p = dh.get_or_create_project("test", local=True)
50
+
51
+ assert dh.list_dataitems(p.name) == []
52
+
53
+ for i in dicts:
54
+ dh.new_dataitem(p.name, **i)
55
+
56
+ # List dataitems
57
+ l_obj = dh.list_dataitems(p.name)
58
+ assert isinstance(l_obj, list)
59
+ assert len(l_obj) == 4
60
+ for i in l_obj:
61
+ assert isinstance(i, Dataitem)
62
+
63
+ # delete listed objects
64
+ for obj in l_obj:
65
+ dh.delete_dataitem(obj.key)
66
+
67
+ assert len(dh.list_dataitems(p.name)) == 0
68
+
69
+ dh.delete_project("test", clean_context=True, local=True)
70
+
71
+ def test_get(self):
72
+ dicts = self.create_test_dicts()
73
+ p = dh.get_or_create_project("test", local=True)
74
+
75
+ for i in dicts:
76
+ o1 = dh.new_dataitem(p.name, **i)
77
+ assert isinstance(o1, Dataitem)
78
+
79
+ # Get by name and id
80
+ o2 = dh.get_dataitem(o1.name, project=p.name, entity_id=o1.id)
81
+ assert isinstance(o2, Dataitem)
82
+ assert o1.id == o2.id
83
+
84
+ # Get by key
85
+ o3 = dh.get_dataitem(o1.key)
86
+ assert isinstance(o3, Dataitem)
87
+ assert o1.id == o3.id
88
+
89
+ # delete listed objects
90
+ l_obj = dh.list_dataitems(p.name)
91
+ for obj in l_obj:
92
+ dh.delete_dataitem(obj.key)
93
+
94
+ assert len(dh.list_dataitems(p.name)) == 0
95
+
96
+ dh.delete_project("test", clean_context=True, local=True)