digitalhub 0.8.0b11__py3-none-any.whl → 0.8.0b13__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 +3 -3
- digitalhub/entities/project/_base/entity.py +34 -6
- digitalhub/entities/project/crud.py +7 -2
- digitalhub/entities/run/_base/builder.py +1 -1
- digitalhub/entities/task/_base/builder.py +1 -1
- digitalhub/utils/io_utils.py +7 -6
- {digitalhub-0.8.0b11.dist-info → digitalhub-0.8.0b13.dist-info}/METADATA +1 -1
- {digitalhub-0.8.0b11.dist-info → digitalhub-0.8.0b13.dist-info}/RECORD +11 -11
- {digitalhub-0.8.0b11.dist-info → digitalhub-0.8.0b13.dist-info}/LICENSE.txt +0 -0
- {digitalhub-0.8.0b11.dist-info → digitalhub-0.8.0b13.dist-info}/WHEEL +0 -0
- {digitalhub-0.8.0b11.dist-info → digitalhub-0.8.0b13.dist-info}/top_level.txt +0 -0
|
@@ -87,7 +87,7 @@ class ClientDHCore(Client):
|
|
|
87
87
|
"""
|
|
88
88
|
if "headers" not in kwargs:
|
|
89
89
|
kwargs["headers"] = {}
|
|
90
|
-
kwargs["headers"][
|
|
90
|
+
kwargs["headers"]["Content-Type"] = "application/json"
|
|
91
91
|
kwargs["data"] = json.dumps(obj, default=ClientDHCore._json_serialize)
|
|
92
92
|
return self._prepare_call("POST", api, **kwargs)
|
|
93
93
|
|
|
@@ -129,7 +129,7 @@ class ClientDHCore(Client):
|
|
|
129
129
|
"""
|
|
130
130
|
if "headers" not in kwargs:
|
|
131
131
|
kwargs["headers"] = {}
|
|
132
|
-
kwargs["headers"][
|
|
132
|
+
kwargs["headers"]["Content-Type"] = "application/json"
|
|
133
133
|
kwargs["data"] = json.dumps(obj, default=ClientDHCore._json_serialize)
|
|
134
134
|
return self._prepare_call("PUT", api, **kwargs)
|
|
135
135
|
|
|
@@ -234,7 +234,7 @@ class ClientDHCore(Client):
|
|
|
234
234
|
"""
|
|
235
235
|
if isinstance(obj, (datetime.datetime, datetime.date)):
|
|
236
236
|
return obj.isoformat()
|
|
237
|
-
raise TypeError
|
|
237
|
+
raise TypeError("Type %s not serializable" % type(obj))
|
|
238
238
|
|
|
239
239
|
def _prepare_call(self, call_type: str, api: str, **kwargs) -> dict:
|
|
240
240
|
"""
|
|
@@ -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
|
|
|
@@ -243,10 +244,15 @@ class Project(Entity):
|
|
|
243
244
|
# Return updated object
|
|
244
245
|
return obj
|
|
245
246
|
|
|
246
|
-
def _import_entities(self) -> None:
|
|
247
|
+
def _import_entities(self, obj: dict) -> None:
|
|
247
248
|
"""
|
|
248
249
|
Import project entities.
|
|
249
250
|
|
|
251
|
+
Parameters
|
|
252
|
+
----------
|
|
253
|
+
obj : dict
|
|
254
|
+
Project object in dictionary format.
|
|
255
|
+
|
|
250
256
|
Returns
|
|
251
257
|
-------
|
|
252
258
|
None
|
|
@@ -256,10 +262,9 @@ class Project(Entity):
|
|
|
256
262
|
# Cycle over entity types
|
|
257
263
|
for entity_type in entity_types:
|
|
258
264
|
# Entity types are stored as a list of entities
|
|
259
|
-
for entity in
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
ref = entity_metadata.get("ref", None)
|
|
265
|
+
for entity in obj.get("spec", {}).get(entity_type, []):
|
|
266
|
+
embedded = self._is_embedded(entity)
|
|
267
|
+
ref = entity["metadata"].get("ref")
|
|
263
268
|
|
|
264
269
|
# Import entity if not embedded
|
|
265
270
|
if not embedded and ref is not None:
|
|
@@ -278,11 +283,34 @@ class Project(Entity):
|
|
|
278
283
|
|
|
279
284
|
# If entity is embedded, create it and try to save
|
|
280
285
|
elif embedded:
|
|
286
|
+
# It's possible that embedded field in metadata is not shown
|
|
287
|
+
if entity["metadata"].get("embedded") is None:
|
|
288
|
+
entity["metadata"]["embedded"] = True
|
|
289
|
+
|
|
281
290
|
try:
|
|
282
291
|
build_entity_from_dict(entity).save()
|
|
283
292
|
except EntityAlreadyExistsError:
|
|
284
293
|
pass
|
|
285
294
|
|
|
295
|
+
def _is_embedded(self, entity: dict) -> bool:
|
|
296
|
+
"""
|
|
297
|
+
Check if entity is embedded.
|
|
298
|
+
|
|
299
|
+
Parameters
|
|
300
|
+
----------
|
|
301
|
+
entity : dict
|
|
302
|
+
Entity in dictionary format.
|
|
303
|
+
|
|
304
|
+
Returns
|
|
305
|
+
-------
|
|
306
|
+
bool
|
|
307
|
+
True if entity is embedded.
|
|
308
|
+
"""
|
|
309
|
+
metadata_embedded = entity["metadata"].get("embedded", False)
|
|
310
|
+
no_status = entity.get("status", None) is None
|
|
311
|
+
no_spec = entity.get("spec", None) is None
|
|
312
|
+
return metadata_embedded or not (no_status and no_spec)
|
|
313
|
+
|
|
286
314
|
def _get_entity_types(self) -> list[str]:
|
|
287
315
|
"""
|
|
288
316
|
Get entity types.
|
|
@@ -9,7 +9,7 @@ from digitalhub.context.api import delete_context
|
|
|
9
9
|
from digitalhub.entities._base.api_utils import delete_entity_api_base, read_entity_api_base, update_entity_api_base
|
|
10
10
|
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
11
11
|
from digitalhub.factory.api import build_entity_from_dict, build_entity_from_params
|
|
12
|
-
from digitalhub.utils.exceptions import BackendError, EntityError
|
|
12
|
+
from digitalhub.utils.exceptions import BackendError, EntityAlreadyExistsError, EntityError
|
|
13
13
|
from digitalhub.utils.io_utils import read_yaml
|
|
14
14
|
|
|
15
15
|
if typing.TYPE_CHECKING:
|
|
@@ -151,8 +151,13 @@ def import_project(
|
|
|
151
151
|
obj = build_entity_from_dict(dict_obj)
|
|
152
152
|
obj = _setup_project(obj, setup_kwargs)
|
|
153
153
|
|
|
154
|
+
try:
|
|
155
|
+
obj.save()
|
|
156
|
+
except EntityAlreadyExistsError:
|
|
157
|
+
pass
|
|
158
|
+
|
|
154
159
|
# Import related entities
|
|
155
|
-
obj._import_entities()
|
|
160
|
+
obj._import_entities(dict_obj)
|
|
156
161
|
|
|
157
162
|
return obj
|
|
158
163
|
|
|
@@ -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
|
|
5
|
+
from digitalhub.entities._base.runtime_entity.builder import EntityError, RuntimeEntityBuilder
|
|
6
6
|
from digitalhub.entities._base.unversioned.builder import UnversionedBuilder
|
|
7
7
|
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
8
8
|
|
|
@@ -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
|
|
5
|
+
from digitalhub.entities._base.runtime_entity.builder import EntityError, RuntimeEntityBuilder
|
|
6
6
|
from digitalhub.entities._base.unversioned.builder import UnversionedBuilder
|
|
7
7
|
from digitalhub.entities.utils.entity_types import EntityTypes
|
|
8
8
|
|
digitalhub/utils/io_utils.py
CHANGED
|
@@ -37,7 +37,6 @@ def write_yaml(filepath: str | Path, obj: dict | list[dict]) -> None:
|
|
|
37
37
|
##############################
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
|
|
41
40
|
class NoDatesSafeLoader(yaml.SafeLoader):
|
|
42
41
|
"""
|
|
43
42
|
Loader implementation to exclude implicit resolvers.
|
|
@@ -63,15 +62,17 @@ class NoDatesSafeLoader(yaml.SafeLoader):
|
|
|
63
62
|
-------
|
|
64
63
|
None
|
|
65
64
|
"""
|
|
66
|
-
if not
|
|
65
|
+
if not "yaml_implicit_resolvers" in cls.__dict__:
|
|
67
66
|
cls.yaml_implicit_resolvers = cls.yaml_implicit_resolvers.copy()
|
|
68
67
|
|
|
69
68
|
for first_letter, mappings in cls.yaml_implicit_resolvers.items():
|
|
70
|
-
cls.yaml_implicit_resolvers[first_letter] = [
|
|
71
|
-
|
|
72
|
-
|
|
69
|
+
cls.yaml_implicit_resolvers[first_letter] = [
|
|
70
|
+
(tag, regexp) for tag, regexp in mappings if tag != tag_to_remove
|
|
71
|
+
]
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
NoDatesSafeLoader.remove_implicit_resolver("tag:yaml.org,2002:timestamp")
|
|
73
75
|
|
|
74
|
-
NoDatesSafeLoader.remove_implicit_resolver('tag:yaml.org,2002:timestamp')
|
|
75
76
|
|
|
76
77
|
def read_yaml(filepath: str | Path) -> dict | list[dict]:
|
|
77
78
|
"""
|
|
@@ -5,7 +5,7 @@ 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=eh-IQu72Kz4K82uUlMRtatQAQNymvOCMJZZPjB9TdqQ,19169
|
|
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
|
|
@@ -136,16 +136,16 @@ digitalhub/entities/model/sklearn/entity.py,sha256=pPy4mOqOmbkqNkKFUnhrsIQNt2mGN
|
|
|
136
136
|
digitalhub/entities/model/sklearn/spec.py,sha256=Md0aKlfNHZ2fhZbJgp9wZxF0Hu6XIkcniQHCgwoRdkk,301
|
|
137
137
|
digitalhub/entities/model/sklearn/status.py,sha256=eqkPPtERX-6_BjPb_GD8j1FIeavpl43k-dfXZGqzGI0,187
|
|
138
138
|
digitalhub/entities/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
139
|
-
digitalhub/entities/project/crud.py,sha256=
|
|
139
|
+
digitalhub/entities/project/crud.py,sha256=P2IhKR2-YNmiNy0rpu0PG-LKD9nJGKsAahxvhsovmJA,8971
|
|
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=nkPrYyn18xrglWT9WZICJ9SyLmmaupMJOL7ce4qeNKY,53532
|
|
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=T1kRlKHQlKPRepXIFr_hecaOmaS6E49L45WZvE7yCpo,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
|
|
@@ -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=8NXl9Mp3zjHd1E3mawUVjzOcccpcUE18_dkLMhehVBA,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
|
|
@@ -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=Yg24Lt_0aAUaj4Yv5-1iy7VIA0umLxQGW6lkDRWcjrE,2997
|
|
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.0b13.dist-info/LICENSE.txt,sha256=_yVOtnbW7Ss28mp058UEEc1X4Rgj8-kQBP_kj8_Sc88,11585
|
|
228
|
+
digitalhub-0.8.0b13.dist-info/METADATA,sha256=nGqQ6XVBy4IemsnJhaksOtDXpUrHOzcikQJW3TRkhoI,15289
|
|
229
|
+
digitalhub-0.8.0b13.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
|
|
230
|
+
digitalhub-0.8.0b13.dist-info/top_level.txt,sha256=ae9pDfCF27ZoaVAxuBKONMP0lm5P-N_I-e-no1WlvD8,16
|
|
231
|
+
digitalhub-0.8.0b13.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|