tracdap-runtime 0.8.0rc2__py3-none-any.whl → 0.9.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.
Files changed (47) hide show
  1. tracdap/rt/_impl/core/data.py +578 -33
  2. tracdap/rt/_impl/core/repos.py +7 -0
  3. tracdap/rt/_impl/core/storage.py +10 -3
  4. tracdap/rt/_impl/core/util.py +54 -11
  5. tracdap/rt/_impl/exec/dev_mode.py +122 -100
  6. tracdap/rt/_impl/exec/engine.py +178 -109
  7. tracdap/rt/_impl/exec/functions.py +218 -257
  8. tracdap/rt/_impl/exec/graph.py +140 -125
  9. tracdap/rt/_impl/exec/graph_builder.py +411 -449
  10. tracdap/rt/_impl/grpc/codec.py +4 -2
  11. tracdap/rt/_impl/grpc/server.py +7 -7
  12. tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.py +25 -18
  13. tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.pyi +27 -9
  14. tracdap/rt/_impl/grpc/tracdap/metadata/common_pb2.py +1 -1
  15. tracdap/rt/_impl/grpc/tracdap/metadata/config_pb2.py +1 -1
  16. tracdap/rt/_impl/grpc/tracdap/metadata/custom_pb2.py +1 -1
  17. tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.py +1 -1
  18. tracdap/rt/_impl/grpc/tracdap/metadata/file_pb2.py +1 -1
  19. tracdap/rt/_impl/grpc/tracdap/metadata/flow_pb2.py +1 -1
  20. tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.py +67 -63
  21. tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.pyi +11 -2
  22. tracdap/rt/_impl/grpc/tracdap/metadata/model_pb2.py +1 -1
  23. tracdap/rt/_impl/grpc/tracdap/metadata/object_id_pb2.py +1 -1
  24. tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.py +1 -1
  25. tracdap/rt/_impl/grpc/tracdap/metadata/resource_pb2.py +1 -1
  26. tracdap/rt/_impl/grpc/tracdap/metadata/search_pb2.py +1 -1
  27. tracdap/rt/_impl/grpc/tracdap/metadata/storage_pb2.py +11 -9
  28. tracdap/rt/_impl/grpc/tracdap/metadata/storage_pb2.pyi +11 -2
  29. tracdap/rt/_impl/grpc/tracdap/metadata/tag_pb2.py +1 -1
  30. tracdap/rt/_impl/grpc/tracdap/metadata/tag_update_pb2.py +1 -1
  31. tracdap/rt/_impl/grpc/tracdap/metadata/type_pb2.py +1 -1
  32. tracdap/rt/_impl/runtime.py +8 -0
  33. tracdap/rt/_plugins/repo_git.py +56 -11
  34. tracdap/rt/_version.py +1 -1
  35. tracdap/rt/config/__init__.py +6 -6
  36. tracdap/rt/config/common.py +5 -0
  37. tracdap/rt/config/job.py +13 -3
  38. tracdap/rt/config/result.py +8 -4
  39. tracdap/rt/config/runtime.py +2 -0
  40. tracdap/rt/metadata/__init__.py +37 -36
  41. tracdap/rt/metadata/job.py +2 -0
  42. tracdap/rt/metadata/storage.py +9 -0
  43. {tracdap_runtime-0.8.0rc2.dist-info → tracdap_runtime-0.9.0b1.dist-info}/METADATA +3 -1
  44. {tracdap_runtime-0.8.0rc2.dist-info → tracdap_runtime-0.9.0b1.dist-info}/RECORD +47 -47
  45. {tracdap_runtime-0.8.0rc2.dist-info → tracdap_runtime-0.9.0b1.dist-info}/WHEEL +1 -1
  46. {tracdap_runtime-0.8.0rc2.dist-info → tracdap_runtime-0.9.0b1.dist-info}/licenses/LICENSE +0 -0
  47. {tracdap_runtime-0.8.0rc2.dist-info → tracdap_runtime-0.9.0b1.dist-info}/top_level.txt +0 -0
@@ -18,12 +18,19 @@ class IncarnationStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
18
18
  INCARNATION_STATUS_NOT_SET: _ClassVar[IncarnationStatus]
19
19
  INCARNATION_AVAILABLE: _ClassVar[IncarnationStatus]
20
20
  INCARNATION_EXPUNGED: _ClassVar[IncarnationStatus]
21
+
22
+ class StorageLayout(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
23
+ __slots__ = ()
24
+ OBJECT_ID_LAYOUT: _ClassVar[StorageLayout]
25
+ DEVELOPER_LAYOUT: _ClassVar[StorageLayout]
21
26
  COPY_STATUS_NOT_SET: CopyStatus
22
27
  COPY_AVAILABLE: CopyStatus
23
28
  COPY_EXPUNGED: CopyStatus
24
29
  INCARNATION_STATUS_NOT_SET: IncarnationStatus
25
30
  INCARNATION_AVAILABLE: IncarnationStatus
26
31
  INCARNATION_EXPUNGED: IncarnationStatus
32
+ OBJECT_ID_LAYOUT: StorageLayout
33
+ DEVELOPER_LAYOUT: StorageLayout
27
34
 
28
35
  class StorageCopy(_message.Message):
29
36
  __slots__ = ("storageKey", "storagePath", "storageFormat", "copyStatus", "copyTimestamp", "storageOptions")
@@ -67,7 +74,7 @@ class StorageItem(_message.Message):
67
74
  def __init__(self, incarnations: _Optional[_Iterable[_Union[StorageIncarnation, _Mapping]]] = ...) -> None: ...
68
75
 
69
76
  class StorageDefinition(_message.Message):
70
- __slots__ = ("dataItems", "storageOptions")
77
+ __slots__ = ("dataItems", "storageOptions", "layout")
71
78
  class DataItemsEntry(_message.Message):
72
79
  __slots__ = ("key", "value")
73
80
  KEY_FIELD_NUMBER: _ClassVar[int]
@@ -84,6 +91,8 @@ class StorageDefinition(_message.Message):
84
91
  def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[_type_pb2.Value, _Mapping]] = ...) -> None: ...
85
92
  DATAITEMS_FIELD_NUMBER: _ClassVar[int]
86
93
  STORAGEOPTIONS_FIELD_NUMBER: _ClassVar[int]
94
+ LAYOUT_FIELD_NUMBER: _ClassVar[int]
87
95
  dataItems: _containers.MessageMap[str, StorageItem]
88
96
  storageOptions: _containers.MessageMap[str, _type_pb2.Value]
89
- def __init__(self, dataItems: _Optional[_Mapping[str, StorageItem]] = ..., storageOptions: _Optional[_Mapping[str, _type_pb2.Value]] = ...) -> None: ...
97
+ layout: StorageLayout
98
+ def __init__(self, dataItems: _Optional[_Mapping[str, StorageItem]] = ..., storageOptions: _Optional[_Mapping[str, _type_pb2.Value]] = ..., layout: _Optional[_Union[StorageLayout, str]] = ...) -> None: ...
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
3
3
  # source: tracdap/rt/_impl/grpc/tracdap/metadata/tag.proto
