digitalhub 0.14.0b4__py3-none-any.whl → 0.14.0b6__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 (42) hide show
  1. digitalhub/__init__.py +1 -1
  2. digitalhub/context/api.py +1 -5
  3. digitalhub/context/builder.py +1 -1
  4. digitalhub/context/context.py +15 -1
  5. digitalhub/entities/_base/material/utils.py +0 -4
  6. digitalhub/entities/_commons/enums.py +1 -0
  7. digitalhub/entities/_commons/utils.py +19 -0
  8. digitalhub/entities/_processors/base/crud.py +1 -1
  9. digitalhub/entities/_processors/base/import_export.py +3 -2
  10. digitalhub/entities/_processors/base/processor.py +3 -3
  11. digitalhub/entities/_processors/context/crud.py +22 -24
  12. digitalhub/entities/_processors/context/import_export.py +2 -2
  13. digitalhub/entities/_processors/context/special_ops.py +10 -10
  14. digitalhub/entities/_processors/utils.py +5 -5
  15. digitalhub/entities/artifact/utils.py +2 -2
  16. digitalhub/entities/dataitem/utils.py +10 -14
  17. digitalhub/entities/model/utils.py +2 -2
  18. digitalhub/entities/project/_base/entity.py +248 -102
  19. digitalhub/entities/task/_base/models.py +10 -1
  20. digitalhub/stores/client/_base/key_builder.py +1 -1
  21. digitalhub/stores/client/builder.py +1 -1
  22. digitalhub/stores/client/dhcore/client.py +19 -303
  23. digitalhub/stores/client/dhcore/configurator.py +1 -1
  24. digitalhub/stores/client/dhcore/header_manager.py +61 -0
  25. digitalhub/stores/client/dhcore/http_handler.py +133 -0
  26. digitalhub/stores/client/dhcore/response_processor.py +102 -0
  27. digitalhub/stores/client/dhcore/utils.py +2 -60
  28. digitalhub/stores/client/local/client.py +2 -2
  29. digitalhub/stores/credentials/api.py +0 -4
  30. digitalhub/stores/credentials/ini_module.py +0 -6
  31. digitalhub/stores/data/builder.py +1 -1
  32. digitalhub/stores/data/s3/store.py +1 -1
  33. digitalhub/stores/data/sql/store.py +6 -6
  34. digitalhub/utils/generic_utils.py +0 -12
  35. digitalhub/utils/git_utils.py +0 -8
  36. digitalhub/utils/io_utils.py +0 -8
  37. digitalhub/utils/store_utils.py +1 -1
  38. {digitalhub-0.14.0b4.dist-info → digitalhub-0.14.0b6.dist-info}/METADATA +1 -1
  39. {digitalhub-0.14.0b4.dist-info → digitalhub-0.14.0b6.dist-info}/RECORD +42 -39
  40. {digitalhub-0.14.0b4.dist-info → digitalhub-0.14.0b6.dist-info}/WHEEL +0 -0
  41. {digitalhub-0.14.0b4.dist-info → digitalhub-0.14.0b6.dist-info}/licenses/AUTHORS +0 -0
  42. {digitalhub-0.14.0b4.dist-info → digitalhub-0.14.0b6.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,102 @@
1
+ # SPDX-FileCopyrightText: © 2025 DSLab - Fondazione Bruno Kessler
2
+ #
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
5
+ from __future__ import annotations
6
+
7
+ import typing
8
+ from warnings import warn
9
+
10
+ from requests.exceptions import JSONDecodeError
11
+
12
+ from digitalhub.stores.client.dhcore.error_parser import ErrorParser
13
+ from digitalhub.utils.exceptions import BackendError, ClientError
14
+
15
+ if typing.TYPE_CHECKING:
16
+ from requests import Response
17
+
18
+
19
+ # API levels that are supported
20
+ MAX_API_LEVEL = 20
21
+ MIN_API_LEVEL = 14
22
+ LIB_VERSION = 14
23
+
24
+
25
+ class ResponseProcessor:
26
+ """
27
+ Processes and validates HTTP responses from DHCore backend.
28
+
29
+ Handles API version validation, error parsing, and response body parsing
30
+ to dictionary. Supports API versions {MIN_API_LEVEL} to {MAX_API_LEVEL}.
31
+ """
32
+
33
+ def __init__(self) -> None:
34
+ self._error_parser = ErrorParser()
35
+
36
+ def process(self, response: Response) -> dict:
37
+ """
38
+ Process HTTP response with validation and parsing.
39
+
40
+ Performs API version compatibility check, error parsing for failed
41
+ responses, and JSON deserialization.
42
+
43
+ Parameters
44
+ ----------
45
+ response : Response
46
+ HTTP response object from backend.
47
+
48
+ Returns
49
+ -------
50
+ dict
51
+ Parsed response body as dictionary.
52
+ """
53
+ self._check_api_version(response)
54
+ self._error_parser.parse(response)
55
+ return self._parse_json(response)
56
+
57
+ def _check_api_version(self, response: Response) -> None:
58
+ """
59
+ Validate DHCore API version compatibility.
60
+
61
+ Checks backend API version against supported range and warns if backend
62
+ version is newer than library. Supported: {MIN_API_LEVEL} to {MAX_API_LEVEL}.
63
+
64
+ Parameters
65
+ ----------
66
+ response : Response
67
+ HTTP response containing X-Api-Level header.
68
+ """
69
+ if "X-Api-Level" not in response.headers:
70
+ return
71
+
72
+ core_api_level = int(response.headers["X-Api-Level"])
73
+ if not (MIN_API_LEVEL <= core_api_level <= MAX_API_LEVEL):
74
+ raise ClientError("Backend API level not supported.")
75
+
76
+ if LIB_VERSION < core_api_level:
77
+ warn("Backend API level is higher than library version. You should consider updating the library.")
78
+
79
+ @staticmethod
80
+ def _parse_json(response: Response) -> dict:
81
+ """
82
+ Parse HTTP response body to dictionary.
83
+
84
+ Converts JSON response to Python dictionary, treating empty responses
85
+ as valid and returning empty dict.
86
+
87
+ Parameters
88
+ ----------
89
+ response : Response
90
+ HTTP response object to parse.
91
+
92
+ Returns
93
+ -------
94
+ dict
95
+ Parsed response body as dictionary, or empty dict if body is empty.
96
+ """
97
+ try:
98
+ return response.json()
99
+ except JSONDecodeError:
100
+ if response.text == "":
101
+ return {}
102
+ raise BackendError("Backend response could not be parsed.")
@@ -4,65 +4,12 @@
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
- import os
8
7
  import typing
9
8
 
10
9
  from digitalhub.stores.client.api import get_client
11
- from digitalhub.stores.credentials.enums import CredsEnvVar
12
10
 
13
11
  if typing.TYPE_CHECKING:
14
- from digitalhub.stores.client.dhcore.client import ClientDHCore
15
-
16
-
17
- def set_dhcore_env(
18
- endpoint: str | None = None,
19
- user: str | None = None,
20
- password: str | None = None,
21
- access_token: str | None = None,
22
- refresh_token: str | None = None,
23
- client_id: str | None = None,
24
- ) -> None:
25
- """
26
- Set DHCore environment variables and reload client configuration.
27
-
28
- Updates environment variables for DHCore configuration and automatically
29
- reloads the client configurator to apply new settings. Overwrites existing
30
- environment variables if already set.
31
-
32
- Parameters
33
- ----------
34
- endpoint : str, optional
35
- DHCore backend endpoint URL.
36
- user : str, optional
37
- Username for basic authentication.
38
- password : str, optional
39
- Password for basic authentication.
40
- access_token : str, optional
41
- OAuth2 access token.
42
- refresh_token : str, optional
43
- OAuth2 refresh token.
44
- client_id : str, optional
45
- OAuth2 client identifier.
46
-
47
- Returns
48
- -------
49
- None
50
- """
51
- if endpoint is not None:
52
- os.environ[CredsEnvVar.DHCORE_ENDPOINT.value] = endpoint
53
- if user is not None:
54
- os.environ[CredsEnvVar.DHCORE_USER.value] = user
55
- if password is not None:
56
- os.environ[CredsEnvVar.DHCORE_PASSWORD.value] = password
57
- if access_token is not None:
58
- os.environ[CredsEnvVar.DHCORE_ACCESS_TOKEN.value] = access_token
59
- if refresh_token is not None:
60
- os.environ[CredsEnvVar.DHCORE_REFRESH_TOKEN.value] = refresh_token
61
- if client_id is not None:
62
- os.environ[CredsEnvVar.DHCORE_CLIENT_ID.value] = client_id
63
-
64
- client: ClientDHCore = get_client(local=False)
65
- client._configurator.load_env_vars()
12
+ pass
66
13
 
67
14
 
68
15
  def refresh_token() -> None:
@@ -72,15 +19,10 @@ def refresh_token() -> None:
72
19
  Uses the refresh token stored in client configuration to obtain a new
73
20
  access token. Requires OAuth2 authentication configuration.
74
21
 
75
- Returns
76
- -------
77
- None
78
22
 
79
23
  Raises
80
24
  ------
81
25
  ClientError
82
26
  If client not properly configured or token refresh fails.
83
27
  """
84
- client: ClientDHCore = get_client(local=False)
85
- client._configurator.check_config()
86
- client._configurator.refresh_credentials()
28
+ get_client(local=False).refresh_token()
@@ -570,9 +570,9 @@ class ClientLocal(Client):
570
570
  ----------
571
571
  error_code : int
572
572
  Error code identifying the type of error.
573
- entity_type : str, optional
573
+ entity_type : str
574
574
  Entity type that caused the error.
575
- entity_id : str, optional
575
+ entity_id : str
576
576
  Entity ID that caused the error.
577
577
 
578
578
  Returns
@@ -15,10 +15,6 @@ def set_current_profile(environment: str) -> None:
15
15
  ----------
16
16
  environment : str
17
17
  Name of the credentials profile to set.
18
-
19
- Returns
20
- -------
21
- None
22
18
  """
23
19
  creds_handler.set_current_profile(environment)
24
20
 
@@ -92,9 +92,6 @@ def write_config(creds: dict, environment: str) -> None:
92
92
  environment : str
93
93
  Name of the credentials profile/environment.
94
94
 
95
- Returns
96
- -------
97
- None
98
95
 
99
96
  Raises
100
97
  ------
@@ -129,9 +126,6 @@ def set_current_profile(environment: str) -> None:
129
126
  environment : str
130
127
  Name of the credentials profile to set as current.
131
128
 
132
- Returns
133
- -------
134
- None
135
129
 
136
130
  Raises
137
131
  ------
@@ -79,7 +79,7 @@ class StoreBuilder:
79
79
  The unique identifier for the store type (e.g., 's3', 'sql').
80
80
  store : Store
81
81
  The store class to register for this type.
82
- configurator : Configurator, optional
82
+ configurator : Configurator
83
83
  The configurator class for store configuration.
84
84
  If None, the store will be instantiated without configuration.
85
85
 
@@ -654,7 +654,7 @@ class S3Store(Store):
654
654
  ----------
655
655
  s3_path : str
656
656
  Path to the S3 bucket (e.g., 's3://bucket/path').
657
- retry : bool, optional
657
+ retry : bool
658
658
  Whether to retry the operation if a ConfigError is raised. Default is True.
659
659
 
660
660
  Returns
@@ -159,9 +159,9 @@ class SqlStore(Store):
159
159
  path : SourcesOrListOfSources
160
160
  The SQL URI path to read from in the format
161
161
  'sql://database/schema/table'. Only single paths are supported.
162
- file_format : str, optional
162
+ file_format : str
163
163
  File format specification (not used for SQL operations).
164
- engine : str, optional
164
+ engine : str
165
165
  DataFrame engine to use (e.g., 'pandas', 'polars').
166
166
  If None, uses the default engine.
167
167
  **kwargs : dict
@@ -209,7 +209,7 @@ class SqlStore(Store):
209
209
  path : str
210
210
  The SQL URI path specifying the database connection
211
211
  in the format 'sql://database/schema/table'.
212
- engine : str, optional
212
+ engine : str
213
213
  DataFrame engine to use for result processing
214
214
  (e.g., 'pandas', 'polars'). If None, uses the default.
215
215
 
@@ -238,7 +238,7 @@ class SqlStore(Store):
238
238
  dst : str
239
239
  The destination SQL URI in the format
240
240
  'sql://database/schema/table' or 'sql://database/table'.
241
- extension : str, optional
241
+ extension : str
242
242
  File extension parameter (not used for SQL operations).
243
243
  **kwargs : dict
244
244
  Additional keyword arguments passed to the DataFrame's
@@ -374,7 +374,7 @@ class SqlStore(Store):
374
374
 
375
375
  Parameters
376
376
  ----------
377
- schema : str, optional
377
+ schema : str
378
378
  The database schema to set in the search path.
379
379
  If provided, sets the PostgreSQL search_path option.
380
380
 
@@ -412,7 +412,7 @@ class SqlStore(Store):
412
412
  retry : bool, default True
413
413
  Whether to attempt a retry with different configuration
414
414
  if the initial connection fails.
415
- schema : str, optional
415
+ schema : str
416
416
  The database schema to configure in the engine.
417
417
 
418
418
  Returns
@@ -95,10 +95,6 @@ def requests_chunk_download(source: str, filename: Path) -> None:
95
95
  URL to download the file from.
96
96
  filename : Path
97
97
  Path where to save the downloaded file.
98
-
99
- Returns
100
- -------
101
- None
102
98
  """
103
99
  with requests.get(source, stream=True) as r:
104
100
  r.raise_for_status()
@@ -117,10 +113,6 @@ def extract_archive(path: Path, filename: Path) -> None:
117
113
  Directory where to extract the archive.
118
114
  filename : Path
119
115
  Path to the zip archive file.
120
-
121
- Returns
122
- -------
123
- None
124
116
  """
125
117
  with ZipFile(filename, "r") as zip_file:
126
118
  zip_file.extractall(path)
@@ -256,10 +248,6 @@ def carriage_return_warn(string: str) -> None:
256
248
  ----------
257
249
  string : str
258
250
  The string to check.
259
-
260
- Returns
261
- -------
262
- None
263
251
  """
264
252
  if "\r\n" in string:
265
253
  warn("String contains a carriage return. It may not be parsed correctly from remote runtimes.")
@@ -47,10 +47,6 @@ def clone_repository(path: Path, url: str) -> None:
47
47
  Path where to save the repository.
48
48
  url : str
49
49
  URL of the repository.
50
-
51
- Returns
52
- -------
53
- None
54
50
  """
55
51
  clean_path(path)
56
52
  checkout_object = get_checkout_object(url)
@@ -85,10 +81,6 @@ def clean_path(path: Path) -> None:
85
81
  ----------
86
82
  path : Path
87
83
  Path to clean.
88
-
89
- Returns
90
- -------
91
- None
92
84
  """
93
85
 
94
86
  shutil.rmtree(path, ignore_errors=True)
@@ -23,10 +23,6 @@ def write_yaml(filepath: str | Path, obj: dict | list[dict]) -> None:
23
23
  The YAML file path to write.
24
24
  obj : dict or list of dict
25
25
  The dict or list of dicts to write.
26
-
27
- Returns
28
- -------
29
- None
30
26
  """
31
27
  if isinstance(obj, list):
32
28
  with open(filepath, "w", encoding="utf-8") as out_file:
@@ -46,10 +42,6 @@ def write_text(filepath: Path, text: str) -> None:
46
42
  The file path to write.
47
43
  text : str
48
44
  The text to write.
49
-
50
- Returns
51
- -------
52
- None
53
45
  """
54
46
  filepath.write_text(text, encoding="utf-8")
55
47
 
@@ -32,7 +32,7 @@ def get_sql_engine(schema: str | None = None) -> Engine:
32
32
 
33
33
  Parameters
34
34
  ----------
35
- schema : str, optional
35
+ schema : str
36
36
  The schema to connect to, by default None.
37
37
 
38
38
  Returns
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalhub
3
- Version: 0.14.0b4
3
+ Version: 0.14.0b6
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 <digitalhub@fbk.eu>, Matteo Martini <mmartini@fbk.eu>
@@ -1,7 +1,7 @@
1
- digitalhub/__init__.py,sha256=6tbbA2AkAzf4lyqTrbxVrw3mVuHje2bZy57NtGevakQ,2475
2
- digitalhub/context/api.py,sha256=eIVsYhneu8bEQiUV15sUNlv5WlZu6zV7Dvidvg_0FfA,1500
3
- digitalhub/context/builder.py,sha256=_L1R2nas5AqF9XjM-amAsPVupiEvFeSZO-o8YraiDdo,2780
4
- digitalhub/context/context.py,sha256=FBP_3WzsboTJQAbzfLSnd1sp3sWXBh9Hj39agPGa6Hk,2477
1
+ digitalhub/__init__.py,sha256=mHXn3Y6sbfXR5KJBTfpB47lY-tHzWB3UwA_xp29LNqQ,2459
2
+ digitalhub/context/api.py,sha256=K0OSJJ8JkmpsaY3tMu8TVKDHXCSjLbZtBhG9mmSop0g,1456
3
+ digitalhub/context/builder.py,sha256=pnOKvzRa6HIIYW86vhQ7W5aKcVb1yYERxwsA6TA8Wu0,2770
4
+ digitalhub/context/context.py,sha256=AC6JF3vz4PGeB4OJT9XIrllrJ3lZ1wA-knuVgA1tWOY,3126
5
5
  digitalhub/entities/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
6
6
  digitalhub/entities/builders.py,sha256=I-RVAFNgnZGmx7Dyz8_n7gfsG-BVgbgfraJal5NWipE,2054
7
7
  digitalhub/entities/_base/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
@@ -21,7 +21,7 @@ digitalhub/entities/_base/material/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcA
21
21
  digitalhub/entities/_base/material/entity.py,sha256=LxeFb0l0_aziGvoWXwhj4heLfvGBtO7ISbFiYZQ2s4o,6718
22
22
  digitalhub/entities/_base/material/spec.py,sha256=7lF_Pv7zGJUAR2ixmmCt-UPnoASgOLxnb9yffqwBVp8,544
23
23
  digitalhub/entities/_base/material/status.py,sha256=vAIb5qti5KxdIPdB9WYmWrCnqwGyUxuF6CpGSpcWxbE,520
24
- digitalhub/entities/_base/material/utils.py,sha256=3KL6geppvAmRRAQR0AjYQ6wTfQ2m59zv0WeRgdVCGGU,3087
24
+ digitalhub/entities/_base/material/utils.py,sha256=TWAXw5EUtDkWJIy_V48U_wFk_bbRgNUuNT-Qx6_tFuQ,3053
25
25
  digitalhub/entities/_base/runtime_entity/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
26
26
  digitalhub/entities/_base/runtime_entity/builder.py,sha256=ZuqUJD1e9m-vYkRnh42u_nMQaTA0awt0meJgi2a2kpw,3716
27
27
  digitalhub/entities/_base/unversioned/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
@@ -31,9 +31,9 @@ digitalhub/entities/_base/versioned/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmc
31
31
  digitalhub/entities/_base/versioned/builder.py,sha256=DkvMdPwyz45Nyk5Mv0IQQG2X69aA0rQmhAq67ZXCM6M,2004
32
32
  digitalhub/entities/_base/versioned/entity.py,sha256=zDZ-t34ibLrPevt_lHmhNt949zuwEezCClHtF6h-Mzg,1010
33
33
  digitalhub/entities/_commons/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
34
- digitalhub/entities/_commons/enums.py,sha256=lXnqFi9MilJNryCMbV4nzoVvQPuL-Cs2Ag8GNICmaj4,1638
34
+ digitalhub/entities/_commons/enums.py,sha256=8bK000bfUfllNhc4qvQB22VdRNl1P6dw4b78CIS4aG0,1662
35
35
  digitalhub/entities/_commons/metrics.py,sha256=eiN5lHmXRaHQbbN3uAOZlj3QXDxkyADoFqyZ40vdpLc,5378
36
- digitalhub/entities/_commons/utils.py,sha256=ImEtYVQxRqyDkkkZpRHuLjKywhsmU0cCBcfrmSbaCVE,3944
36
+ digitalhub/entities/_commons/utils.py,sha256=f9kDvwL5SVg2kB_IFy6Jd757UtEGA7lQBgXvUjCH_FU,4352
37
37
  digitalhub/entities/_constructors/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
38
38
  digitalhub/entities/_constructors/_resources.py,sha256=mCNecH9mk95U_OVCaNzYLbsclnzIShlyWPATL2-eoYw,2014
39
39
  digitalhub/entities/_constructors/metadata.py,sha256=VxZw341nIw92iR_3-o2_y8I7xle1TTBAs1M5hx2eXpo,1699
@@ -43,21 +43,21 @@ digitalhub/entities/_constructors/status.py,sha256=PrnouXDllZxS7t6pzbMohTov8QTne
43
43
  digitalhub/entities/_constructors/uuid.py,sha256=7QhQ9epJAnYLCKUPY6AMXOe72nPT8xZRnNM98p_vTnM,663
44
44
  digitalhub/entities/_processors/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
45
45
  digitalhub/entities/_processors/processors.py,sha256=V-pA5iY6POAfiidZ7fFqfIQDwvxAIKXe-dEBYtRiAGg,473
46
- digitalhub/entities/_processors/utils.py,sha256=FsSAelbxZ0DrvJNyhRqBaPQPYeWikscfSKY1RQSB6KY,6376
46
+ digitalhub/entities/_processors/utils.py,sha256=Uj_1D5y0TSTlNAxFep8yTGheO2P5X--1Ev4Cl8SxU8I,6326
47
47
  digitalhub/entities/_processors/base/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
48
- digitalhub/entities/_processors/base/crud.py,sha256=hTcyZ8HyEH2PexhZ6nzmXdGGFflul-z1tumBmC5_Jxo,11898
49
- digitalhub/entities/_processors/base/import_export.py,sha256=4gelPKPGpKYfID9T_GCzKnFtMulpja6v-iQudUwsDhE,4096
50
- digitalhub/entities/_processors/base/processor.py,sha256=_qKzlhw80-X-naQLAyAXvXZfrilMU-ak7qXz_Q1QW3o,9407
48
+ digitalhub/entities/_processors/base/crud.py,sha256=4SWf48UA7gfVf6jSHZdhStqcaSc9uRADsoGU7DIGXwI,11888
49
+ digitalhub/entities/_processors/base/import_export.py,sha256=_tTdxyrPVjJY83uEaSTpQAGdRcqcKtY-HU9YcGWq8OM,4228
50
+ digitalhub/entities/_processors/base/processor.py,sha256=9ucnSV1guoR2MhkezwWcvAAMEfINRir54jkRlTcnaEU,9439
51
51
  digitalhub/entities/_processors/base/special_ops.py,sha256=iM2z7yl-XILnkYMe0ikIzSslgLGNWpK9sxWsq9Sr3lk,3279
52
52
  digitalhub/entities/_processors/context/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
53
- digitalhub/entities/_processors/context/crud.py,sha256=BXBKqOawRhnpk5O_xcC2MN5GHqIlZ1qgUVXhmNLv5T4,20515
54
- digitalhub/entities/_processors/context/import_export.py,sha256=rLc-K5dnMXbywuCavdkEXWQMjLP0IT5XuZivtGD5NJc,8649
53
+ digitalhub/entities/_processors/context/crud.py,sha256=MvzNcnUjaIwIlWDRENX_3UnQWYUpkzrQEWE5x11jZkw,20279
54
+ digitalhub/entities/_processors/context/import_export.py,sha256=ihb6spKHwSSTtq2x1-X6iqLxMAP_RIvexekqiM-Mr2o,8629
55
55
  digitalhub/entities/_processors/context/material.py,sha256=GgUxj2duYfCF5Eb_YdWgMuCVLctfyDSM_3dj5wh9IcA,4059
56
56
  digitalhub/entities/_processors/context/processor.py,sha256=bUD0CKO1dPnym5SItSc6fldSfEJc_VM6RUNLvAakUnA,12167
57
- digitalhub/entities/_processors/context/special_ops.py,sha256=Z03Ws1pxwP2OYc-0oXUO9C805pv8apiuKMe05PXirr8,14748
57
+ digitalhub/entities/_processors/context/special_ops.py,sha256=2ARNRXqmaCslBE_mcZIgAbij4NMBlIyULRluq1SwYaY,14648
58
58
  digitalhub/entities/artifact/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
59
59
  digitalhub/entities/artifact/crud.py,sha256=X5AVGBsW9quV2Z1KzpxfYnoN7J8iKNRrOCnBIPGlskA,8979
60
- digitalhub/entities/artifact/utils.py,sha256=nBBdTe3XW4ZJQnO9WennEUMJOovYMFkz3esK8IWkdMw,2434
60
+ digitalhub/entities/artifact/utils.py,sha256=sgdq0l0ZYL0jSdSexb4EOhW5vnWq8AILXqsKtGBVBfQ,2414
61
61
  digitalhub/entities/artifact/_base/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
62
62
  digitalhub/entities/artifact/_base/builder.py,sha256=IByi2iCzA68WdYQ4BXLUEByamp1cnlcjlphnryWXR3c,2364
63
63
  digitalhub/entities/artifact/_base/entity.py,sha256=i6bpYvbYxtjuQY-qpoqemLq42jbqKuArEYfJJvxfzeI,1215
@@ -70,7 +70,7 @@ digitalhub/entities/artifact/artifact/spec.py,sha256=BAbL-7XtOF_tDnLizR39YLmKAdR
70
70
  digitalhub/entities/artifact/artifact/status.py,sha256=Aela65491_2NqqZG2OCvTsY9Gfverb1ng-_sYttcUI8,413
71
71
  digitalhub/entities/dataitem/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
72
72
  digitalhub/entities/dataitem/crud.py,sha256=SUFCI649rd8KHIFgzyebpnLbe7y3PTaBtO_jtxShobA,9899
73
- digitalhub/entities/dataitem/utils.py,sha256=RYZAs4fNfi2sEv-sRWhsKPsLLz2LmUofsOeBE11diFE,7703
73
+ digitalhub/entities/dataitem/utils.py,sha256=d9CyvazQhhPXgYn6PFvVzQTdzXJCZvRgyHEpPN3fIKE,7569
74
74
  digitalhub/entities/dataitem/_base/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
75
75
  digitalhub/entities/dataitem/_base/builder.py,sha256=uX5vxDJ8GxVk49NW9mHBKYhinJnfzLBObI7zy4J0TB0,2364
76
76
  digitalhub/entities/dataitem/_base/entity.py,sha256=6GrqOY-S2p_sljzUdWgl5o_DlAbSbjIyCp7JJh__U_U,1053
@@ -102,7 +102,7 @@ digitalhub/entities/function/_base/spec.py,sha256=qDiqfe6zSFYYH-kXPmm4R_LId985V2
102
102
  digitalhub/entities/function/_base/status.py,sha256=wjCUr2HoQQUL4fwTjvPE8eubkCeVxbe2VV8zs0BJ5RY,278
103
103
  digitalhub/entities/model/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
104
104
  digitalhub/entities/model/crud.py,sha256=ng-Cc6mt0swrCLAtNGZOc31ok3EZeqgt6BRrIiSb0Yw,8757
105
- digitalhub/entities/model/utils.py,sha256=7YQXr2TbvRAGVrn5okREMWDJQ-Y4PcDu_EyxfTKh6Ck,2431
105
+ digitalhub/entities/model/utils.py,sha256=uiMO4oP9zDAREnlv4RUi6Pqhpx5wsiTWvHLwUxqFsTI,2411
106
106
  digitalhub/entities/model/_base/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
107
107
  digitalhub/entities/model/_base/builder.py,sha256=6kG8-NNIup2B2GE5ABg9QwV3LoyThnw4KEYABm9kxPg,2343
108
108
  digitalhub/entities/model/_base/entity.py,sha256=mvTHRwRT2AzcJTE3eNYExQXxAITzBUFfSBOCFe6yqTk,6390
@@ -135,7 +135,7 @@ digitalhub/entities/project/crud.py,sha256=TQR8DqLeNP0dQ5goc9SVa6sJt4DkcG2AEcDSe
135
135
  digitalhub/entities/project/utils.py,sha256=-w09JUVOETxpfL0BXPv_vzV0gfxUlrSZKwAGjb8zDWI,1119
136
136
  digitalhub/entities/project/_base/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
137
137
  digitalhub/entities/project/_base/builder.py,sha256=PGOqTHUsCn5CtnJusnT6U2zytxKpSNBBsFnXBgBUe2k,3884
138
- digitalhub/entities/project/_base/entity.py,sha256=tn63PndbDvIV-zg_R2ELa0iUjVAQsx5G11dXOfIBv8c,58744
138
+ digitalhub/entities/project/_base/entity.py,sha256=YLUQKnxEy7D3T0fSP7C9c6OGhTkzVGrTH9TMIWja0vA,62140
139
139
  digitalhub/entities/project/_base/models.py,sha256=_TvjQgMd6EwzGIks9dNszBNMT5BHTwtLce-TDTObSoY,482
140
140
  digitalhub/entities/project/_base/spec.py,sha256=AHW9qBJvjdhyUOu2V9Fu7CCzcjWawHsFfqNtN9Zhqrk,1777
141
141
  digitalhub/entities/project/_base/status.py,sha256=afEb5CGeovM5VLPsxzP4k2QGEZjhhGkpEmVlK0Fh7sE,276
@@ -158,7 +158,7 @@ digitalhub/entities/task/crud.py,sha256=58ax3iEx_HWkig56O_EyNoEF5lZLY4HQGds668k8
158
158
  digitalhub/entities/task/_base/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
159
159
  digitalhub/entities/task/_base/builder.py,sha256=Gutv1Bh51zTtnmXt_HJxWvHgAPycDMNh8zJ7duXThTI,2420
160
160
  digitalhub/entities/task/_base/entity.py,sha256=v2JAVp8S3tao0Wyqo_xGkXMTnGr994eaXV1_rZTL20w,3662
161
- digitalhub/entities/task/_base/models.py,sha256=LGS_BmJG95m4WW1jsGHfjWjIbCBcQIArRwKfVYL4ro8,5851
161
+ digitalhub/entities/task/_base/models.py,sha256=Y7f-y5RLQeef0k7DcrByycf2YHchqX2l4pZdVTO9Lbs,6020
162
162
  digitalhub/entities/task/_base/spec.py,sha256=TQ7IXW_QnTGxFvVDk0M22DlaqMWm9Klq1Yk6LGBAhEM,2608
163
163
  digitalhub/entities/task/_base/status.py,sha256=9TazT1vKJT8NRvh__ymKJ89CUUcf7UhnLREcvudrFTU,270
164
164
  digitalhub/entities/trigger/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
@@ -198,38 +198,41 @@ digitalhub/runtimes/enums.py,sha256=MCaeTOD3Bd6cdXnOlbklmRJ6rBHctJ-iJFiCrRM4Sx0,
198
198
  digitalhub/stores/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
199
199
  digitalhub/stores/client/__init__.py,sha256=0NWCFXlcnb45II98tUAGtvXUNVMXsIbFePmo7G0ltn8,456
200
200
  digitalhub/stores/client/api.py,sha256=kVNu05LuHfJ8ixnl1qzl3Z0guDwl6vCWJohqVXHCsFA,904
201
- digitalhub/stores/client/builder.py,sha256=N5oFQ5BZR6YTZKQYW5jWBBqBz5AxS8TALj30Jv_zuFw,1405
201
+ digitalhub/stores/client/builder.py,sha256=15B55XUYSHrCHoqfHjyuvHeVkcw-Eg1Ao8_gwYfBLyE,1395
202
202
  digitalhub/stores/client/_base/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
203
203
  digitalhub/stores/client/_base/api_builder.py,sha256=hh30o2MfEY91VzhQyqP3gkBClC8FYYPNyTmBA99cqqA,786
204
204
  digitalhub/stores/client/_base/client.py,sha256=E33xRleSQoWQ271wTPnmDzpD50m64Nwvo2aTuDt55l4,5797
205
205
  digitalhub/stores/client/_base/enums.py,sha256=9cVRLYApHnleN5mX5lZ3SdGMT7jg68yFmY9Ums08FD0,734
206
- digitalhub/stores/client/_base/key_builder.py,sha256=RRWqKwka6xJAhX2G8RdfjWE0aBrVq05FldER26bqQO4,1906
206
+ digitalhub/stores/client/_base/key_builder.py,sha256=ALOtHWnXb-rjz-vgpQbUT7Dxw3gxzwKcK099RMiZsc0,1896
207
207
  digitalhub/stores/client/_base/params_builder.py,sha256=AYbv13hfVtF8zWL5XGXvbkrTb8Rwln04oOmWO9ny2wA,2265
208
208
  digitalhub/stores/client/dhcore/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
209
209
  digitalhub/stores/client/dhcore/api_builder.py,sha256=AOJn38XGAqTGql3Qo659HNFSYGL6uWbahECRchdczT0,4554
210
- digitalhub/stores/client/dhcore/client.py,sha256=Xt7WppIQARFo986OxoINNLCtgE4XEzmghvq-ppZVAgg,17373
211
- digitalhub/stores/client/dhcore/configurator.py,sha256=Nnc33unCQOZlzqx47K1fTjWWEzLO_sdpBegtXhp3q_U,16143
210
+ digitalhub/stores/client/dhcore/client.py,sha256=_EJuvo_BPSAaBma9iUGywUVZG8j7X54DL1OiDQ5aAgo,8742
211
+ digitalhub/stores/client/dhcore/configurator.py,sha256=OSLtcvdH2-vtLDrQ6NQXDRstRr2dsuuGTaDTORScSac,16133
212
212
  digitalhub/stores/client/dhcore/enums.py,sha256=QpRf7OkoQtUkMix5tp3TXoQXEkAo6sPvlmApxjsF1oI,340
213
213
  digitalhub/stores/client/dhcore/error_parser.py,sha256=lJNRC_rXA1pVpkF-g_lOp5TXOBsTpt6CArSRTVRswiY,4572
214
+ digitalhub/stores/client/dhcore/header_manager.py,sha256=iCDyy1G6ISGWG4r5ptluE0kVZaJgoCwjyjAVpLQFgDA,1774
215
+ digitalhub/stores/client/dhcore/http_handler.py,sha256=wuIKHvcXX3No9hursYFIc2eAxoCel-VENkCZ4eh8V9o,4291
214
216
  digitalhub/stores/client/dhcore/key_builder.py,sha256=wD8kB0LHOvf669pzF8D6ksZ3GJfWmbDYDFbGs3TnaPo,1432
215
217
  digitalhub/stores/client/dhcore/params_builder.py,sha256=1HdElT-cVUOmWsWyy7DNc-a7PVgZnX_tZHTKKQNvGrY,9731
216
- digitalhub/stores/client/dhcore/utils.py,sha256=6r0cBlJVHvOSRMEZhRbRTb8qQANq842twZTQ0D8Gqm4,2541
218
+ digitalhub/stores/client/dhcore/response_processor.py,sha256=1uLqTmuL66KFIThqEp4zT-sgKvkfuZi9EzUhlBd_Au4,3007
219
+ digitalhub/stores/client/dhcore/utils.py,sha256=eMIzocdfliEk0Hbgm7xyQ-gOP0srra627y9JU1Z8uDU,627
217
220
  digitalhub/stores/client/local/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
218
221
  digitalhub/stores/client/local/api_builder.py,sha256=fLzz1B-MdMvrqapn1gecwsJ30dwqZGYvViZobl0mLlA,3565
219
- digitalhub/stores/client/local/client.py,sha256=oRHe2AP3YVzwuBomgI3S0xMPHDDBJDT87AaOXz97ZmA,19335
222
+ digitalhub/stores/client/local/client.py,sha256=IVpIo-3GP38Of3YNyX_JMhzVzz-XdiZIXFAILnLOYqg,19315
220
223
  digitalhub/stores/client/local/enums.py,sha256=J4xf23H2AO8OKYPim2XO143A7j_X6dqfPSm03Sbi0AI,258
221
224
  digitalhub/stores/client/local/key_builder.py,sha256=ijISHvPcMyx591gHlSP1IZdiRrFi0oVh8AqaWe1L_g0,1431
222
225
  digitalhub/stores/client/local/params_builder.py,sha256=Rj7FlqUqIIcFEdxc2PUAgLN1hvtjJNmuwxWlqVCpSSc,3029
223
226
  digitalhub/stores/credentials/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
224
- digitalhub/stores/credentials/api.py,sha256=mwClY8tCG62eAhbwrmK-kzYQzEJ5ZmCW52WmYsQ-004,738
227
+ digitalhub/stores/credentials/api.py,sha256=zbjWg9J14x99VyMCWrVxLXneEcaDCpE1PMO3GJoyQqQ,704
225
228
  digitalhub/stores/credentials/configurator.py,sha256=u28OBeEq6xvvrCW2rZAY019elf6nHn18U5WP2E_sLpM,5213
226
229
  digitalhub/stores/credentials/enums.py,sha256=uRJ6af0ujk3Ki4DXM9rFqBROyhlbf4EYNWml_CSdJL8,1665
227
230
  digitalhub/stores/credentials/handler.py,sha256=DpIcuRRLcxGIZaDqskLl6hduoULRV6GwufLCoFEPPnM,4217
228
- digitalhub/stores/credentials/ini_module.py,sha256=L-ZVGMHtQ75j4Dg2vK9BaS8xaoIABbyADHk3-EQCqiU,3377
231
+ digitalhub/stores/credentials/ini_module.py,sha256=c58dWRB84kKYG3Fd0-YDgAW3eFiTbQ8IoS_KvRlj4Ug,3311
229
232
  digitalhub/stores/credentials/store.py,sha256=pA7G-ho2-_Nw_E-hktt1x2wDbv4YpwcbwK_RnQnsDLI,2145
230
233
  digitalhub/stores/data/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
231
234
  digitalhub/stores/data/api.py,sha256=pzvPseP6MnnW59Jms4JoWxGxloILiEfU5Kw5Tq8WR2A,1739
232
- digitalhub/stores/data/builder.py,sha256=Gg_BmVAy215PJSTDhULW84kS_x1XLCn4n27PrE679S8,4820
235
+ digitalhub/stores/data/builder.py,sha256=C6RWPmGpMnv0adhLvDJDAtx_ZF9YXgszB15I4P2WqZg,4810
233
236
  digitalhub/stores/data/enums.py,sha256=8pO_tUZmKB4BpjW29lQN9rLGPOrJoqDVYJYzzxeDXW4,305
234
237
  digitalhub/stores/data/_base/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
235
238
  digitalhub/stores/data/_base/store.py,sha256=TcHIlQRvOrIrkXwhYEoFfdIgAqVN2cbY67ls7xgjRYM,5690
@@ -239,10 +242,10 @@ digitalhub/stores/data/remote/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q3
239
242
  digitalhub/stores/data/remote/store.py,sha256=3E_MFkUiGDBQFKaCYgX64aLfod7wLCLRuMpS7Yrz6HY,6084
240
243
  digitalhub/stores/data/s3/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
241
244
  digitalhub/stores/data/s3/configurator.py,sha256=ar1hplZIL8TIZMIY3xHyMJSkPosBZY0rAo4AR8QgfyU,4994
242
- digitalhub/stores/data/s3/store.py,sha256=Y-IGoPibRWZIMi3MeG7_gRTA5tZO88EQz3H8jgPhnPw,20673
245
+ digitalhub/stores/data/s3/store.py,sha256=PETojK-KLf6OsI2x42GxVEG8dAKK-lV9lOe9z3M72K8,20663
243
246
  digitalhub/stores/data/sql/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
244
247
  digitalhub/stores/data/sql/configurator.py,sha256=5eCUuZhvtE_oDKsKxht0-TCWmMNkfTowN6f99hOCrKM,3925
245
- digitalhub/stores/data/sql/store.py,sha256=NRsZguzTak8ukvuYwmVOnTufOJKe5wNnVyDZaOOqPhw,17300
248
+ digitalhub/stores/data/sql/store.py,sha256=CVQF6ZmmnYNrSpXGrGm--1yTJ7Sn63So5miaIpt5CXk,17240
246
249
  digitalhub/stores/readers/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
247
250
  digitalhub/stores/readers/data/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,107
248
251
  digitalhub/stores/readers/data/api.py,sha256=jn2AwCcTRbAOeAhs-3D1OpjhvFf8y537upvzVAgHxl4,1966
@@ -258,15 +261,15 @@ digitalhub/utils/__init__.py,sha256=IRY2i9U97wptE3OcC_NO-EBmcAH6-Q36gMCspKetQ0k,
258
261
  digitalhub/utils/enums.py,sha256=FvvBBkryy2-Ji0MhBMeJC6oLnd_ba0b0y1uCcWT-mvU,377
259
262
  digitalhub/utils/exceptions.py,sha256=RKLlLlMqQXWfMyT6npLjc3NPeKxzpWH-nrCv8VQC2x4,1435
260
263
  digitalhub/utils/file_utils.py,sha256=GXS0d49aJprEior5QL1QSMnE5SxbsOeemjqhmdiicOo,5964
261
- digitalhub/utils/generic_utils.py,sha256=3jHGVNM8sJMyUWL-5jC6X_0mcWscoBQ5ksp0SEhn2IY,6225
262
- digitalhub/utils/git_utils.py,sha256=hjGNqeu7EKYTbjXKcV8YD8nbEQ99SQkilfPt-YwCPrg,4005
263
- digitalhub/utils/io_utils.py,sha256=aH7D2x6W7HRx3QMxQCCyW3b_JVFVjUm39-XsuYKCiE0,3460
264
+ digitalhub/utils/generic_utils.py,sha256=tJeRpglwOTgXoMADvDJXhLWGwx9rycyb7B5d0PRasi0,6123
265
+ digitalhub/utils/git_utils.py,sha256=OIlAXp2INb2cjp3F-mxnuZbCk3fVuqgOcEC5M2IloTg,3937
266
+ digitalhub/utils/io_utils.py,sha256=JKQXVyftUQ9LC3E9Wb8R7vBIJqM2npBExxhSwydSP6E,3392
264
267
  digitalhub/utils/logger.py,sha256=hH3gGE35L8jRxrg8EPXGZZAK1OA5-CvWnayuBZzteBM,545
265
- digitalhub/utils/store_utils.py,sha256=X6pUywqENNdM-kpPwm67w7qx5-VtTHHIdkCdEwL29AI,1023
268
+ digitalhub/utils/store_utils.py,sha256=Nuj5BzcAll-qIIgAgvp00S3yfV50NyWdTZEabJAqxDE,1013
266
269
  digitalhub/utils/types.py,sha256=orCxY43zXMJfKZsOj6FUR85u9wRBPJ0wdkzrBHTnVW8,217
267
270
  digitalhub/utils/uri_utils.py,sha256=Go787CxAOo2MMjFIEt8XssomtyV8vTdIrpyjSQK3gAM,4408
268
- digitalhub-0.14.0b4.dist-info/METADATA,sha256=jdHQzB2YD2tB9bpS_xWAD_4WRF-U_S4XPdATclbJPgw,18129
269
- digitalhub-0.14.0b4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
270
- digitalhub-0.14.0b4.dist-info/licenses/AUTHORS,sha256=iDleK_2EAMmh0o8Te_E9mdXQCP4rBfFr9dW9d0-pCno,301
271
- digitalhub-0.14.0b4.dist-info/licenses/LICENSE,sha256=z3xQCHfGmTnigfoUe3uidW_GUSVeFBdos30w9VNTRec,11361
272
- digitalhub-0.14.0b4.dist-info/RECORD,,
271
+ digitalhub-0.14.0b6.dist-info/METADATA,sha256=uJLTKErhUonpMC_pBPR-CelHRTgl18EedOs-d72xhVA,18129
272
+ digitalhub-0.14.0b6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
273
+ digitalhub-0.14.0b6.dist-info/licenses/AUTHORS,sha256=iDleK_2EAMmh0o8Te_E9mdXQCP4rBfFr9dW9d0-pCno,301
274
+ digitalhub-0.14.0b6.dist-info/licenses/LICENSE,sha256=z3xQCHfGmTnigfoUe3uidW_GUSVeFBdos30w9VNTRec,11361
275
+ digitalhub-0.14.0b6.dist-info/RECORD,,