digitalhub 0.8.0b15__py3-none-any.whl → 0.9.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 +19 -2
- digitalhub/client/_base/api_builder.py +16 -0
- digitalhub/client/_base/client.py +67 -0
- digitalhub/client/_base/key_builder.py +52 -0
- digitalhub/client/api.py +2 -38
- digitalhub/client/dhcore/api_builder.py +100 -0
- digitalhub/client/dhcore/client.py +100 -48
- digitalhub/client/dhcore/enums.py +27 -0
- digitalhub/client/dhcore/env.py +4 -2
- digitalhub/client/dhcore/key_builder.py +58 -0
- digitalhub/client/dhcore/utils.py +17 -17
- digitalhub/client/local/api_builder.py +100 -0
- digitalhub/client/local/client.py +22 -0
- digitalhub/client/local/key_builder.py +58 -0
- digitalhub/context/api.py +3 -38
- digitalhub/context/builder.py +10 -23
- digitalhub/context/context.py +20 -92
- digitalhub/entities/_base/context/entity.py +30 -22
- digitalhub/entities/_base/entity/_constructors/metadata.py +12 -1
- digitalhub/entities/_base/entity/_constructors/name.py +1 -1
- digitalhub/entities/_base/entity/_constructors/spec.py +1 -1
- digitalhub/entities/_base/entity/_constructors/status.py +3 -2
- digitalhub/entities/_base/entity/_constructors/uuid.py +1 -1
- digitalhub/entities/_base/entity/builder.py +6 -1
- digitalhub/entities/_base/entity/entity.py +32 -10
- digitalhub/entities/_base/entity/metadata.py +22 -0
- digitalhub/entities/_base/entity/spec.py +7 -2
- digitalhub/entities/_base/executable/entity.py +8 -8
- digitalhub/entities/_base/material/entity.py +49 -17
- digitalhub/entities/_base/material/status.py +0 -31
- digitalhub/entities/_base/material/utils.py +106 -0
- digitalhub/entities/_base/project/entity.py +341 -0
- digitalhub/entities/_base/unversioned/entity.py +3 -24
- digitalhub/entities/_base/versioned/entity.py +2 -26
- digitalhub/entities/_commons/enums.py +103 -0
- digitalhub/entities/_commons/utils.py +83 -0
- digitalhub/entities/_operations/processor.py +1873 -0
- digitalhub/entities/artifact/_base/builder.py +1 -1
- digitalhub/entities/artifact/_base/entity.py +1 -1
- digitalhub/entities/artifact/artifact/builder.py +2 -1
- digitalhub/entities/artifact/crud.py +46 -29
- digitalhub/entities/artifact/utils.py +62 -0
- digitalhub/entities/dataitem/_base/builder.py +1 -1
- digitalhub/entities/dataitem/_base/entity.py +6 -6
- digitalhub/entities/dataitem/crud.py +50 -66
- digitalhub/entities/dataitem/dataitem/builder.py +2 -1
- digitalhub/entities/dataitem/iceberg/builder.py +2 -1
- digitalhub/entities/dataitem/table/builder.py +2 -1
- digitalhub/entities/dataitem/table/entity.py +5 -10
- digitalhub/entities/dataitem/table/models.py +4 -5
- digitalhub/entities/dataitem/utils.py +137 -0
- digitalhub/entities/function/_base/builder.py +1 -1
- digitalhub/entities/function/_base/entity.py +6 -2
- digitalhub/entities/function/crud.py +36 -17
- digitalhub/entities/model/_base/builder.py +1 -1
- digitalhub/entities/model/_base/entity.py +1 -1
- digitalhub/entities/model/crud.py +46 -29
- digitalhub/entities/model/huggingface/builder.py +2 -1
- digitalhub/entities/model/huggingface/spec.py +4 -2
- digitalhub/entities/model/mlflow/builder.py +2 -1
- digitalhub/entities/model/mlflow/models.py +17 -9
- digitalhub/entities/model/mlflow/spec.py +6 -1
- digitalhub/entities/model/mlflow/utils.py +4 -2
- digitalhub/entities/model/model/builder.py +2 -1
- digitalhub/entities/model/sklearn/builder.py +2 -1
- digitalhub/entities/model/utils.py +62 -0
- digitalhub/entities/project/_base/builder.py +2 -2
- digitalhub/entities/project/_base/entity.py +82 -272
- digitalhub/entities/project/crud.py +110 -89
- digitalhub/entities/project/utils.py +35 -0
- digitalhub/entities/run/_base/builder.py +3 -1
- digitalhub/entities/run/_base/entity.py +52 -54
- digitalhub/entities/run/_base/spec.py +15 -7
- digitalhub/entities/run/crud.py +35 -17
- digitalhub/entities/secret/_base/builder.py +2 -2
- digitalhub/entities/secret/_base/entity.py +4 -10
- digitalhub/entities/secret/crud.py +36 -21
- digitalhub/entities/task/_base/builder.py +14 -14
- digitalhub/entities/task/_base/entity.py +21 -14
- digitalhub/entities/task/_base/models.py +35 -6
- digitalhub/entities/task/_base/spec.py +50 -13
- digitalhub/entities/task/_base/utils.py +18 -0
- digitalhub/entities/task/crud.py +35 -15
- digitalhub/entities/workflow/_base/builder.py +1 -1
- digitalhub/entities/workflow/_base/entity.py +22 -6
- digitalhub/entities/workflow/crud.py +36 -17
- digitalhub/factory/utils.py +1 -1
- digitalhub/readers/_base/reader.py +2 -2
- digitalhub/readers/_commons/enums.py +13 -0
- digitalhub/readers/api.py +3 -2
- digitalhub/readers/factory.py +12 -6
- digitalhub/readers/pandas/reader.py +20 -8
- digitalhub/runtimes/_base.py +0 -7
- digitalhub/runtimes/enums.py +12 -0
- digitalhub/stores/_base/store.py +59 -11
- digitalhub/stores/builder.py +5 -5
- digitalhub/stores/local/store.py +43 -4
- digitalhub/stores/remote/store.py +31 -5
- digitalhub/stores/s3/store.py +136 -57
- digitalhub/stores/sql/store.py +122 -47
- digitalhub/utils/exceptions.py +6 -0
- digitalhub/utils/file_utils.py +60 -2
- digitalhub/utils/generic_utils.py +45 -4
- digitalhub/utils/io_utils.py +18 -0
- digitalhub/utils/s3_utils.py +17 -0
- digitalhub/utils/uri_utils.py +153 -15
- {digitalhub-0.8.0b15.dist-info → digitalhub-0.9.0.dist-info}/LICENSE.txt +1 -1
- {digitalhub-0.8.0b15.dist-info → digitalhub-0.9.0.dist-info}/METADATA +11 -11
- {digitalhub-0.8.0b15.dist-info → digitalhub-0.9.0.dist-info}/RECORD +117 -115
- {digitalhub-0.8.0b15.dist-info → digitalhub-0.9.0.dist-info}/WHEEL +1 -1
- test/local/instances/test_validate.py +55 -0
- test/testkfp.py +4 -1
- digitalhub/datastores/_base/datastore.py +0 -85
- digitalhub/datastores/api.py +0 -37
- digitalhub/datastores/builder.py +0 -110
- digitalhub/datastores/local/datastore.py +0 -50
- digitalhub/datastores/remote/__init__.py +0 -0
- digitalhub/datastores/remote/datastore.py +0 -31
- digitalhub/datastores/s3/__init__.py +0 -0
- digitalhub/datastores/s3/datastore.py +0 -46
- digitalhub/datastores/sql/__init__.py +0 -0
- digitalhub/datastores/sql/datastore.py +0 -68
- digitalhub/entities/_base/api_utils.py +0 -620
- digitalhub/entities/_base/crud.py +0 -468
- digitalhub/entities/function/_base/models.py +0 -118
- digitalhub/entities/utils/__init__.py +0 -0
- digitalhub/entities/utils/api.py +0 -346
- digitalhub/entities/utils/entity_types.py +0 -19
- digitalhub/entities/utils/state.py +0 -31
- digitalhub/entities/utils/utils.py +0 -202
- /digitalhub/{context → entities/_base/project}/__init__.py +0 -0
- /digitalhub/{datastores → entities/_commons}/__init__.py +0 -0
- /digitalhub/{datastores/_base → entities/_operations}/__init__.py +0 -0
- /digitalhub/{datastores/local → readers/_commons}/__init__.py +0 -0
- {digitalhub-0.8.0b15.dist-info → digitalhub-0.9.0.dist-info}/top_level.txt +0 -0
digitalhub/datastores/builder.py
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import typing
|
|
4
|
-
|
|
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
|
-
from digitalhub.stores.api import get_default_store, get_store
|
|
10
|
-
from digitalhub.utils.uri_utils import map_uri_scheme
|
|
11
|
-
|
|
12
|
-
if typing.TYPE_CHECKING:
|
|
13
|
-
from digitalhub.datastores._base.datastore import Datastore
|
|
14
|
-
from digitalhub.stores._base.store import Store
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
REGISTRY_DATASTORES = {
|
|
18
|
-
"local": LocalDatastore,
|
|
19
|
-
"remote": RemoteDatastore,
|
|
20
|
-
"s3": S3Datastore,
|
|
21
|
-
"sql": SqlDatastore,
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class DatastoreBuilder:
|
|
26
|
-
"""
|
|
27
|
-
Datastore builder class.
|
|
28
|
-
"""
|
|
29
|
-
|
|
30
|
-
def __init__(self) -> None:
|
|
31
|
-
self._instances: dict[str, Datastore] = {}
|
|
32
|
-
self._default: Datastore | None = None
|
|
33
|
-
self._def_scheme = "s3"
|
|
34
|
-
|
|
35
|
-
def build(self, uri: str) -> None:
|
|
36
|
-
"""
|
|
37
|
-
Build a datastore instance and register it.
|
|
38
|
-
It overrides any existing instance.
|
|
39
|
-
|
|
40
|
-
Parameters
|
|
41
|
-
----------
|
|
42
|
-
uri : str
|
|
43
|
-
URI to parse.
|
|
44
|
-
|
|
45
|
-
Returns
|
|
46
|
-
-------
|
|
47
|
-
None
|
|
48
|
-
"""
|
|
49
|
-
store = get_store(uri)
|
|
50
|
-
self._instances[store.type] = self.build_datastore(store)
|
|
51
|
-
|
|
52
|
-
def get(self, uri: str) -> Datastore:
|
|
53
|
-
"""
|
|
54
|
-
Get a store instance by URI.
|
|
55
|
-
|
|
56
|
-
Parameters
|
|
57
|
-
----------
|
|
58
|
-
uri : str
|
|
59
|
-
URI to parse.
|
|
60
|
-
|
|
61
|
-
Returns
|
|
62
|
-
-------
|
|
63
|
-
Datastore
|
|
64
|
-
The datastore instance.
|
|
65
|
-
"""
|
|
66
|
-
scheme = map_uri_scheme(uri)
|
|
67
|
-
if scheme not in self._instances:
|
|
68
|
-
self.build(uri)
|
|
69
|
-
return self._instances[scheme]
|
|
70
|
-
|
|
71
|
-
def default(self) -> Datastore:
|
|
72
|
-
"""
|
|
73
|
-
Get the default store instance.
|
|
74
|
-
|
|
75
|
-
Returns
|
|
76
|
-
-------
|
|
77
|
-
Datastore
|
|
78
|
-
The default datastore instance.
|
|
79
|
-
"""
|
|
80
|
-
if self._default is None:
|
|
81
|
-
store = get_default_store()
|
|
82
|
-
self._default = self.build_datastore(store)
|
|
83
|
-
return self._default
|
|
84
|
-
|
|
85
|
-
def build_datastore(self, store: Store) -> Datastore:
|
|
86
|
-
"""
|
|
87
|
-
Build a datastore instance.
|
|
88
|
-
|
|
89
|
-
Parameters
|
|
90
|
-
----------
|
|
91
|
-
store : Store
|
|
92
|
-
Store instance.
|
|
93
|
-
|
|
94
|
-
Returns
|
|
95
|
-
-------
|
|
96
|
-
Datastore
|
|
97
|
-
The datastore instance.
|
|
98
|
-
|
|
99
|
-
Raises
|
|
100
|
-
------
|
|
101
|
-
NotImplementedError
|
|
102
|
-
If the store type is not implemented.
|
|
103
|
-
"""
|
|
104
|
-
try:
|
|
105
|
-
return REGISTRY_DATASTORES[store.type](store)
|
|
106
|
-
except KeyError as e:
|
|
107
|
-
raise NotImplementedError from e
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
builder = DatastoreBuilder()
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import typing
|
|
4
|
-
from pathlib import Path
|
|
5
|
-
from typing import Any
|
|
6
|
-
|
|
7
|
-
from digitalhub.datastores._base.datastore import Datastore
|
|
8
|
-
from digitalhub.readers.api import get_reader_by_object
|
|
9
|
-
|
|
10
|
-
if typing.TYPE_CHECKING:
|
|
11
|
-
from digitalhub.stores.local.store import LocalStore
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class LocalDatastore(Datastore):
|
|
15
|
-
"""
|
|
16
|
-
Local Datastore class.
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
def __init__(self, store: LocalStore, **kwargs) -> None:
|
|
20
|
-
super().__init__(store, **kwargs)
|
|
21
|
-
self.store: LocalStore
|
|
22
|
-
|
|
23
|
-
def write_df(self, df: Any, dst: str, extension: str | None = None, **kwargs) -> str:
|
|
24
|
-
"""
|
|
25
|
-
Method to write a dataframe to a file. Kwargs are passed to df.to_parquet().
|
|
26
|
-
If destination is not provided, the dataframe is written to the default
|
|
27
|
-
store path with generated name.
|
|
28
|
-
|
|
29
|
-
Parameters
|
|
30
|
-
----------
|
|
31
|
-
df : Any
|
|
32
|
-
The dataframe to write.
|
|
33
|
-
dst : str
|
|
34
|
-
The destination of the dataframe.
|
|
35
|
-
**kwargs : dict
|
|
36
|
-
Keyword arguments.
|
|
37
|
-
|
|
38
|
-
Returns
|
|
39
|
-
-------
|
|
40
|
-
str
|
|
41
|
-
Path of written dataframe.
|
|
42
|
-
"""
|
|
43
|
-
self.store._check_local_dst(dst)
|
|
44
|
-
self._validate_extension(Path(dst).suffix.removeprefix("."))
|
|
45
|
-
|
|
46
|
-
# Write dataframe
|
|
47
|
-
reader = get_reader_by_object(df)
|
|
48
|
-
reader.write_df(df, dst, extension=extension, **kwargs)
|
|
49
|
-
|
|
50
|
-
return dst
|
|
File without changes
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import typing
|
|
4
|
-
from typing import Any
|
|
5
|
-
|
|
6
|
-
from digitalhub.datastores._base.datastore import Datastore
|
|
7
|
-
|
|
8
|
-
if typing.TYPE_CHECKING:
|
|
9
|
-
from digitalhub.stores.remote.store import RemoteStore
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class RemoteDatastore(Datastore):
|
|
13
|
-
"""
|
|
14
|
-
Remote Datastore class.
|
|
15
|
-
"""
|
|
16
|
-
|
|
17
|
-
def __init__(self, store: RemoteStore, **kwargs) -> None:
|
|
18
|
-
super().__init__(store, **kwargs)
|
|
19
|
-
self.store: RemoteStore
|
|
20
|
-
|
|
21
|
-
def write_df(self, df: Any, dst: str, extension: str | None = None, **kwargs) -> str:
|
|
22
|
-
"""
|
|
23
|
-
Method to write a dataframe to a file. Note that this method is not implemented
|
|
24
|
-
since the remote store is not meant to write dataframes.
|
|
25
|
-
|
|
26
|
-
Raises
|
|
27
|
-
------
|
|
28
|
-
NotImplementedError
|
|
29
|
-
This method is not implemented.
|
|
30
|
-
"""
|
|
31
|
-
raise NotImplementedError("Remote store does not support write_df.")
|
|
File without changes
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import typing
|
|
4
|
-
from io import BytesIO
|
|
5
|
-
from typing import Any
|
|
6
|
-
|
|
7
|
-
from digitalhub.datastores._base.datastore import Datastore
|
|
8
|
-
from digitalhub.readers.api import get_reader_by_object
|
|
9
|
-
|
|
10
|
-
if typing.TYPE_CHECKING:
|
|
11
|
-
from digitalhub.stores.s3.store import S3Store
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class S3Datastore(Datastore):
|
|
15
|
-
"""
|
|
16
|
-
S3 Datastore class.
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
def __init__(self, store: S3Store, **kwargs) -> None:
|
|
20
|
-
super().__init__(store, **kwargs)
|
|
21
|
-
self.store: S3Store
|
|
22
|
-
|
|
23
|
-
def write_df(self, df: Any, dst: str, extension: str | None = None, **kwargs) -> str:
|
|
24
|
-
"""
|
|
25
|
-
Write a dataframe to S3 based storage. Kwargs are passed to df.to_parquet().
|
|
26
|
-
|
|
27
|
-
Parameters
|
|
28
|
-
----------
|
|
29
|
-
df : Any
|
|
30
|
-
The dataframe.
|
|
31
|
-
dst : str
|
|
32
|
-
The destination path on S3 based storage.
|
|
33
|
-
**kwargs : dict
|
|
34
|
-
Keyword arguments.
|
|
35
|
-
|
|
36
|
-
Returns
|
|
37
|
-
-------
|
|
38
|
-
str
|
|
39
|
-
The S3 path where the dataframe was saved.
|
|
40
|
-
"""
|
|
41
|
-
fileobj = BytesIO()
|
|
42
|
-
reader = get_reader_by_object(df)
|
|
43
|
-
reader.write_df(df, fileobj, extension=extension, **kwargs)
|
|
44
|
-
|
|
45
|
-
key = self.store._get_key(dst)
|
|
46
|
-
return self.store.upload_fileobject(fileobj, key)
|
|
File without changes
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
import typing
|
|
4
|
-
from typing import Any
|
|
5
|
-
|
|
6
|
-
from digitalhub.datastores._base.datastore import Datastore
|
|
7
|
-
from digitalhub.readers.api import get_reader_by_object
|
|
8
|
-
|
|
9
|
-
if typing.TYPE_CHECKING:
|
|
10
|
-
from digitalhub.stores.sql.store import SqlStore
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class SqlDatastore(Datastore):
|
|
14
|
-
"""
|
|
15
|
-
Sql Datastore class.
|
|
16
|
-
"""
|
|
17
|
-
|
|
18
|
-
def __init__(self, store: SqlStore, **kwargs) -> None:
|
|
19
|
-
super().__init__(store, **kwargs)
|
|
20
|
-
self.store: SqlStore
|
|
21
|
-
|
|
22
|
-
def write_df(self, df: Any, dst: str, extension: str | None = None, **kwargs) -> str:
|
|
23
|
-
"""
|
|
24
|
-
Write a dataframe to a database. Kwargs are passed to df.to_sql().
|
|
25
|
-
|
|
26
|
-
Parameters
|
|
27
|
-
----------
|
|
28
|
-
df : Any
|
|
29
|
-
The dataframe to write.
|
|
30
|
-
dst : str
|
|
31
|
-
The destination of the dataframe.
|
|
32
|
-
**kwargs : dict
|
|
33
|
-
Keyword arguments.
|
|
34
|
-
|
|
35
|
-
Returns
|
|
36
|
-
-------
|
|
37
|
-
str
|
|
38
|
-
Path of written dataframe.
|
|
39
|
-
"""
|
|
40
|
-
schema = self.store._get_schema(dst)
|
|
41
|
-
table = self.store._get_table_name(dst)
|
|
42
|
-
return self._upload_table(df, schema, table, **kwargs)
|
|
43
|
-
|
|
44
|
-
def _upload_table(self, df: Any, schema: str, table: str, **kwargs) -> str:
|
|
45
|
-
"""
|
|
46
|
-
Upload a table to SQL based storage.
|
|
47
|
-
|
|
48
|
-
Parameters
|
|
49
|
-
----------
|
|
50
|
-
df : DataFrame
|
|
51
|
-
The dataframe.
|
|
52
|
-
schema : str
|
|
53
|
-
Destination schema.
|
|
54
|
-
table : str
|
|
55
|
-
Destination table.
|
|
56
|
-
**kwargs : dict
|
|
57
|
-
Keyword arguments.
|
|
58
|
-
|
|
59
|
-
Returns
|
|
60
|
-
-------
|
|
61
|
-
str
|
|
62
|
-
The SQL URI where the dataframe was saved.
|
|
63
|
-
"""
|
|
64
|
-
reader = get_reader_by_object(df)
|
|
65
|
-
engine = self.store._check_factory()
|
|
66
|
-
reader.write_table(df, table, engine, schema, **kwargs)
|
|
67
|
-
engine.dispose()
|
|
68
|
-
return f"sql://{engine.url.database}/{schema}/{table}"
|