4
- # Protobuf Python Version: 4.25.3
4
+ # Protobuf Python Version: 4.25.5
5
5
  """Generated protocol buffer code."""
6
6
  from google.protobuf import descriptor as _descriptor
7
7
  from google.protobuf import descriptor_pool as _descriptor_pool
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
3
3
  # source: tracdap/rt/_impl/grpc/tracdap/metadata/tag_update.proto
4
- # Protobuf Python Version: 4.25.3
4
+ # Protobuf Python Version: 4.25.5
5
5
  """Generated protocol buffer code."""
6
6
  from google.protobuf import descriptor as _descriptor
7
7
  from google.protobuf import descriptor_pool as _descriptor_pool
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
3
3
  # source: tracdap/rt/_impl/grpc/tracdap/metadata/type.proto
4
- # Protobuf Python Version: 4.25.3
4
+ # Protobuf Python Version: 4.25.5
5
5
  """Generated protocol buffer code."""
6
6
  from google.protobuf import descriptor as _descriptor
7
7
  from google.protobuf import descriptor_pool as _descriptor_pool
@@ -30,6 +30,7 @@ import tracdap.rt.config as _cfg
30
30
  import tracdap.rt.exceptions as _ex
31
31
  import tracdap.rt.ext.plugins as _plugins
32
32
  import tracdap.rt._impl.core.config_parser as _cparse
33
+ import tracdap.rt._impl.core.data as _data
33
34
  import tracdap.rt._impl.core.guard_rails as _guard
34
35
  import tracdap.rt._impl.core.logging as _logging
35
36
  import tracdap.rt._impl.core.models as _models
@@ -167,6 +168,13 @@ class TracRuntime:
167
168
  else:
168
169
  self._log.info("Using embedded system config")
169
170
 
171
+ # Check whether to enable categorical processing in the data layer
172
+
173
+ if _data.DataMapping.CATEGORICAL_CONFIG_KEY in self._sys_config.properties:
174
+ categorical_prop = self._sys_config.properties[_data.DataMapping.CATEGORICAL_CONFIG_KEY]
175
+ categorical_flag = categorical_prop and categorical_prop.lower() == "true"
176
+ _data.DataMapping.enable_categorical(categorical_flag)
177
+
170
178
  # Dev mode translation is controlled by the dev mode flag
171
179
  # I.e. it can be applied to embedded configs
172
180
 
@@ -23,6 +23,7 @@ import time
23
23
  import dulwich.repo as git_repo
24
24
  import dulwich.client as git_client
25
25
  import dulwich.index as git_index
26
+ import urllib3.exceptions # noqa
26
27
 
27
28
  import tracdap.rt.metadata as meta
28
29
  import tracdap.rt.exceptions as ex
@@ -75,20 +76,45 @@ class GitRepository(IModelRepository):
75
76
 
76
77
  def do_checkout(self, model_def: meta.ModelDefinition, checkout_dir: pathlib.Path) -> pathlib.Path:
77
78
 
78
- self._log.info(
79
- f"Git checkout: repo = [{model_def.repository}], " +
80
- f"group = [{model_def.packageGroup}], package = [{model_def.package}], version = [{model_def.version}]")
79
+ try:
81
80
 
82
- self._log.info(f"Checkout location: [{checkout_dir}]")
81
+ self._log.info(
82
+ f"Git checkout: repo = [{model_def.repository}], " +
83
+ f"group = [{model_def.packageGroup}], package = [{model_def.package}], version = [{model_def.version}]")
83
84
 
84
- if self._native_git:
85
- package_path = self._do_native_checkout(model_def, checkout_dir)
86
- else:
87
- package_path = self._do_python_checkout(model_def, checkout_dir)
85
+ self._log.info(f"Checkout location: [{checkout_dir}]")
86
+
87
+ if self._native_git:
88
+ package_path = self._do_native_checkout(model_def, checkout_dir)
89
+ else:
90
+ package_path = self._do_python_checkout(model_def, checkout_dir)
91
+
92
+ self._log.info(f"Git checkout succeeded for {model_def.package} {model_def.version}")
93
+
94
+ return package_path
95
+
96
+ except Exception as e:
97
+
98
+ error = e
99
+
100
+ # For retry failures, try to find the original cause
101
+ while e.__cause__ is not None:
102
+ if isinstance(e, urllib3.exceptions.MaxRetryError):
103
+ error = e.__cause__
104
+ break
105
+ else:
106
+ e = e.__cause__
107
+
108
+ # Try to sanitize error messages from urllib3
109
+ if isinstance(error, urllib3.exceptions.HTTPError):
110
+ detail = self._clean_urllib3_error(error)
111
+ else:
112
+ detail = str(error)
88
113
 
89
- self._log.info(f"Git checkout succeeded for {model_def.package} {model_def.version}")
114
+ message = f"Failed to check out [{model_def.repository}]: {detail}"
90
115
 
91
- return package_path
116
+ self._log.error(message)
117
+ raise ex.EModelRepo(message) from error
92
118
 
93
119
  def _do_native_checkout(self, model_def: meta.ModelDefinition, checkout_dir: pathlib.Path) -> pathlib.Path:
94
120
 
@@ -150,10 +176,15 @@ class GitRepository(IModelRepository):
150
176
  for line in cmd_err:
151
177
  self._log.info(line)
152
178
 
153
- else:
179
+ elif cmd_err:
180
+
154
181
  for line in cmd_err:
155
182
  self._log.error(line)
156
183
 
184
+ raise ex.EModelRepo(cmd_err[-1])
185
+
186
+ else:
187
+
157
188
  error_msg = f"Git checkout failed for {model_def.package} {model_def.version}"
158
189
  self._log.error(error_msg)
159
190
  raise ex.EModelRepo(error_msg)
@@ -265,6 +296,20 @@ class GitRepository(IModelRepository):
265
296
  def _ref_key(key):
266
297
  return bytes(key, "ascii")
267
298
 
299
+ @classmethod
300
+ def _clean_urllib3_error(cls, error: urllib3.exceptions.HTTPError):
301
+
302
+ match = cls._URLLIB3_ERROR_PATTERN.match(str(error))
303
+
304
+ # Best efforts to clean up the message, fall back on str(error)
305
+ if match:
306
+ return match.group(1)
307
+ else:
308
+ return str(error)
309
+
310
+ # Error message format is like this:
311
+ # <pkg.ClassName object at 0xXXXXXXX>: Message
312
+ _URLLIB3_ERROR_PATTERN = re.compile(r"<[^>]*>: (.*)")
268
313
 
269
314
  # Register plugin
270
315
  plugins.PluginManager.register_plugin(IModelRepository, GitRepository, ["git"])
