digitalhub 0.11.0b7__py3-none-any.whl → 0.13.0__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/__init__.py +4 -1
- digitalhub/context/api.py +9 -5
- digitalhub/context/builder.py +7 -5
- digitalhub/context/context.py +13 -1
- digitalhub/entities/__init__.py +3 -0
- digitalhub/entities/_base/__init__.py +3 -0
- digitalhub/entities/_base/_base/__init__.py +3 -0
- digitalhub/entities/_base/_base/entity.py +4 -0
- digitalhub/entities/_base/context/__init__.py +3 -0
- digitalhub/entities/_base/context/entity.py +4 -0
- digitalhub/entities/_base/entity/__init__.py +3 -0
- digitalhub/entities/_base/entity/_constructors/__init__.py +3 -0
- digitalhub/entities/_base/entity/_constructors/metadata.py +4 -0
- digitalhub/entities/_base/entity/_constructors/name.py +4 -0
- digitalhub/entities/_base/entity/_constructors/spec.py +4 -0
- digitalhub/entities/_base/entity/_constructors/status.py +4 -0
- digitalhub/entities/_base/entity/_constructors/uuid.py +4 -0
- digitalhub/entities/_base/entity/builder.py +4 -0
- digitalhub/entities/_base/entity/entity.py +4 -0
- digitalhub/entities/_base/entity/metadata.py +4 -0
- digitalhub/entities/_base/entity/spec.py +4 -0
- digitalhub/entities/_base/entity/status.py +4 -0
- digitalhub/entities/_base/executable/__init__.py +3 -0
- digitalhub/entities/_base/executable/entity.py +109 -57
- digitalhub/entities/_base/material/__init__.py +3 -0
- digitalhub/entities/_base/material/entity.py +15 -18
- digitalhub/entities/_base/material/spec.py +4 -0
- digitalhub/entities/_base/material/status.py +4 -0
- digitalhub/entities/_base/material/utils.py +5 -1
- digitalhub/entities/_base/runtime_entity/__init__.py +3 -0
- digitalhub/entities/_base/runtime_entity/builder.py +4 -0
- digitalhub/entities/_base/unversioned/__init__.py +3 -0
- digitalhub/entities/_base/unversioned/builder.py +4 -0
- digitalhub/entities/_base/unversioned/entity.py +4 -0
- digitalhub/entities/_base/versioned/__init__.py +3 -0
- digitalhub/entities/_base/versioned/builder.py +4 -0
- digitalhub/entities/_base/versioned/entity.py +4 -0
- digitalhub/entities/_commons/__init__.py +3 -0
- digitalhub/entities/_commons/enums.py +4 -0
- digitalhub/entities/_commons/metrics.py +68 -30
- digitalhub/entities/_commons/utils.py +40 -9
- digitalhub/entities/_processors/__init__.py +3 -0
- digitalhub/entities/_processors/base.py +154 -79
- digitalhub/entities/_processors/context.py +370 -215
- digitalhub/entities/_processors/utils.py +78 -30
- digitalhub/entities/artifact/__init__.py +3 -0
- digitalhub/entities/artifact/_base/__init__.py +3 -0
- digitalhub/entities/artifact/_base/builder.py +4 -0
- digitalhub/entities/artifact/_base/entity.py +4 -0
- digitalhub/entities/artifact/_base/spec.py +4 -0
- digitalhub/entities/artifact/_base/status.py +4 -0
- digitalhub/entities/artifact/artifact/__init__.py +3 -0
- digitalhub/entities/artifact/artifact/builder.py +4 -0
- digitalhub/entities/artifact/artifact/entity.py +4 -0
- digitalhub/entities/artifact/artifact/spec.py +4 -0
- digitalhub/entities/artifact/artifact/status.py +4 -0
- digitalhub/entities/artifact/crud.py +8 -0
- digitalhub/entities/artifact/utils.py +32 -13
- digitalhub/entities/builders.py +4 -0
- digitalhub/entities/dataitem/__init__.py +3 -0
- digitalhub/entities/dataitem/_base/__init__.py +3 -0
- digitalhub/entities/dataitem/_base/builder.py +4 -0
- digitalhub/entities/dataitem/_base/entity.py +4 -0
- digitalhub/entities/dataitem/_base/spec.py +4 -0
- digitalhub/entities/dataitem/_base/status.py +4 -0
- digitalhub/entities/dataitem/crud.py +18 -2
- digitalhub/entities/dataitem/dataitem/__init__.py +3 -0
- digitalhub/entities/dataitem/dataitem/builder.py +4 -0
- digitalhub/entities/dataitem/dataitem/entity.py +4 -0
- digitalhub/entities/dataitem/dataitem/spec.py +4 -0
- digitalhub/entities/dataitem/dataitem/status.py +4 -0
- digitalhub/entities/dataitem/iceberg/__init__.py +3 -0
- digitalhub/entities/dataitem/iceberg/builder.py +4 -0
- digitalhub/entities/dataitem/iceberg/entity.py +4 -0
- digitalhub/entities/dataitem/iceberg/spec.py +4 -0
- digitalhub/entities/dataitem/iceberg/status.py +4 -0
- digitalhub/entities/dataitem/table/__init__.py +3 -0
- digitalhub/entities/dataitem/table/builder.py +4 -0
- digitalhub/entities/dataitem/table/entity.py +7 -3
- digitalhub/entities/dataitem/table/models.py +4 -0
- digitalhub/entities/dataitem/table/spec.py +4 -0
- digitalhub/entities/dataitem/table/status.py +4 -0
- digitalhub/entities/dataitem/table/utils.py +4 -0
- digitalhub/entities/dataitem/utils.py +88 -35
- digitalhub/entities/function/__init__.py +3 -0
- digitalhub/entities/function/_base/__init__.py +3 -0
- digitalhub/entities/function/_base/builder.py +4 -0
- digitalhub/entities/function/_base/entity.py +4 -0
- digitalhub/entities/function/_base/spec.py +4 -0
- digitalhub/entities/function/_base/status.py +4 -0
- digitalhub/entities/function/crud.py +4 -0
- digitalhub/entities/model/__init__.py +3 -0
- digitalhub/entities/model/_base/__init__.py +3 -0
- digitalhub/entities/model/_base/builder.py +4 -0
- digitalhub/entities/model/_base/entity.py +4 -0
- digitalhub/entities/model/_base/spec.py +4 -0
- digitalhub/entities/model/_base/status.py +4 -0
- digitalhub/entities/model/crud.py +8 -0
- digitalhub/entities/model/huggingface/__init__.py +3 -0
- digitalhub/entities/model/huggingface/builder.py +4 -0
- digitalhub/entities/model/huggingface/entity.py +4 -0
- digitalhub/entities/model/huggingface/spec.py +4 -0
- digitalhub/entities/model/huggingface/status.py +4 -0
- digitalhub/entities/model/mlflow/__init__.py +3 -0
- digitalhub/entities/model/mlflow/builder.py +4 -0
- digitalhub/entities/model/mlflow/entity.py +4 -0
- digitalhub/entities/model/mlflow/models.py +4 -0
- digitalhub/entities/model/mlflow/spec.py +4 -0
- digitalhub/entities/model/mlflow/status.py +4 -0
- digitalhub/entities/model/mlflow/utils.py +4 -0
- digitalhub/entities/model/model/__init__.py +3 -0
- digitalhub/entities/model/model/builder.py +4 -0
- digitalhub/entities/model/model/entity.py +4 -0
- digitalhub/entities/model/model/spec.py +4 -0
- digitalhub/entities/model/model/status.py +4 -0
- digitalhub/entities/model/sklearn/__init__.py +3 -0
- digitalhub/entities/model/sklearn/builder.py +4 -0
- digitalhub/entities/model/sklearn/entity.py +4 -0
- digitalhub/entities/model/sklearn/spec.py +4 -0
- digitalhub/entities/model/sklearn/status.py +4 -0
- digitalhub/entities/model/utils.py +32 -13
- digitalhub/entities/project/__init__.py +3 -0
- digitalhub/entities/project/_base/__init__.py +3 -0
- digitalhub/entities/project/_base/builder.py +4 -0
- digitalhub/entities/project/_base/entity.py +4 -2
- digitalhub/entities/project/_base/models.py +4 -0
- digitalhub/entities/project/_base/spec.py +4 -0
- digitalhub/entities/project/_base/status.py +4 -0
- digitalhub/entities/project/crud.py +4 -0
- digitalhub/entities/project/utils.py +4 -0
- digitalhub/entities/run/__init__.py +3 -0
- digitalhub/entities/run/_base/__init__.py +3 -0
- digitalhub/entities/run/_base/builder.py +4 -0
- digitalhub/entities/run/_base/entity.py +6 -2
- digitalhub/entities/run/_base/spec.py +4 -0
- digitalhub/entities/run/_base/status.py +4 -0
- digitalhub/entities/run/crud.py +4 -0
- digitalhub/entities/secret/__init__.py +3 -0
- digitalhub/entities/secret/_base/__init__.py +3 -0
- digitalhub/entities/secret/_base/builder.py +4 -0
- digitalhub/entities/secret/_base/entity.py +4 -0
- digitalhub/entities/secret/_base/spec.py +4 -0
- digitalhub/entities/secret/_base/status.py +4 -0
- digitalhub/entities/secret/crud.py +4 -0
- digitalhub/entities/task/__init__.py +3 -0
- digitalhub/entities/task/_base/__init__.py +3 -0
- digitalhub/entities/task/_base/builder.py +4 -0
- digitalhub/entities/task/_base/entity.py +4 -0
- digitalhub/entities/task/_base/models.py +16 -3
- digitalhub/entities/task/_base/spec.py +4 -0
- digitalhub/entities/task/_base/status.py +4 -0
- digitalhub/entities/task/_base/utils.py +4 -0
- digitalhub/entities/task/crud.py +4 -0
- digitalhub/entities/trigger/__init__.py +3 -0
- digitalhub/entities/trigger/_base/__init__.py +3 -0
- digitalhub/entities/trigger/_base/builder.py +4 -0
- digitalhub/entities/trigger/_base/entity.py +15 -0
- digitalhub/entities/trigger/_base/spec.py +4 -0
- digitalhub/entities/trigger/_base/status.py +4 -0
- digitalhub/entities/trigger/crud.py +4 -0
- digitalhub/entities/trigger/lifecycle/__init__.py +3 -0
- digitalhub/entities/trigger/lifecycle/builder.py +4 -0
- digitalhub/entities/trigger/lifecycle/entity.py +4 -0
- digitalhub/entities/trigger/lifecycle/spec.py +4 -0
- digitalhub/entities/trigger/lifecycle/status.py +4 -0
- digitalhub/entities/trigger/scheduler/__init__.py +3 -0
- digitalhub/entities/trigger/scheduler/builder.py +4 -0
- digitalhub/entities/trigger/scheduler/entity.py +4 -0
- digitalhub/entities/trigger/scheduler/spec.py +4 -0
- digitalhub/entities/trigger/scheduler/status.py +4 -0
- digitalhub/entities/workflow/__init__.py +3 -0
- digitalhub/entities/workflow/_base/__init__.py +3 -0
- digitalhub/entities/workflow/_base/builder.py +4 -0
- digitalhub/entities/workflow/_base/entity.py +4 -0
- digitalhub/entities/workflow/_base/spec.py +4 -0
- digitalhub/entities/workflow/_base/status.py +4 -0
- digitalhub/entities/workflow/crud.py +4 -0
- digitalhub/factory/__init__.py +3 -0
- digitalhub/factory/factory.py +29 -3
- digitalhub/factory/utils.py +15 -3
- digitalhub/runtimes/__init__.py +3 -0
- digitalhub/runtimes/_base.py +5 -1
- digitalhub/runtimes/builder.py +22 -1
- digitalhub/runtimes/enums.py +4 -0
- digitalhub/stores/__init__.py +3 -0
- digitalhub/stores/client/__init__.py +15 -0
- digitalhub/stores/client/_base/__init__.py +3 -0
- digitalhub/stores/client/_base/api_builder.py +18 -0
- digitalhub/stores/client/_base/client.py +97 -0
- digitalhub/stores/client/_base/key_builder.py +32 -0
- digitalhub/stores/client/_base/params_builder.py +18 -0
- digitalhub/stores/client/api.py +14 -5
- digitalhub/stores/client/builder.py +7 -1
- digitalhub/stores/client/dhcore/__init__.py +3 -0
- digitalhub/stores/client/dhcore/api_builder.py +21 -0
- digitalhub/stores/client/dhcore/client.py +329 -70
- digitalhub/stores/client/dhcore/configurator.py +489 -193
- digitalhub/stores/client/dhcore/enums.py +7 -0
- digitalhub/stores/client/dhcore/error_parser.py +39 -1
- digitalhub/stores/client/dhcore/key_builder.py +4 -0
- digitalhub/stores/client/dhcore/models.py +4 -0
- digitalhub/stores/client/dhcore/params_builder.py +117 -17
- digitalhub/stores/client/dhcore/utils.py +44 -22
- digitalhub/stores/client/local/__init__.py +3 -0
- digitalhub/stores/client/local/api_builder.py +21 -0
- digitalhub/stores/client/local/client.py +10 -8
- digitalhub/stores/client/local/enums.py +4 -0
- digitalhub/stores/client/local/key_builder.py +4 -0
- digitalhub/stores/client/local/params_builder.py +4 -0
- digitalhub/stores/credentials/__init__.py +3 -0
- digitalhub/stores/credentials/api.py +35 -0
- digitalhub/stores/credentials/configurator.py +210 -0
- digitalhub/stores/credentials/enums.py +68 -0
- digitalhub/stores/credentials/handler.py +176 -0
- digitalhub/stores/credentials/ini_module.py +164 -0
- digitalhub/stores/credentials/store.py +81 -0
- digitalhub/stores/data/__init__.py +3 -0
- digitalhub/stores/data/_base/__init__.py +3 -0
- digitalhub/stores/data/_base/store.py +31 -9
- digitalhub/stores/data/api.py +53 -9
- digitalhub/stores/data/builder.py +94 -41
- digitalhub/stores/data/enums.py +4 -0
- digitalhub/stores/data/local/__init__.py +3 -0
- digitalhub/stores/data/local/store.py +8 -7
- digitalhub/stores/data/remote/__init__.py +3 -0
- digitalhub/stores/data/remote/store.py +8 -7
- digitalhub/stores/data/s3/__init__.py +3 -0
- digitalhub/stores/data/s3/configurator.py +69 -80
- digitalhub/stores/data/s3/store.py +73 -81
- digitalhub/stores/data/s3/utils.py +14 -10
- digitalhub/stores/data/sql/__init__.py +3 -0
- digitalhub/stores/data/sql/configurator.py +80 -73
- digitalhub/stores/data/sql/store.py +195 -102
- digitalhub/stores/readers/__init__.py +3 -0
- digitalhub/stores/readers/data/__init__.py +3 -0
- digitalhub/stores/readers/data/_base/__init__.py +3 -0
- digitalhub/stores/readers/data/_base/builder.py +4 -0
- digitalhub/stores/readers/data/_base/reader.py +4 -0
- digitalhub/stores/readers/data/api.py +4 -0
- digitalhub/stores/readers/data/factory.py +4 -0
- digitalhub/stores/readers/data/pandas/__init__.py +3 -0
- digitalhub/stores/readers/data/pandas/builder.py +4 -0
- digitalhub/stores/readers/data/pandas/reader.py +4 -0
- digitalhub/stores/readers/query/__init__.py +3 -0
- digitalhub/utils/__init__.py +3 -0
- digitalhub/utils/enums.py +4 -0
- digitalhub/utils/exceptions.py +10 -0
- digitalhub/utils/file_utils.py +57 -30
- digitalhub/utils/generic_utils.py +45 -33
- digitalhub/utils/git_utils.py +28 -14
- digitalhub/utils/io_utils.py +23 -18
- digitalhub/utils/logger.py +4 -0
- digitalhub/utils/types.py +4 -0
- digitalhub/utils/uri_utils.py +35 -31
- digitalhub-0.13.0.dist-info/METADATA +301 -0
- digitalhub-0.13.0.dist-info/RECORD +259 -0
- digitalhub-0.13.0.dist-info/licenses/AUTHORS +5 -0
- digitalhub-0.13.0.dist-info/licenses/LICENSE +201 -0
- digitalhub/entities/_commons/types.py +0 -5
- digitalhub/stores/configurator/__init__.py +0 -0
- digitalhub/stores/configurator/api.py +0 -31
- digitalhub/stores/configurator/configurator.py +0 -198
- digitalhub/stores/configurator/credentials_store.py +0 -65
- digitalhub/stores/configurator/enums.py +0 -21
- digitalhub/stores/configurator/ini_module.py +0 -128
- digitalhub/stores/data/s3/enums.py +0 -16
- digitalhub/stores/data/sql/enums.py +0 -16
- digitalhub/stores/data/utils.py +0 -34
- digitalhub-0.11.0b7.dist-info/METADATA +0 -259
- digitalhub-0.11.0b7.dist-info/RECORD +0 -261
- digitalhub-0.11.0b7.dist-info/licenses/LICENSE.txt +0 -216
- {digitalhub-0.11.0b7.dist-info → digitalhub-0.13.0.dist-info}/WHEEL +0 -0
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: © 2025 DSLab - Fondazione Bruno Kessler
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
1
5
|
from __future__ import annotations
|
|
2
6
|
|
|
3
7
|
import typing
|
|
@@ -22,23 +26,36 @@ def parse_identifier(
|
|
|
22
26
|
entity_id: str | None = None,
|
|
23
27
|
) -> tuple[str, str, str | None, str | None, str | None]:
|
|
24
28
|
"""
|
|
25
|
-
Parse entity identifier.
|
|
29
|
+
Parse and validate entity identifier into its components.
|
|
30
|
+
|
|
31
|
+
Processes an entity identifier that can be either a full entity key
|
|
32
|
+
(store://) or a simple entity name. When using a simple name,
|
|
33
|
+
additional parameters must be provided for proper identification.
|
|
26
34
|
|
|
27
35
|
Parameters
|
|
28
36
|
----------
|
|
29
37
|
identifier : str
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
38
|
+
The entity identifier to parse. Can be either a full entity key
|
|
39
|
+
(store://project/entity_type/kind/name:id) or a simple entity name.
|
|
40
|
+
project : str, optional
|
|
41
|
+
The project name. Required when identifier is not a full key.
|
|
42
|
+
entity_type : str, optional
|
|
43
|
+
The entity type. Required when identifier is not a full key.
|
|
44
|
+
entity_kind : str, optional
|
|
45
|
+
The entity kind specification.
|
|
46
|
+
entity_id : str, optional
|
|
47
|
+
The entity version identifier.
|
|
37
48
|
|
|
38
49
|
Returns
|
|
39
50
|
-------
|
|
40
51
|
tuple[str, str, str | None, str | None, str | None]
|
|
41
|
-
|
|
52
|
+
A tuple containing (project_name, entity_type, entity_kind,
|
|
53
|
+
entity_name, entity_id) parsed from the identifier.
|
|
54
|
+
|
|
55
|
+
Raises
|
|
56
|
+
------
|
|
57
|
+
ValueError
|
|
58
|
+
If identifier is not a full key and project or entity_type is None.
|
|
42
59
|
"""
|
|
43
60
|
if not identifier.startswith("store://"):
|
|
44
61
|
if project is None or entity_type is None:
|
|
@@ -52,19 +69,29 @@ def get_context_from_identifier(
|
|
|
52
69
|
project: str | None = None,
|
|
53
70
|
) -> Context:
|
|
54
71
|
"""
|
|
55
|
-
|
|
72
|
+
Retrieve context instance from entity identifier or project name.
|
|
73
|
+
|
|
74
|
+
Extracts project information from the identifier and returns the
|
|
75
|
+
corresponding context. If the identifier is not a full key, the
|
|
76
|
+
project parameter must be provided explicitly.
|
|
56
77
|
|
|
57
78
|
Parameters
|
|
58
79
|
----------
|
|
59
80
|
identifier : str
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
81
|
+
The entity identifier to extract context from. Can be either
|
|
82
|
+
a full entity key (store://...) or a simple entity name.
|
|
83
|
+
project : str, optional
|
|
84
|
+
The project name. Required when identifier is not a full key.
|
|
63
85
|
|
|
64
86
|
Returns
|
|
65
87
|
-------
|
|
66
88
|
Context
|
|
67
|
-
|
|
89
|
+
The context instance associated with the identified project.
|
|
90
|
+
|
|
91
|
+
Raises
|
|
92
|
+
------
|
|
93
|
+
EntityError
|
|
94
|
+
If identifier is not a full key and project parameter is None.
|
|
68
95
|
"""
|
|
69
96
|
if not identifier.startswith("store://"):
|
|
70
97
|
if project is None:
|
|
@@ -79,19 +106,26 @@ def get_context_from_project(
|
|
|
79
106
|
project: str,
|
|
80
107
|
) -> Context:
|
|
81
108
|
"""
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
109
|
+
Retrieve context for a project, fetching from remote if necessary.
|
|
110
|
+
|
|
111
|
+
Attempts to get the project context from the local cache first.
|
|
112
|
+
If the project is not found locally, tries to fetch it from the
|
|
113
|
+
remote backend and create the context.
|
|
85
114
|
|
|
86
115
|
Parameters
|
|
87
116
|
----------
|
|
88
117
|
project : str
|
|
89
|
-
|
|
118
|
+
The name of the project to get context for.
|
|
90
119
|
|
|
91
120
|
Returns
|
|
92
121
|
-------
|
|
93
122
|
Context
|
|
94
|
-
|
|
123
|
+
The context instance for the specified project.
|
|
124
|
+
|
|
125
|
+
Raises
|
|
126
|
+
------
|
|
127
|
+
ContextError
|
|
128
|
+
If the project cannot be found locally or remotely.
|
|
95
129
|
"""
|
|
96
130
|
try:
|
|
97
131
|
return get_context(project)
|
|
@@ -101,19 +135,28 @@ def get_context_from_project(
|
|
|
101
135
|
|
|
102
136
|
def get_context_from_remote(
|
|
103
137
|
project: str,
|
|
104
|
-
) ->
|
|
138
|
+
) -> Context:
|
|
105
139
|
"""
|
|
106
|
-
|
|
140
|
+
Fetch project context from remote backend and create local context.
|
|
141
|
+
|
|
142
|
+
Retrieves project information from the remote backend, builds the
|
|
143
|
+
project entity locally, and returns the corresponding context.
|
|
144
|
+
Used when a project is not available in the local context cache.
|
|
107
145
|
|
|
108
146
|
Parameters
|
|
109
147
|
----------
|
|
110
148
|
project : str
|
|
111
|
-
|
|
149
|
+
The name of the project to fetch from remote.
|
|
112
150
|
|
|
113
151
|
Returns
|
|
114
152
|
-------
|
|
115
|
-
|
|
116
|
-
|
|
153
|
+
Context
|
|
154
|
+
The context instance created from the remote project data.
|
|
155
|
+
|
|
156
|
+
Raises
|
|
157
|
+
------
|
|
158
|
+
ContextError
|
|
159
|
+
If the project is not found on the remote backend.
|
|
117
160
|
"""
|
|
118
161
|
try:
|
|
119
162
|
client = get_client()
|
|
@@ -131,23 +174,28 @@ def _read_base_entity(
|
|
|
131
174
|
**kwargs,
|
|
132
175
|
) -> dict:
|
|
133
176
|
"""
|
|
134
|
-
Read
|
|
177
|
+
Read entity data from the backend API.
|
|
178
|
+
|
|
179
|
+
Internal utility function that performs a base-level entity read
|
|
180
|
+
operation through the client API. Builds the appropriate API
|
|
181
|
+
endpoint and retrieves the entity data as a dictionary.
|
|
135
182
|
|
|
136
183
|
Parameters
|
|
137
184
|
----------
|
|
138
185
|
client : Client
|
|
139
|
-
|
|
186
|
+
The client instance to use for the API request.
|
|
140
187
|
entity_type : str
|
|
141
|
-
|
|
188
|
+
The type of entity to read (e.g., 'project', 'function').
|
|
142
189
|
entity_name : str
|
|
143
|
-
|
|
190
|
+
The name identifier of the entity to retrieve.
|
|
144
191
|
**kwargs : dict
|
|
145
|
-
|
|
192
|
+
Additional parameters to pass to the API call, such as
|
|
193
|
+
version specifications or query filters.
|
|
146
194
|
|
|
147
195
|
Returns
|
|
148
196
|
-------
|
|
149
197
|
dict
|
|
150
|
-
|
|
198
|
+
Dictionary containing the entity data retrieved from the backend.
|
|
151
199
|
"""
|
|
152
200
|
api = client.build_api(
|
|
153
201
|
ApiCategories.BASE.value,
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: © 2025 DSLab - Fondazione Bruno Kessler
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
1
5
|
from __future__ import annotations
|
|
2
6
|
|
|
3
7
|
import typing
|
|
@@ -307,6 +311,7 @@ def delete_artifact(
|
|
|
307
311
|
project: str | None = None,
|
|
308
312
|
entity_id: str | None = None,
|
|
309
313
|
delete_all_versions: bool = False,
|
|
314
|
+
cascade: bool = True,
|
|
310
315
|
**kwargs,
|
|
311
316
|
) -> dict:
|
|
312
317
|
"""
|
|
@@ -322,6 +327,8 @@ def delete_artifact(
|
|
|
322
327
|
Entity ID.
|
|
323
328
|
delete_all_versions : bool
|
|
324
329
|
Delete all versions of the named entity. If True, use entity name instead of entity key as identifier.
|
|
330
|
+
cascade : bool
|
|
331
|
+
Cascade delete.
|
|
325
332
|
**kwargs : dict
|
|
326
333
|
Parameters to pass to the API call.
|
|
327
334
|
|
|
@@ -346,5 +353,6 @@ def delete_artifact(
|
|
|
346
353
|
project=project,
|
|
347
354
|
entity_id=entity_id,
|
|
348
355
|
delete_all_versions=delete_all_versions,
|
|
356
|
+
cascade=cascade,
|
|
349
357
|
**kwargs,
|
|
350
358
|
)
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: © 2025 DSLab - Fondazione Bruno Kessler
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
1
5
|
from __future__ import annotations
|
|
2
6
|
|
|
3
7
|
from typing import Any
|
|
@@ -11,16 +15,23 @@ def eval_source(
|
|
|
11
15
|
source: str | list[str] | None = None,
|
|
12
16
|
) -> Any:
|
|
13
17
|
"""
|
|
14
|
-
Evaluate
|
|
18
|
+
Evaluate whether the source is local or remote.
|
|
19
|
+
|
|
20
|
+
Determines if the provided source(s) reference local files or
|
|
21
|
+
remote resources. This evaluation affects how the artifact
|
|
22
|
+
will be processed and stored.
|
|
15
23
|
|
|
16
24
|
Parameters
|
|
17
25
|
----------
|
|
18
|
-
source : str
|
|
19
|
-
|
|
26
|
+
source : str, list[str], or None, optional
|
|
27
|
+
The source specification(s) to evaluate. Can be a single
|
|
28
|
+
source string, a list of source strings, or None.
|
|
20
29
|
|
|
21
30
|
Returns
|
|
22
31
|
-------
|
|
23
|
-
|
|
32
|
+
Any
|
|
33
|
+
The result of the local source evaluation, indicating
|
|
34
|
+
whether the source is local or remote.
|
|
24
35
|
"""
|
|
25
36
|
return eval_local_source(source)
|
|
26
37
|
|
|
@@ -33,25 +44,33 @@ def process_kwargs(
|
|
|
33
44
|
**kwargs,
|
|
34
45
|
) -> dict:
|
|
35
46
|
"""
|
|
36
|
-
Process
|
|
47
|
+
Process and enhance specification parameters for artifact creation.
|
|
48
|
+
|
|
49
|
+
Processes the keyword arguments for artifact specification, handling
|
|
50
|
+
path generation and UUID assignment. If no path is provided, generates
|
|
51
|
+
a unique path based on project, entity type, name, and source.
|
|
37
52
|
|
|
38
53
|
Parameters
|
|
39
54
|
----------
|
|
40
55
|
project : str
|
|
41
|
-
|
|
56
|
+
The name of the project.
|
|
42
57
|
name : str
|
|
43
|
-
|
|
44
|
-
source : str
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
58
|
+
The name of the artifact entity.
|
|
59
|
+
source : str or list[str]
|
|
60
|
+
The source specification(s) for the artifact content.
|
|
61
|
+
Can be a single source or multiple sources.
|
|
62
|
+
path : str, optional
|
|
63
|
+
The destination path for the artifact entity.
|
|
64
|
+
If None, a path will be automatically generated.
|
|
48
65
|
**kwargs : dict
|
|
49
|
-
|
|
66
|
+
Additional specification parameters to be processed
|
|
67
|
+
and passed to the artifact creation.
|
|
50
68
|
|
|
51
69
|
Returns
|
|
52
70
|
-------
|
|
53
71
|
dict
|
|
54
|
-
|
|
72
|
+
The updated kwargs dictionary with processed path
|
|
73
|
+
and UUID information included.
|
|
55
74
|
"""
|
|
56
75
|
if path is None:
|
|
57
76
|
uuid = build_uuid()
|
digitalhub/entities/builders.py
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: © 2025 DSLab - Fondazione Bruno Kessler
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
1
5
|
from __future__ import annotations
|
|
2
6
|
|
|
3
7
|
import typing
|
|
@@ -127,8 +131,16 @@ def log_dataitem(
|
|
|
127
131
|
cleanup = True
|
|
128
132
|
|
|
129
133
|
source = eval_source(source, data, kind, name, project)
|
|
130
|
-
data = eval_data(
|
|
131
|
-
kwargs = process_kwargs(
|
|
134
|
+
data = eval_data(kind, source, data, file_format, engine)
|
|
135
|
+
kwargs = process_kwargs(
|
|
136
|
+
project,
|
|
137
|
+
name,
|
|
138
|
+
kind,
|
|
139
|
+
source=source,
|
|
140
|
+
data=data,
|
|
141
|
+
path=path,
|
|
142
|
+
**kwargs,
|
|
143
|
+
)
|
|
132
144
|
obj = context_processor.log_material_entity(
|
|
133
145
|
source=source,
|
|
134
146
|
project=project,
|
|
@@ -325,6 +337,7 @@ def delete_dataitem(
|
|
|
325
337
|
project: str | None = None,
|
|
326
338
|
entity_id: str | None = None,
|
|
327
339
|
delete_all_versions: bool = False,
|
|
340
|
+
cascade: bool = True,
|
|
328
341
|
**kwargs,
|
|
329
342
|
) -> dict:
|
|
330
343
|
"""
|
|
@@ -340,6 +353,8 @@ def delete_dataitem(
|
|
|
340
353
|
Entity ID.
|
|
341
354
|
delete_all_versions : bool
|
|
342
355
|
Delete all versions of the named entity. If True, use entity name instead of entity key as identifier.
|
|
356
|
+
cascade : bool
|
|
357
|
+
Cascade delete.
|
|
343
358
|
**kwargs : dict
|
|
344
359
|
Parameters to pass to the API call.
|
|
345
360
|
|
|
@@ -364,5 +379,6 @@ def delete_dataitem(
|
|
|
364
379
|
project=project,
|
|
365
380
|
entity_id=entity_id,
|
|
366
381
|
delete_all_versions=delete_all_versions,
|
|
382
|
+
cascade=cascade,
|
|
367
383
|
**kwargs,
|
|
368
384
|
)
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# SPDX-FileCopyrightText: © 2025 DSLab - Fondazione Bruno Kessler
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
1
5
|
from __future__ import annotations
|
|
2
6
|
|
|
3
7
|
import shutil
|
|
@@ -89,14 +93,14 @@ class DataitemTable(Dataitem):
|
|
|
89
93
|
DataFrame.
|
|
90
94
|
"""
|
|
91
95
|
if self._query is not None:
|
|
92
|
-
df = get_store(self.
|
|
96
|
+
df = get_store(self.spec.path).query(
|
|
93
97
|
self._query,
|
|
94
98
|
self.spec.path,
|
|
95
99
|
engine,
|
|
96
100
|
)
|
|
97
101
|
self._query = None
|
|
98
102
|
return df
|
|
99
|
-
return get_store(self.
|
|
103
|
+
return get_store(self.spec.path).read_df(
|
|
100
104
|
self.spec.path,
|
|
101
105
|
file_format,
|
|
102
106
|
engine,
|
|
@@ -128,7 +132,7 @@ class DataitemTable(Dataitem):
|
|
|
128
132
|
str
|
|
129
133
|
Path to the written dataframe.
|
|
130
134
|
"""
|
|
131
|
-
return get_store(self.
|
|
135
|
+
return get_store(self.spec.path).write_df(
|
|
132
136
|
df,
|
|
133
137
|
self.spec.path,
|
|
134
138
|
extension=extension,
|