tracdap-runtime 0.7.1__py3-none-any.whl → 0.8.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.
- tracdap/rt/_impl/core/__init__.py +14 -0
- tracdap/rt/_impl/{config_parser.py → core/config_parser.py} +36 -19
- tracdap/rt/_impl/{data.py → core/data.py} +136 -32
- tracdap/rt/_impl/core/logging.py +195 -0
- tracdap/rt/_impl/{models.py → core/models.py} +15 -12
- tracdap/rt/_impl/{repos.py → core/repos.py} +12 -3
- tracdap/rt/_impl/{schemas.py → core/schemas.py} +5 -5
- tracdap/rt/_impl/{shim.py → core/shim.py} +5 -4
- tracdap/rt/_impl/{storage.py → core/storage.py} +21 -10
- tracdap/rt/_impl/core/struct.py +547 -0
- tracdap/rt/_impl/{util.py → core/util.py} +1 -111
- tracdap/rt/_impl/{validation.py → core/validation.py} +99 -31
- tracdap/rt/_impl/exec/__init__.py +14 -0
- tracdap/rt/{_exec → _impl/exec}/actors.py +12 -14
- tracdap/rt/{_exec → _impl/exec}/context.py +228 -82
- tracdap/rt/{_exec → _impl/exec}/dev_mode.py +163 -81
- tracdap/rt/{_exec → _impl/exec}/engine.py +230 -105
- tracdap/rt/{_exec → _impl/exec}/functions.py +191 -100
- tracdap/rt/{_exec → _impl/exec}/graph.py +24 -36
- tracdap/rt/{_exec → _impl/exec}/graph_builder.py +252 -115
- tracdap/rt/_impl/grpc/codec.py +1 -1
- tracdap/rt/{_exec → _impl/grpc}/server.py +7 -6
- tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.py +3 -3
- tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2_grpc.py +1 -1
- tracdap/rt/_impl/grpc/tracdap/metadata/common_pb2.py +1 -1
- tracdap/rt/_impl/grpc/tracdap/metadata/config_pb2.py +40 -0
- tracdap/rt/_impl/grpc/tracdap/metadata/config_pb2.pyi +62 -0
- tracdap/rt/_impl/grpc/tracdap/metadata/custom_pb2.py +1 -1
- tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.py +32 -20
- tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.pyi +48 -2
- tracdap/rt/_impl/grpc/tracdap/metadata/file_pb2.py +4 -2
- tracdap/rt/_impl/grpc/tracdap/metadata/file_pb2.pyi +8 -0
- tracdap/rt/_impl/grpc/tracdap/metadata/flow_pb2.py +1 -1
- tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.py +65 -63
- tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.pyi +16 -2
- tracdap/rt/_impl/grpc/tracdap/metadata/model_pb2.py +28 -26
- tracdap/rt/_impl/grpc/tracdap/metadata/model_pb2.pyi +14 -4
- tracdap/rt/_impl/grpc/tracdap/metadata/object_id_pb2.py +4 -4
- tracdap/rt/_impl/grpc/tracdap/metadata/object_id_pb2.pyi +6 -0
- tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.py +9 -7
- tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.pyi +12 -4
- tracdap/rt/_impl/grpc/tracdap/metadata/resource_pb2.py +18 -5
- tracdap/rt/_impl/grpc/tracdap/metadata/resource_pb2.pyi +42 -2
- tracdap/rt/_impl/grpc/tracdap/metadata/search_pb2.py +1 -1
- tracdap/rt/_impl/grpc/tracdap/metadata/{stoarge_pb2.py → storage_pb2.py} +4 -4
- tracdap/rt/_impl/grpc/tracdap/metadata/tag_pb2.py +1 -1
- tracdap/rt/_impl/grpc/tracdap/metadata/tag_update_pb2.py +1 -1
- tracdap/rt/_impl/grpc/tracdap/metadata/type_pb2.py +1 -1
- tracdap/rt/{_exec → _impl}/runtime.py +32 -18
- tracdap/rt/_impl/static_api.py +65 -37
- tracdap/rt/_plugins/format_csv.py +1 -1
- tracdap/rt/_plugins/repo_git.py +56 -11
- tracdap/rt/_plugins/storage_sql.py +1 -1
- tracdap/rt/_version.py +1 -1
- tracdap/rt/api/__init__.py +5 -24
- tracdap/rt/api/constants.py +57 -0
- tracdap/rt/api/experimental.py +32 -0
- tracdap/rt/api/hook.py +26 -7
- tracdap/rt/api/model_api.py +16 -0
- tracdap/rt/api/static_api.py +265 -127
- tracdap/rt/config/__init__.py +11 -11
- tracdap/rt/config/common.py +2 -26
- tracdap/rt/config/dynamic.py +28 -0
- tracdap/rt/config/platform.py +17 -31
- tracdap/rt/config/runtime.py +2 -0
- tracdap/rt/ext/embed.py +2 -2
- tracdap/rt/ext/plugins.py +3 -3
- tracdap/rt/launch/launch.py +12 -14
- tracdap/rt/metadata/__init__.py +28 -18
- tracdap/rt/metadata/config.py +95 -0
- tracdap/rt/metadata/data.py +40 -0
- tracdap/rt/metadata/file.py +10 -0
- tracdap/rt/metadata/job.py +16 -0
- tracdap/rt/metadata/model.py +12 -2
- tracdap/rt/metadata/object.py +9 -1
- tracdap/rt/metadata/object_id.py +6 -0
- tracdap/rt/metadata/resource.py +41 -1
- {tracdap_runtime-0.7.1.dist-info → tracdap_runtime-0.8.0.dist-info}/METADATA +23 -17
- tracdap_runtime-0.8.0.dist-info/RECORD +129 -0
- {tracdap_runtime-0.7.1.dist-info → tracdap_runtime-0.8.0.dist-info}/WHEEL +1 -1
- tracdap/rt/_exec/__init__.py +0 -0
- tracdap_runtime-0.7.1.dist-info/RECORD +0 -121
- /tracdap/rt/_impl/{guard_rails.py → core/guard_rails.py} +0 -0
- /tracdap/rt/_impl/{type_system.py → core/type_system.py} +0 -0
- /tracdap/rt/_impl/grpc/tracdap/metadata/{stoarge_pb2.pyi → storage_pb2.pyi} +0 -0
- /tracdap/rt/metadata/{stoarge.py → storage.py} +0 -0
- {tracdap_runtime-0.7.1.dist-info → tracdap_runtime-0.8.0.dist-info/licenses}/LICENSE +0 -0
- {tracdap_runtime-0.7.1.dist-info → tracdap_runtime-0.8.0.dist-info}/top_level.txt +0 -0
@@ -13,10 +13,12 @@
|
|
13
13
|
# See the License for the specific language governing permissions and
|
14
14
|
# limitations under the License.
|
15
15
|
|
16
|
+
import typing as _tp
|
17
|
+
|
16
18
|
import tracdap.rt.ext.plugins as plugins
|
17
19
|
import tracdap.rt.config as cfg
|
18
20
|
import tracdap.rt.exceptions as ex
|
19
|
-
import tracdap.rt._impl.
|
21
|
+
import tracdap.rt._impl.core.logging as _logging
|
20
22
|
|
21
23
|
# Import repo interfaces
|
22
24
|
from tracdap.rt.ext.repos import *
|
@@ -26,8 +28,8 @@ class RepositoryManager:
|
|
26
28
|
|
27
29
|
def __init__(self, sys_config: cfg.RuntimeConfig):
|
28
30
|
|
29
|
-
self._log =
|
30
|
-
self._repos:
|
31
|
+
self._log = _logging.logger_for_object(self)
|
32
|
+
self._repos: _tp.Dict[str, IModelRepository] = dict()
|
31
33
|
|
32
34
|
# Initialize all repos in the system config
|
33
35
|
# Any errors for missing repo types (plugins) will be raised during startup
|
@@ -36,6 +38,13 @@ class RepositoryManager:
|
|
36
38
|
|
37
39
|
try:
|
38
40
|
|
41
|
+
# Add global properties related to the repo protocol
|
42
|
+
related_props = {
|
43
|
+
k: v for (k, v) in sys_config.properties.items()
|
44
|
+
if k.startswith(f"{repo_config.protocol}.")}
|
45
|
+
|
46
|
+
repo_config.properties.update(related_props)
|
47
|
+
|
39
48
|
self._repos[repo_name] = plugins.PluginManager.load_plugin(IModelRepository, repo_config)
|
40
49
|
|
41
50
|
except ex.EPluginNotAvailable as e:
|
@@ -21,10 +21,10 @@ import pyarrow as pa
|
|
21
21
|
|
22
22
|
import tracdap.rt.metadata as _meta
|
23
23
|
import tracdap.rt.exceptions as _ex
|
24
|
-
import tracdap.rt._impl.data as _data
|
25
|
-
import tracdap.rt._impl.
|
26
|
-
import tracdap.rt._impl.
|
27
|
-
import tracdap.rt._impl.
|
24
|
+
import tracdap.rt._impl.core.data as _data
|
25
|
+
import tracdap.rt._impl.core.logging as _log
|
26
|
+
import tracdap.rt._impl.core.storage as _storage
|
27
|
+
import tracdap.rt._impl.core.shim as _shim
|
28
28
|
|
29
29
|
|
30
30
|
class SchemaLoader:
|
@@ -169,4 +169,4 @@ class SchemaLoader:
|
|
169
169
|
raise _ex.EDataConformance(err)
|
170
170
|
|
171
171
|
|
172
|
-
SchemaLoader._log =
|
172
|
+
SchemaLoader._log = _log.logger_for_class(SchemaLoader)
|
@@ -30,8 +30,9 @@ import importlib.machinery as _ilm
|
|
30
30
|
import importlib.resources as _ilr
|
31
31
|
|
32
32
|
import tracdap.rt.exceptions as _ex
|
33
|
-
import tracdap.rt._impl.guard_rails as _guard
|
34
|
-
import tracdap.rt._impl.
|
33
|
+
import tracdap.rt._impl.core.guard_rails as _guard
|
34
|
+
import tracdap.rt._impl.core.logging as _log
|
35
|
+
import tracdap.rt._impl.core.util as _util
|
35
36
|
|
36
37
|
|
37
38
|
class _Shim:
|
@@ -138,7 +139,7 @@ class _NamespaceShimFinder(_ila.MetaPathFinder):
|
|
138
139
|
def __init__(self, shim_map: tp.Dict[str, _Shim], active_shim: _ActiveShim):
|
139
140
|
self.__shim_map = shim_map
|
140
141
|
self.__active_shim = active_shim
|
141
|
-
self._log =
|
142
|
+
self._log = _log.logger_for_class(ShimLoader)
|
142
143
|
|
143
144
|
def find_spec(
|
144
145
|
self, fullname: str,
|
@@ -561,5 +562,5 @@ class ShimLoader:
|
|
561
562
|
raise _ex.ERuntimeValidation(err)
|
562
563
|
|
563
564
|
|
564
|
-
ShimLoader._log =
|
565
|
+
ShimLoader._log = _log.logger_for_class(ShimLoader)
|
565
566
|
ShimLoader._init() # noqa
|
@@ -29,9 +29,10 @@ import tracdap.rt.metadata as _meta
|
|
29
29
|
import tracdap.rt.config as _cfg
|
30
30
|
import tracdap.rt.exceptions as _ex
|
31
31
|
import tracdap.rt.ext.plugins as plugins
|
32
|
-
import tracdap.rt._impl.data as _data
|
33
|
-
import tracdap.rt._impl.
|
34
|
-
import tracdap.rt._impl.
|
32
|
+
import tracdap.rt._impl.core.data as _data
|
33
|
+
import tracdap.rt._impl.core.logging as _logging
|
34
|
+
import tracdap.rt._impl.core.util as _util
|
35
|
+
import tracdap.rt._impl.core.validation as _val
|
35
36
|
|
36
37
|
# Import storage interfaces (using the internal version, it has extra bits that are not public)
|
37
38
|
from tracdap.rt._impl.ext.storage import *
|
@@ -76,11 +77,11 @@ class StorageManager:
|
|
76
77
|
|
77
78
|
def __init__(self, sys_config: _cfg.RuntimeConfig):
|
78
79
|
|
79
|
-
self.__log =
|
80
|
+
self.__log = _logging.logger_for_object(self)
|
80
81
|
self.__file_storage: tp.Dict[str, IFileStorage] = dict()
|
81
82
|
self.__data_storage: tp.Dict[str, IDataStorage] = dict()
|
82
83
|
self.__external: tp.List[str] = list()
|
83
|
-
self.
|
84
|
+
self.__sys_config = sys_config
|
84
85
|
|
85
86
|
for storage_key, storage_config in sys_config.storage.buckets.items():
|
86
87
|
self.create_storage(storage_key, storage_config)
|
@@ -92,13 +93,20 @@ class StorageManager:
|
|
92
93
|
self.create_storage(storage_key, storage_config)
|
93
94
|
|
94
95
|
def default_storage_key(self):
|
95
|
-
return self.
|
96
|
+
return self.__sys_config.storage.defaultBucket
|
96
97
|
|
97
98
|
def default_storage_format(self):
|
98
|
-
return self.
|
99
|
+
return self.__sys_config.storage.defaultFormat
|
99
100
|
|
100
101
|
def create_storage(self, storage_key: str, storage_config: _cfg.PluginConfig):
|
101
102
|
|
103
|
+
# Add global properties related to the storage protocol
|
104
|
+
related_props = {
|
105
|
+
k: v for (k, v) in self.__sys_config.properties.items()
|
106
|
+
if k.startswith(f"{storage_config.protocol}.")}
|
107
|
+
|
108
|
+
storage_config.properties.update(related_props)
|
109
|
+
|
102
110
|
if plugins.PluginManager.is_plugin_available(IStorageProvider, storage_config.protocol):
|
103
111
|
self._create_storage_from_provider(storage_key, storage_config)
|
104
112
|
else:
|
@@ -224,7 +232,7 @@ class CommonFileStorage(IFileStorage):
|
|
224
232
|
|
225
233
|
def __init__(self, storage_key: str, storage_config: _cfg.PluginConfig, fs: pa_fs.SubTreeFileSystem):
|
226
234
|
|
227
|
-
self._log =
|
235
|
+
self._log = _logging.logger_for_object(self)
|
228
236
|
self._key = storage_key
|
229
237
|
self._config = storage_config
|
230
238
|
self._fs = fs
|
@@ -495,7 +503,10 @@ class CommonFileStorage(IFileStorage):
|
|
495
503
|
|
496
504
|
# For successful write streams, log the total size written
|
497
505
|
if is_write and not error:
|
498
|
-
|
506
|
+
if not stream.closed:
|
507
|
+
file_size = _util.format_file_size(stream.tell())
|
508
|
+
else:
|
509
|
+
file_size = self._fs.get_file_info(storage_path).size
|
499
510
|
self._log.info(f"File size [{self._key}]: {file_size} [{storage_path}]")
|
500
511
|
|
501
512
|
# Close the stream - this may take time for write streams that are not flushed
|
@@ -731,7 +742,7 @@ class CommonDataStorage(IDataStorage):
|
|
731
742
|
self, config: _cfg.PluginConfig, file_storage: IFileStorage,
|
732
743
|
pushdown_pandas: bool = False, pushdown_spark: bool = False):
|
733
744
|
|
734
|
-
self.__log =
|
745
|
+
self.__log = _logging.logger_for_object(self)
|
735
746
|
|
736
747
|
self.__config = config
|
737
748
|
self.__file_storage = file_storage
|