tracdap/rt/_version.py CHANGED
@@ -13,4 +13,4 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
- __version__ = "0.8.0rc2"
16
+ __version__ = "0.9.0b1"
@@ -1,6 +1,7 @@
1
1
  # Code generated by TRAC
2
2
 
3
- from .job import JobConfig
3
+ from .result import JobResultAttrs
4
+ from .result import JobResult
4
5
 
5
6
  from .common import _ConfigFile
6
7
  from .common import PluginConfig
@@ -8,11 +9,6 @@ from .common import PlatformInfo
8
9
  from .common import StorageConfig
9
10
  from .common import ServiceConfig
10
11
 
11
- from .dynamic import DynamicConfig
12
-
13
- from .result import TagUpdateList
14
- from .result import JobResult
15
-
16
12
  from .platform import RoutingProtocol
17
13
  from .platform import DeploymentLayout
18
14
  from .platform import PlatformConfig
@@ -28,3 +24,7 @@ from .platform import ClientConfig
28
24
 
29
25
  from .runtime import RuntimeConfig
30
26
  from .runtime import SparkSettings
27
+
28
+ from .job import JobConfig
29
+
30
+ from .dynamic import DynamicConfig
@@ -4,6 +4,9 @@ import typing as _tp # noqa
4
4
  import dataclasses as _dc # noqa
5
5
  import enum as _enum # noqa
6
6
 
7
+ import tracdap.rt.metadata as metadata
8
+
9
+
7
10
 
8
11
  @_dc.dataclass
9
12
  class _ConfigFile:
@@ -46,6 +49,8 @@ class StorageConfig:
46
49
 
47
50
  defaultFormat: "str" = ""
48
51
 
52
+ defaultLayout: "metadata.StorageLayout" = metadata.StorageLayout.OBJECT_ID_LAYOUT
53
+
49
54
 
50
55
  @_dc.dataclass
51
56
  class ServiceConfig:
tracdap/rt/config/job.py CHANGED
@@ -13,10 +13,20 @@ class JobConfig:
13
13
 
14
14
  jobId: "metadata.TagHeader" = _dc.field(default_factory=lambda: metadata.TagHeader())
15
15
 
16
+ """ID and definition of the job being submitted"""
17
+
16
18
  job: "metadata.JobDefinition" = _dc.field(default_factory=lambda: metadata.JobDefinition())
17
19
 
18
- resources: "_tp.Dict[str, metadata.ObjectDefinition]" = _dc.field(default_factory=dict)
20
+ objectMapping: "_tp.Dict[str, metadata.TagHeader]" = _dc.field(default_factory=dict)
21
+
22
+ """Metadata needed to execute the job (objects referred to in the job definition)"""
23
+
24
+ objects: "_tp.Dict[str, metadata.ObjectDefinition]" = _dc.field(default_factory=dict)
25
+
26
+ tags: "_tp.Dict[str, metadata.Tag]" = _dc.field(default_factory=dict)
27
+
28
+ resultId: "metadata.TagHeader" = _dc.field(default_factory=lambda: metadata.TagHeader())
19
29
 
20
- resourceMapping: "_tp.Dict[str, metadata.TagHeader]" = _dc.field(default_factory=dict)
30
+ """Preallocated IDs for job outputs"""
21
31
 
22
- resultMapping: "_tp.Dict[str, metadata.TagHeader]" = _dc.field(default_factory=dict)
32
+ preallocatedIds: "_tp.List[metadata.TagHeader]" = _dc.field(default_factory=list)
@@ -9,7 +9,7 @@ import tracdap.rt.metadata as metadata
9
9
 
10
10
 
11
11
  @_dc.dataclass
12
- class TagUpdateList:
12
+ class JobResultAttrs:
13
13
 
14
14
  attrs: "_tp.List[metadata.TagUpdate]" = _dc.field(default_factory=list)
15
15
 
@@ -19,8 +19,12 @@ class JobResult:
19
19
 
20
20
  jobId: "metadata.TagHeader" = _dc.field(default_factory=lambda: metadata.TagHeader())
21
21
 
22
- statusCode: "metadata.JobStatusCode" = metadata.JobStatusCode.JOB_STATUS_CODE_NOT_SET
22
+ resultId: "metadata.TagHeader" = _dc.field(default_factory=lambda: metadata.TagHeader())
23
23
 
24
- statusMessage: "str" = ""
24
+ result: "metadata.ResultDefinition" = _dc.field(default_factory=lambda: metadata.ResultDefinition())
25
25
 
26
- results: "_tp.Dict[str, metadata.ObjectDefinition]" = _dc.field(default_factory=dict)
26
+ objectIds: "_tp.List[metadata.TagHeader]" = _dc.field(default_factory=list)
27
+
28
+ objects: "_tp.Dict[str, metadata.ObjectDefinition]" = _dc.field(default_factory=dict)
29
+
30
+ attrs: "_tp.Dict[str, JobResultAttrs]" = _dc.field(default_factory=dict)
@@ -21,6 +21,8 @@ class RuntimeConfig:
21
21
 
22
22
  runtimeApi: "ServiceConfig" = _dc.field(default_factory=lambda: ServiceConfig())
23
23
 
24
+ properties: "_tp.Dict[str, str]" = _dc.field(default_factory=dict)
25
+
24
26
 
25
27
  @_dc.dataclass
26
28
  class SparkSettings:
@@ -9,40 +9,16 @@ from .type import Value
9
9
  from .type import ArrayValue
10
10
  from .type import MapValue
11
11
 
12
- from .tag_update import TagOperation
13
- from .tag_update import TagUpdate
14
-
15
12
  from .object_id import ObjectType
16
13
  from .object_id import TagHeader
17
14
  from .object_id import TagSelector
18
15
 
19
- from .job import JobType
20
- from .job import JobStatusCode
21
- from .job import JobGroupType
22
- from .job import JobDefinition
23
- from .job import ResultDefinition
24
- from .job import RunModelJob
25
- from .job import RunFlowJob
26
- from .job import ImportModelJob
27
- from .job import ImportDataJob
28
- from .job import ExportDataJob
29
- from .job import JobGroup
30
- from .job import SequentialJobGroup
31
- from .job import ParallelJobGroup
32
-
33
- from .common import MetadataFormat
34
- from .common import MetadataVersion
35
- from .common import TenantInfo
36
-
37
- from .resource import ResourceType
38
- from .resource import ResourceDefinition
39
-
40
- from .config import ConfigType
41
- from .config import ConfigEntry
42
- from .config import ConfigDetails
43
- from .config import ConfigDefinition
44
-
45
- from .custom import CustomDefinition
16
+ from .search import SearchOperator
17
+ from .search import LogicalOperator
18
+ from .search import SearchTerm
19
+ from .search import LogicalExpression
20
+ from .search import SearchExpression
21
+ from .search import SearchParameters
46
22
 
