digitalhub 0.8.0b2__py3-none-any.whl → 0.8.0b4__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 +5 -4
- digitalhub/client/builder.py +3 -3
- digitalhub/client/{objects/dhcore.py → dhcore/client.py} +9 -49
- digitalhub/client/dhcore/env.py +21 -0
- digitalhub/client/dhcore/models.py +46 -0
- digitalhub/{utils/env_utils.py → client/dhcore/utils.py} +1 -13
- digitalhub/client/{objects/local.py → local/client.py} +1 -1
- digitalhub/context/builder.py +1 -1
- digitalhub/context/context.py +1 -1
- digitalhub/datastores/{objects/base.py → _base/datastore.py} +1 -1
- digitalhub/datastores/builder.py +6 -6
- digitalhub/datastores/{objects/local.py → local/datastore.py} +1 -1
- digitalhub/datastores/{objects/remote.py → remote/datastore.py} +1 -1
- digitalhub/datastores/{objects/s3.py → s3/datastore.py} +1 -1
- digitalhub/datastores/{objects/sql.py → sql/datastore.py} +1 -1
- digitalhub/entities/_base/{base.py → _base/entity.py} +1 -1
- digitalhub/entities/_base/{entity/context.py → context/entity.py} +4 -4
- digitalhub/entities/_base/crud.py +3 -3
- digitalhub/entities/_base/entity/{base.py → entity.py} +8 -34
- digitalhub/entities/_base/{metadata.py → entity/metadata.py} +2 -2
- digitalhub/entities/_base/{spec/base.py → entity/spec.py} +11 -11
- digitalhub/entities/_base/{status/base.py → entity/status.py} +2 -2
- digitalhub/entities/_base/executable/__init__.py +0 -0
- digitalhub/entities/_base/{entity/executable.py → executable/entity.py} +55 -31
- digitalhub/entities/_base/material/__init__.py +0 -0
- digitalhub/entities/_base/{entity/material.py → material/entity.py} +4 -4
- digitalhub/entities/_base/{spec/material.py → material/spec.py} +3 -3
- digitalhub/entities/_base/{status/material.py → material/status.py} +1 -1
- digitalhub/entities/_base/unversioned/__init__.py +0 -0
- digitalhub/entities/_base/unversioned/builder.py +66 -0
- digitalhub/entities/_base/unversioned/entity.py +49 -0
- digitalhub/entities/_base/versioned/__init__.py +0 -0
- digitalhub/entities/_base/versioned/builder.py +68 -0
- digitalhub/entities/_base/versioned/entity.py +53 -0
- digitalhub/entities/_builders/entity.py +153 -0
- digitalhub/entities/_builders/metadata.py +5 -21
- digitalhub/entities/_builders/spec.py +11 -21
- digitalhub/entities/_builders/status.py +10 -20
- digitalhub/entities/_builders/uuid.py +4 -11
- digitalhub/entities/artifact/_base/__init__.py +0 -0
- digitalhub/entities/artifact/_base/builder.py +86 -0
- digitalhub/entities/artifact/{entity/_base.py → _base/entity.py} +5 -5
- digitalhub/entities/artifact/_base/spec.py +15 -0
- digitalhub/entities/artifact/_base/status.py +9 -0
- digitalhub/entities/artifact/artifact/__init__.py +0 -0
- digitalhub/entities/artifact/artifact/builder.py +18 -0
- digitalhub/entities/artifact/artifact/entity.py +32 -0
- digitalhub/entities/artifact/{spec.py → artifact/spec.py} +4 -16
- digitalhub/entities/artifact/{status.py → artifact/status.py} +1 -1
- digitalhub/entities/artifact/builder.py +16 -98
- digitalhub/entities/artifact/crud.py +4 -4
- digitalhub/entities/builders.py +63 -0
- digitalhub/entities/dataitem/_base/__init__.py +0 -0
- digitalhub/entities/dataitem/_base/builder.py +86 -0
- digitalhub/entities/dataitem/{entity/_base.py → _base/entity.py} +5 -5
- digitalhub/entities/dataitem/_base/spec.py +15 -0
- digitalhub/entities/dataitem/_base/status.py +20 -0
- digitalhub/entities/dataitem/builder.py +16 -109
- digitalhub/entities/dataitem/crud.py +8 -5
- digitalhub/entities/dataitem/dataitem/__init__.py +0 -0
- digitalhub/entities/dataitem/dataitem/builder.py +18 -0
- digitalhub/entities/dataitem/dataitem/entity.py +32 -0
- digitalhub/entities/dataitem/dataitem/spec.py +15 -0
- digitalhub/entities/dataitem/dataitem/status.py +9 -0
- digitalhub/entities/dataitem/iceberg/__init__.py +0 -0
- digitalhub/entities/dataitem/iceberg/builder.py +18 -0
- digitalhub/entities/dataitem/iceberg/entity.py +32 -0
- digitalhub/entities/dataitem/iceberg/spec.py +15 -0
- digitalhub/entities/dataitem/iceberg/status.py +9 -0
- digitalhub/entities/dataitem/table/__init__.py +0 -0
- digitalhub/entities/dataitem/table/builder.py +18 -0
- digitalhub/entities/dataitem/{entity/table.py → table/entity.py} +24 -3
- digitalhub/entities/dataitem/table/spec.py +25 -0
- digitalhub/entities/dataitem/table/status.py +9 -0
- digitalhub/entities/function/_base/__init__.py +0 -0
- digitalhub/entities/function/_base/builder.py +78 -0
- digitalhub/entities/function/{entity.py → _base/entity.py} +8 -8
- digitalhub/entities/function/{models.py → _base/models.py} +1 -1
- digitalhub/entities/function/_base/spec.py +15 -0
- digitalhub/entities/function/_base/status.py +9 -0
- digitalhub/entities/function/builder.py +22 -57
- digitalhub/entities/function/crud.py +3 -3
- digitalhub/entities/model/_base/__init__.py +0 -0
- digitalhub/entities/model/_base/builder.py +86 -0
- digitalhub/entities/model/{entity/_base.py → _base/entity.py} +5 -5
- digitalhub/entities/model/_base/spec.py +49 -0
- digitalhub/entities/model/_base/status.py +9 -0
- digitalhub/entities/model/builder.py +16 -117
- digitalhub/entities/model/crud.py +4 -4
- digitalhub/entities/model/huggingface/__init__.py +0 -0
- digitalhub/entities/model/huggingface/builder.py +18 -0
- digitalhub/entities/model/huggingface/entity.py +32 -0
- digitalhub/entities/model/huggingface/spec.py +36 -0
- digitalhub/entities/model/huggingface/status.py +9 -0
- digitalhub/entities/model/mlflow/__init__.py +0 -0
- digitalhub/entities/model/mlflow/builder.py +18 -0
- digitalhub/entities/model/mlflow/entity.py +32 -0
- digitalhub/entities/model/mlflow/spec.py +44 -0
- digitalhub/entities/model/mlflow/status.py +9 -0
- digitalhub/entities/model/{entity/mlflow.py → mlflow/utils.py} +1 -10
- digitalhub/entities/model/model/__init__.py +0 -0
- digitalhub/entities/model/model/builder.py +18 -0
- digitalhub/entities/model/model/entity.py +32 -0
- digitalhub/entities/model/model/spec.py +15 -0
- digitalhub/entities/model/model/status.py +9 -0
- digitalhub/entities/model/sklearn/__init__.py +0 -0
- digitalhub/entities/model/sklearn/builder.py +18 -0
- digitalhub/entities/model/sklearn/entity.py +32 -0
- digitalhub/entities/model/sklearn/spec.py +15 -0
- digitalhub/entities/model/sklearn/status.py +9 -0
- digitalhub/entities/project/_base/__init__.py +0 -0
- digitalhub/entities/project/_base/builder.py +128 -0
- digitalhub/entities/project/{entity.py → _base/entity.py} +18 -60
- digitalhub/entities/project/{spec.py → _base/spec.py} +4 -4
- digitalhub/entities/project/_base/status.py +9 -0
- digitalhub/entities/project/builder.py +20 -51
- digitalhub/entities/project/crud.py +2 -2
- digitalhub/entities/run/_base/__init__.py +0 -0
- digitalhub/entities/run/_base/builder.py +73 -0
- digitalhub/entities/run/{entity.py → _base/entity.py} +12 -155
- digitalhub/entities/run/{spec.py → _base/spec.py} +8 -8
- digitalhub/entities/run/{status.py → _base/status.py} +4 -4
- digitalhub/entities/run/builder.py +21 -47
- digitalhub/entities/run/crud.py +3 -3
- digitalhub/entities/secret/_base/__init__.py +0 -0
- digitalhub/entities/secret/_base/builder.py +81 -0
- digitalhub/entities/secret/{entity.py → _base/entity.py} +7 -6
- digitalhub/entities/secret/{spec.py → _base/spec.py} +4 -4
- digitalhub/entities/secret/_base/status.py +9 -0
- digitalhub/entities/secret/builder.py +20 -62
- digitalhub/entities/secret/crud.py +12 -4
- digitalhub/entities/task/_base/__init__.py +0 -0
- digitalhub/entities/task/_base/builder.py +76 -0
- digitalhub/entities/task/{entity.py → _base/entity.py} +6 -6
- digitalhub/entities/task/{models.py → _base/models.py} +9 -0
- digitalhub/entities/task/{spec.py → _base/spec.py} +9 -7
- digitalhub/entities/task/_base/status.py +9 -0
- digitalhub/entities/task/builder.py +21 -44
- digitalhub/entities/task/crud.py +3 -3
- digitalhub/entities/utils/__init__.py +0 -0
- digitalhub/entities/{utils.py → utils/utils.py} +2 -2
- digitalhub/entities/workflow/_base/__init__.py +0 -0
- digitalhub/entities/workflow/_base/builder.py +78 -0
- digitalhub/entities/workflow/{entity.py → _base/entity.py} +8 -8
- digitalhub/entities/workflow/_base/spec.py +15 -0
- digitalhub/entities/workflow/_base/status.py +9 -0
- digitalhub/entities/workflow/builder.py +20 -60
- digitalhub/entities/workflow/crud.py +3 -3
- digitalhub/factory/__init__.py +0 -0
- digitalhub/factory/factory.py +204 -0
- digitalhub/factory/utils.py +90 -0
- digitalhub/readers/_base/__init__.py +0 -0
- digitalhub/readers/builder.py +1 -1
- digitalhub/readers/pandas/__init__.py +0 -0
- digitalhub/readers/{objects/pandas.py → pandas/readers.py} +1 -1
- digitalhub/readers/registry.py +1 -1
- digitalhub/runtimes/builder.py +24 -41
- digitalhub/runtimes/kind_registry.py +14 -0
- digitalhub/runtimes/utils.py +28 -0
- digitalhub/stores/_base/__init__.py +0 -0
- digitalhub/stores/builder.py +6 -6
- digitalhub/stores/local/__init__.py +0 -0
- digitalhub/stores/{objects/local.py → local/store.py} +1 -1
- digitalhub/stores/remote/__init__.py +0 -0
- digitalhub/stores/{objects/remote.py → remote/store.py} +1 -1
- digitalhub/stores/s3/__init__.py +0 -0
- digitalhub/stores/{objects/s3.py → s3/store.py} +1 -1
- digitalhub/stores/sql/__init__.py +0 -0
- digitalhub/stores/{objects/sql.py → sql/store.py} +1 -1
- digitalhub/utils/exceptions.py +6 -0
- digitalhub/utils/generic_utils.py +18 -42
- digitalhub/utils/s3_utils.py +58 -0
- {digitalhub-0.8.0b2.dist-info → digitalhub-0.8.0b4.dist-info}/METADATA +3 -2
- digitalhub-0.8.0b4.dist-info/RECORD +232 -0
- {digitalhub-0.8.0b2.dist-info → digitalhub-0.8.0b4.dist-info}/WHEEL +1 -1
- test/local/CRUD/test_artifacts.py +96 -0
- test/local/CRUD/test_dataitems.py +96 -0
- test/local/CRUD/test_models.py +95 -0
- test/test_crud_functions.py +1 -1
- test/test_crud_runs.py +1 -1
- test/test_crud_tasks.py +1 -1
- digitalhub/entities/_base/entity/unversioned.py +0 -87
- digitalhub/entities/_base/entity/versioned.py +0 -94
- digitalhub/entities/artifact/entity/artifact.py +0 -9
- digitalhub/entities/dataitem/entity/dataitem.py +0 -9
- digitalhub/entities/dataitem/entity/iceberg.py +0 -7
- digitalhub/entities/dataitem/spec.py +0 -61
- digitalhub/entities/dataitem/status.py +0 -38
- digitalhub/entities/function/spec.py +0 -81
- digitalhub/entities/function/status.py +0 -9
- digitalhub/entities/model/entity/huggingface.py +0 -9
- digitalhub/entities/model/entity/model.py +0 -9
- digitalhub/entities/model/entity/sklearn.py +0 -9
- digitalhub/entities/model/spec.py +0 -146
- digitalhub/entities/model/status.py +0 -33
- digitalhub/entities/project/status.py +0 -9
- digitalhub/entities/registries.py +0 -48
- digitalhub/entities/secret/status.py +0 -9
- digitalhub/entities/task/status.py +0 -9
- digitalhub/entities/workflow/spec.py +0 -15
- digitalhub/entities/workflow/status.py +0 -9
- digitalhub/registry/models.py +0 -87
- digitalhub/registry/registry.py +0 -74
- digitalhub/registry/utils.py +0 -150
- digitalhub-0.8.0b2.dist-info/RECORD +0 -161
- test/test_crud_artifacts.py +0 -96
- test/test_crud_dataitems.py +0 -96
- /digitalhub/client/{objects → _base}/__init__.py +0 -0
- /digitalhub/client/{objects/base.py → _base/client.py} +0 -0
- /digitalhub/{datastores/objects → client/dhcore}/__init__.py +0 -0
- /digitalhub/{entities/_base/spec → client/local}/__init__.py +0 -0
- /digitalhub/{entities/_base/status → datastores/_base}/__init__.py +0 -0
- /digitalhub/{entities/artifact/entity → datastores/local}/__init__.py +0 -0
- /digitalhub/{entities/dataitem/entity → datastores/remote}/__init__.py +0 -0
- /digitalhub/{entities/model/entity → datastores/s3}/__init__.py +0 -0
- /digitalhub/{readers/objects → datastores/sql}/__init__.py +0 -0
- /digitalhub/{registry → entities/_base/_base}/__init__.py +0 -0
- /digitalhub/{stores/objects → entities/_base/context}/__init__.py +0 -0
- /digitalhub/entities/dataitem/{models.py → table/models.py} +0 -0
- /digitalhub/entities/model/{models.py → mlflow/models.py} +0 -0
- /digitalhub/entities/{_base → utils}/api.py +0 -0
- /digitalhub/entities/{entity_types.py → utils/entity_types.py} +0 -0
- /digitalhub/entities/{_base → utils}/state.py +0 -0
- /digitalhub/readers/{objects/base.py → _base/readers.py} +0 -0
- /digitalhub/runtimes/{base.py → _base.py} +0 -0
- /digitalhub/stores/{objects/base.py → _base/store.py} +0 -0
- {digitalhub-0.8.0b2.dist-info → digitalhub-0.8.0b4.dist-info}/LICENSE.txt +0 -0
- {digitalhub-0.8.0b2.dist-info → digitalhub-0.8.0b4.dist-info}/top_level.txt +0 -0
- /test/{test_imports.py → local/imports/test_imports.py} +0 -0
digitalhub/__init__.py
CHANGED
|
@@ -68,14 +68,15 @@ from digitalhub.entities.workflow.crud import (
|
|
|
68
68
|
)
|
|
69
69
|
|
|
70
70
|
try:
|
|
71
|
-
from digitalhub.entities.model.
|
|
71
|
+
from digitalhub.entities.model.mlflow.utils import from_mlflow_run
|
|
72
72
|
except ImportError:
|
|
73
73
|
...
|
|
74
74
|
|
|
75
|
-
from digitalhub.
|
|
76
|
-
from digitalhub.stores.builder import set_store
|
|
77
|
-
from digitalhub.utils.env_utils import refresh_token, set_dhcore_env
|
|
75
|
+
from digitalhub.client.dhcore.utils import refresh_token, set_dhcore_env
|
|
78
76
|
|
|
79
77
|
# Register entities into registry
|
|
78
|
+
from digitalhub.factory.utils import register_entities, register_runtimes_entities
|
|
79
|
+
from digitalhub.stores.builder import set_store
|
|
80
|
+
|
|
80
81
|
register_entities()
|
|
81
82
|
register_runtimes_entities()
|
digitalhub/client/builder.py
CHANGED
|
@@ -2,11 +2,11 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
|
-
from digitalhub.client.
|
|
6
|
-
from digitalhub.client.
|
|
5
|
+
from digitalhub.client.dhcore.client import ClientDHCore
|
|
6
|
+
from digitalhub.client.local.client import ClientLocal
|
|
7
7
|
|
|
8
8
|
if typing.TYPE_CHECKING:
|
|
9
|
-
from digitalhub.client.
|
|
9
|
+
from digitalhub.client._base.client import Client
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class ClientBuilder:
|
|
@@ -5,11 +5,12 @@ import typing
|
|
|
5
5
|
from urllib.parse import urlparse
|
|
6
6
|
|
|
7
7
|
from dotenv import load_dotenv, set_key
|
|
8
|
-
from pydantic import BaseModel
|
|
9
8
|
from requests import request
|
|
10
9
|
from requests.exceptions import HTTPError, JSONDecodeError, RequestException
|
|
11
10
|
|
|
12
|
-
from digitalhub.client.
|
|
11
|
+
from digitalhub.client._base.client import Client
|
|
12
|
+
from digitalhub.client.dhcore.env import ENV_FILE, FALLBACK_USER, MAX_API_LEVEL, MIN_API_LEVEL
|
|
13
|
+
from digitalhub.client.dhcore.models import BasicAuth, OAuth2TokenAuth
|
|
13
14
|
from digitalhub.utils.exceptions import (
|
|
14
15
|
BackendError,
|
|
15
16
|
BadRequestError,
|
|
@@ -24,52 +25,6 @@ if typing.TYPE_CHECKING:
|
|
|
24
25
|
from requests import Response
|
|
25
26
|
|
|
26
27
|
|
|
27
|
-
# Use env user as fallback in the API calls
|
|
28
|
-
try:
|
|
29
|
-
FALLBACK_USER = os.getlogin()
|
|
30
|
-
except Exception:
|
|
31
|
-
FALLBACK_USER = None
|
|
32
|
-
|
|
33
|
-
# File where to write DHCORE_ACCESS_TOKEN and DHCORE_REFRESH_TOKEN
|
|
34
|
-
# It's used because we inject the variables in jupyter env,
|
|
35
|
-
# but refresh token is only available once. Is it's used, we cannot
|
|
36
|
-
# overwrite it with coder, so we need to store the new one in a file,
|
|
37
|
-
# preserved for jupyter restart
|
|
38
|
-
ENV_FILE = ".dhcore"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
# API levels that are supported
|
|
42
|
-
MAX_API_LEVEL = 20
|
|
43
|
-
MIN_API_LEVEL = 8
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
class AuthConfig(BaseModel):
|
|
47
|
-
"""Client configuration model."""
|
|
48
|
-
|
|
49
|
-
user: str = FALLBACK_USER
|
|
50
|
-
"""Username."""
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
class OAuth2TokenAuth(AuthConfig):
|
|
54
|
-
"""OAuth2 token authentication model."""
|
|
55
|
-
|
|
56
|
-
access_token: str
|
|
57
|
-
"""OAuth2 token."""
|
|
58
|
-
|
|
59
|
-
refresh_token: str = None
|
|
60
|
-
"""OAuth2 refresh token."""
|
|
61
|
-
|
|
62
|
-
client_id: str = None
|
|
63
|
-
"""OAuth2 client id."""
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
class BasicAuth(AuthConfig):
|
|
67
|
-
"""Basic authentication model."""
|
|
68
|
-
|
|
69
|
-
password: str
|
|
70
|
-
"""Basic authentication password."""
|
|
71
|
-
|
|
72
|
-
|
|
73
28
|
class ClientDHCore(Client):
|
|
74
29
|
"""
|
|
75
30
|
DHCore client.
|
|
@@ -624,11 +579,16 @@ class ClientDHCore(Client):
|
|
|
624
579
|
dict
|
|
625
580
|
Response object.
|
|
626
581
|
"""
|
|
582
|
+
# Get refersh token from .core file to avoid concurrency
|
|
583
|
+
# in a shared workspace
|
|
584
|
+
self._load_env()
|
|
585
|
+
refresh_token = os.getenv("DHCORE_REFRESH_TOKEN")
|
|
586
|
+
|
|
627
587
|
# Send request to get new access token
|
|
628
588
|
payload = {
|
|
629
589
|
"grant_type": "refresh_token",
|
|
630
590
|
"client_id": self._client_id,
|
|
631
|
-
"refresh_token":
|
|
591
|
+
"refresh_token": refresh_token,
|
|
632
592
|
}
|
|
633
593
|
headers = {"Content-Type": "application/x-www-form-urlencoded"}
|
|
634
594
|
r = request("POST", url, data=payload, headers=headers, timeout=60)
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from pydantic import BaseModel
|
|
4
|
+
|
|
5
|
+
from digitalhub.client.dhcore.env import FALLBACK_USER
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class AuthConfig(BaseModel):
|
|
9
|
+
"""Client configuration model."""
|
|
10
|
+
|
|
11
|
+
user: str = FALLBACK_USER
|
|
12
|
+
"""Username."""
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class BasicAuth(AuthConfig):
|
|
16
|
+
"""Basic authentication model."""
|
|
17
|
+
|
|
18
|
+
password: str
|
|
19
|
+
"""Basic authentication password."""
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class ClientParams(AuthConfig):
|
|
23
|
+
"""Client id authentication model."""
|
|
24
|
+
|
|
25
|
+
client_id: str = None
|
|
26
|
+
"""OAuth2 client id."""
|
|
27
|
+
|
|
28
|
+
client_scecret: str = None
|
|
29
|
+
"""OAuth2 client secret."""
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class OAuth2TokenAuth(ClientParams):
|
|
33
|
+
"""OAuth2 token authentication model."""
|
|
34
|
+
|
|
35
|
+
access_token: str
|
|
36
|
+
"""OAuth2 token."""
|
|
37
|
+
|
|
38
|
+
refresh_token: str = None
|
|
39
|
+
"""OAuth2 refresh token."""
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class TokenExchangeAuth(ClientParams):
|
|
43
|
+
"""Token exchange authentication model."""
|
|
44
|
+
|
|
45
|
+
exchange_token: str
|
|
46
|
+
"""Exchange token."""
|
|
@@ -6,7 +6,7 @@ import typing
|
|
|
6
6
|
from digitalhub.client.builder import check_client_exists, get_client
|
|
7
7
|
|
|
8
8
|
if typing.TYPE_CHECKING:
|
|
9
|
-
from digitalhub.client.
|
|
9
|
+
from digitalhub.client.dhcore.client import ClientDHCore
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
def set_dhcore_env(
|
|
@@ -109,15 +109,3 @@ def refresh_token() -> None:
|
|
|
109
109
|
"""
|
|
110
110
|
client: ClientDHCore = get_client(local=False)
|
|
111
111
|
client._get_new_access_token()
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
def get_s3_bucket() -> str | None:
|
|
115
|
-
"""
|
|
116
|
-
Function to get S3 bucket name.
|
|
117
|
-
|
|
118
|
-
Returns
|
|
119
|
-
-------
|
|
120
|
-
str
|
|
121
|
-
The S3 bucket name.
|
|
122
|
-
"""
|
|
123
|
-
return os.getenv("S3_BUCKET_NAME", "datalake")
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
from copy import deepcopy
|
|
4
4
|
from datetime import datetime, timezone
|
|
5
5
|
|
|
6
|
-
from digitalhub.client.
|
|
6
|
+
from digitalhub.client._base.client import Client
|
|
7
7
|
from digitalhub.utils.exceptions import BackendError
|
|
8
8
|
|
|
9
9
|
|
digitalhub/context/builder.py
CHANGED
digitalhub/context/context.py
CHANGED
digitalhub/datastores/builder.py
CHANGED
|
@@ -2,16 +2,16 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
|
-
from digitalhub.datastores.
|
|
6
|
-
from digitalhub.datastores.
|
|
7
|
-
from digitalhub.datastores.
|
|
8
|
-
from digitalhub.datastores.
|
|
5
|
+
from digitalhub.datastores.local.datastore import LocalDatastore
|
|
6
|
+
from digitalhub.datastores.remote.datastore import RemoteDatastore
|
|
7
|
+
from digitalhub.datastores.s3.datastore import S3Datastore
|
|
8
|
+
from digitalhub.datastores.sql.datastore import SqlDatastore
|
|
9
9
|
from digitalhub.stores.builder import get_default_store, get_store
|
|
10
10
|
from digitalhub.utils.uri_utils import map_uri_scheme
|
|
11
11
|
|
|
12
12
|
if typing.TYPE_CHECKING:
|
|
13
|
-
from digitalhub.datastores.
|
|
14
|
-
from digitalhub.stores.
|
|
13
|
+
from digitalhub.datastores._base.datastore import Datastore
|
|
14
|
+
from digitalhub.stores._base.store import Store
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
REGISTRY_DATASTORES = {"local": LocalDatastore, "remote": RemoteDatastore, "s3": S3Datastore, "sql": SqlDatastore}
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
from typing import Any
|
|
5
5
|
|
|
6
|
-
from digitalhub.datastores.
|
|
6
|
+
from digitalhub.datastores._base.datastore import Datastore
|
|
7
7
|
from digitalhub.readers.builder import get_reader_by_object
|
|
8
8
|
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
from io import BytesIO
|
|
4
4
|
from typing import Any
|
|
5
5
|
|
|
6
|
-
from digitalhub.datastores.
|
|
6
|
+
from digitalhub.datastores._base.datastore import Datastore
|
|
7
7
|
from digitalhub.readers.builder import get_reader_by_object
|
|
8
8
|
|
|
9
9
|
|
|
@@ -4,14 +4,14 @@ import typing
|
|
|
4
4
|
|
|
5
5
|
from digitalhub.context.builder import get_context
|
|
6
6
|
from digitalhub.entities._base.crud import create_entity_api_ctx, read_entity_api_ctx, update_entity_api_ctx
|
|
7
|
-
from digitalhub.entities._base.entity.
|
|
7
|
+
from digitalhub.entities._base.entity.entity import Entity
|
|
8
8
|
from digitalhub.utils.generic_utils import get_timestamp
|
|
9
9
|
|
|
10
10
|
if typing.TYPE_CHECKING:
|
|
11
11
|
from digitalhub.context.context import Context
|
|
12
|
-
from digitalhub.entities._base.metadata import Metadata
|
|
13
|
-
from digitalhub.entities._base.spec
|
|
14
|
-
from digitalhub.entities._base.status
|
|
12
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
13
|
+
from digitalhub.entities._base.entity.spec import Spec
|
|
14
|
+
from digitalhub.entities._base.entity.status import Status
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class ContextEntity(Entity):
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import typing
|
|
4
4
|
|
|
5
5
|
from digitalhub.context.builder import get_context
|
|
6
|
-
from digitalhub.entities.
|
|
6
|
+
from digitalhub.entities.utils.api import (
|
|
7
7
|
api_base_create,
|
|
8
8
|
api_base_delete,
|
|
9
9
|
api_base_list,
|
|
@@ -20,10 +20,10 @@ from digitalhub.entities._base.api import (
|
|
|
20
20
|
api_ctx_stop,
|
|
21
21
|
api_ctx_update,
|
|
22
22
|
)
|
|
23
|
-
from digitalhub.entities.utils import parse_entity_key
|
|
23
|
+
from digitalhub.entities.utils.utils import parse_entity_key
|
|
24
24
|
|
|
25
25
|
if typing.TYPE_CHECKING:
|
|
26
|
-
from digitalhub.client.
|
|
26
|
+
from digitalhub.client._base.client import Client
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
def create_entity_api_base(
|
|
@@ -3,19 +3,20 @@ from __future__ import annotations
|
|
|
3
3
|
import typing
|
|
4
4
|
from abc import ABCMeta, abstractmethod
|
|
5
5
|
|
|
6
|
-
from digitalhub.entities._base.
|
|
6
|
+
from digitalhub.entities._base._base.entity import Base
|
|
7
|
+
from digitalhub.factory.factory import factory
|
|
7
8
|
|
|
8
9
|
if typing.TYPE_CHECKING:
|
|
9
|
-
from digitalhub.entities._base.metadata import Metadata
|
|
10
|
-
from digitalhub.entities._base.spec
|
|
11
|
-
from digitalhub.entities._base.status
|
|
10
|
+
from digitalhub.entities._base.entity.metadata import Metadata
|
|
11
|
+
from digitalhub.entities._base.entity.spec import Spec
|
|
12
|
+
from digitalhub.entities._base.entity.status import Status
|
|
12
13
|
|
|
13
14
|
|
|
14
|
-
class Entity(
|
|
15
|
+
class Entity(Base, metaclass=ABCMeta):
|
|
15
16
|
"""
|
|
16
17
|
Abstract class for entities.
|
|
17
18
|
|
|
18
|
-
An entity is a collection of metadata,
|
|
19
|
+
An entity is a collection of metadata, specifications.and status
|
|
19
20
|
representing a variety of objects handled by Digitalhub.
|
|
20
21
|
"""
|
|
21
22
|
|
|
@@ -68,7 +69,7 @@ class Entity(ModelObj, metaclass=ABCMeta):
|
|
|
68
69
|
-------
|
|
69
70
|
None
|
|
70
71
|
"""
|
|
71
|
-
new_obj = self.
|
|
72
|
+
new_obj = factory.build_entity_from_dict(self.kind, obj)
|
|
72
73
|
self.metadata = new_obj.metadata
|
|
73
74
|
self.spec = new_obj.spec
|
|
74
75
|
self.status = new_obj.status
|
|
@@ -93,33 +94,6 @@ class Entity(ModelObj, metaclass=ABCMeta):
|
|
|
93
94
|
"""
|
|
94
95
|
return {k: v for k, v in super().to_dict().items() if k in self._obj_attr}
|
|
95
96
|
|
|
96
|
-
@classmethod
|
|
97
|
-
def from_dict(cls, obj: dict, validate: bool = True) -> Entity:
|
|
98
|
-
"""
|
|
99
|
-
Create a new object from dictionary.
|
|
100
|
-
|
|
101
|
-
Parameters
|
|
102
|
-
----------
|
|
103
|
-
obj : dict
|
|
104
|
-
Dictionary to create object from.
|
|
105
|
-
validate : bool
|
|
106
|
-
Flag to indicate if arguments validation against a pydantic schema must be ignored.
|
|
107
|
-
|
|
108
|
-
Returns
|
|
109
|
-
-------
|
|
110
|
-
Self
|
|
111
|
-
Self instance.
|
|
112
|
-
"""
|
|
113
|
-
parsed_dict = cls._parse_dict(obj, validate=validate)
|
|
114
|
-
return cls(**parsed_dict)
|
|
115
|
-
|
|
116
|
-
@staticmethod
|
|
117
|
-
@abstractmethod
|
|
118
|
-
def _parse_dict(obj: dict, validate: bool = True) -> dict:
|
|
119
|
-
"""
|
|
120
|
-
Abstract method to parse dictionary.
|
|
121
|
-
"""
|
|
122
|
-
|
|
123
97
|
def __repr__(self) -> str:
|
|
124
98
|
"""
|
|
125
99
|
Return string representation of the entity object.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from digitalhub.entities._base.
|
|
3
|
+
from digitalhub.entities._base._base.entity import Base
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
class Metadata(
|
|
6
|
+
class Metadata(Base):
|
|
7
7
|
"""
|
|
8
8
|
A class representing the metadata of an entity.
|
|
9
9
|
Metadata is a collection of information about an entity thought
|
|
@@ -2,46 +2,46 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from pydantic import BaseModel
|
|
4
4
|
|
|
5
|
-
from digitalhub.entities._base.
|
|
5
|
+
from digitalhub.entities._base._base.entity import Base
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
class Spec(
|
|
8
|
+
class Spec(Base):
|
|
9
9
|
"""
|
|
10
|
-
A class representing the
|
|
11
|
-
|
|
10
|
+
A class representing the specifications.of an entity.
|
|
11
|
+
specifications.is a collection of information about an entity
|
|
12
12
|
thought to be immutable by the user.
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
15
|
@classmethod
|
|
16
16
|
def from_dict(cls, obj: dict) -> Spec:
|
|
17
17
|
"""
|
|
18
|
-
Return entity
|
|
18
|
+
Return entity specifications.object from dictionary.
|
|
19
19
|
|
|
20
20
|
Parameters
|
|
21
21
|
----------
|
|
22
22
|
obj : dict
|
|
23
|
-
A dictionary containing the attributes of the entity
|
|
23
|
+
A dictionary containing the attributes of the entity specifications.
|
|
24
24
|
|
|
25
25
|
Returns
|
|
26
26
|
-------
|
|
27
27
|
EntitySpec
|
|
28
|
-
An entity
|
|
28
|
+
An entity specifications.object.
|
|
29
29
|
"""
|
|
30
30
|
return cls(**obj)
|
|
31
31
|
|
|
32
32
|
|
|
33
|
-
class
|
|
33
|
+
class SpecValidator(BaseModel, extra="ignore"):
|
|
34
34
|
"""
|
|
35
35
|
A class representing the parameters of an entity.
|
|
36
36
|
This base class is used to define the parameters of an entity
|
|
37
|
-
|
|
37
|
+
specifications.and is used to validate the parameters passed
|
|
38
38
|
to the constructor.
|
|
39
39
|
"""
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
class MaterialSpec(Spec):
|
|
43
43
|
"""
|
|
44
|
-
Material
|
|
44
|
+
Material specifications.class.
|
|
45
45
|
"""
|
|
46
46
|
|
|
47
47
|
def __init__(self, path: str, **kwargs) -> None:
|
|
@@ -49,7 +49,7 @@ class MaterialSpec(Spec):
|
|
|
49
49
|
self.path = path
|
|
50
50
|
|
|
51
51
|
|
|
52
|
-
class
|
|
52
|
+
class MaterialValidator(SpecValidator):
|
|
53
53
|
"""
|
|
54
54
|
Material parameters class.
|
|
55
55
|
"""
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from digitalhub.entities._base.
|
|
3
|
+
from digitalhub.entities._base._base.entity import Base
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
class Status(
|
|
6
|
+
class Status(Base):
|
|
7
7
|
"""
|
|
8
8
|
Base Status class.
|
|
9
9
|
The status class contains information about the state of an entity,
|
|
File without changes
|