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.

@@ -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
- kwargs["json"] = obj
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
- kwargs["json"] = obj
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 kwargs.get("params") is None:
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 IndexError("No objects found")
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._set_auth_header(kwargs)
260
+ kwargs = self._set_auth(kwargs)
234
261
  return self._make_call(call_type, url, **kwargs)
235
262
 
236
- def _set_auth_header(self, kwargs: dict) -> dict:
263
+ def _set_auth(self, kwargs: dict) -> dict:
237
264
  """
238
- Set the authentication header.
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 header.
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
- kwargs["headers"] = {"Authorization": f"Bearer {self._access_token}"}
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._set_auth_header(kwargs)
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", True):
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]
@@ -25,7 +25,7 @@ class ArtifactBuilder(VersionedBuilder):
25
25
  uuid: str | None = None,
26
26
  description: str | None = None,
27
27
  labels: list[str] | None = None,
28
- embedded: bool = True,
28
+ embedded: bool = False,
29
29
  path: str | None = None,
30
30
  **kwargs,
31
31
  ) -> Artifact:
@@ -29,7 +29,7 @@ def new_artifact(
29
29
  uuid: str | None = None,
30
30
  description: str | None = None,
31
31
  labels: list[str] | None = None,
32
- embedded: bool = True,
32
+ embedded: bool = False,
33
33
  path: str | None = None,
34
34
  **kwargs,
35
35
  ) -> Artifact:
@@ -25,7 +25,7 @@ class DataitemBuilder(VersionedBuilder):
25
25
  uuid: str | None = None,
26
26
  description: str | None = None,
27
27
  labels: list[str] | None = None,
28
- embedded: bool = True,
28
+ embedded: bool = False,
29
29
  path: str | None = None,
30
30
  **kwargs,
31
31
  ) -> Dataitem:
@@ -35,7 +35,7 @@ def new_dataitem(
35
35
  uuid: str | None = None,
36
36
  description: str | None = None,
37
37
  labels: list[str] | None = None,
38
- embedded: bool = True,
38
+ embedded: bool = False,
39
39
  path: str | None = None,
40
40
  **kwargs,
41
41
  ) -> Dataitem:
@@ -25,7 +25,7 @@ class FunctionBuilder(VersionedBuilder, RuntimeEntityBuilder):
25
25
  uuid: str | None = None,
26
26
  description: str | None = None,
27
27
  labels: list[str] | None = None,
28
- embedded: bool = True,
28
+ embedded: bool = False,
29
29
  **kwargs,
30
30
  ) -> Function:
31
31
  """
@@ -25,7 +25,7 @@ def new_function(
25
25
  uuid: str | None = None,
26
26
  description: str | None = None,
27
27
  labels: list[str] | None = None,
28
- embedded: bool = True,
28
+ embedded: bool = False,
29
29
  **kwargs,
30
30
  ) -> Function:
31
31
  """
@@ -25,7 +25,7 @@ class ModelBuilder(VersionedBuilder):
25
25
  uuid: str | None = None,
26
26
  description: str | None = None,
27
27
  labels: list[str] | None = None,
28
- embedded: bool = True,
28
+ embedded: bool = False,
29
29
  path: str | None = None,
30
30
  **kwargs,
31
31
  ) -> Model:
@@ -28,7 +28,7 @@ def new_model(
28
28
  uuid: str | None = None,
29
29
  description: str | None = None,
30
30
  labels: list[str] | None = None,
31
- embedded: bool = True,
31
+ embedded: bool = False,
32
32
  path: str | None = None,
33
33
  **kwargs,
34
34
  ) -> Model:
@@ -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
- if not entity["metadata"]["embedded"]:
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 = True,
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 = True,
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 = True,
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 = True,
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 = True,
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 = True,
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}'")
@@ -27,7 +27,7 @@ def new_secret(
27
27
  uuid: str | None = None,
28
28
  description: str | None = None,
29
29
  labels: list[str] | None = None,
30
- embedded: bool = True,
30
+ embedded: bool = False,
31
31
  secret_value: str | None = None,
32
32
  **kwargs,
33
33
  ) -> 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
 
@@ -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}'")
@@ -25,7 +25,7 @@ class WorkflowBuilder(VersionedBuilder, RuntimeEntityBuilder):
25
25
  uuid: str | None = None,
26
26
  description: str | None = None,
27
27
  labels: list[str] | None = None,
28
- embedded: bool = True,
28
+ embedded: bool = False,
29
29
  **kwargs,
30
30
  ) -> Workflow:
31
31
  """