47
23
  from .data import SchemaType
48
24
  from .data import PartType
@@ -63,12 +39,8 @@ from .model import ModelInputSchema
63
39
  from .model import ModelOutputSchema
64
40
  from .model import ModelDefinition
65
41
 
66
- from .search import SearchOperator
67
- from .search import LogicalOperator
68
- from .search import SearchTerm
69
- from .search import LogicalExpression
70
- from .search import SearchExpression
71
- from .search import SearchParameters
42
+ from .tag_update import TagOperation
43
+ from .tag_update import TagUpdate
72
44
 
73
45
  from .flow import FlowNodeType
74
46
  from .flow import FlowNode
@@ -76,8 +48,37 @@ from .flow import FlowSocket
76
48
  from .flow import FlowEdge
77
49
  from .flow import FlowDefinition
78
50
 
51
+ from .custom import CustomDefinition
52
+
53
+ from .resource import ResourceType
54
+ from .resource import ResourceDefinition
55
+
56
+ from .job import JobType
57
+ from .job import JobStatusCode
58
+ from .job import JobGroupType
59
+ from .job import JobDefinition
60
+ from .job import ResultDefinition
61
+ from .job import RunModelJob
62
+ from .job import RunFlowJob
63
+ from .job import ImportModelJob
64
+ from .job import ImportDataJob
65
+ from .job import ExportDataJob
66
+ from .job import JobGroup
67
+ from .job import SequentialJobGroup
68
+ from .job import ParallelJobGroup
69
+
70
+ from .common import MetadataFormat
71
+ from .common import MetadataVersion
72
+ from .common import TenantInfo
73
+
74
+ from .config import ConfigType
75
+ from .config import ConfigEntry
76
+ from .config import ConfigDetails
77
+ from .config import ConfigDefinition
78
+
79
79
  from .storage import CopyStatus
80
80
  from .storage import IncarnationStatus
81
+ from .storage import StorageLayout
81
82
  from .storage import StorageCopy
82
83
  from .storage import StorageIncarnation
83
84
  from .storage import StorageItem
@@ -133,6 +133,8 @@ class ResultDefinition:
133
133
 
134
134
  logFileId: "TagSelector" = _dc.field(default_factory=lambda: TagSelector())
135
135
 
136
+ outputs: "_tp.Dict[str, TagSelector]" = _dc.field(default_factory=dict)
137
+
136
138
 
137
139
  @_dc.dataclass
138
140
  class RunModelJob:
@@ -49,6 +49,13 @@ class IncarnationStatus(_enum.Enum):
49
49
  """This incarnation of the data item is no longer available in storage, all copies have been expunged"""
50
50
 
51
51
 
52
+ class StorageLayout(_enum.Enum):
53
+
54
+ OBJECT_ID_LAYOUT = 0
55
+
56
+ DEVELOPER_LAYOUT = 1
57
+
58
+
52
59
  @_dc.dataclass
53
60
  class StorageCopy:
54
61
 
@@ -123,3 +130,5 @@ class StorageDefinition:
123
130
  dataItems: "_tp.Dict[str, StorageItem]" = _dc.field(default_factory=dict)
124
131
 
125
132
  storageOptions: "_tp.Dict[str, Value]" = _dc.field(default_factory=dict)
133
+
134
+ layout: "StorageLayout" = StorageLayout.OBJECT_ID_LAYOUT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tracdap-runtime
3
- Version: 0.8.0rc2
3
+ Version: 0.9.0b1
4
4
  Summary: Runtime package for building models on the TRAC Data & Analytics Platform
5
5
  Home-page: https://tracdap.finos.org/
6
6
  Author: Martin Traverse
@@ -21,6 +21,8 @@ Requires-Dist: pyarrow==18.1.0
21
21
  Requires-Dist: pyyaml==6.0.2
22
22
  Requires-Dist: dulwich==0.22.7
23
23
  Requires-Dist: requests==2.32.3
24
+ Requires-Dist: typing_extensions<4.13
25
+ Requires-Dist: urllib3<2.4.0
24
26
  Provides-Extra: grpc
25
27
  Requires-Dist: grpcio==1.70.0; extra == "grpc"
26
28
  Requires-Dist: grpcio-status==1.70.0; extra == "grpc"
@@ -1,71 +1,71 @@
1
1
  tracdap/rt/__init__.py,sha256=4aCSENdKNrf9nC1lUULwmHpI1D3K74_4CJzpG_OjA4Q,830
2
- tracdap/rt/_version.py,sha256=s4iT81zxrTXHmJQ7QoZhAm7Y0Y62L1l7LbI0D7juCkY,821
2
+ tracdap/rt/_version.py,sha256=wSJoPOgmyrJ-u94n4Xq0Ms2EDDHRl6b_U2cAKcWsRRQ,820
3
3
  tracdap/rt/exceptions.py,sha256=PsB4fExDI-bliqJZD-ESrr9MeLPDW7R5VN_JcWg7TqU,8175
4
4
  tracdap/rt/_impl/__init__.py,sha256=nFn00zysNlcEFHQJWs4l6vLm9RS5zsJ_IF9-eRwEXlo,796
5
- tracdap/rt/_impl/runtime.py,sha256=FX5dqV-KfyvLfQvksv0RTle8N6kd_6-oaIJqSu32S6w,16955
5
+ tracdap/rt/_impl/runtime.py,sha256=fggeE99IW8TDe-9vz2Y2hggHLDV1DgdWuEoJVLkMylg,17434
6
6
  tracdap/rt/_impl/static_api.py,sha256=EN-ANv5SEoJnzS7o-x97or36plSfFRZYWN6cfZghEVs,11298
7
7
  tracdap/rt/_impl/core/__init__.py,sha256=7VEb_giQUbvBBO8OSTjTtgFgu7WSA43qslcZvhweO10,795
8
8
  tracdap/rt/_impl/core/config_parser.py,sha256=R0OhSxU3VKHi8neGXZPOFj0C8WxQgu-t0nfcJ-c4qRE,24129
9
- tracdap/rt/_impl/core/data.py,sha256=Qe4-s14qtbxptw4BhFH_rISTdUrZrnuyEPIEar7ZrpM,47018
9
+ tracdap/rt/_impl/core/data.py,sha256=auVXaUQeo6gRoi2aQRGtSrVAzSSiuysVbWJOUWZ5NXU,68973
10
10
  tracdap/rt/_impl/core/guard_rails.py,sha256=eixt5hqFuAMmPlzDQyWBXSKDYt12d954qfk-lwkdQmI,11611
11
11
  tracdap/rt/_impl/core/logging.py,sha256=AdE_KtZ1HiiEuLwg6C_xcAgq0XULbaxHv3MWuv3GT_A,6505
12
12
  tracdap/rt/_impl/core/models.py,sha256=u2ZIql8Xm1kcG_Bu4lGaAsaLhxYEKxrZAkzYP3lBl88,11103
