digitalhub 0.11.0b3__py3-none-any.whl → 0.11.0b5__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.

@@ -56,6 +56,7 @@ class State(Enum):
56
56
  STOPPED = "STOPPED"
57
57
  SUCCESS = "SUCCESS"
58
58
  UNKNOWN = "UNKNOWN"
59
+ UPLOADING = "UPLOADING"
59
60
 
60
61
 
61
62
  class ApiCategories(Enum):
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  import typing
4
4
  from typing import Any
5
5
 
6
- from digitalhub.entities._commons.enums import ApiCategories, BackendOperations, Relationship
6
+ from digitalhub.entities._commons.enums import ApiCategories, BackendOperations, Relationship, State
7
7
  from digitalhub.entities._processors.utils import (
8
8
  get_context_from_identifier,
9
9
  get_context_from_project,
@@ -120,7 +120,25 @@ class ContextEntityOperationsProcessor:
120
120
 
121
121
  new_obj: MaterialEntity = self._create_context_entity(context, obj.ENTITY_TYPE, obj.to_dict())
122
122
  new_obj = factory.build_entity_from_dict(new_obj)
123
- new_obj.upload(source)
123
+
124
+ new_obj.status.state = State.UPLOADING.value
125
+ new_obj = self._update_material_entity(new_obj)
126
+
127
+ # Handle file upload
128
+ try:
129
+ new_obj.upload(source)
130
+ uploaded = True
131
+ except Exception:
132
+ uploaded = False
133
+
134
+ # Update status after upload
135
+ if uploaded:
136
+ new_obj.status.state = State.READY.value
137
+ new_obj = self._update_material_entity(new_obj)
138
+ else:
139
+ new_obj.status.state = State.ERROR.value
140
+ new_obj = self._update_material_entity(new_obj)
141
+
124
142
  return new_obj
125
143
 
126
144
  def _read_context_entity(
@@ -554,6 +572,30 @@ class ContextEntityOperationsProcessor:
554
572
  objects.append(entity)
555
573
  return objects
556
574
 
575
+ def _update_material_entity(
576
+ self,
577
+ new_obj: MaterialEntity,
578
+ ) -> dict:
579
+ """
580
+ Update material object shortcut.
581
+
582
+ Parameters
583
+ ----------
584
+ new_obj : MaterialEntity
585
+ Object instance.
586
+
587
+ Returns
588
+ -------
589
+ dict
590
+ Response from backend.
591
+ """
592
+ return self.update_context_entity(
593
+ new_obj.project,
594
+ new_obj.ENTITY_TYPE,
595
+ new_obj.id,
596
+ new_obj.to_dict(),
597
+ )
598
+
557
599
  def _update_context_entity(
558
600
  self,
559
601
  context: Context,
@@ -4,7 +4,7 @@ from typing import Optional
4
4
 
5
5
  from pydantic import BaseModel
6
6
 
7
- _DEFAULT_FILE_STORE = "s3://datalake"
7
+ _DEFAULT_FILES_STORE = "s3://datalake"
8
8
 
9
9
 
10
10
  class ProfileConfig(BaseModel):
@@ -12,7 +12,7 @@ class ProfileConfig(BaseModel):
12
12
  Configuration profiles.
13
13
  """
14
14
 
15
- default_files_store: Optional[str] = _DEFAULT_FILE_STORE
15
+ default_files_store: Optional[str] = _DEFAULT_FILES_STORE
16
16
 
17
17
  def to_dict(self) -> dict:
18
18
  return self.model_dump(by_alias=True, exclude_none=True)
@@ -20,9 +20,9 @@ class SpecEmptyDir(BaseModel):
20
20
  Spec empty dir model.
21
21
  """
22
22
 
23
- medium: Optional[str] = None
23
+ size_limit: str
24
24
 
25
- size_limit: Optional[str] = "128Mi"
25
+ medium: Optional[str] = None
26
26
 
27
27
 
28
28
  class SpecPVC(BaseModel):
@@ -32,8 +32,6 @@ class SpecPVC(BaseModel):
32
32
 
33
33
  size: str
34
34
 
35
- storage_class: str
36
-
37
35
 
38
36
  class Volume(BaseModel):
39
37
  """
@@ -271,7 +271,7 @@ class ClientDHCoreConfigurator:
271
271
  *self._remove_prefix_dhcore(list_enum(DhcoreEnvVar)),
272
272
  *list_enum(S3StoreEnv),
273
273
  *list_enum(SqlStoreEnv),
274
- ]
274
+ ]
275
275
  for key in keys:
276
276
  if (value := response.get(key.lower())) is not None:
277
277
  configurator.set_credential(key, value)
@@ -293,11 +293,12 @@ class ClientDHCoreConfigurator:
293
293
  """
294
294
  new_list = []
295
295
  for key in keys:
296
- if key in (DhcoreEnvVar.REFRESH_TOKEN.value,
297
- DhcoreEnvVar.ACCESS_TOKEN.value,
298
- DhcoreEnvVar.ISSUER.value,
299
- #DhcoreEnvVar.CLIENT_ID.value,
300
- ):
296
+ if key in (
297
+ DhcoreEnvVar.REFRESH_TOKEN.value,
298
+ DhcoreEnvVar.ACCESS_TOKEN.value,
299
+ DhcoreEnvVar.ISSUER.value,
300
+ DhcoreEnvVar.CLIENT_ID.value,
301
+ ):
301
302
  new_list.append(key.removeprefix("DHCORE_"))
302
303
  else:
303
304
  new_list.append(key)
@@ -344,8 +345,7 @@ class ClientDHCoreConfigurator:
344
345
  Response object.
345
346
  """
346
347
  # Get client id
347
- client_id = configurator.load_var(DhcoreEnvVar.CLIENT_ID.value)
348
- #client_id = self._load_dhcore_oauth_vars(DhcoreEnvVar.CLIENT_ID.value)
348
+ client_id = self._load_dhcore_oauth_vars(DhcoreEnvVar.CLIENT_ID.value)
349
349
  if client_id is None:
350
350
  raise ClientError("Client id not set.")
351
351
 
@@ -8,4 +8,4 @@ class StoreEnv(Enum):
8
8
  Environment variables for data stores.
9
9
  """
10
10
 
11
- DEFAULT_FILES_STORE = "DEFAULT_FILES_STORE"
11
+ DEFAULT_FILES_STORE = "DHCORE_DEFAULT_FILES_STORE"
@@ -8,10 +8,9 @@ class S3StoreEnv(Enum):
8
8
  S3Store environment
9
9
  """
10
10
 
11
- ENDPOINT_URL = "S3_ENDPOINT_URL"
11
+ ENDPOINT_URL = "AWS_ENDPOINT_URL"
12
12
  ACCESS_KEY_ID = "AWS_ACCESS_KEY_ID"
13
13
  SECRET_ACCESS_KEY = "AWS_SECRET_ACCESS_KEY"
14
14
  SESSION_TOKEN = "AWS_SESSION_TOKEN"
15
- BUCKET_NAME = "S3_BUCKET"
16
- REGION = "S3_REGION"
15
+ REGION = "AWS_REGION"
17
16
  SIGNATURE_VERSION = "S3_SIGNATURE_VERSION"
@@ -28,7 +28,7 @@ def get_default_store(project: str) -> str:
28
28
  raise ValueError(
29
29
  "No default store found. "
30
30
  "Please set a default store "
31
- "in your environment (e.g. export DEFAULT_FILES_STORE=) "
31
+ f"in your environment (e.g. export {StoreEnv.DEFAULT_FILES_STORE.value}=) "
32
32
  "or set it in project config."
33
33
  )
34
34
  return store
@@ -8,6 +8,7 @@ from enum import Enum, EnumMeta
8
8
  from pathlib import Path
9
9
  from types import MappingProxyType
10
10
  from typing import Any, Callable
11
+ from warnings import warn
11
12
  from zipfile import ZipFile
12
13
 
13
14
  import numpy as np
@@ -235,3 +236,39 @@ def list_enum(enum: EnumMeta) -> list[Any]:
235
236
  """
236
237
  vals: MappingProxyType[str, Enum] = enum.__members__
237
238
  return [member.value for member in vals.values()]
239
+
240
+
241
+ def carriage_return_warn(string: str) -> None:
242
+ """
243
+ Print a warning message if string contains a carriage return (\r\n).
244
+
245
+ Parameters
246
+ ----------
247
+ string : str
248
+ The string to check.
249
+
250
+ Returns
251
+ -------
252
+ None
253
+ """
254
+ if "\r\n" in string:
255
+ warn("String contains a carriage return. It may not be parsed correctly from remote runtimes.")
256
+
257
+
258
+ def read_source(path: str) -> str:
259
+ """
260
+ Read a file.
261
+
262
+ Parameters
263
+ ----------
264
+ path : Path
265
+ Path to the file.
266
+
267
+ Returns
268
+ -------
269
+ str
270
+ File content.
271
+ """
272
+ text = read_text(path)
273
+ carriage_return_warn(text)
274
+ return encode_string(text)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalhub
3
- Version: 0.11.0b3
3
+ Version: 0.11.0b5
4
4
  Summary: Python SDK for Digitalhub
5
5
  Project-URL: Homepage, https://github.com/scc-digitalhub/digitalhub-sdk
6
6
  Author-email: Fondazione Bruno Kessler <dslab@fbk.eu>, Matteo Martini <mmartini@fbk.eu>
@@ -37,13 +37,13 @@ digitalhub/entities/_base/versioned/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
37
37
  digitalhub/entities/_base/versioned/builder.py,sha256=0niRbqpCnHqBK0hTQxdrtUl43BbJuGXMLVbruhpUUuU,1896
38
38
  digitalhub/entities/_base/versioned/entity.py,sha256=h4YX6smpPjIVW8DOVdRYW-abOcoJ_F0OkozLhLxpjWI,899
39
39
  digitalhub/entities/_commons/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- digitalhub/entities/_commons/enums.py,sha256=GJnVOPCPZKL1f53e7SvKi9n76k4Y4TfMmXcLzr62mg0,1989
40
+ digitalhub/entities/_commons/enums.py,sha256=KUzaKLUz31qW2QTT8lZ3tP6nbjJZvkw_vTzSrH9iS30,2017
41
41
  digitalhub/entities/_commons/metrics.py,sha256=SYb980t9smzJVUWGqE4Ug0t-0wPXYJZ_nJRi_9bhcpw,3405
42
42
  digitalhub/entities/_commons/types.py,sha256=bwK-2iQHL2gdtOPfRcXWBRWqqS1Tic6ywRQsJSocn9c,118
43
43
  digitalhub/entities/_commons/utils.py,sha256=354ZL5wKvijJ2A25pM0xK5JMhgTyZF6urjHZNjosINI,1846
44
44
  digitalhub/entities/_processors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
45
  digitalhub/entities/_processors/base.py,sha256=K_XfwgzsYWKMQ5Que1C_oTwQU67jQJPbA98g26OND58,13440
46
- digitalhub/entities/_processors/context.py,sha256=y7TYLANbH88mFsZdt77B-1NKTzpd_rpN06JceKSjtVc,33385
46
+ digitalhub/entities/_processors/context.py,sha256=D6X9l6ZSnsqi94h93IiyyCLahayUcvYAEXaqlfu6SUA,34445
47
47
  digitalhub/entities/_processors/utils.py,sha256=byhWUv3CfaS-RNPu5FdOdNNCakaKh5zNQFziJvwZdkY,3791
48
48
  digitalhub/entities/artifact/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
49
  digitalhub/entities/artifact/crud.py,sha256=smyZLWfkBEH1pxwFJXhoqfFpLrKeeWTqXmahyPj8QAY,7983
@@ -126,7 +126,7 @@ digitalhub/entities/project/utils.py,sha256=zwm82RaIVLJNYrg70jRnGdsP0IVWW86y3OrH
126
126
  digitalhub/entities/project/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
127
  digitalhub/entities/project/_base/builder.py,sha256=AnD5BNVYBrj8W3rtLUZe5tptJWzt_UKDielogLdEpAE,3776
128
128
  digitalhub/entities/project/_base/entity.py,sha256=LmHXEiSwJmU6Bkqw-OSQF4JwYkiVPDkknOBA3lf53oU,57210
129
- digitalhub/entities/project/_base/models.py,sha256=WFb687zfjl-naEmIj8ujGSS_O2wLE-DSB025Rlu6BXo,372
129
+ digitalhub/entities/project/_base/models.py,sha256=9_MYF468b_mwhHXb7VnIORihM9kJaEWr0-LwUgc9Nmg,374
130
130
  digitalhub/entities/project/_base/spec.py,sha256=742_h3q8yvUGqW63vym9OO8mT4TVMgd9Q5TXXwMh1kU,1669
131
131
  digitalhub/entities/project/_base/status.py,sha256=w1Hj_yFwr_5X7ZH7SmtZRto4qUdCWb010viFfvbqX48,168
132
132
  digitalhub/entities/run/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -148,7 +148,7 @@ digitalhub/entities/task/crud.py,sha256=-tQNtWU7r3nfoVn3WmmrHBvSyHpGqQIa1_3Ges4k
148
148
  digitalhub/entities/task/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
149
  digitalhub/entities/task/_base/builder.py,sha256=21WEbycCR8yaOPcLLcAITaoQ4ZmBNXJXB-Oy0VfSPrg,2358
150
150
  digitalhub/entities/task/_base/entity.py,sha256=g08i-iexrcfuYAOz_O4Nw6tfLEDprTst05b9ZvjJUVc,3524
151
- digitalhub/entities/task/_base/models.py,sha256=Hc-xfLKMGI_TXAunMEgzqiJjp1QE6bqXRxByrfAemlI,5600
151
+ digitalhub/entities/task/_base/models.py,sha256=HmR8dei9ivF0JYbDlICkAIuQlhAD_ilwwE1fymkr-_c,5556
152
152
  digitalhub/entities/task/_base/spec.py,sha256=4JsbQxx05UYjAerSNBCrLSjwMLYeMSqgPIYdkJhH7ik,2500
153
153
  digitalhub/entities/task/_base/status.py,sha256=FCSSQscQ0dHEpXdc5vSrIkTXon9FNNOr0M1KVh2ZVAA,162
154
154
  digitalhub/entities/task/_base/utils.py,sha256=faeAN7r_5q0KWDj1vrbVvFMcCpeMw7fK7vGScSpFZCI,448
@@ -190,7 +190,7 @@ digitalhub/stores/client/_base/params_builder.py,sha256=lCk4WE6DqvGP7-cx0anZEC8G
190
190
  digitalhub/stores/client/dhcore/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
191
  digitalhub/stores/client/dhcore/api_builder.py,sha256=J1kOMw4B4_PZKkEs7GPNcEkd1w-ZyJeB9G1UBZiMbl0,3975
192
192
  digitalhub/stores/client/dhcore/client.py,sha256=SdwtCZ3HsQIxzYGUI3BPbwDEeRbcdpMliQNMWMEV4MA,9890
193
- digitalhub/stores/client/dhcore/configurator.py,sha256=_U4AjS7KKEixOjaRnSfIOIbHVWa00d8BXBwBjh9ptE4,11286
193
+ digitalhub/stores/client/dhcore/configurator.py,sha256=lEZISBH_kKWpbf4z5YX_qQuiQzny_5FP2_iBIgD-5cY,11193
194
194
  digitalhub/stores/client/dhcore/enums.py,sha256=kaVXZTTa2WmsFbcc1CKWNLOM0JtUtcjL-KpspnTOhEE,523
195
195
  digitalhub/stores/client/dhcore/error_parser.py,sha256=GJUUkhp12cvC_LBIrC0teh4msmyb5WFxY2g4WNOkUwM,3305
196
196
  digitalhub/stores/client/dhcore/key_builder.py,sha256=YuSS5tRNRJTYlH14buetFSCU_bLuBBKLqMFO3MQ6r4g,1324
@@ -212,8 +212,8 @@ digitalhub/stores/configurator/ini_module.py,sha256=VfBPFo-EVrFokDk2j9CtzstlKuxT
212
212
  digitalhub/stores/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
213
213
  digitalhub/stores/data/api.py,sha256=R-yBTWpLDrFfcFAju0PJVl0_CDROM8lV2QHKtIMwGrI,543
214
214
  digitalhub/stores/data/builder.py,sha256=fh1JFFos7TpfgWlEWL9WmIEdrpt4t1dQU2Ivq8qE4QE,2291
215
- digitalhub/stores/data/enums.py,sha256=dqDRDnLVK55jiWyg_L-aeTwu3JBo4EcN5epxzdS_ARs,190
216
- digitalhub/stores/data/utils.py,sha256=Fy-OSy9m2LdbN4EF0J_cyhJS7SikzICEdyJv5HwPcI8,933
215
+ digitalhub/stores/data/enums.py,sha256=8KyVhA5jTffomloR9pwR9FX21Dd3e9h2_qFCsVfd9yo,197
216
+ digitalhub/stores/data/utils.py,sha256=-pzN9JOrS_xz6Qc7Q2M7xI7Ksth31DFnF9LZeuvFBig,951
217
217
  digitalhub/stores/data/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
218
218
  digitalhub/stores/data/_base/store.py,sha256=VC1r7b9EIoObuG2DiqtFk2DQDSOgaS9jYL_UmiOTMHg,5241
219
219
  digitalhub/stores/data/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -222,7 +222,7 @@ digitalhub/stores/data/remote/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
222
222
  digitalhub/stores/data/remote/store.py,sha256=9KCFk8Fz1Mr7AK8gEITMh2sMw_jQldNPaVpk5_Oko9w,6098
223
223
  digitalhub/stores/data/s3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
224
224
  digitalhub/stores/data/s3/configurator.py,sha256=QowR285g3FBY6IktTLq0e8Y3XJdXL_eutzfM2mumLY8,3648
225
- digitalhub/stores/data/s3/enums.py,sha256=tmSavz83jr6SBW-Gqn4D21TJpFytxvbtbW63htmZG2A,392
225
+ digitalhub/stores/data/s3/enums.py,sha256=lgqcuCMbO00Ic8thcELifoebUL5Zqn1hb6hkos1v8ps,364
226
226
  digitalhub/stores/data/s3/store.py,sha256=BXyMdDjF_bj2TqAx5RSXrzWKIGE7PMObFSqEp1n-ZPo,19664
227
227
  digitalhub/stores/data/s3/utils.py,sha256=vkgYL9auoyvPtWay50biIfSJ1T4gZT4CmpJdq83L4t8,1650
228
228
  digitalhub/stores/data/sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -244,13 +244,13 @@ digitalhub/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
244
244
  digitalhub/utils/enums.py,sha256=BjsLkUQ15W3KYTRYd0kuut77jTNMDBtTfJbixMReEew,269
245
245
  digitalhub/utils/exceptions.py,sha256=CGiRXx6OvYpjg6d9yEn2OvyfF0FA5n1l8uH6loCDoAY,1233
246
246
  digitalhub/utils/file_utils.py,sha256=qRb0ETNaQKwBlF5iwflDFlkrku5TvJXHHhxgHtAeS9w,5117
247
- digitalhub/utils/generic_utils.py,sha256=8JKmfe1UMYqzrqfptMJZ7x-EvD1-zVNLfBcGoVl8Wcg,4870
247
+ digitalhub/utils/generic_utils.py,sha256=gyFCRvujBreTarv7YCWbQ4WnFBPOeE3pNoaqvGVnrhw,5561
248
248
  digitalhub/utils/git_utils.py,sha256=6vnZoJnL6uMZj0ZtHj3Tf-NYJsw3V9yitTJooSaFYEg,3407
249
249
  digitalhub/utils/io_utils.py,sha256=8jD4Rp_b7LZEpY5JSMxVUowZsnifKnbGpHT5Hijx9-g,3299
250
250
  digitalhub/utils/logger.py,sha256=ml3ne6D8wuRdNZ4F6ywmvWotSxjmZWnmKgNiuHb4R5M,437
251
251
  digitalhub/utils/types.py,sha256=x8zXsbivD8vdaNeNRZLKOPvGbz6d-59nncuvO0FsueY,109
252
252
  digitalhub/utils/uri_utils.py,sha256=wVkA2OcfHG5EcQOr9YxLJzo--VV6sjFjgXDNx-gP94I,4021
253
- digitalhub-0.11.0b3.dist-info/METADATA,sha256=aaqK7yjXNErABxVJh3OMUYtufydkfo0JMljz4MYcp2E,15037
254
- digitalhub-0.11.0b3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
255
- digitalhub-0.11.0b3.dist-info/licenses/LICENSE.txt,sha256=qmrTTXPlgU0kSRlRVbjhlyGs1IXs2QPxo_Y-Mn06J0k,11589
256
- digitalhub-0.11.0b3.dist-info/RECORD,,
253
+ digitalhub-0.11.0b5.dist-info/METADATA,sha256=0mlxcxa7sNYnJt6u6wcf4j2ygQ-JRQJ4QqP1edQQBX8,15037
254
+ digitalhub-0.11.0b5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
255
+ digitalhub-0.11.0b5.dist-info/licenses/LICENSE.txt,sha256=qmrTTXPlgU0kSRlRVbjhlyGs1IXs2QPxo_Y-Mn06J0k,11589
256
+ digitalhub-0.11.0b5.dist-info/RECORD,,