@@ -26,7 +26,7 @@ def new_workflow(
26
26
  uuid: str | None = None,
27
27
  description: str | None = None,
28
28
  labels: list[str] | None = None,
29
- embedded: bool = True,
29
+ embedded: bool = False,
30
30
  **kwargs,
31
31
  ) -> Workflow:
32
32
  """
@@ -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=yaml.SafeLoader)
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=yaml.SafeLoader))
97
+ data = list(yaml.load_all(in_file, Loader=NoDatesSafeLoader))
62
98
  return data
63
99
 
64
100
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: digitalhub
3
- Version: 0.8.0b10
3
+ Version: 0.8.0b12
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
@@ -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=QeSfKmXKgV1NPrtLrVKtiO6mfpmWxkYIcVdE1vVVCeo,18246
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=VgV-kazrEJt-JGnaTGhxs29JntunQUIrjYGZ-CzkFaQ,16779
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=iOTvMHTaYSdZjznSYGq8rQiQ84EPzd6SZbB3wSpq80U,2189
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=8dw7y5PWN-n3rEa_9CH5dlc-ZhLRDxPAfzCiSIY0_qE,7452
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=01yrqe_sbSmFfxymw4CWrcfTYkghTykOfvFB7ohKQyM,2259
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=m50Alkkkgg2-rXhtBUV06s_8Y2eUttEDLtozYQumeX8,9079
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=uLmpLWqvouTu326TlYBXmBW30ErM8xXgx9bUgHhdGIg,2259
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=DA7AQtNQ2_BIkogiqnf77ihcCCcJLpLnaRJFCwPFyBc,6060
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=WnVRaTBNUfbi7YE0NrhMpewZTKIM-IKhwMft_zey00o,2038
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=4GpyMl6cuFjlYjagDR35RAbX2df2adjsyqrzzH6c7qc,7245
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=JI73GoKay1BuGtf3HUbV0Na3Pz4cC8PnYpXPGzc9QHo,2238
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=o5yibCuGyV7MTaRvnSgM1EKkbdAsKcVSjcZFPuqnOtQ,52674
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=UVWaCiI-dXw0YB5_R2hko1FIa4y7qi8t2HkxEs0-peE,1867
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=ljGuuS-IXt_atULGBi_h5KTAXkKv6vBljT1wzDJiElI,6382
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=LQNRjXcvFxK0jk3GxQRv7u_RbgeZPAEnt8XXz9EbBAg,1721
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=FEGBy-SaEcuV6Gu4Czj_gSRzeNQGorEZZDtz74M5i_s,5995
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=cCs8feQhAcFTrAVrRNb7tkW5q0wFBPpQJ8pzboiQ1_0,2038
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=SfYl6f-vUOophuWJ7zupBDx2lmHDohcjwcUqcz6sGdI,1809
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.0b10.dist-info/LICENSE.txt,sha256=_yVOtnbW7Ss28mp058UEEc1X4Rgj8-kQBP_kj8_Sc88,11585
228
- digitalhub-0.8.0b10.dist-info/METADATA,sha256=lVZCQBAt7LQFzyNoCCUVfKiWCQM7CERnJVMhcLj_SHU,15289
229
- digitalhub-0.8.0b10.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
230
- digitalhub-0.8.0b10.dist-info/top_level.txt,sha256=ae9pDfCF27ZoaVAxuBKONMP0lm5P-N_I-e-no1WlvD8,16
231
- digitalhub-0.8.0b10.dist-info/RECORD,,
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,,