13
- tracdap/rt/_impl/core/repos.py,sha256=BoW4C7Urejr8YPiW8DFe9e5GynLhvhT2iYeUsDDUuTs,2289
13
+ tracdap/rt/_impl/core/repos.py,sha256=hAxlzjTBqDm9JD-UinO5yKVKQbnIxxQ4mQdedhShRts,2589
14
14
  tracdap/rt/_impl/core/schemas.py,sha256=w9Vk1yNg1-LaAqQkrL1mxY5TCwtKHcJJzpoz23AclwE,7625
15
15
  tracdap/rt/_impl/core/shim.py,sha256=Ek9dlbCSyTyt_B-gCJLR21SRRTZig7XluCCRHFv9pbE,23388
16
- tracdap/rt/_impl/core/storage.py,sha256=AFTdSXeKti67tdTspBQ4V7RlqAGu_S7DZb1rJDlZrdM,36114
16
+ tracdap/rt/_impl/core/storage.py,sha256=oTSUEQVf1wPkEaUOYE4ydZKUiyMIajTYkO2myRAMYpw,36404
17
17
  tracdap/rt/_impl/core/struct.py,sha256=4hnwG099BqD3wACXOEUeMBkLhAgNUWkG8lJwIXKSF9c,19144
18
18
  tracdap/rt/_impl/core/type_system.py,sha256=KGO32QvppRP_35y_pwapxWdJd-YS6VQ7NCSR-3VsMbM,15371
19
- tracdap/rt/_impl/core/util.py,sha256=Ro23tt4cjvgvPtiya932poPe5xW9q-vbb_t5u9fGV3Y,7620
19
+ tracdap/rt/_impl/core/util.py,sha256=iXE8s_sbSHdwBy2Fwk6-GBiYwbnEeqIIelGFN8pML_8,8904
20
20
  tracdap/rt/_impl/core/validation.py,sha256=XmRaaiBIYu5iqGPnBzU8SPSCYrCwGKfgEJITj5VKOpk,25029
21
21
  tracdap/rt/_impl/exec/__init__.py,sha256=7VEb_giQUbvBBO8OSTjTtgFgu7WSA43qslcZvhweO10,795
22
22
  tracdap/rt/_impl/exec/actors.py,sha256=ebPBsIsgok02YM-Ql277Tbz8s-_xDhsteMa3sLV0xFw,35135
23
23
  tracdap/rt/_impl/exec/context.py,sha256=8RziSSoQRezq_-kCmci81xaoy-6Jaef6FOxPOcXnDws,47126
24
- tracdap/rt/_impl/exec/dev_mode.py,sha256=W7uXFmK-bgNowJZXQf4Sgcmw53bZ2j3lYlRws0T-BXY,43246
25
- tracdap/rt/_impl/exec/engine.py,sha256=WwSuuAy0PXtI53aIEF85rbHkD4yxX2wvNxwZZSOFBUo,48101
26
- tracdap/rt/_impl/exec/functions.py,sha256=lZl_6pqa1Huyq5wIt_zPbPxbER_rnPqSlKyWyU6fYCI,33829
27
- tracdap/rt/_impl/exec/graph.py,sha256=2r2ojPjxBDphyCqfWksaCBEW77o6ZmxZWAKzpAQiopA,11918
28
- tracdap/rt/_impl/exec/graph_builder.py,sha256=KLbQuY7TAHUwOTgorTnYvV-h07a1wip5WiRcOR9ZTiM,47699
24
+ tracdap/rt/_impl/exec/dev_mode.py,sha256=QmjER0XRkIFpXXkSqg8JFkZYgCiog8CSI0tcE1GCmkQ,44202
25
+ tracdap/rt/_impl/exec/engine.py,sha256=FyZCvuZGpgp1Hq8ovTm8lBaR3mIJgIFMMnnkOWQBkig,50549
26
+ tracdap/rt/_impl/exec/functions.py,sha256=3bXykc3-uGkAK0bpIpHvV0FyK3wBnBpVDeGtV8cvfZk,31951
27
+ tracdap/rt/_impl/exec/graph.py,sha256=jrTo331woEdK7QRDzgsp0Ftqyo8CKK9TIMw7GQUssnM,12119
28
+ tracdap/rt/_impl/exec/graph_builder.py,sha256=cy9cjRleGlSBKME7UCP20AHNoF4bbI_-BJscYxOiOOM,45816
29
29
  tracdap/rt/_impl/ext/__init__.py,sha256=7VEb_giQUbvBBO8OSTjTtgFgu7WSA43qslcZvhweO10,795
30
30
  tracdap/rt/_impl/ext/sql.py,sha256=wDlSixuDWErDlDSXo55Ti5gpHXJ5oe75Lsb4ttlrUL0,2938
31
31
  tracdap/rt/_impl/ext/storage.py,sha256=HvMHAT5pE6XhUaUfyeZ7ej8JNz2jYsu0UQAEh0Iqnsw,1763
32
32
  tracdap/rt/_impl/grpc/__init__.py,sha256=7VEb_giQUbvBBO8OSTjTtgFgu7WSA43qslcZvhweO10,795
33
- tracdap/rt/_impl/grpc/codec.py,sha256=wIOck8a82yy6k8RF6OkwY-rsWe08Hf-6KzuwZPABHhw,3970
34
- tracdap/rt/_impl/grpc/server.py,sha256=Q18O5yRAT-Jqr9wDXuUraOYhpEH-rfnFk9tvvb-o3Os,12635
35
- tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.py,sha256=5KCfcaSZ9ydp26z78-iuM2jCmFRmqgDqMuxAg7Xgcx0,5174
36
- tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.pyi,sha256=78VhnLgm_m6HSgQT0bg7j86O9g8GNMADkm3SotQ39lg,3227
33
+ tracdap/rt/_impl/grpc/codec.py,sha256=RHMpWbPsEyAlo0Yr9qQ_UC0MoRCkCRpKTJLA6_0AVqo,4100
34
+ tracdap/rt/_impl/grpc/server.py,sha256=b-yBa2QIzAVXz-AAS9vv4nrJOWbuiXT8GS3ngSxPIak,12669
35
+ tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.py,sha256=s8fioW5Am3LubsHyGVK9IwztVTzSzi8DlUTBeecXuMA,6214
36
+ tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.pyi,sha256=ldDDnkTudB3a01N7ICAkShH3fk6w8PBkto-Sz_2B5lE,4402
37
37
  tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2_grpc.py,sha256=dQod-kQYoAJwpIPHgGRiZBx4q_419JppjqELv7cUJrE,8461
