digitalhub 0.8.0__py3-none-any.whl → 0.8.0b1__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 -5
- digitalhub/client/builder.py +58 -3
- digitalhub/client/{dhcore/client.py → objects/dhcore.py} +60 -48
- digitalhub/client/{local/client.py → objects/local.py} +2 -2
- digitalhub/context/builder.py +85 -1
- digitalhub/context/context.py +1 -1
- digitalhub/datastores/builder.py +37 -13
- digitalhub/datastores/{_base/datastore.py → objects/base.py} +3 -3
- digitalhub/datastores/{local/datastore.py → objects/local.py} +2 -10
- digitalhub/datastores/{remote/datastore.py → objects/remote.py} +1 -9
- digitalhub/datastores/{s3/datastore.py → objects/s3.py} +2 -10
- digitalhub/datastores/{sql/datastore.py → objects/sql.py} +2 -10
- digitalhub/entities/_base/{_base/entity.py → base.py} +1 -1
- digitalhub/entities/_base/crud.py +389 -247
- digitalhub/entities/_base/entity/{entity.py → base.py} +34 -8
- digitalhub/entities/_base/{context/entity.py → entity/context.py} +6 -6
- digitalhub/entities/_base/{executable/entity.py → entity/executable.py} +36 -61
- digitalhub/entities/_base/{material/entity.py → entity/material.py} +6 -6
- digitalhub/entities/_base/entity/unversioned.py +87 -0
- digitalhub/entities/_base/entity/versioned.py +94 -0
- digitalhub/entities/_base/{entity/metadata.py → metadata.py} +2 -2
- digitalhub/entities/_base/{entity/spec.py → spec/base.py} +11 -11
- digitalhub/entities/_base/{material/spec.py → spec/material.py} +3 -3
- digitalhub/entities/_base/{entity/status.py → status/base.py} +3 -14
- digitalhub/entities/_base/{material/status.py → status/material.py} +1 -1
- digitalhub/entities/_builders/metadata.py +60 -0
- digitalhub/entities/_builders/spec.py +43 -0
- digitalhub/entities/_builders/status.py +62 -0
- digitalhub/entities/{_base/entity/_constructors → _builders}/uuid.py +11 -4
- digitalhub/entities/artifact/builder.py +133 -0
- digitalhub/entities/artifact/crud.py +48 -22
- digitalhub/entities/artifact/{_base/entity.py → entity/_base.py} +5 -5
- digitalhub/entities/artifact/entity/artifact.py +9 -0
- digitalhub/entities/artifact/{artifact/spec.py → spec.py} +16 -4
- digitalhub/entities/artifact/{artifact/status.py → status.py} +1 -1
- digitalhub/entities/dataitem/builder.py +144 -0
- digitalhub/entities/dataitem/crud.py +52 -29
- digitalhub/entities/dataitem/{_base/entity.py → entity/_base.py} +5 -5
- digitalhub/entities/dataitem/entity/dataitem.py +9 -0
- digitalhub/entities/dataitem/entity/iceberg.py +7 -0
- digitalhub/entities/dataitem/{table/entity.py → entity/table.py} +4 -25
- digitalhub/entities/dataitem/spec.py +61 -0
- digitalhub/entities/dataitem/status.py +38 -0
- digitalhub/entities/function/builder.py +86 -0
- digitalhub/entities/function/crud.py +43 -17
- digitalhub/entities/function/{_base/entity.py → entity.py} +12 -9
- digitalhub/entities/function/{_base/models.py → models.py} +1 -1
- digitalhub/entities/function/spec.py +81 -0
- digitalhub/entities/function/status.py +9 -0
- digitalhub/entities/model/builder.py +152 -0
- digitalhub/entities/model/crud.py +48 -21
- digitalhub/entities/model/{_base/entity.py → entity/_base.py} +5 -5
- digitalhub/entities/model/entity/huggingface.py +9 -0
- digitalhub/entities/model/{mlflow/utils.py → entity/mlflow.py} +10 -1
- digitalhub/entities/model/entity/model.py +9 -0
- digitalhub/entities/model/entity/sklearn.py +9 -0
- digitalhub/entities/model/spec.py +146 -0
- digitalhub/entities/model/status.py +33 -0
- digitalhub/entities/project/builder.py +82 -0
- digitalhub/entities/project/crud.py +12 -19
- digitalhub/entities/project/{_base/entity.py → entity.py} +102 -120
- digitalhub/entities/project/{_base/spec.py → spec.py} +4 -4
- digitalhub/entities/project/status.py +9 -0
- digitalhub/entities/registries.py +48 -0
- digitalhub/entities/run/builder.py +77 -0
- digitalhub/entities/run/crud.py +33 -20
- digitalhub/entities/run/{_base/entity.py → entity.py} +189 -35
- digitalhub/entities/run/spec.py +153 -0
- digitalhub/entities/run/status.py +114 -0
- digitalhub/entities/secret/builder.py +93 -0
- digitalhub/entities/secret/crud.py +31 -27
- digitalhub/entities/secret/{_base/entity.py → entity.py} +7 -8
- digitalhub/entities/secret/{_base/spec.py → spec.py} +4 -4
- digitalhub/entities/secret/status.py +9 -0
- digitalhub/entities/task/builder.py +74 -0
- digitalhub/entities/task/crud.py +33 -20
- digitalhub/entities/task/{_base/entity.py → entity.py} +8 -9
- digitalhub/entities/task/{_base/models.py → models.py} +0 -9
- digitalhub/entities/task/{_base/spec.py → spec.py} +7 -9
- digitalhub/entities/task/status.py +9 -0
- digitalhub/entities/{utils/utils.py → utils.py} +2 -20
- digitalhub/entities/workflow/builder.py +91 -0
- digitalhub/entities/workflow/crud.py +43 -17
- digitalhub/entities/workflow/{_base/entity.py → entity.py} +12 -9
- digitalhub/entities/workflow/spec.py +15 -0
- digitalhub/entities/workflow/status.py +9 -0
- digitalhub/readers/builder.py +54 -0
- digitalhub/readers/{pandas/reader.py → objects/pandas.py} +1 -1
- digitalhub/readers/registry.py +15 -0
- digitalhub/registry/models.py +87 -0
- digitalhub/registry/registry.py +74 -0
- digitalhub/registry/utils.py +150 -0
- digitalhub/runtimes/{_base.py → base.py} +65 -3
- digitalhub/runtimes/builder.py +40 -19
- digitalhub/runtimes/kind_registry.py +170 -0
- digitalhub/stores/builder.py +52 -6
- digitalhub/stores/{local/store.py → objects/local.py} +1 -1
- digitalhub/stores/{remote/store.py → objects/remote.py} +1 -1
- digitalhub/stores/{s3/store.py → objects/s3.py} +1 -1
- digitalhub/stores/{sql/store.py → objects/sql.py} +1 -1
- digitalhub/{client/dhcore/utils.py → utils/env_utils.py} +14 -2
- digitalhub/utils/exceptions.py +0 -12
- digitalhub/utils/generic_utils.py +42 -18
- digitalhub/utils/io_utils.py +2 -39
- {digitalhub-0.8.0.dist-info → digitalhub-0.8.0b1.dist-info}/METADATA +2 -3
- digitalhub-0.8.0b1.dist-info/RECORD +161 -0
- {digitalhub-0.8.0.dist-info → digitalhub-0.8.0b1.dist-info}/WHEEL +1 -1
- test/test_crud_artifacts.py +96 -0
- test/test_crud_dataitems.py +96 -0
- test/test_crud_functions.py +1 -1
- test/test_crud_runs.py +1 -1
- test/test_crud_tasks.py +1 -1
- digitalhub/client/api.py +0 -63
- digitalhub/client/dhcore/env.py +0 -21
- digitalhub/client/dhcore/models.py +0 -46
- digitalhub/context/api.py +0 -93
- digitalhub/datastores/api.py +0 -37
- digitalhub/entities/_base/api_utils.py +0 -620
- digitalhub/entities/_base/entity/_constructors/metadata.py +0 -44
- digitalhub/entities/_base/entity/_constructors/spec.py +0 -33
- digitalhub/entities/_base/entity/_constructors/status.py +0 -52
- digitalhub/entities/_base/entity/builder.py +0 -175
- digitalhub/entities/_base/executable/__init__.py +0 -0
- digitalhub/entities/_base/material/__init__.py +0 -0
- digitalhub/entities/_base/runtime_entity/__init__.py +0 -0
- digitalhub/entities/_base/runtime_entity/builder.py +0 -106
- digitalhub/entities/_base/unversioned/__init__.py +0 -0
- digitalhub/entities/_base/unversioned/builder.py +0 -66
- digitalhub/entities/_base/unversioned/entity.py +0 -49
- digitalhub/entities/_base/versioned/__init__.py +0 -0
- digitalhub/entities/_base/versioned/builder.py +0 -68
- digitalhub/entities/_base/versioned/entity.py +0 -53
- digitalhub/entities/artifact/_base/__init__.py +0 -0
- digitalhub/entities/artifact/_base/builder.py +0 -86
- digitalhub/entities/artifact/_base/spec.py +0 -15
- digitalhub/entities/artifact/_base/status.py +0 -9
- digitalhub/entities/artifact/artifact/__init__.py +0 -0
- digitalhub/entities/artifact/artifact/builder.py +0 -18
- digitalhub/entities/artifact/artifact/entity.py +0 -32
- digitalhub/entities/builders.py +0 -63
- digitalhub/entities/dataitem/_base/__init__.py +0 -0
- digitalhub/entities/dataitem/_base/builder.py +0 -86
- digitalhub/entities/dataitem/_base/spec.py +0 -15
- digitalhub/entities/dataitem/_base/status.py +0 -20
- digitalhub/entities/dataitem/dataitem/__init__.py +0 -0
- digitalhub/entities/dataitem/dataitem/builder.py +0 -18
- digitalhub/entities/dataitem/dataitem/entity.py +0 -32
- digitalhub/entities/dataitem/dataitem/spec.py +0 -15
- digitalhub/entities/dataitem/dataitem/status.py +0 -9
- digitalhub/entities/dataitem/iceberg/__init__.py +0 -0
- digitalhub/entities/dataitem/iceberg/builder.py +0 -18
- digitalhub/entities/dataitem/iceberg/entity.py +0 -32
- digitalhub/entities/dataitem/iceberg/spec.py +0 -15
- digitalhub/entities/dataitem/iceberg/status.py +0 -9
- digitalhub/entities/dataitem/table/__init__.py +0 -0
- digitalhub/entities/dataitem/table/builder.py +0 -18
- digitalhub/entities/dataitem/table/spec.py +0 -25
- digitalhub/entities/dataitem/table/status.py +0 -9
- digitalhub/entities/function/_base/__init__.py +0 -0
- digitalhub/entities/function/_base/builder.py +0 -79
- digitalhub/entities/function/_base/spec.py +0 -15
- digitalhub/entities/function/_base/status.py +0 -9
- digitalhub/entities/model/_base/__init__.py +0 -0
- digitalhub/entities/model/_base/builder.py +0 -86
- digitalhub/entities/model/_base/spec.py +0 -49
- digitalhub/entities/model/_base/status.py +0 -9
- digitalhub/entities/model/huggingface/__init__.py +0 -0
- digitalhub/entities/model/huggingface/builder.py +0 -18
- digitalhub/entities/model/huggingface/entity.py +0 -32
- digitalhub/entities/model/huggingface/spec.py +0 -36
- digitalhub/entities/model/huggingface/status.py +0 -9
- digitalhub/entities/model/mlflow/__init__.py +0 -0
- digitalhub/entities/model/mlflow/builder.py +0 -18
- digitalhub/entities/model/mlflow/entity.py +0 -32
- digitalhub/entities/model/mlflow/spec.py +0 -44
- digitalhub/entities/model/mlflow/status.py +0 -9
- digitalhub/entities/model/model/__init__.py +0 -0
- digitalhub/entities/model/model/builder.py +0 -18
- digitalhub/entities/model/model/entity.py +0 -32
- digitalhub/entities/model/model/spec.py +0 -15
- digitalhub/entities/model/model/status.py +0 -9
- digitalhub/entities/model/sklearn/__init__.py +0 -0
- digitalhub/entities/model/sklearn/builder.py +0 -18
- digitalhub/entities/model/sklearn/entity.py +0 -32
- digitalhub/entities/model/sklearn/spec.py +0 -15
- digitalhub/entities/model/sklearn/status.py +0 -9
- digitalhub/entities/project/_base/__init__.py +0 -0
- digitalhub/entities/project/_base/builder.py +0 -128
- digitalhub/entities/project/_base/status.py +0 -9
- digitalhub/entities/run/_base/__init__.py +0 -0
- digitalhub/entities/run/_base/builder.py +0 -94
- digitalhub/entities/run/_base/spec.py +0 -50
- digitalhub/entities/run/_base/status.py +0 -9
- digitalhub/entities/secret/_base/__init__.py +0 -0
- digitalhub/entities/secret/_base/builder.py +0 -81
- digitalhub/entities/secret/_base/status.py +0 -9
- digitalhub/entities/task/_base/__init__.py +0 -0
- digitalhub/entities/task/_base/builder.py +0 -91
- digitalhub/entities/task/_base/status.py +0 -9
- digitalhub/entities/utils/__init__.py +0 -0
- digitalhub/entities/workflow/_base/__init__.py +0 -0
- digitalhub/entities/workflow/_base/builder.py +0 -79
- digitalhub/entities/workflow/_base/spec.py +0 -15
- digitalhub/entities/workflow/_base/status.py +0 -9
- digitalhub/factory/__init__.py +0 -0
- digitalhub/factory/api.py +0 -277
- digitalhub/factory/factory.py +0 -268
- digitalhub/factory/utils.py +0 -90
- digitalhub/readers/_base/__init__.py +0 -0
- digitalhub/readers/_base/builder.py +0 -26
- digitalhub/readers/api.py +0 -80
- digitalhub/readers/factory.py +0 -133
- digitalhub/readers/pandas/__init__.py +0 -0
- digitalhub/readers/pandas/builder.py +0 -29
- digitalhub/stores/_base/__init__.py +0 -0
- digitalhub/stores/api.py +0 -54
- digitalhub/stores/local/__init__.py +0 -0
- digitalhub/stores/remote/__init__.py +0 -0
- digitalhub/stores/s3/__init__.py +0 -0
- digitalhub/stores/sql/__init__.py +0 -0
- digitalhub/utils/s3_utils.py +0 -58
- digitalhub-0.8.0.dist-info/RECORD +0 -231
- test/local/CRUD/test_artifacts.py +0 -96
- test/local/CRUD/test_dataitems.py +0 -96
- test/local/CRUD/test_models.py +0 -95
- /digitalhub/client/{_base → objects}/__init__.py +0 -0
- /digitalhub/client/{_base/client.py → objects/base.py} +0 -0
- /digitalhub/{client/dhcore → datastores/objects}/__init__.py +0 -0
- /digitalhub/entities/{utils → _base}/api.py +0 -0
- /digitalhub/{client/local → entities/_base/spec}/__init__.py +0 -0
- /digitalhub/entities/{utils → _base}/state.py +0 -0
- /digitalhub/{datastores/_base → entities/_base/status}/__init__.py +0 -0
- /digitalhub/{datastores/local → entities/_builders}/__init__.py +0 -0
- /digitalhub/entities/{_base/entity/_constructors → _builders}/name.py +0 -0
- /digitalhub/{datastores/remote → entities/artifact/entity}/__init__.py +0 -0
- /digitalhub/{datastores/s3 → entities/dataitem/entity}/__init__.py +0 -0
- /digitalhub/entities/dataitem/{table/models.py → models.py} +0 -0
- /digitalhub/entities/{utils/entity_types.py → entity_types.py} +0 -0
- /digitalhub/{datastores/sql → entities/model/entity}/__init__.py +0 -0
- /digitalhub/entities/model/{mlflow/models.py → models.py} +0 -0
- /digitalhub/{entities/_base/_base → readers/objects}/__init__.py +0 -0
- /digitalhub/readers/{_base/reader.py → objects/base.py} +0 -0
- /digitalhub/{entities/_base/context → registry}/__init__.py +0 -0
- /digitalhub/{entities/_base/entity/_constructors → stores/objects}/__init__.py +0 -0
- /digitalhub/stores/{_base/store.py → objects/base.py} +0 -0
- {digitalhub-0.8.0.dist-info → digitalhub-0.8.0b1.dist-info}/LICENSE.txt +0 -0
- {digitalhub-0.8.0.dist-info → digitalhub-0.8.0b1.dist-info}/top_level.txt +0 -0
- /test/{local/imports/test_imports.py → test_imports.py} +0 -0
|
@@ -2,14 +2,16 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import base64
|
|
4
4
|
import json
|
|
5
|
+
import os
|
|
5
6
|
from datetime import datetime
|
|
6
7
|
from pathlib import Path
|
|
7
8
|
from typing import Any
|
|
9
|
+
from urllib.parse import urlparse
|
|
8
10
|
from zipfile import ZipFile
|
|
9
11
|
|
|
10
12
|
import numpy as np
|
|
13
|
+
from boto3 import client as boto3_client
|
|
11
14
|
from requests import get as requests_get
|
|
12
|
-
from slugify import slugify
|
|
13
15
|
|
|
14
16
|
from digitalhub.utils.io_utils import read_text
|
|
15
17
|
|
|
@@ -118,6 +120,45 @@ def extract_archive(path: Path, filename: Path) -> None:
|
|
|
118
120
|
zip_file.extractall(path)
|
|
119
121
|
|
|
120
122
|
|
|
123
|
+
def get_s3_source(bucket: str, key: str, filename: Path) -> None:
|
|
124
|
+
"""
|
|
125
|
+
Get S3 source.
|
|
126
|
+
|
|
127
|
+
Parameters
|
|
128
|
+
----------
|
|
129
|
+
bucket : str
|
|
130
|
+
S3 bucket name.
|
|
131
|
+
key : str
|
|
132
|
+
S3 object key.
|
|
133
|
+
filename : Path
|
|
134
|
+
Path where to save the function source.
|
|
135
|
+
|
|
136
|
+
Returns
|
|
137
|
+
-------
|
|
138
|
+
None
|
|
139
|
+
"""
|
|
140
|
+
s3 = boto3_client("s3", endpoint_url=os.getenv("S3_ENDPOINT_URL"))
|
|
141
|
+
s3.download_file(bucket, key, filename)
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
def get_bucket_and_key(path: str) -> tuple[str, str]:
|
|
145
|
+
"""
|
|
146
|
+
Get bucket and key from path.
|
|
147
|
+
|
|
148
|
+
Parameters
|
|
149
|
+
----------
|
|
150
|
+
path : str
|
|
151
|
+
The source path to get the key from.
|
|
152
|
+
|
|
153
|
+
Returns
|
|
154
|
+
-------
|
|
155
|
+
tuple[str, str]
|
|
156
|
+
The bucket and key.
|
|
157
|
+
"""
|
|
158
|
+
parsed = urlparse(path)
|
|
159
|
+
return parsed.netloc, parsed.path
|
|
160
|
+
|
|
161
|
+
|
|
121
162
|
class MyEncoder(json.JSONEncoder):
|
|
122
163
|
"""
|
|
123
164
|
Custom JSON encoder to handle numpy types.
|
|
@@ -164,20 +205,3 @@ def dict_to_json(struct: dict) -> str:
|
|
|
164
205
|
The json string.
|
|
165
206
|
"""
|
|
166
207
|
return json.dumps(struct, cls=MyEncoder)
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
def slugify_string(filename: str) -> str:
|
|
170
|
-
"""
|
|
171
|
-
Sanitize a filename.
|
|
172
|
-
|
|
173
|
-
Parameters
|
|
174
|
-
----------
|
|
175
|
-
filename : str
|
|
176
|
-
The filename to sanitize.
|
|
177
|
-
|
|
178
|
-
Returns
|
|
179
|
-
-------
|
|
180
|
-
str
|
|
181
|
-
The sanitized filename.
|
|
182
|
-
"""
|
|
183
|
-
return slugify(filename, max_length=255)
|
digitalhub/utils/io_utils.py
CHANGED
|
@@ -37,43 +37,6 @@ def write_yaml(filepath: str | Path, obj: dict | list[dict]) -> None:
|
|
|
37
37
|
##############################
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
class NoDatesSafeLoader(yaml.SafeLoader):
|
|
41
|
-
"""
|
|
42
|
-
Loader implementation to exclude implicit resolvers.
|
|
43
|
-
|
|
44
|
-
Taken from https://stackoverflow.com/a/37958106
|
|
45
|
-
"""
|
|
46
|
-
|
|
47
|
-
@classmethod
|
|
48
|
-
def remove_implicit_resolver(cls, tag_to_remove: str) -> None:
|
|
49
|
-
"""
|
|
50
|
-
Remove implicit resolvers for a particular tag
|
|
51
|
-
Takes care not to modify resolvers in super classes.
|
|
52
|
-
We want to load datetimes as strings, not dates, because we
|
|
53
|
-
go on to serialise as json which doesn't have the advanced types
|
|
54
|
-
of yaml, and leads to incompatibilities down the track.
|
|
55
|
-
|
|
56
|
-
Parameters
|
|
57
|
-
----------
|
|
58
|
-
tag_to_remove : str
|
|
59
|
-
The tag to remove
|
|
60
|
-
|
|
61
|
-
Returns
|
|
62
|
-
-------
|
|
63
|
-
None
|
|
64
|
-
"""
|
|
65
|
-
if "yaml_implicit_resolvers" not in cls.__dict__:
|
|
66
|
-
cls.yaml_implicit_resolvers = cls.yaml_implicit_resolvers.copy()
|
|
67
|
-
|
|
68
|
-
for first_letter, mappings in cls.yaml_implicit_resolvers.items():
|
|
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")
|
|
75
|
-
|
|
76
|
-
|
|
77
40
|
def read_yaml(filepath: str | Path) -> dict | list[dict]:
|
|
78
41
|
"""
|
|
79
42
|
Read a yaml file and return a dict or a list of dict.
|
|
@@ -90,12 +53,12 @@ def read_yaml(filepath: str | Path) -> dict | list[dict]:
|
|
|
90
53
|
"""
|
|
91
54
|
try:
|
|
92
55
|
with open(filepath, "r", encoding="utf-8") as in_file:
|
|
93
|
-
data = yaml.load(in_file, Loader=
|
|
56
|
+
data = yaml.load(in_file, Loader=yaml.SafeLoader)
|
|
94
57
|
|
|
95
58
|
# If yaml contains multiple documents
|
|
96
59
|
except yaml.composer.ComposerError:
|
|
97
60
|
with open(filepath, "r", encoding="utf-8") as in_file:
|
|
98
|
-
data = list(yaml.load_all(in_file, Loader=
|
|
61
|
+
data = list(yaml.load_all(in_file, Loader=yaml.SafeLoader))
|
|
99
62
|
return data
|
|
100
63
|
|
|
101
64
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: digitalhub
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.0b1
|
|
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
|
|
@@ -239,7 +239,6 @@ Requires-Dist: PyYAML
|
|
|
239
239
|
Requires-Dist: python-dotenv
|
|
240
240
|
Requires-Dist: GitPython>=3
|
|
241
241
|
Requires-Dist: psycopg2-binary
|
|
242
|
-
Requires-Dist: python-slugify
|
|
243
242
|
Provides-Extra: dev
|
|
244
243
|
Requires-Dist: black; extra == "dev"
|
|
245
244
|
Requires-Dist: pytest; extra == "dev"
|
|
@@ -263,4 +262,4 @@ Requires-Dist: pandas<2.2,>=1.2; extra == "pandas"
|
|
|
263
262
|
The Digitalhub SDK library is used to manage entities and executions in Digitalhub from Python.
|
|
264
263
|
It comes with a suite of tools to help you manage your projects and executions. It exposes CRUD methods to create, read, update and delete entities, and objects methods to excute functions or workflows, collect or store execution results and data.
|
|
265
264
|
|
|
266
|
-
A more detailed description of the library can be found in the [official documentation](https://scc-digitalhub.github.io/
|
|
265
|
+
A more detailed description of the library can be found in the [official documentation](https://scc-digitalhub.github.io/docs/) of Digitalhub.
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
digitalhub/__init__.py,sha256=aW5Xsp7ElskYHk2tGMruT2v2HjLCXqGtPZOsCxv5yZU,1984
|
|
2
|
+
digitalhub/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
digitalhub/client/builder.py,sha256=UrmgtBPfPlw_J4vmym93RUN9fLg8AJl5jOm5_-Za1qE,2278
|
|
4
|
+
digitalhub/client/objects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
digitalhub/client/objects/base.py,sha256=HDv9Vr9DZpoaZVsAT5SSBD9j1oHoVuxA4ILGDl0mBz4,1299
|
|
6
|
+
digitalhub/client/objects/dhcore.py,sha256=XvWwHDBrxKk8wSJPfho0cgZvX2PghHH-WXDoPVxTJsU,18950
|
|
7
|
+
digitalhub/client/objects/local.py,sha256=sQwgENPPjO_V9OCBs3E0MZ5Cm2iFGBBAtbDaR8XgPVg,16779
|
|
8
|
+
digitalhub/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
digitalhub/context/builder.py,sha256=67p1SQHCqs77B5J5wU4-pPy-KjnLTQFcYdn1zKtDYik,3665
|
|
10
|
+
digitalhub/context/context.py,sha256=Wk1YcTR1QayKOewrLqT_nVcGjORYXF4aHYZ2yXuJ8tM,3338
|
|
11
|
+
digitalhub/datastores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
+
digitalhub/datastores/builder.py,sha256=7KBUNiW99gG9fB91dVJmhVP60ww0Fw8-HMzrcmKRBtc,3120
|
|
13
|
+
digitalhub/datastores/objects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
+
digitalhub/datastores/objects/base.py,sha256=BvPn77L_UVwSOUjWN0MMWDpOvZcu4owDLeYzUIYnhRo,1999
|
|
15
|
+
digitalhub/datastores/objects/local.py,sha256=VCT4yXGxHeMiXY1rwLeL1PNnsEPj3DQKcx8Y4FeiKK4,1158
|
|
16
|
+
digitalhub/datastores/objects/remote.py,sha256=E-Is15x23ZJcG6IaZawj18P8wntTygeakIu5qm5KHoE,645
|
|
17
|
+
digitalhub/datastores/objects/s3.py,sha256=dTTgzZGbhlklNokWxClFWVRLT2d8uAqPZNOpl0oXVNA,1018
|
|
18
|
+
digitalhub/datastores/objects/sql.py,sha256=cY7fkpd75NBVQtgrn7jDnAOwphksYjo8BA7ZhnAtg4Y,1629
|
|
19
|
+
digitalhub/entities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
|
+
digitalhub/entities/entity_types.py,sha256=PcAh78WAC9DgwSU6LxGncn0g7Wzb0iZXc-3Ooik8-ks,324
|
|
21
|
+
digitalhub/entities/registries.py,sha256=2sS4jPCy6cBvrDLWXgLh7Oz_pnC-rU6sFhx8DllVY7g,1382
|
|
22
|
+
digitalhub/entities/utils.py,sha256=TxZese8CKfosuJtDF2nQNrkKd6YZI8unRrdl1tsXvEs,4188
|
|
23
|
+
digitalhub/entities/_base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
+
digitalhub/entities/_base/api.py,sha256=jSNYoLzoYSvu2wI-fs6u87AFYGAaboPCX4y6f2LqJ5A,6597
|
|
25
|
+
digitalhub/entities/_base/base.py,sha256=EnZD1nuWH8SZp9qHRMAMCBITq7etCERj0nVeOUTmkhY,2184
|
|
26
|
+
digitalhub/entities/_base/crud.py,sha256=M-5D6qlcrBNWf9qanf87oSsr3EizmvOg6Qkah_D6RAA,13175
|
|
27
|
+
digitalhub/entities/_base/metadata.py,sha256=c3bYIZC3VG8j-eQm1fYoITgq3DF4Qwc5dm9_2WbcflY,1690
|
|
28
|
+
digitalhub/entities/_base/state.py,sha256=gKxDy__MEHlz-1SrwICZnFOIqDoI-CBo4ylIBM9TaoQ,609
|
|
29
|
+
digitalhub/entities/_base/entity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
|
+
digitalhub/entities/_base/entity/base.py,sha256=TLsSqPCZRcxG3sXItcG8s2NG70hEThAHZgvHLT8-W80,3374
|
|
31
|
+
digitalhub/entities/_base/entity/context.py,sha256=6NjOtqpCZouW15Q_HQvN8Mec8nytIfJ7zxmO5-j063c,3041
|
|
32
|
+
digitalhub/entities/_base/entity/executable.py,sha256=jhrhHcRwuad5xgO2XFjByk_mEBxdcpgAsA-QDQrD32A,9323
|
|
33
|
+
digitalhub/entities/_base/entity/material.py,sha256=nBc1q1gbLk3BEn996O7KbAHi5H-Ux1At5GI4Yqk8Hc0,6160
|
|
34
|
+
digitalhub/entities/_base/entity/unversioned.py,sha256=v9_Vkadr8jYDC5Tz62EAE2lybBYMyEIulCdoQBmgPJY,2630
|
|
35
|
+
digitalhub/entities/_base/entity/versioned.py,sha256=RMKLs7sVI4DEF2x01W-kwAyCEBVHExVJkMy65xvB5uc,2885
|
|
36
|
+
digitalhub/entities/_base/spec/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
|
+
digitalhub/entities/_base/spec/base.py,sha256=tN77RzAcvB0BC7bdRAT-gECoPl1sW7pPbaxAHVfjDBw,1322
|
|
38
|
+
digitalhub/entities/_base/spec/material.py,sha256=WvslwLK4swBZwpEM8Z8w_VfivS0tpygukc0x6k3fAsw,424
|
|
39
|
+
digitalhub/entities/_base/status/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
40
|
+
digitalhub/entities/_base/status/base.py,sha256=iSeDoacFzuAFvuag5bO1AfPpg0hTCuQH8oYBkxXHQeg,817
|
|
41
|
+
digitalhub/entities/_base/status/material.py,sha256=yyc7VqtGfRkvvLXA-fBaV_w8_nWY1kinPeokPsdeae0,1100
|
|
42
|
+
digitalhub/entities/_builders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
|
+
digitalhub/entities/_builders/metadata.py,sha256=T7sDqlPmkqDRzf-nRonqNRolgfK1cvSw4Op4W15xqDQ,1750
|
|
44
|
+
digitalhub/entities/_builders/name.py,sha256=sNU54TzzdYug5sqio8uaus6pP5RkEJYIEl6j0fwR4ho,485
|
|
45
|
+
digitalhub/entities/_builders/spec.py,sha256=x38F6GQObmMS537Gsmy8eD342cN5Ugc8ngfD00c_WbQ,1398
|
|
46
|
+
digitalhub/entities/_builders/status.py,sha256=bnxt-l_WTrjPDyad60PbRfceFwANc31-yv1iDKfIx8U,1710
|
|
47
|
+
digitalhub/entities/_builders/uuid.py,sha256=TUqayL2Ppp8rT4IkRxVhOp4_rUb-qklGS2tg16NnW4A,595
|
|
48
|
+
digitalhub/entities/artifact/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
|
+
digitalhub/entities/artifact/builder.py,sha256=TpzzBlZm3-bhrx9J3X4vO56t549UYZg7W_gKvKyH0b4,3080
|
|
50
|
+
digitalhub/entities/artifact/crud.py,sha256=QAg7hd_R1cbbhTiLiDQcpFHBv3rZASEmPIM_qw2ZQ5M,8204
|
|
51
|
+
digitalhub/entities/artifact/spec.py,sha256=9EW4E3YtgoaouuhfPo18NYhADPcK_69ekOzYAXPxGzk,721
|
|
52
|
+
digitalhub/entities/artifact/status.py,sha256=7yzYJ0fXKfD8t-b0OCmacGHJqD8tqV_MlKKzgemu76o,305
|
|
53
|
+
digitalhub/entities/artifact/entity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
54
|
+
digitalhub/entities/artifact/entity/_base.py,sha256=JZy405GplZcKlXJe7WeER_-dk-vmrm0J0DG-iUtLLO4,1086
|
|
55
|
+
digitalhub/entities/artifact/entity/artifact.py,sha256=rH7bSE4meL1IqcbNgjDbkPhhc_tUuW3BeL8d4hJYioA,171
|
|
56
|
+
digitalhub/entities/dataitem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
57
|
+
digitalhub/entities/dataitem/builder.py,sha256=EuRKwbZfIP6EqOioLkpl99qJgDCpK05xKpxv7tJGqKQ,3387
|
|
58
|
+
digitalhub/entities/dataitem/crud.py,sha256=mpecyHTajtBHFdiMPM5XcAZ1Mbcy-cl-solzcU8D8MA,9666
|
|
59
|
+
digitalhub/entities/dataitem/models.py,sha256=wfnDMQ3nAM1XAJAuMj7CvaXfOTVMQicG_2I6hZB6iag,1093
|
|
60
|
+
digitalhub/entities/dataitem/spec.py,sha256=v7Bf9uGcUnsdV8p43UWTQEZQ1rgn8jQh4BCQYu1ghao,1196
|
|
61
|
+
digitalhub/entities/dataitem/status.py,sha256=reOQbRI3ZDVCGhvv2P7VSJAzhyxsrZkAtZ9amiTYto4,811
|
|
62
|
+
digitalhub/entities/dataitem/entity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
|
+
digitalhub/entities/dataitem/entity/_base.py,sha256=eih3blIaSJ6r6sL6OCJwASYb63DFk00mLxsK3Rw-Jkc,1959
|
|
64
|
+
digitalhub/entities/dataitem/entity/dataitem.py,sha256=b1g2C8xGZWcPFLSsZLcAiD-rn3uOHYMv2-8Dwz8VBR0,174
|
|
65
|
+
digitalhub/entities/dataitem/entity/iceberg.py,sha256=TYbj6WbZc_L-faEYnvOP8CP2OsU_XTBLN4qZGZRox2w,136
|
|
66
|
+
digitalhub/entities/dataitem/entity/table.py,sha256=3wTj2o8l-lRqRP_SsgRRkfHUQgWXmFxmgiV-VrGAcAk,3688
|
|
67
|
+
digitalhub/entities/function/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
68
|
+
digitalhub/entities/function/builder.py,sha256=shIXiMeslTToLoEKRcmchrvMnP9K24-xZkWVLQGghoE,2081
|
|
69
|
+
digitalhub/entities/function/crud.py,sha256=wDjRmAwrlgk44mzfwJhcFBQ9z61DR4D5-K5v0Bg8-6M,6896
|
|
70
|
+
digitalhub/entities/function/entity.py,sha256=NXWrSEvm-AHKw-u7BGYffb76V4xK8YQ5LKvvkMcMu5g,2973
|
|
71
|
+
digitalhub/entities/function/models.py,sha256=OnHJKKrMK-kYSHh6UGOHkPNt9mhe5UQIDe3-wRah7g4,2723
|
|
72
|
+
digitalhub/entities/function/spec.py,sha256=lmL7vFk2oZuLpBJAkmgbEPyYexpbfKnaC5uvbxHkPVE,1915
|
|
73
|
+
digitalhub/entities/function/status.py,sha256=LFoUY7LkPwUAC78fBwNf6l3agqaNhPggePnRQtbtMBA,181
|
|
74
|
+
digitalhub/entities/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
75
|
+
digitalhub/entities/model/builder.py,sha256=jmaEpzCFH7vt9rcpgW89oWqYGJl9EyM3hu9T5GKJX4o,3462
|
|
76
|
+
digitalhub/entities/model/crud.py,sha256=N_VRbT9aA9SVdVjSbOgYl0fULYxzCRFHLRHDscyJgEU,8036
|
|
77
|
+
digitalhub/entities/model/models.py,sha256=FCCT_jd2j6T517dOZ1NX0ByPapudslir8FJepfQYz4I,464
|
|
78
|
+
digitalhub/entities/model/spec.py,sha256=E2Zz2JV-yBc2VheSO7bcDOkye7e1ja6yzdY7xtrdWRE,3440
|
|
79
|
+
digitalhub/entities/model/status.py,sha256=bWTJRCkOJ3y7eLuvyx_XIt6JkXZv1ZMteZ4ng0IOiuQ,572
|
|
80
|
+
digitalhub/entities/model/entity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
81
|
+
digitalhub/entities/model/entity/_base.py,sha256=Kr9V3UVoV-vOXU3YLMpUFZYtppAo5hohGwHb6EQkT50,891
|
|
82
|
+
digitalhub/entities/model/entity/huggingface.py,sha256=q6yO-4BNmEfvhN59Gy2MjgYFKjqwvPOVjJf5BvqlsEM,165
|
|
83
|
+
digitalhub/entities/model/entity/mlflow.py,sha256=I3dK8K33nZQ0fHwxKxIk0f5Zo8oK2eOK1MJSh1EU9og,2356
|
|
84
|
+
digitalhub/entities/model/entity/model.py,sha256=00mTo88ZrjnTqHehF4II0xuepO_xr-Rx-dExTeqmjj0,153
|
|
85
|
+
digitalhub/entities/model/entity/sklearn.py,sha256=LdMUwwjwWHjCdSy8aXGElowBmw7Cm2Qe7cQx8zxJmA8,157
|
|
86
|
+
digitalhub/entities/project/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
|
+
digitalhub/entities/project/builder.py,sha256=ly6TyvedRsNIcsUHFlYrgfaa2CjYEiwAyhugCCvhAY4,1840
|
|
88
|
+
digitalhub/entities/project/crud.py,sha256=s3_Z_rBQ3byXzgHWJf769X0jYf3ZTOyYxtbwG7PKk7c,8840
|
|
89
|
+
digitalhub/entities/project/entity.py,sha256=56RRnbvINVxUOTopKXv-7GsJViEUctNrILmRdgRKg_4,53319
|
|
90
|
+
digitalhub/entities/project/spec.py,sha256=N9gybHq4X5eL5QqMV02xk1B7L7so18BZ630NUg05SfE,1332
|
|
91
|
+
digitalhub/entities/project/status.py,sha256=2euFwn5Fd0ef4iu7lB4Cp8pxu2BUvqw5aWdo_RbBKLk,179
|
|
92
|
+
digitalhub/entities/run/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
93
|
+
digitalhub/entities/run/builder.py,sha256=ZOvlyOYgamroMwROULJJBuScg7R70ty32St2V9f09uA,1773
|
|
94
|
+
digitalhub/entities/run/crud.py,sha256=lCN3eR8nF_6D75c0STWT_1APUN2BLA1uQTe2LCsgKQQ,5056
|
|
95
|
+
digitalhub/entities/run/entity.py,sha256=3GKBCuOJg2XjeG7-eXk8qmJp5wF3DBIdE2lhcGkW_1o,12233
|
|
96
|
+
digitalhub/entities/run/spec.py,sha256=eDewqAmVbEIij-pqmnSe6jkptzQWWPzAtmQuzZ85Ky4,3885
|
|
97
|
+
digitalhub/entities/run/status.py,sha256=dfUGpQu6A01eFyBm5fD4nz4gUMUVm4_ToDo5ySUoF1E,2629
|
|
98
|
+
digitalhub/entities/secret/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
99
|
+
digitalhub/entities/secret/builder.py,sha256=8BF5ESvsfNotIj0L2KvdfKpMPO-YjkHC4J5B9iv2WOM,2181
|
|
100
|
+
digitalhub/entities/secret/crud.py,sha256=-2S2OSeSMW_glh-DgHkVpCr4BPkarQrr-wH6BOocmF0,6503
|
|
101
|
+
digitalhub/entities/secret/entity.py,sha256=Jsar39JbFLRipiVLaa47nDLr5uQucFzpTSDlhdXE2EU,1979
|
|
102
|
+
digitalhub/entities/secret/spec.py,sha256=52sbEtc_k5rSQcKu1x8_1NUUxfipqhdbR3nu0HAxWWI,704
|
|
103
|
+
digitalhub/entities/secret/status.py,sha256=ezxVRhHcKDieI4KLY7Lca5ZjNTDqQp6OkW3_Aek5G3E,177
|
|
104
|
+
digitalhub/entities/task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
105
|
+
digitalhub/entities/task/builder.py,sha256=0boOM3t4kKSk1vZUSL_8kylv6vCrP-HxblPKtLsuueI,1664
|
|
106
|
+
digitalhub/entities/task/crud.py,sha256=Y8907ELfw04hFwf3EmmCAJxV49tZ9Z__7T8f8vwSfkY,5311
|
|
107
|
+
digitalhub/entities/task/entity.py,sha256=5r4clybJ2X1IYCREDX3WHviLQ4JmvwHPK6xlcZ4Ei4A,3052
|
|
108
|
+
digitalhub/entities/task/models.py,sha256=FBOS7HKJ56bexlKQ3MxfSbuurKqMsmNJg22BJ1DKgOo,4150
|
|
109
|
+
digitalhub/entities/task/spec.py,sha256=NyRwxEvzXXTceWm0CAuK7cDulpi3tbbQ3IphHofLgAw,1209
|
|
110
|
+
digitalhub/entities/task/status.py,sha256=5vi41avOauoWVMpZpYoBdllyPB9YvD_kVcTbyJYKNG0,173
|
|
111
|
+
digitalhub/entities/workflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
112
|
+
digitalhub/entities/workflow/builder.py,sha256=Xq10esNLrc3NtF4uFrRwOhwZtsuNXrrISqxLhtGUPlI,2078
|
|
113
|
+
digitalhub/entities/workflow/crud.py,sha256=vpvxUilCCwxjx5Kf3xyPjdsIlK_lXG3f9OEuo7ElW4Y,6831
|
|
114
|
+
digitalhub/entities/workflow/entity.py,sha256=U6rihuWx1wc0Nlt8qcT3FaNUn139yG2Vvlau3ESboos,2149
|
|
115
|
+
digitalhub/entities/workflow/spec.py,sha256=RxtysKr4Y_WoCuR98egnQsXhvMHJfllK0PgDYeu-gf8,251
|
|
116
|
+
digitalhub/entities/workflow/status.py,sha256=DGzUVwrbptLpAkorjfVCJIcl8reGUPkk9qpdMGgHjC8,181
|
|
117
|
+
digitalhub/readers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
118
|
+
digitalhub/readers/builder.py,sha256=yknIpW8IqICc4fr89pnNr2-GVGMtFCeyEABKz4GD0vA,1312
|
|
119
|
+
digitalhub/readers/registry.py,sha256=IUqjb9zJoWPBY4ld0Cqb7DFn9xXuC14bk2cOqxg6mA4,407
|
|
120
|
+
digitalhub/readers/objects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
121
|
+
digitalhub/readers/objects/base.py,sha256=Fq7liW_ogeucdIUS7_oDYpMzrwuKxVMqwpyf0sKLnwc,1506
|
|
122
|
+
digitalhub/readers/objects/pandas.py,sha256=Q_8kI-aQYF9D86HpwGdvVWrLPWK8nV_t48_lmXQoE9k,5350
|
|
123
|
+
digitalhub/registry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
124
|
+
digitalhub/registry/models.py,sha256=SnCf7rGa6Qhv88dmjSA7XnYXsZ9e9o6lfVBwh0EJgbI,1607
|
|
125
|
+
digitalhub/registry/registry.py,sha256=Wa23GXWJwpjNHBiBN8N1oOLfHrMdJwa0GY92FtBkqP4,1861
|
|
126
|
+
digitalhub/registry/utils.py,sha256=D4wkM7bDkORmuhCR0GnluSPQJtErfol3qe9lJAtOzlk,3246
|
|
127
|
+
digitalhub/runtimes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
128
|
+
digitalhub/runtimes/base.py,sha256=ddzKh-NESFJCYjt-Y8HdGrWDWKZ7TQhxRgRWKowCX6I,3961
|
|
129
|
+
digitalhub/runtimes/builder.py,sha256=J30UTqk6nPoUaRdLWr87_bm99rt43N9WDAad09HZ68g,1530
|
|
130
|
+
digitalhub/runtimes/kind_registry.py,sha256=PZ03e24FR68ChaOMspDi1UoeQNKtifofmB3O41HOvK8,3442
|
|
131
|
+
digitalhub/stores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
132
|
+
digitalhub/stores/builder.py,sha256=w411YDlXYAwbnQjHGY6K4God6-o3Pcc5gvE1BSMq2yk,6641
|
|
133
|
+
digitalhub/stores/objects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
134
|
+
digitalhub/stores/objects/base.py,sha256=tU-VsTZxkJVLyYpp23Cv_UjnHx74dk6ztdmVhsUO4cA,4171
|
|
135
|
+
digitalhub/stores/objects/local.py,sha256=v8zIBEEev2v7wevQM8FfrQhwJW3SNkuM0RMQOikFlg8,5674
|
|
136
|
+
digitalhub/stores/objects/remote.py,sha256=CXtsPcX9vF3y4JqFk2DZcuJ_k3tb-g8-QKLCbiy4xj8,3616
|
|
137
|
+
digitalhub/stores/objects/s3.py,sha256=XINyeoDp4VEmDI1y1OZ0UrrxzzKWSccOBCGiRM3LylQ,15516
|
|
138
|
+
digitalhub/stores/objects/sql.py,sha256=4WSPDbwKx6634AigW8EbWuTsia276A0YSgmgPdAlcK4,8655
|
|
139
|
+
digitalhub/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
140
|
+
digitalhub/utils/data_utils.py,sha256=2eETyxml610Ij7uyDnNc3YiELl2WFLIkj3FL4y6EPk8,2733
|
|
141
|
+
digitalhub/utils/env_utils.py,sha256=RWnpa3HOgH5ZaNN44h19SANGisspPJdEQHG6g_Lb6xA,3196
|
|
142
|
+
digitalhub/utils/exceptions.py,sha256=Xq0ouzpstU0pzH7GFcoq7TryOMaDZbxCbWFWXpMsM30,868
|
|
143
|
+
digitalhub/utils/file_utils.py,sha256=Qe71D2b6mOil_Y0Hy2QCJbnIaQOyXvhjFRbJoZXhsGQ,4006
|
|
144
|
+
digitalhub/utils/generic_utils.py,sha256=B_unHQI_7kKUWL3pWg4k3Fua0BemllakNYQ6LfDiokw,4070
|
|
145
|
+
digitalhub/utils/git_utils.py,sha256=aFYL1cpfY-2VnlW7eHmjjjlTLECc5UUUfjb_IQPOY5k,3244
|
|
146
|
+
digitalhub/utils/io_utils.py,sha256=SfYl6f-vUOophuWJ7zupBDx2lmHDohcjwcUqcz6sGdI,1809
|
|
147
|
+
digitalhub/utils/logger.py,sha256=ml3ne6D8wuRdNZ4F6ywmvWotSxjmZWnmKgNiuHb4R5M,437
|
|
148
|
+
digitalhub/utils/uri_utils.py,sha256=wArWRQ3ygGUNHexGKP3YM-aBE7TyGxhPvfEc7R4T4p4,1144
|
|
149
|
+
test/test_crud_artifacts.py,sha256=QsItzI5O31wPJAx2q4_2zD109SMy6HehqLZhnxYqj2Y,2484
|
|
150
|
+
test/test_crud_dataitems.py,sha256=S9QLkATksv0JETbnLxHqNiAKeEZj_dWCXO82HiDN16U,2484
|
|
151
|
+
test/test_crud_functions.py,sha256=bUnz-jSef5XZMLBP1yS_OLe3btjNXvlYKCbdp2Oqugw,2763
|
|
152
|
+
test/test_crud_runs.py,sha256=XeNIR-NIgh_2-PFVBXHxgNUZSVX_rF8cUwSx5sZpdro,2214
|
|
153
|
+
test/test_crud_tasks.py,sha256=Fze6zTVuEi9rCAK2htftyX-bJzyna86cLkKYJudmR5U,2105
|
|
154
|
+
test/test_imports.py,sha256=W-YugO0rpJwvtWp57MXaXfEmE-f5iWuCiLY-n0ZU4z8,1271
|
|
155
|
+
test/testkfp.py,sha256=01UpLKkVbwAQu4S1BMiddnnq5x1DStMlJtCoHzi9zq8,1060
|
|
156
|
+
test/testkfp_pipeline.py,sha256=WceFrCp-avHI7PcwIvnv7Kgs2xK3oQqU6sjaonGamg8,622
|
|
157
|
+
digitalhub-0.8.0b1.dist-info/LICENSE.txt,sha256=_yVOtnbW7Ss28mp058UEEc1X4Rgj8-kQBP_kj8_Sc88,11585
|
|
158
|
+
digitalhub-0.8.0b1.dist-info/METADATA,sha256=yvH4V392OdsUJ27lt8FMA22ih4hRFkZITHFhrG-WNFc,15268
|
|
159
|
+
digitalhub-0.8.0b1.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
|
160
|
+
digitalhub-0.8.0b1.dist-info/top_level.txt,sha256=ae9pDfCF27ZoaVAxuBKONMP0lm5P-N_I-e-no1WlvD8,16
|
|
161
|
+
digitalhub-0.8.0b1.dist-info/RECORD,,
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import shutil
|
|
2
|
+
from copy import deepcopy
|
|
3
|
+
|
|
4
|
+
import dotenv
|
|
5
|
+
|
|
6
|
+
import digitalhub as dh
|
|
7
|
+
from digitalhub.entities.artifact.entity._base import Artifact
|
|
8
|
+
|
|
9
|
+
dotenv.load_dotenv()
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def main():
|
|
13
|
+
ctx = "./test-prg"
|
|
14
|
+
names = ["test1", "test2", "test3", "test4"]
|
|
15
|
+
uuids = [
|
|
16
|
+
"d150bcca-bb64-451d-8455-dff862254b95",
|
|
17
|
+
"31acdd2d-0c41-428c-b68b-1b133da9e97b",
|
|
18
|
+
"b4a3dfdc-b917-44c4-9a29-613dcf734244",
|
|
19
|
+
"2618d9c4-cd61-440f-aebb-7e5761709f3b",
|
|
20
|
+
]
|
|
21
|
+
paths = ["./data/test.csv", "s3://bucket/key.csv", "sql://database/schema/table", "https://url.com/file.csv"]
|
|
22
|
+
kind = ["artifact", "artifact", "artifact", "artifact"]
|
|
23
|
+
|
|
24
|
+
dicts = []
|
|
25
|
+
for i in range(len(names)):
|
|
26
|
+
dicts.append({"name": names[i], "uuid": uuids[i], "path": paths[i], "kind": kind[i]})
|
|
27
|
+
|
|
28
|
+
dh.delete_project("test")
|
|
29
|
+
|
|
30
|
+
p = dh.get_or_create_project("test", context=ctx)
|
|
31
|
+
|
|
32
|
+
# Create and delete artifacts
|
|
33
|
+
for i in dicts:
|
|
34
|
+
d = dh.new_artifact(p.name, **i)
|
|
35
|
+
dh.delete_artifact(d.key)
|
|
36
|
+
d = dh.new_artifact(p.name, **i)
|
|
37
|
+
dh.delete_artifact(d.name, project=p.name, entity_id=d.id)
|
|
38
|
+
d = p.new_artifact(**i)
|
|
39
|
+
p.delete_artifact(d.key)
|
|
40
|
+
|
|
41
|
+
print("Done 1")
|
|
42
|
+
|
|
43
|
+
# Create multiple artifacts
|
|
44
|
+
for i in dicts:
|
|
45
|
+
dh.new_artifact(p.name, **i)
|
|
46
|
+
|
|
47
|
+
c = deepcopy(i)
|
|
48
|
+
c.pop("uuid")
|
|
49
|
+
dh.new_artifact(p.name, **c)
|
|
50
|
+
dh.new_artifact(p.name, **c)
|
|
51
|
+
dh.new_artifact(p.name, **c)
|
|
52
|
+
dh.new_artifact(p.name, **c)
|
|
53
|
+
|
|
54
|
+
# List artifacts
|
|
55
|
+
l_obj = dh.list_artifacts(p.name)
|
|
56
|
+
assert isinstance(l_obj, list)
|
|
57
|
+
assert len(l_obj) == 4
|
|
58
|
+
for i in l_obj:
|
|
59
|
+
assert isinstance(i, Artifact)
|
|
60
|
+
|
|
61
|
+
for a in l_obj:
|
|
62
|
+
dh.delete_artifact(a.key)
|
|
63
|
+
|
|
64
|
+
print("Done 2")
|
|
65
|
+
|
|
66
|
+
# Get artifacts test
|
|
67
|
+
for i in dicts:
|
|
68
|
+
o1 = dh.new_artifact(p.name, **i)
|
|
69
|
+
assert isinstance(o1, Artifact)
|
|
70
|
+
|
|
71
|
+
# Get by name and id
|
|
72
|
+
o2 = dh.get_artifact(o1.name, project=p.name, entity_id=o1.id)
|
|
73
|
+
assert isinstance(o2, Artifact)
|
|
74
|
+
assert o1.id == o2.id
|
|
75
|
+
|
|
76
|
+
# Get by key
|
|
77
|
+
o3 = dh.get_artifact(o1.key)
|
|
78
|
+
assert isinstance(o3, Artifact)
|
|
79
|
+
assert o1.id == o3.id
|
|
80
|
+
|
|
81
|
+
print("Done 3")
|
|
82
|
+
|
|
83
|
+
# Delete artifacts, all versions
|
|
84
|
+
for n in names:
|
|
85
|
+
dh.delete_artifact(n, project=p.name, delete_all_versions=True)
|
|
86
|
+
l_obj = dh.list_artifacts(p.name)
|
|
87
|
+
assert not l_obj
|
|
88
|
+
|
|
89
|
+
dh.delete_project("test")
|
|
90
|
+
shutil.rmtree(ctx)
|
|
91
|
+
|
|
92
|
+
print("Done 4")
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
if __name__ == "__main__":
|
|
96
|
+
main()
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import shutil
|
|
2
|
+
from copy import deepcopy
|
|
3
|
+
|
|
4
|
+
import dotenv
|
|
5
|
+
|
|
6
|
+
import digitalhub as dh
|
|
7
|
+
from digitalhub.entities.dataitem.entity._base import Dataitem
|
|
8
|
+
|
|
9
|
+
dotenv.load_dotenv()
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def main():
|
|
13
|
+
ctx = "./test-prg"
|
|
14
|
+
names = ["test1", "test2", "test3", "test4"]
|
|
15
|
+
uuids = [
|
|
16
|
+
"d150bcca-bb64-451d-8455-dff862254b95",
|
|
17
|
+
"31acdd2d-0c41-428c-b68b-1b133da9e97b",
|
|
18
|
+
"b4a3dfdc-b917-44c4-9a29-613dcf734244",
|
|
19
|
+
"2618d9c4-cd61-440f-aebb-7e5761709f3b",
|
|
20
|
+
]
|
|
21
|
+
paths = ["./data/test.csv", "s3://bucket/key.csv", "sql://database/schema/table", "https://url.com/file.csv"]
|
|
22
|
+
kind = ["dataitem", "dataitem", "dataitem", "dataitem"]
|
|
23
|
+
|
|
24
|
+
dicts = []
|
|
25
|
+
for i in range(len(names)):
|
|
26
|
+
dicts.append({"name": names[i], "uuid": uuids[i], "path": paths[i], "kind": kind[i]})
|
|
27
|
+
|
|
28
|
+
dh.delete_project("test")
|
|
29
|
+
|
|
30
|
+
p = dh.get_or_create_project("test", context=ctx)
|
|
31
|
+
|
|
32
|
+
# Create and delete dataitems
|
|
33
|
+
for i in dicts:
|
|
34
|
+
d = dh.new_dataitem(p.name, **i)
|
|
35
|
+
dh.delete_dataitem(d.key)
|
|
36
|
+
d = dh.new_dataitem(p.name, **i)
|
|
37
|
+
dh.delete_dataitem(d.name, project=p.name, entity_id=d.id)
|
|
38
|
+
d = p.new_dataitem(**i)
|
|
39
|
+
p.delete_dataitem(d.key)
|
|
40
|
+
|
|
41
|
+
print("Done 1")
|
|
42
|
+
|
|
43
|
+
# Create multiple dataitems
|
|
44
|
+
for i in dicts:
|
|
45
|
+
dh.new_dataitem(p.name, **i)
|
|
46
|
+
|
|
47
|
+
c = deepcopy(i)
|
|
48
|
+
c.pop("uuid")
|
|
49
|
+
dh.new_dataitem(p.name, **c)
|
|
50
|
+
dh.new_dataitem(p.name, **c)
|
|
51
|
+
dh.new_dataitem(p.name, **c)
|
|
52
|
+
dh.new_dataitem(p.name, **c)
|
|
53
|
+
|
|
54
|
+
# List dataitems
|
|
55
|
+
l_obj = dh.list_dataitems(p.name)
|
|
56
|
+
assert isinstance(l_obj, list)
|
|
57
|
+
assert len(l_obj) == 4
|
|
58
|
+
for i in l_obj:
|
|
59
|
+
assert isinstance(i, Dataitem)
|
|
60
|
+
|
|
61
|
+
for a in l_obj:
|
|
62
|
+
dh.delete_dataitem(a.key)
|
|
63
|
+
|
|
64
|
+
print("Done 2")
|
|
65
|
+
|
|
66
|
+
# Get dataitems test
|
|
67
|
+
for i in dicts:
|
|
68
|
+
o1 = dh.new_dataitem(p.name, **i)
|
|
69
|
+
assert isinstance(o1, Dataitem)
|
|
70
|
+
|
|
71
|
+
# Get by name and id
|
|
72
|
+
o2 = dh.get_dataitem(o1.name, project=p.name, entity_id=o1.id)
|
|
73
|
+
assert isinstance(o2, Dataitem)
|
|
74
|
+
assert o1.id == o2.id
|
|
75
|
+
|
|
76
|
+
# Get by key
|
|
77
|
+
o3 = dh.get_dataitem(o1.key)
|
|
78
|
+
assert isinstance(o3, Dataitem)
|
|
79
|
+
assert o1.id == o3.id
|
|
80
|
+
|
|
81
|
+
print("Done 3")
|
|
82
|
+
|
|
83
|
+
# Delete dataitems, all versions
|
|
84
|
+
for n in names:
|
|
85
|
+
dh.delete_dataitem(n, project=p.name, delete_all_versions=True)
|
|
86
|
+
l_obj = dh.list_dataitems(p.name)
|
|
87
|
+
assert not l_obj
|
|
88
|
+
|
|
89
|
+
dh.delete_project("test")
|
|
90
|
+
shutil.rmtree(ctx)
|
|
91
|
+
|
|
92
|
+
print("Done 4")
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
if __name__ == "__main__":
|
|
96
|
+
main()
|
test/test_crud_functions.py
CHANGED
test/test_crud_runs.py
CHANGED
test/test_crud_tasks.py
CHANGED
digitalhub/client/api.py
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import typing
|
|
4
|
-
|
|
5
|
-
from digitalhub.client.builder import client_builder
|
|
6
|
-
|
|
7
|
-
if typing.TYPE_CHECKING:
|
|
8
|
-
from digitalhub.client._base.client import Client
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
def check_client_exists(local: bool = False) -> bool:
|
|
12
|
-
"""
|
|
13
|
-
Check if client exists.
|
|
14
|
-
|
|
15
|
-
Parameters
|
|
16
|
-
----------
|
|
17
|
-
local : bool
|
|
18
|
-
Check client existence by local.
|
|
19
|
-
|
|
20
|
-
Returns
|
|
21
|
-
-------
|
|
22
|
-
bool
|
|
23
|
-
True if client exists, False otherwise.
|
|
24
|
-
"""
|
|
25
|
-
if local:
|
|
26
|
-
return client_builder._local is not None
|
|
27
|
-
return client_builder._dhcore is not None
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
def build_client(local: bool = False, config: dict | None = None) -> None:
|
|
31
|
-
"""
|
|
32
|
-
Wrapper around ClientBuilder.build.
|
|
33
|
-
|
|
34
|
-
Parameters
|
|
35
|
-
----------
|
|
36
|
-
local : bool
|
|
37
|
-
Whether to create a local client or not.
|
|
38
|
-
config : dict
|
|
39
|
-
DHCore environment configuration.
|
|
40
|
-
|
|
41
|
-
Returns
|
|
42
|
-
-------
|
|
43
|
-
Client
|
|
44
|
-
The client instance.
|
|
45
|
-
"""
|
|
46
|
-
client_builder.build(local, config)
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
def get_client(local: bool = False) -> Client:
|
|
50
|
-
"""
|
|
51
|
-
Wrapper around ClientBuilder.build.
|
|
52
|
-
|
|
53
|
-
Parameters
|
|
54
|
-
----------
|
|
55
|
-
local : bool
|
|
56
|
-
Whether to create a local client or not.
|
|
57
|
-
|
|
58
|
-
Returns
|
|
59
|
-
-------
|
|
60
|
-
Client
|
|
61
|
-
The client instance.
|
|
62
|
-
"""
|
|
63
|
-
return client_builder.build(local)
|
digitalhub/client/dhcore/env.py
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import os
|
|
4
|
-
|
|
5
|
-
# Use env user as fallback in the API calls
|
|
6
|
-
try:
|
|
7
|
-
FALLBACK_USER = os.getlogin()
|
|
8
|
-
except Exception:
|
|
9
|
-
FALLBACK_USER = None
|
|
10
|
-
|
|
11
|
-
# File where to write DHCORE_ACCESS_TOKEN and DHCORE_REFRESH_TOKEN
|
|
12
|
-
# It's used because we inject the variables in jupyter env,
|
|
13
|
-
# but refresh token is only available once. Is it's used, we cannot
|
|
14
|
-
# overwrite it with coder, so we need to store the new one in a file,
|
|
15
|
-
# preserved for jupyter restart
|
|
16
|
-
ENV_FILE = ".dhcore"
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
# API levels that are supported
|
|
20
|
-
MAX_API_LEVEL = 20
|
|
21
|
-
MIN_API_LEVEL = 8
|