digitalhub 0.8.0b10__py3-none-any.whl → 0.8.0b12__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.
- digitalhub/client/dhcore/client.py +39 -11
- digitalhub/client/local/client.py +1 -1
- digitalhub/entities/_base/runtime_entity/builder.py +11 -0
- digitalhub/entities/artifact/_base/builder.py +1 -1
- digitalhub/entities/artifact/crud.py +1 -1
- digitalhub/entities/dataitem/_base/builder.py +1 -1
- digitalhub/entities/dataitem/crud.py +1 -1
- digitalhub/entities/function/_base/builder.py +1 -1
- digitalhub/entities/function/crud.py +1 -1
- digitalhub/entities/model/_base/builder.py +1 -1
- digitalhub/entities/model/crud.py +1 -1
- digitalhub/entities/project/_base/entity.py +8 -7
- digitalhub/entities/run/_base/builder.py +21 -1
- digitalhub/entities/secret/crud.py +1 -1
- digitalhub/entities/task/_base/builder.py +22 -1
- digitalhub/entities/workflow/_base/builder.py +1 -1
- digitalhub/entities/workflow/crud.py +1 -1
- digitalhub/utils/io_utils.py +38 -2
- {digitalhub-0.8.0b10.dist-info → digitalhub-0.8.0b12.dist-info}/METADATA +1 -1
- {digitalhub-0.8.0b10.dist-info → digitalhub-0.8.0b12.dist-info}/RECORD +23 -23
- {digitalhub-0.8.0b10.dist-info → digitalhub-0.8.0b12.dist-info}/LICENSE.txt +0 -0
- {digitalhub-0.8.0b10.dist-info → digitalhub-0.8.0b12.dist-info}/WHEEL +0 -0
- {digitalhub-0.8.0b10.dist-info → digitalhub-0.8.0b12.dist-info}/top_level.txt +0 -0
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import datetime
|
|
4
|
+
import json
|
|
3
5
|
import os
|
|
4
6
|
import typing
|
|
5
7
|
from urllib.parse import urlparse
|
|
@@ -83,7 +85,10 @@ class ClientDHCore(Client):
|
|
|
83
85
|
dict
|
|
84
86
|
Response object.
|
|
85
87
|
"""
|
|
86
|
-
|
|
88
|
+
if "headers" not in kwargs:
|
|
89
|
+
kwargs["headers"] = {}
|
|
90
|
+
kwargs["headers"]['Content-Type'] = "application/json"
|
|
91
|
+
kwargs["data"] = json.dumps(obj, default=ClientDHCore._json_serialize)
|
|
87
92
|
return self._prepare_call("POST", api, **kwargs)
|
|
88
93
|
|
|
89
94
|
def read_object(self, api: str, **kwargs) -> dict:
|
|
@@ -122,7 +127,10 @@ class ClientDHCore(Client):
|
|
|
122
127
|
dict
|
|
123
128
|
Response object.
|
|
124
129
|
"""
|
|
125
|
-
|
|
130
|
+
if "headers" not in kwargs:
|
|
131
|
+
kwargs["headers"] = {}
|
|
132
|
+
kwargs["headers"]['Content-Type'] = "application/json"
|
|
133
|
+
kwargs["data"] = json.dumps(obj, default=ClientDHCore._json_serialize)
|
|
126
134
|
return self._prepare_call("PUT", api, **kwargs)
|
|
127
135
|
|
|
128
136
|
def delete_object(self, api: str, **kwargs) -> dict:
|
|
@@ -165,7 +173,7 @@ class ClientDHCore(Client):
|
|
|
165
173
|
if kwargs is None:
|
|
166
174
|
kwargs = {}
|
|
167
175
|
|
|
168
|
-
if
|
|
176
|
+
if "params" not in kwargs:
|
|
169
177
|
kwargs["params"] = {}
|
|
170
178
|
|
|
171
179
|
start_page = 0
|
|
@@ -203,12 +211,31 @@ class ClientDHCore(Client):
|
|
|
203
211
|
try:
|
|
204
212
|
return self.list_objects(api, **kwargs)[0]
|
|
205
213
|
except IndexError:
|
|
206
|
-
raise
|
|
214
|
+
raise BackendError("No object found.")
|
|
207
215
|
|
|
208
216
|
##############################
|
|
209
217
|
# Call methods
|
|
210
218
|
##############################
|
|
211
219
|
|
|
220
|
+
@staticmethod
|
|
221
|
+
def _json_serialize(obj: dict) -> dict:
|
|
222
|
+
"""
|
|
223
|
+
JSON datetime to ISO format serializer.
|
|
224
|
+
|
|
225
|
+
Parameters
|
|
226
|
+
----------
|
|
227
|
+
obj : dict
|
|
228
|
+
The object to serialize.
|
|
229
|
+
|
|
230
|
+
Returns
|
|
231
|
+
-------
|
|
232
|
+
dict
|
|
233
|
+
The serialized object.
|
|
234
|
+
"""
|
|
235
|
+
if isinstance(obj, (datetime.datetime, datetime.date)):
|
|
236
|
+
return obj.isoformat()
|
|
237
|
+
raise TypeError ("Type %s not serializable" % type(obj))
|
|
238
|
+
|
|
212
239
|
def _prepare_call(self, call_type: str, api: str, **kwargs) -> dict:
|
|
213
240
|
"""
|
|
214
241
|
Prepare a call to the DHCore API.
|
|
@@ -230,12 +257,12 @@ class ClientDHCore(Client):
|
|
|
230
257
|
if kwargs is None:
|
|
231
258
|
kwargs = {}
|
|
232
259
|
url = self._endpoint_core + api
|
|
233
|
-
kwargs = self.
|
|
260
|
+
kwargs = self._set_auth(kwargs)
|
|
234
261
|
return self._make_call(call_type, url, **kwargs)
|
|
235
262
|
|
|
236
|
-
def
|
|
263
|
+
def _set_auth(self, kwargs: dict) -> dict:
|
|
237
264
|
"""
|
|
238
|
-
Set the authentication
|
|
265
|
+
Set the authentication type.
|
|
239
266
|
|
|
240
267
|
Parameters
|
|
241
268
|
----------
|
|
@@ -245,13 +272,14 @@ class ClientDHCore(Client):
|
|
|
245
272
|
Returns
|
|
246
273
|
-------
|
|
247
274
|
dict
|
|
248
|
-
Keyword arguments with the authentication
|
|
275
|
+
Keyword arguments with the authentication parameters.
|
|
249
276
|
"""
|
|
250
277
|
if self._auth_type == "basic":
|
|
251
278
|
kwargs["auth"] = self._user, self._password
|
|
252
279
|
elif self._auth_type == "oauth2":
|
|
253
|
-
|
|
254
|
-
|
|
280
|
+
if "headers" not in kwargs:
|
|
281
|
+
kwargs["headers"] = {}
|
|
282
|
+
kwargs["headers"]["Authorization"] = f"Bearer {self._access_token}"
|
|
255
283
|
return kwargs
|
|
256
284
|
|
|
257
285
|
def _make_call(self, call_type: str, url: str, refresh_token: bool = True, **kwargs) -> dict:
|
|
@@ -281,7 +309,7 @@ class ClientDHCore(Client):
|
|
|
281
309
|
# Handle token refresh
|
|
282
310
|
if response.status_code in [401] and refresh_token:
|
|
283
311
|
self._get_new_access_token()
|
|
284
|
-
kwargs = self.
|
|
312
|
+
kwargs = self._set_auth(kwargs)
|
|
285
313
|
return self._make_call(call_type, url, refresh_token=False, **kwargs)
|
|
286
314
|
|
|
287
315
|
self._raise_for_error(response)
|
|
@@ -470,7 +470,7 @@ class ClientLocal(Client):
|
|
|
470
470
|
copied = deepcopy(entity)
|
|
471
471
|
|
|
472
472
|
# Remove spec if not embedded
|
|
473
|
-
if not copied.get("metadata", {}).get("embedded",
|
|
473
|
+
if not copied.get("metadata", {}).get("embedded", False):
|
|
474
474
|
copied.pop("spec", None)
|
|
475
475
|
|
|
476
476
|
# Add to project spec
|
|
@@ -93,3 +93,14 @@ class RuntimeEntityBuilder:
|
|
|
93
93
|
"""
|
|
94
94
|
task_kinds = [i["kind"] for i in self.TASKS_KINDS]
|
|
95
95
|
return [self.EXECUTABLE_KIND, self.RUN_KIND, *task_kinds]
|
|
96
|
+
|
|
97
|
+
def get_all_actions(self) -> list[str]:
|
|
98
|
+
"""
|
|
99
|
+
Get all actions.
|
|
100
|
+
|
|
101
|
+
Returns
|
|
102
|
+
-------
|
|
103
|
+
list[str]
|
|
104
|
+
All actions.
|
|
105
|
+
"""
|
|
106
|
+
return [i["action"] for i in self.TASKS_KINDS]
|
|
@@ -229,7 +229,8 @@ class Project(Entity):
|
|
|
229
229
|
# Entity types are stored as a list of entities
|
|
230
230
|
for idx, entity in enumerate(obj.get("spec", {}).get(entity_type, [])):
|
|
231
231
|
# Export entity if not embedded is in metadata, else do nothing
|
|
232
|
-
|
|
232
|
+
embedded = entity["metadata"].get("embedded", False)
|
|
233
|
+
if not embedded:
|
|
233
234
|
# Get entity object from backend
|
|
234
235
|
obj_dict: dict = read_entity_api_ctx(entity["key"])
|
|
235
236
|
|
|
@@ -338,7 +339,7 @@ class Project(Entity):
|
|
|
338
339
|
uuid: str | None = None,
|
|
339
340
|
description: str | None = None,
|
|
340
341
|
labels: list[str] | None = None,
|
|
341
|
-
embedded: bool =
|
|
342
|
+
embedded: bool = False,
|
|
342
343
|
path: str | None = None,
|
|
343
344
|
**kwargs,
|
|
344
345
|
) -> Artifact:
|
|
@@ -629,7 +630,7 @@ class Project(Entity):
|
|
|
629
630
|
uuid: str | None = None,
|
|
630
631
|
description: str | None = None,
|
|
631
632
|
labels: list[str] | None = None,
|
|
632
|
-
embedded: bool =
|
|
633
|
+
embedded: bool = False,
|
|
633
634
|
path: str | None = None,
|
|
634
635
|
**kwargs,
|
|
635
636
|
) -> Dataitem:
|
|
@@ -933,7 +934,7 @@ class Project(Entity):
|
|
|
933
934
|
uuid: str | None = None,
|
|
934
935
|
description: str | None = None,
|
|
935
936
|
labels: list[str] | None = None,
|
|
936
|
-
embedded: bool =
|
|
937
|
+
embedded: bool = False,
|
|
937
938
|
path: str | None = None,
|
|
938
939
|
**kwargs,
|
|
939
940
|
) -> Model:
|
|
@@ -1225,7 +1226,7 @@ class Project(Entity):
|
|
|
1225
1226
|
uuid: str | None = None,
|
|
1226
1227
|
description: str | None = None,
|
|
1227
1228
|
labels: list[str] | None = None,
|
|
1228
|
-
embedded: bool =
|
|
1229
|
+
embedded: bool = False,
|
|
1229
1230
|
**kwargs,
|
|
1230
1231
|
) -> Function:
|
|
1231
1232
|
"""
|
|
@@ -1471,7 +1472,7 @@ class Project(Entity):
|
|
|
1471
1472
|
uuid: str | None = None,
|
|
1472
1473
|
description: str | None = None,
|
|
1473
1474
|
labels: list[str] | None = None,
|
|
1474
|
-
embedded: bool =
|
|
1475
|
+
embedded: bool = False,
|
|
1475
1476
|
**kwargs,
|
|
1476
1477
|
) -> Workflow:
|
|
1477
1478
|
"""
|
|
@@ -1716,7 +1717,7 @@ class Project(Entity):
|
|
|
1716
1717
|
uuid: str | None = None,
|
|
1717
1718
|
description: str | None = None,
|
|
1718
1719
|
labels: list[str] | None = None,
|
|
1719
|
-
embedded: bool =
|
|
1720
|
+
embedded: bool = False,
|
|
1720
1721
|
secret_value: str | None = None,
|
|
1721
1722
|
**kwargs,
|
|
1722
1723
|
) -> Secret:
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
|
-
from digitalhub.entities._base.runtime_entity.builder import RuntimeEntityBuilder
|
|
5
|
+
from digitalhub.entities._base.runtime_entity.builder import RuntimeEntityBuilder, EntityError
|
|
6
6
|
from digitalhub.entities._base.unversioned.builder import UnversionedBuilder
|
|
7
7
|
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
8
8
|
|
|
@@ -52,6 +52,9 @@ class RunBuilder(UnversionedBuilder, RuntimeEntityBuilder):
|
|
|
52
52
|
Run
|
|
53
53
|
Object instance.
|
|
54
54
|
"""
|
|
55
|
+
if task is None:
|
|
56
|
+
raise EntityError("Missing task in run spec")
|
|
57
|
+
self._check_kind_validity(task)
|
|
55
58
|
uuid = self.build_uuid(uuid)
|
|
56
59
|
metadata = self.build_metadata(
|
|
57
60
|
project=project,
|
|
@@ -72,3 +75,20 @@ class RunBuilder(UnversionedBuilder, RuntimeEntityBuilder):
|
|
|
72
75
|
spec=spec,
|
|
73
76
|
status=status,
|
|
74
77
|
)
|
|
78
|
+
|
|
79
|
+
def _check_kind_validity(self, task: str) -> None:
|
|
80
|
+
"""
|
|
81
|
+
Check kind validity.
|
|
82
|
+
|
|
83
|
+
Parameters
|
|
84
|
+
----------
|
|
85
|
+
task : str
|
|
86
|
+
Task string.
|
|
87
|
+
|
|
88
|
+
Returns
|
|
89
|
+
-------
|
|
90
|
+
None
|
|
91
|
+
"""
|
|
92
|
+
task_kind = task.split("://")[0]
|
|
93
|
+
if task_kind not in self.get_all_kinds():
|
|
94
|
+
raise EntityError(f"Invalid run '{self.ENTITY_KIND}' for task kind '{task_kind}'")
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
|
-
from digitalhub.entities._base.runtime_entity.builder import RuntimeEntityBuilder
|
|
5
|
+
from digitalhub.entities._base.runtime_entity.builder import RuntimeEntityBuilder, EntityError
|
|
6
6
|
from digitalhub.entities._base.unversioned.builder import UnversionedBuilder
|
|
7
7
|
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
8
8
|
|
|
@@ -49,6 +49,10 @@ class TaskBuilder(UnversionedBuilder, RuntimeEntityBuilder):
|
|
|
49
49
|
Task
|
|
50
50
|
Object instance.
|
|
51
51
|
"""
|
|
52
|
+
if function is None:
|
|
53
|
+
raise EntityError("function must be provided")
|
|
54
|
+
|
|
55
|
+
self._check_kind_validity(function)
|
|
52
56
|
uuid = self.build_uuid(uuid)
|
|
53
57
|
metadata = self.build_metadata(
|
|
54
58
|
project=project,
|
|
@@ -68,3 +72,20 @@ class TaskBuilder(UnversionedBuilder, RuntimeEntityBuilder):
|
|
|
68
72
|
spec=spec,
|
|
69
73
|
status=status,
|
|
70
74
|
)
|
|
75
|
+
|
|
76
|
+
def _check_kind_validity(self, function: str) -> None:
|
|
77
|
+
"""
|
|
78
|
+
Check kind validity.
|
|
79
|
+
|
|
80
|
+
Parameters
|
|
81
|
+
----------
|
|
82
|
+
function : str
|
|
83
|
+
Function string.
|
|
84
|
+
|
|
85
|
+
Returns
|
|
86
|
+
-------
|
|
87
|
+
None
|
|
88
|
+
"""
|
|
89
|
+
function_kind = function.split("://")[0]
|
|
90
|
+
if self.EXECUTABLE_KIND != function_kind:
|
|
91
|
+
raise EntityError(f"Invalid task '{self.ENTITY_KIND}' for function kind '{function_kind}'")
|
digitalhub/utils/io_utils.py
CHANGED
|
@@ -37,6 +37,42 @@ def write_yaml(filepath: str | Path, obj: dict | list[dict]) -> None:
|
|
|
37
37
|
##############################
|
|
38
38
|
|
|
39
39
|
|
|
40
|
+
|
|
41
|
+
class NoDatesSafeLoader(yaml.SafeLoader):
|
|
42
|
+
"""
|
|
43
|
+
Loader implementation to exclude implicit resolvers.
|
|
44
|
+
|
|
45
|
+
Taken from https://stackoverflow.com/a/37958106
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
@classmethod
|
|
49
|
+
def remove_implicit_resolver(cls, tag_to_remove: str) -> None:
|
|
50
|
+
"""
|
|
51
|
+
Remove implicit resolvers for a particular tag
|
|
52
|
+
Takes care not to modify resolvers in super classes.
|
|
53
|
+
We want to load datetimes as strings, not dates, because we
|
|
54
|
+
go on to serialise as json which doesn't have the advanced types
|
|
55
|
+
of yaml, and leads to incompatibilities down the track.
|
|
56
|
+
|
|
57
|
+
Parameters
|
|
58
|
+
----------
|
|
59
|
+
tag_to_remove : str
|
|
60
|
+
The tag to remove
|
|
61
|
+
|
|
62
|
+
Returns
|
|
63
|
+
-------
|
|
64
|
+
None
|
|
65
|
+
"""
|
|
66
|
+
if not 'yaml_implicit_resolvers' in cls.__dict__:
|
|
67
|
+
cls.yaml_implicit_resolvers = cls.yaml_implicit_resolvers.copy()
|
|
68
|
+
|
|
69
|
+
for first_letter, mappings in cls.yaml_implicit_resolvers.items():
|
|
70
|
+
cls.yaml_implicit_resolvers[first_letter] = [(tag, regexp)
|
|
71
|
+
for tag, regexp in mappings
|
|
72
|
+
if tag != tag_to_remove]
|
|
73
|
+
|
|
74
|
+
NoDatesSafeLoader.remove_implicit_resolver('tag:yaml.org,2002:timestamp')
|
|
75
|
+
|
|
40
76
|
def read_yaml(filepath: str | Path) -> dict | list[dict]:
|
|
41
77
|
"""
|
|
42
78
|
Read a yaml file and return a dict or a list of dict.
|
|
@@ -53,12 +89,12 @@ def read_yaml(filepath: str | Path) -> dict | list[dict]:
|
|
|
53
89
|
"""
|
|
54
90
|
try:
|
|
55
91
|
with open(filepath, "r", encoding="utf-8") as in_file:
|
|
56
|
-
data = yaml.load(in_file, Loader=
|
|
92
|
+
data = yaml.load(in_file, Loader=NoDatesSafeLoader)
|
|
57
93
|
|
|
58
94
|
# If yaml contains multiple documents
|
|
59
95
|
except yaml.composer.ComposerError:
|
|
60
96
|
with open(filepath, "r", encoding="utf-8") as in_file:
|
|
61
|
-
data = list(yaml.load_all(in_file, Loader=
|
|
97
|
+
data = list(yaml.load_all(in_file, Loader=NoDatesSafeLoader))
|
|
62
98
|
return data
|
|
63
99
|
|
|
64
100
|
|
|
@@ -5,12 +5,12 @@ digitalhub/client/builder.py,sha256=83PoMCus4s4nbkoWmvcjW2hIpXbNx74sUW93wgQgbuo,
|
|
|
5
5
|
digitalhub/client/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
digitalhub/client/_base/client.py,sha256=HDv9Vr9DZpoaZVsAT5SSBD9j1oHoVuxA4ILGDl0mBz4,1299
|
|
7
7
|
digitalhub/client/dhcore/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
|
-
digitalhub/client/dhcore/client.py,sha256=
|
|
8
|
+
digitalhub/client/dhcore/client.py,sha256=CyCJwPgMqK3hH3nfnRLkNL9XU_lvcXiw0W7phfA_1d8,19170
|
|
9
9
|
digitalhub/client/dhcore/env.py,sha256=F5A5dPTliwd4UUbpw7hQQ3hoVjZYjcVF8MbniTuTFHE,563
|
|
10
10
|
digitalhub/client/dhcore/models.py,sha256=KiTg5xR8EzI7Xa1pmYmzixabLdnqlnn5kn-IILZDGIw,900
|
|
11
11
|
digitalhub/client/dhcore/utils.py,sha256=TaLjA3LT6heKpPclmufZx-kZKZNOe4OzS_Jtpj2S5wY,2990
|
|
12
12
|
digitalhub/client/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
-
digitalhub/client/local/client.py,sha256=
|
|
13
|
+
digitalhub/client/local/client.py,sha256=VBJJVEqbFFb_fzFogoo1kVyifezt0L7d489UTZxV0x8,16780
|
|
14
14
|
digitalhub/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
15
|
digitalhub/context/api.py,sha256=cZzS_1Kz-wW5iFMtEt3x9dD1PncnAsNnPoIfmoOQ5-g,1781
|
|
16
16
|
digitalhub/context/builder.py,sha256=qpw8T-xho80Njf9wNPTooKkwjWuMT30BeKoQUDWm_yc,2132
|
|
@@ -56,7 +56,7 @@ digitalhub/entities/_base/material/entity.py,sha256=Q_93CCLaULyv8pjg1a-vG0AjKBbp
|
|
|
56
56
|
digitalhub/entities/_base/material/spec.py,sha256=jL1OohnYhUSrdTaFF3Rkw817jIjNY0ewm1wB3tgQ_9c,436
|
|
57
57
|
digitalhub/entities/_base/material/status.py,sha256=5qIfUvcOKGoM2PLloMaWqhRz78Ryap56d8cMQHo8KJo,1102
|
|
58
58
|
digitalhub/entities/_base/runtime_entity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
59
|
-
digitalhub/entities/_base/runtime_entity/builder.py,sha256=
|
|
59
|
+
digitalhub/entities/_base/runtime_entity/builder.py,sha256=vZBftdOrAUICoEJXbqOyozrbMxNRqqoVVxDVjKs2GnI,2414
|
|
60
60
|
digitalhub/entities/_base/unversioned/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
61
|
digitalhub/entities/_base/unversioned/builder.py,sha256=ChEhRXlu1BGNmMHOMu9i9kVMu3uFtwxmgiTO4Il_5oU,1834
|
|
62
62
|
digitalhub/entities/_base/unversioned/entity.py,sha256=Gf00zuWTUeFcRbH4a7vXc12GyNF9TS4Xpcx5sPx98rU,1398
|
|
@@ -64,9 +64,9 @@ digitalhub/entities/_base/versioned/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
|
|
|
64
64
|
digitalhub/entities/_base/versioned/builder.py,sha256=0niRbqpCnHqBK0hTQxdrtUl43BbJuGXMLVbruhpUUuU,1896
|
|
65
65
|
digitalhub/entities/_base/versioned/entity.py,sha256=YMK_fYyGGm0nizZcIZ9tyilvEUpl5HXSdcYqiZEOk3M,1526
|
|
66
66
|
digitalhub/entities/artifact/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
|
-
digitalhub/entities/artifact/crud.py,sha256=
|
|
67
|
+
digitalhub/entities/artifact/crud.py,sha256=Hez44wypkHG4fgrLcQ1sKCnpkQxP61vfgl9F0fYWcQ4,7453
|
|
68
68
|
digitalhub/entities/artifact/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
69
|
-
digitalhub/entities/artifact/_base/builder.py,sha256=
|
|
69
|
+
digitalhub/entities/artifact/_base/builder.py,sha256=Xw6nhgHQVU2HY-KJvkvgvuxjl-L4aH29HRVNurvOAM4,2260
|
|
70
70
|
digitalhub/entities/artifact/_base/entity.py,sha256=WDauPDLE3UTCZTgSxGOr01ZarEqpNUJNVznB7wlA7AU,1111
|
|
71
71
|
digitalhub/entities/artifact/_base/spec.py,sha256=7tDvCQT-NJijpPB1ucT34xn9wSZOB79HOHAix1qAn74,300
|
|
72
72
|
digitalhub/entities/artifact/_base/status.py,sha256=qG5KUOlEHWYZWYqLDvvuZxD5EjsV0SYNNI9aHkQRHlY,188
|
|
@@ -76,9 +76,9 @@ digitalhub/entities/artifact/artifact/entity.py,sha256=hj6UlJMWnWimqizhKGcKpvOpc
|
|
|
76
76
|
digitalhub/entities/artifact/artifact/spec.py,sha256=iX6czlG6W_ZoW86PD2GPc_-xLk6Zb1Vt3fk8Lzjbp3c,593
|
|
77
77
|
digitalhub/entities/artifact/artifact/status.py,sha256=x-lTgO2KkjwzlJnEhIfUtF9rzJ1DTIAd3-Hn6ZeLRqo,305
|
|
78
78
|
digitalhub/entities/dataitem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
79
|
-
digitalhub/entities/dataitem/crud.py,sha256=
|
|
79
|
+
digitalhub/entities/dataitem/crud.py,sha256=Cy_6Wbc7lBgk_Q2qXXA06BJinZRAddqjCZzS6MA8ltw,9080
|
|
80
80
|
digitalhub/entities/dataitem/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
81
|
-
digitalhub/entities/dataitem/_base/builder.py,sha256=
|
|
81
|
+
digitalhub/entities/dataitem/_base/builder.py,sha256=ig6j5uXl75Xqn0o8vUsdcJiXznCdyOn1Ooet_or3zpc,2260
|
|
82
82
|
digitalhub/entities/dataitem/_base/entity.py,sha256=FLpkfhzkaBnmkdE8rKaJS-O3vcOcPwzyHL-xb7HVGA0,1984
|
|
83
83
|
digitalhub/entities/dataitem/_base/spec.py,sha256=7TeEaavMdkXPWBoHMoxagOSt7F4Pn0Bp8qugNwPypSA,300
|
|
84
84
|
digitalhub/entities/dataitem/_base/status.py,sha256=D8eR9FOZoS8VSNkQFDAz8dJkjR7hIq8nFd9qmX19mPc,467
|
|
@@ -99,17 +99,17 @@ digitalhub/entities/dataitem/table/models.py,sha256=wfnDMQ3nAM1XAJAuMj7CvaXfOTVM
|
|
|
99
99
|
digitalhub/entities/dataitem/table/spec.py,sha256=5boOI9zhIvuwIQo0th0E2941_rQEPIRIIYLhySbwbFY,671
|
|
100
100
|
digitalhub/entities/dataitem/table/status.py,sha256=28-_LoSg84x4OwLbRungCHk-ObuobZ5vKuzk1NoBGZA,198
|
|
101
101
|
digitalhub/entities/function/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
102
|
-
digitalhub/entities/function/crud.py,sha256=
|
|
102
|
+
digitalhub/entities/function/crud.py,sha256=qFO9_f9Hmw8IAwUgdtW5Yyt71wAqA6RGQSrexGJpB5g,6061
|
|
103
103
|
digitalhub/entities/function/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
104
|
-
digitalhub/entities/function/_base/builder.py,sha256=
|
|
104
|
+
digitalhub/entities/function/_base/builder.py,sha256=RJoOAdM3kiZ5IcwgQI67lMPVvhskPmxgeG6YJQjstqU,2039
|
|
105
105
|
digitalhub/entities/function/_base/entity.py,sha256=ZahTRWbfjhHf8JIsC5zFuBcj6EJZJYYvFcm0_MxDi1Q,2939
|
|
106
106
|
digitalhub/entities/function/_base/models.py,sha256=6LYyImwnhFxl40mq5nF99mqJ62Mjs3XHUpHVqnSCEkg,2726
|
|
107
107
|
digitalhub/entities/function/_base/spec.py,sha256=SjCtp3JBUTPTLMY_TE8wM1HPKVl7jH_wFEqQXBj1rfo,274
|
|
108
108
|
digitalhub/entities/function/_base/status.py,sha256=N-Z1hw13qV7kWFJLQPaH3rRZ2z7AvZeuWYER95lG344,170
|
|
109
109
|
digitalhub/entities/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
110
|
-
digitalhub/entities/model/crud.py,sha256=
|
|
110
|
+
digitalhub/entities/model/crud.py,sha256=bFqmTC-xt1KWvIO0LWTgihjDK98HupNDGf6tYhhCoa4,7246
|
|
111
111
|
digitalhub/entities/model/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
112
|
-
digitalhub/entities/model/_base/builder.py,sha256=
|
|
112
|
+
digitalhub/entities/model/_base/builder.py,sha256=VN9FzoXBsfwqPyODLobnLxeBVI5rxTLbrZVvpx0NL6w,2239
|
|
113
113
|
digitalhub/entities/model/_base/entity.py,sha256=vcvSIiFkUR3RBPbTV1q8KOkQTj8R9bOqfkqHBgf1rK4,916
|
|
114
114
|
digitalhub/entities/model/_base/spec.py,sha256=eo2FSqIlNi_10VETBdMFAWX177exzb0-oi9EuEPVBbk,1089
|
|
115
115
|
digitalhub/entities/model/_base/status.py,sha256=v-RbusxYeen6BPObVFUvr76k4MKxCdsaF9geSYpKi_8,182
|
|
@@ -139,18 +139,18 @@ digitalhub/entities/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
|
|
|
139
139
|
digitalhub/entities/project/crud.py,sha256=ih3mwEJ7bbD3HG9S-8YMu4UyTJMmIZT-mB1m2FGzLz8,8858
|
|
140
140
|
digitalhub/entities/project/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
141
141
|
digitalhub/entities/project/_base/builder.py,sha256=Fx_p8M75SkE_ssVBvKGu45wwqwqAZ5N6l6UZZj9LSNc,3612
|
|
142
|
-
digitalhub/entities/project/_base/entity.py,sha256=
|
|
142
|
+
digitalhub/entities/project/_base/entity.py,sha256=7lynSFR9sVQJwPJc0qEJLWGg_VxZPYy9Pg2Xc-RIwpI,52727
|
|
143
143
|
digitalhub/entities/project/_base/spec.py,sha256=zRJKFztK7z79LU4spxX7Rykv_1sK6kV9F9Qg95HBc6s,1346
|
|
144
144
|
digitalhub/entities/project/_base/status.py,sha256=w1Hj_yFwr_5X7ZH7SmtZRto4qUdCWb010viFfvbqX48,168
|
|
145
145
|
digitalhub/entities/run/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
146
146
|
digitalhub/entities/run/crud.py,sha256=F-t9pI0NPKt0430SwGMdL7ky2eprXqUf6UUz9GzCgGQ,4369
|
|
147
147
|
digitalhub/entities/run/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
148
|
-
digitalhub/entities/run/_base/builder.py,sha256=
|
|
148
|
+
digitalhub/entities/run/_base/builder.py,sha256=7FpgCUGFr0yCgnUCYuQLLH7_aOZNrByt7fqsWgr5tEg,2427
|
|
149
149
|
digitalhub/entities/run/_base/entity.py,sha256=H0YViqBYxLQRDnqXUNXoUrxnfxd6Q5jJJu0hCeus4ig,7894
|
|
150
150
|
digitalhub/entities/run/_base/spec.py,sha256=XXPZ5Fl5yLA74XCiuaCjdDGIqMIQ7K1a5cVnDXuohec,1388
|
|
151
151
|
digitalhub/entities/run/_base/status.py,sha256=_oqF8AM-N6XGi-xc-xgthdmCpsuI_rGgVaNKgQ4UDJQ,160
|
|
152
152
|
digitalhub/entities/secret/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
153
|
-
digitalhub/entities/secret/crud.py,sha256=
|
|
153
|
+
digitalhub/entities/secret/crud.py,sha256=RjQ2NNxbQoBKSQcqnPRtdKBrbRqfigd2muHKazgenvA,6383
|
|
154
154
|
digitalhub/entities/secret/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
155
155
|
digitalhub/entities/secret/_base/builder.py,sha256=Y3mJIVqWezwPgwQX1XABlnazdj7VnUYTND8yHoga0Lw,2163
|
|
156
156
|
digitalhub/entities/secret/_base/entity.py,sha256=dbd-x4N_kEZIkNDk20zeVCxFDGl4W8gaZaylmNWukLs,2040
|
|
@@ -159,7 +159,7 @@ digitalhub/entities/secret/_base/status.py,sha256=TK9CUKA6eg9qegqgR9t-u1g-vEeFGB
|
|
|
159
159
|
digitalhub/entities/task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
160
160
|
digitalhub/entities/task/crud.py,sha256=_DOnCpuBNPWgk4RP1wvgAxNiEa8Bh3MzHQpkRNyqKjk,4666
|
|
161
161
|
digitalhub/entities/task/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
162
|
-
digitalhub/entities/task/_base/builder.py,sha256=
|
|
162
|
+
digitalhub/entities/task/_base/builder.py,sha256=6UsCo-j5NJH1H_P2CZDYQI78dpuAqNjtwniNKjd_z5g,2320
|
|
163
163
|
digitalhub/entities/task/_base/entity.py,sha256=ihGyXV_MDNUnmNOj5uWSkHA2IR8UAF_jfmFQyTH1DH8,3127
|
|
164
164
|
digitalhub/entities/task/_base/models.py,sha256=Vkequ03zsI1n4L-VGO0vMYDnrhK63rB5I0NshB3s6k4,4254
|
|
165
165
|
digitalhub/entities/task/_base/spec.py,sha256=wc9-i0VguS99WG4jQhYF3s2d_mwwtg_Yrkm8RbDa_vk,1289
|
|
@@ -170,9 +170,9 @@ digitalhub/entities/utils/entity_types.py,sha256=PcAh78WAC9DgwSU6LxGncn0g7Wzb0iZ
|
|
|
170
170
|
digitalhub/entities/utils/state.py,sha256=gKxDy__MEHlz-1SrwICZnFOIqDoI-CBo4ylIBM9TaoQ,609
|
|
171
171
|
digitalhub/entities/utils/utils.py,sha256=_ZGe4xAO8uSwb2EZqH0nhA3nasaLOzj3x4vw8MvoAU0,4488
|
|
172
172
|
digitalhub/entities/workflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
173
|
-
digitalhub/entities/workflow/crud.py,sha256=
|
|
173
|
+
digitalhub/entities/workflow/crud.py,sha256=H_YVglGJYKfxmFQpoWGPguW26jkTqh2PDkUmczEhjKk,5996
|
|
174
174
|
digitalhub/entities/workflow/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
175
|
-
digitalhub/entities/workflow/_base/builder.py,sha256=
|
|
175
|
+
digitalhub/entities/workflow/_base/builder.py,sha256=_s4DSB3ZW3liF6mW-HrTjhbaNN1i0gOLumo1D9lIXaA,2039
|
|
176
176
|
digitalhub/entities/workflow/_base/entity.py,sha256=pqk2KrSwugzbUf0fP6mw75OcOWhmdaX5ouWiX5TO72A,2115
|
|
177
177
|
digitalhub/entities/workflow/_base/spec.py,sha256=UoKOUEqKDFACQwctDWfwhro77m3kvjhLDGOhhfRvEzQ,274
|
|
178
178
|
digitalhub/entities/workflow/_base/status.py,sha256=W0j0CNdu9o2vbk0awpnDrpgwf_fZpgdtct4s0BxRdyk,170
|
|
@@ -211,7 +211,7 @@ digitalhub/utils/exceptions.py,sha256=MjLhgaGSAe0oJXoR-dnEtAh02RYDj3wZ1ZS1SLFUD4
|
|
|
211
211
|
digitalhub/utils/file_utils.py,sha256=Qe71D2b6mOil_Y0Hy2QCJbnIaQOyXvhjFRbJoZXhsGQ,4006
|
|
212
212
|
digitalhub/utils/generic_utils.py,sha256=YHWCCF77JFqgm4TNr3_U2GbX4SjEQjUmxA6i9PkRqG8,3527
|
|
213
213
|
digitalhub/utils/git_utils.py,sha256=aFYL1cpfY-2VnlW7eHmjjjlTLECc5UUUfjb_IQPOY5k,3244
|
|
214
|
-
digitalhub/utils/io_utils.py,sha256=
|
|
214
|
+
digitalhub/utils/io_utils.py,sha256=ggHX10QTM8Glu2IKZ9QAIaCmW7iPvQjgwEe5LRkXzho,3080
|
|
215
215
|
digitalhub/utils/logger.py,sha256=ml3ne6D8wuRdNZ4F6ywmvWotSxjmZWnmKgNiuHb4R5M,437
|
|
216
216
|
digitalhub/utils/s3_utils.py,sha256=oXLzp4K7o45IwK0XOMt4OElDyB09fKRic5WTNA82WUA,1113
|
|
217
217
|
digitalhub/utils/uri_utils.py,sha256=wArWRQ3ygGUNHexGKP3YM-aBE7TyGxhPvfEc7R4T4p4,1144
|
|
@@ -224,8 +224,8 @@ test/local/CRUD/test_artifacts.py,sha256=Y3J_C7SDRSsQd2SGIZjPIOvyTL92B1sTFrUONG3
|
|
|
224
224
|
test/local/CRUD/test_dataitems.py,sha256=LQqTzI59uwTGy4zoq8jL0yWVe2W9vXlatkgDU9aB6xg,2968
|
|
225
225
|
test/local/CRUD/test_models.py,sha256=msosbZuRwIMbZtmi3ZaOva4TjQ4lrzkNu9AguIFhrSo,2929
|
|
226
226
|
test/local/imports/test_imports.py,sha256=W-YugO0rpJwvtWp57MXaXfEmE-f5iWuCiLY-n0ZU4z8,1271
|
|
227
|
-
digitalhub-0.8.
|
|
228
|
-
digitalhub-0.8.
|
|
229
|
-
digitalhub-0.8.
|
|
230
|
-
digitalhub-0.8.
|
|
231
|
-
digitalhub-0.8.
|
|
227
|
+
digitalhub-0.8.0b12.dist-info/LICENSE.txt,sha256=_yVOtnbW7Ss28mp058UEEc1X4Rgj8-kQBP_kj8_Sc88,11585
|
|
228
|
+
digitalhub-0.8.0b12.dist-info/METADATA,sha256=V8RSyRfpcalWbakhY6Twshzxf4oI2Jh8kIo1Krx4c7s,15289
|
|
229
|
+
digitalhub-0.8.0b12.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
|
|
230
|
+
digitalhub-0.8.0b12.dist-info/top_level.txt,sha256=ae9pDfCF27ZoaVAxuBKONMP0lm5P-N_I-e-no1WlvD8,16
|
|
231
|
+
digitalhub-0.8.0b12.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|