38
- tracdap/rt/_impl/grpc/tracdap/metadata/common_pb2.py,sha256=oql1naNGBKxpPIQZViewQSzUmMpt9U8gB-qSJpxkBwo,1945
38
+ tracdap/rt/_impl/grpc/tracdap/metadata/common_pb2.py,sha256=PIYzsll4_D22OKSeJumJt_8ruXN4IXE844w2aUlUdh8,1945
39
39
  tracdap/rt/_impl/grpc/tracdap/metadata/common_pb2.pyi,sha256=R7fTC8HV0j8zB2E2KVtLWXSAeu5MVLrgeL-PnnOsUxg,1275
40
- tracdap/rt/_impl/grpc/tracdap/metadata/config_pb2.py,sha256=BgH_mah2IqajxdfL-MavhWg0G9fgSkw0MCRxWjGoU3A,3718
40
+ tracdap/rt/_impl/grpc/tracdap/metadata/config_pb2.py,sha256=NW6RLoNIv6rUFZ11trSX7-tP-kNEuhSztnu1np8NLO8,3718
41
41
  tracdap/rt/_impl/grpc/tracdap/metadata/config_pb2.pyi,sha256=mmQ67x6fEi-JWg5xfx8joAvbQCx1iSfSM6taqc1eZLY,3311
42
- tracdap/rt/_impl/grpc/tracdap/metadata/custom_pb2.py,sha256=DfHhxxvKU_htkLjUdvsVfxl8Gj8z5GenAuhCSuMT6Ps,1421
42
+ tracdap/rt/_impl/grpc/tracdap/metadata/custom_pb2.py,sha256=oaKYaOskZyNnf6nIJ1mKHU1kcoqGEC7BaFN5ihFIfIE,1421
43
43
  tracdap/rt/_impl/grpc/tracdap/metadata/custom_pb2.pyi,sha256=_GubsAG9rpuV_QhhXKTDOPeWIpkAkg5jlHkSZxaILak,702
44
- tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.py,sha256=dLU42LwRw6m8Fcp3Q-f4Hb2a6-7ryUN6SB01zqy_iNA,7060
44
+ tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.py,sha256=Bbv8s6Fuq7a4O-FbQmzQrzk9RGEq2ke4ysIdmlMOC74,7060
45
45
  tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.pyi,sha256=ZbHX2-NFqeYzJqpz62MPwL7Q6Ayu_4d5AimRI68Lo8A,8167
46
- tracdap/rt/_impl/grpc/tracdap/metadata/file_pb2.py,sha256=lKLP3cIzZX3mSdRMmwPBNdYjwunAs-BvzpqK29WJVak,1933
46
+ tracdap/rt/_impl/grpc/tracdap/metadata/file_pb2.py,sha256=TSoIHvw8JvwOG44JiZviwYjNaweLDe-CqF5S85fKLoY,1933
47
47
  tracdap/rt/_impl/grpc/tracdap/metadata/file_pb2.pyi,sha256=3JX6Vcc6cHlLXcihq0R_BDdvLQ2Ubob0XHzZnNCD7as,1385
48
- tracdap/rt/_impl/grpc/tracdap/metadata/flow_pb2.py,sha256=GyY4iaqp9wtZ29byMllPmk4o2nosUgdazdqf9KKUg-g,5799
48
+ tracdap/rt/_impl/grpc/tracdap/metadata/flow_pb2.py,sha256=igq0rmOtLDbVTaNg8q36kVyjxyGtGaA6PhCWEzkBdc0,5799
49
49
  tracdap/rt/_impl/grpc/tracdap/metadata/flow_pb2.pyi,sha256=yCP4usBn7VWxFWdlB6NERiCd0R7BqqmH5k29WdKNk04,5880
50
- tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.py,sha256=OiVZ_EChreM8t6DPKgXAuNBH8gwrrwochxYGjWNHtOU,15816
51
- tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.pyi,sha256=PjRbckOQkJuY7y5XUCAPuO-oLFOghEuj659c3wGSaj4,19293
52
- tracdap/rt/_impl/grpc/tracdap/metadata/model_pb2.py,sha256=q1VdvKCEslwCxqK6cEb4ABUh32j_veYaVg9WLLdSh2s,7803
50
+ tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.py,sha256=FKBIs4zapJPZuVRFSFZnMBrkMH_YP255s8kQFoRPPuE,16312
51
+ tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.pyi,sha256=-EKF2W-HH9boBfGt8J_6ejaXgrMj_Iwn5wSe9tZL0nk,19842
52
+ tracdap/rt/_impl/grpc/tracdap/metadata/model_pb2.py,sha256=WJWpc4potYHtHftIgdDbMH0h2AnErhvNVJZ6APiiMiI,7803
53
53
  tracdap/rt/_impl/grpc/tracdap/metadata/model_pb2.pyi,sha256=rBgvG_L521BbuzMpns3lKr5hOZmVwoHGW1bP2_EI4G0,7826
54
- tracdap/rt/_impl/grpc/tracdap/metadata/object_id_pb2.py,sha256=oqv2coaPVAdBFJbKjjZsSMg3ZeCcqHEceZxtU8Ls-sc,3021
54
+ tracdap/rt/_impl/grpc/tracdap/metadata/object_id_pb2.py,sha256=Mzp-EEOuLXakM6C2pVfeGsVj-zoNIQrL1Sb_Hi-tn8o,3021
55
55
  tracdap/rt/_impl/grpc/tracdap/metadata/object_id_pb2.pyi,sha256=vGsKsxSjwhedaE-5I_sMi-pquyGHTmjfedmEjqSCV_A,3401
56
- tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.py,sha256=GIRdZ5aUZRBiOmY_D44kHbA90c8-g1bxxgbSElePdWk,5037
56
+ tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.py,sha256=cU6qc3opKpsmb6ETWGnqimm5XsiEYEDFaOeBrnw1-NU,5037
57
57
  tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.pyi,sha256=ckprYPqWBl7HLYazSqfNkvkgusKOS45AbkGOZrECGjk,3670
58
- tracdap/rt/_impl/grpc/tracdap/metadata/resource_pb2.py,sha256=SoF0kxU4AVD8I5oUKnuZC1_ETHUN2m1CmAKe24amwCc,3493
58
+ tracdap/rt/_impl/grpc/tracdap/metadata/resource_pb2.py,sha256=JNR2TK8CxcQO0hwkE2bNoEud7PuAHTzFUyxAFDjSiRQ,3493
59
59
  tracdap/rt/_impl/grpc/tracdap/metadata/resource_pb2.pyi,sha256=pCPvu0E7Z-4v4wJNGZo4DC2hoDA5bosxibjfzy5A3pk,2719
60
- tracdap/rt/_impl/grpc/tracdap/metadata/search_pb2.py,sha256=YsUl-xK3jOQ6mOMCPe8G3-BWOFFz-MpUOXDWMV90DrQ,3654
60
+ tracdap/rt/_impl/grpc/tracdap/metadata/search_pb2.py,sha256=J49QfM3WsZcjlVRBYhUl7dqJtBFt9biixs3n7SdT2es,3654
61
61
  tracdap/rt/_impl/grpc/tracdap/metadata/search_pb2.pyi,sha256=PU-OYKRufI3v5Zx8RI4RvEZq3KPh91AOb8sDNwxyySY,3762
62
- tracdap/rt/_impl/grpc/tracdap/metadata/storage_pb2.py,sha256=09l_I0KjEL3vtytvVSIK0-XKrLDIvPmb3zzNgekTyL8,4652
63
- tracdap/rt/_impl/grpc/tracdap/metadata/storage_pb2.pyi,sha256=ImU8YT62pfiAMDYwTtX5E6nyI_n1PuhUWabFJlRFvnE,4746
64
- tracdap/rt/_impl/grpc/tracdap/metadata/tag_pb2.py,sha256=bQ6gA21bizykXQZPzC8AhaN5IgUYddzVEp7KSzz6KNM,2441
62
+ tracdap/rt/_impl/grpc/tracdap/metadata/storage_pb2.py,sha256=FJarB8X7sU37enXR7CrCvt0pf4TaFM-QBr3kSNqcrbU,4929
63
+ tracdap/rt/_impl/grpc/tracdap/metadata/storage_pb2.pyi,sha256=-a9zMyxD8y8zNXFI0Y2ngi_f7LumbW7PkO8xk2y_bH0,5125
64
+ tracdap/rt/_impl/grpc/tracdap/metadata/tag_pb2.py,sha256=OeQwXC5tBna5znjQpMpHrfzFSORBof6qs81RPN5aHmc,2441
65
65
  tracdap/rt/_impl/grpc/tracdap/metadata/tag_pb2.pyi,sha256=6gP3-Rdiq84ng5d6DtVNEWZj5syt1xyD33jRWg3YcgU,1454
66
- tracdap/rt/_impl/grpc/tracdap/metadata/tag_update_pb2.py,sha256=HwJtcqjYwbYZw5LpZIaMux1qusVfEitl0wX-J8NMprI,2090
66
+ tracdap/rt/_impl/grpc/tracdap/metadata/tag_update_pb2.py,sha256=3Z7HLWVp3Enfv7R0epDVMx7FLLAQTNdbjp3fpqVFF-o,2090
67
67
  tracdap/rt/_impl/grpc/tracdap/metadata/tag_update_pb2.pyi,sha256=Q3687BMYoH8OzJF2tYu6nEOR8Yz3UkU8f2cjxQ3lFv8,1470
68
- tracdap/rt/_impl/grpc/tracdap/metadata/type_pb2.py,sha256=Vbr4xCD2r4wDEnZMV1ZnEgWvYhZph6EAwL4eZZrO4IE,4206
68
+ tracdap/rt/_impl/grpc/tracdap/metadata/type_pb2.py,sha256=2x5ZJGlwlaKtnH2A43kHV6tWuzfrerq1N7aaMTD5KuM,4206
69
69
  tracdap/rt/_impl/grpc/tracdap/metadata/type_pb2.pyi,sha256=h-5HTqHMxFhTvfzZH7q-qWt7GeUhYnsQ8EqN9VoH_Ys,4356
70
70
  tracdap/rt/_plugins/__init__.py,sha256=nFn00zysNlcEFHQJWs4l6vLm9RS5zsJ_IF9-eRwEXlo,796
71
71
  tracdap/rt/_plugins/_helpers.py,sha256=--AkQUDvC0P_of_FRF5_xPd6er72yWI1G4GNYHUTX8w,6027
@@ -73,7 +73,7 @@ tracdap/rt/_plugins/config_local.py,sha256=SemksOXRPsUMNoTinjWe00F-Q4o-5X2ql3esw
73
73
  tracdap/rt/_plugins/format_arrow.py,sha256=TQb6WR2MrjXem1gJg4EZQy3NGP-hEe1GneiSkvSAqeM,2397
74
74
  tracdap/rt/_plugins/format_csv.py,sha256=NJ-8XeZH5ZplNUv7iLZBgVXzbXJ9jutU0cqXSdyM-Mo,17015
75
75
  tracdap/rt/_plugins/format_parquet.py,sha256=VwmrcEvaGczzdaWFgmpT9kYDKDk5UwQ6BQF31vm7D-g,2346
76
- tracdap/rt/_plugins/repo_git.py,sha256=5snP5IkzEQP_XdhAM5U3IkV8wv-yZGLHzN-d6BL1h2k,10464
76
+ tracdap/rt/_plugins/repo_git.py,sha256=oTVGNTYUF5-r4YVtXMRZD5WY6mCO2natSuFHrNluEBo,11863
77
77
  tracdap/rt/_plugins/repo_local.py,sha256=PZGDeRA2SLJTO-Z-YV9CHeXPUB0zt_fzIElCsw8zR-c,2913
78
78
  tracdap/rt/_plugins/repo_pypi.py,sha256=fuxOLVkxZyV8ikPe0w-3qRdcfFaFc0jxQDY08g-8Hy0,13532
79
79
  tracdap/rt/_plugins/storage_aws.py,sha256=yxDYw0jL-hXoUgqBlPhL1I_8i8LehOMjZKtG_n-hY0g,13160
@@ -88,13 +88,13 @@ tracdap/rt/api/experimental.py,sha256=ycD7xpMyXBI6W2UCirCbYtQ0rVVCNByAsA0p3euXmo
88
88
  tracdap/rt/api/hook.py,sha256=0TA_pu-22IoVNacf38dq3Aaz4sHoau1IdhabfxgKtOE,5243
89
89
  tracdap/rt/api/model_api.py,sha256=ONDU0ocNnejGi2r9nCKTlblqw847Yz4vtGo4M8inc9Q,22435
90
90
  tracdap/rt/api/static_api.py,sha256=vSt6JUhxuOKQ5wI3CdmHgf8BskHffjry1lId2buDEeA,31852
91
- tracdap/rt/config/__init__.py,sha256=DHLUDzk5HhpZVgEA6kGKNhNwHxQKPXkhl9AE_lewP8o,832
92
- tracdap/rt/config/common.py,sha256=uKdwvfAKUzi8Wag4NpIYIZyL3D-Ed-KN1sqYuOpOROw,1187
91
+ tracdap/rt/config/__init__.py,sha256=Aw8EQYJugkXJ0ivDY-D2phb6wrs7vXMdJBje1WVvgyQ,833
92
+ tracdap/rt/config/common.py,sha256=DkOqW5w-ReQkFGSCnKFodZ2rgxQOCafMJCtXKXTKqIc,1315
93
93
  tracdap/rt/config/dynamic.py,sha256=3PaL3IVDxb1_PSxdp820U4uEmLlKBLBBIwCHyVQZ1l4,738
94
- tracdap/rt/config/job.py,sha256=B-aVIq0vJUY41-vPuIOLIq4A2hdfL9EJN0X9--nGfcI,656
94
+ tracdap/rt/config/job.py,sha256=myFKnwRe2VoBesK8pJjKRwDMX2K6oMkixT5RYI7bo2w,1008
95
95
  tracdap/rt/config/platform.py,sha256=aU7sVInAcf7NxPk6KufaHqDbM_NZRQ9qOb3w4rDT4qI,3005
96
- tracdap/rt/config/result.py,sha256=cKFz9ql_6Ru6qj7UP_VJZ2HJORf52dmi1dnK7eBxD-g,612
97
- tracdap/rt/config/runtime.py,sha256=ENzEEiAOEmHOgaTVXO9j6WOX6Vv0cVSdYcFxJb_CTnQ,707
96
+ tracdap/rt/config/result.py,sha256=SwuyVaXMef1wy4EUzTxxbXDhtZvYv8fb72DX2nV_wuA,850
97
+ tracdap/rt/config/runtime.py,sha256=HejW-r02CC4musmRm6sCZNk1bgX08h2_iZ55qSPUwN8,779
98
98
  tracdap/rt/ext/__init__.py,sha256=7VEb_giQUbvBBO8OSTjTtgFgu7WSA43qslcZvhweO10,795
99
99
  tracdap/rt/ext/config.py,sha256=5LM1IuRjoVe43oLSgn02LAv1uvDl_lBfZrLjjiduCBU,1223
100
100
  tracdap/rt/ext/embed.py,sha256=QmxDnoRK8jYN664jqEQFQlYBPX81Q7wpHKdKsRqNiDo,2297
@@ -105,25 +105,25 @@ tracdap/rt/launch/__init__.py,sha256=SPIwj5Bwa-IlhrfY1OJspYnL_mPLvz4F9XTAYKeu6IE
105
105
  tracdap/rt/launch/__main__.py,sha256=tfr5wL1gHm0oj4tcX6pv6bl-3Z1K7VMpmmNMQzfMFzU,841
106
106
  tracdap/rt/launch/cli.py,sha256=jGySYBawTDFJrhHgwYnplXb9VPcgfrBVB2UURqx5s-s,2638
107
107
  tracdap/rt/launch/launch.py,sha256=BogIdacUhIvr_Ay-LU2eik8Y1DvGr-GrOiOi40XqZ1A,7806
108
- tracdap/rt/metadata/__init__.py,sha256=fzIophkBh7v8G4JqLnFOn81HLoyGwUtLVZbbio2lSP4,2330
108
+ tracdap/rt/metadata/__init__.py,sha256=eC-O9oA1Q_BxdFCizWDsWPiPmEEOR_XcMKcxj8H1Vco,2365
109
109
  tracdap/rt/metadata/common.py,sha256=J24poYPHSJfORPqqhyJGTAmepdhVaT0V0RblWiW9jCI,1404
110
110
  tracdap/rt/metadata/config.py,sha256=jOG78zCw6RPW0Parawbygw_KKx0FjTdPiGZ9MdQrd28,2360
111
111
  tracdap/rt/metadata/custom.py,sha256=GhCO8xjjsjZzlfSefqmCFX80rXJnxDCDq_STWi0ZL_0,352
112
112
  tracdap/rt/metadata/data.py,sha256=uYUyV7VmtGZ4s8hv4JMN6sXix2USu6TmOqq0POlEX7U,4424
113
113
  tracdap/rt/metadata/file.py,sha256=d4VLinEXiXZamLtPbZSqZQamQbxR8dsU1m680vDaxoY,628
114
114
  tracdap/rt/metadata/flow.py,sha256=IgZTh62xndAAFG1Y44JORrVKOV7Bd4dEqtWjf1CGeHU,3491
115
- tracdap/rt/metadata/job.py,sha256=r8IBe-IumI_An1jrg-h8mM2bZPEew8evpXp5GkfEfNo,6390
115
+ tracdap/rt/metadata/job.py,sha256=K-tk1jix1iLGOduZAMfqZCyD0QVgGjilOe06K01ZxYI,6467
116
116
  tracdap/rt/metadata/model.py,sha256=bLeAhFtKa9zOAjf5hd1PnJoEZdHqyl0Drskn464dmqA,3761
117
117
  tracdap/rt/metadata/object.py,sha256=6Nw09UewFQ-BzqmGywYTK_GZHf3bw2hNHPpud_4Pu-o,3021
118
118
  tracdap/rt/metadata/object_id.py,sha256=BorEJWcNCayItRBLODdpJ0Xo2GfCWgQ4dWE28Rl4n1Q,4435
119
119
  tracdap/rt/metadata/resource.py,sha256=GgYiD-6hsDw01fZEjwQ55SgCxGJxIeVW4Crm1jQpiWc,1920
120
120
  tracdap/rt/metadata/search.py,sha256=BaH0mL80QEQ6iDmef1bIqEBIlm70orkc18DQv3pya6Y,9931
121
- tracdap/rt/metadata/storage.py,sha256=-WYc3aJskSCF_ETFQDavG3fTck__WPGMOfzWEBv55p4,3153
121
+ tracdap/rt/metadata/storage.py,sha256=_yh7GkQNf38yVkFj0ZNEzaIdhwiuDmD62Pepl-McM6M,3302
122
122
  tracdap/rt/metadata/tag.py,sha256=cjKF5gdNECHDtA9sc09Dc2Q4WNZQA_7iJsUEHSKFXiQ,5097
123
123
  tracdap/rt/metadata/tag_update.py,sha256=I7iDJiHEcSQ2vhOlhIc0fzeOoqTg6N1LJZU1R6tG_8g,3779
124
124
  tracdap/rt/metadata/type.py,sha256=7XOGlLVvxd6DEmKRBYTANBsu9lmxDOsMKE0aNvzsB3M,9568
125
- tracdap_runtime-0.8.0rc2.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
126
- tracdap_runtime-0.8.0rc2.dist-info/METADATA,sha256=ErUOnikAMjVByItf_AxK6D5obpmAutEGTffIE-j2UaU,5204
127
- tracdap_runtime-0.8.0rc2.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
128
- tracdap_runtime-0.8.0rc2.dist-info/top_level.txt,sha256=Uv0JfaE1Lp4JnCzqW8lqXNJAEcsAFpAUGOghJolVNdM,8
129
- tracdap_runtime-0.8.0rc2.dist-info/RECORD,,
125
+ tracdap_runtime-0.9.0b1.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
126
+ tracdap_runtime-0.9.0b1.dist-info/METADATA,sha256=p6Cy4tsQIMhoW1cOktdk3gGQ3AWZKWpS0WxwwkkcQN8,5270
127
+ tracdap_runtime-0.9.0b1.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
128
+ tracdap_runtime-0.9.0b1.dist-info/top_level.txt,sha256=Uv0JfaE1Lp4JnCzqW8lqXNJAEcsAFpAUGOghJolVNdM,8
129
+ tracdap_runtime-0.9.0b1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (77.0.3)
2
+ Generator: setuptools (80.7.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5