tracdap-runtime 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.
Files changed (48) hide show
  1. tracdap/rt/_impl/core/__init__.py +14 -0
  2. tracdap/rt/_impl/{config_parser.py → core/config_parser.py} +59 -35
  3. tracdap/rt/_impl/{data.py → core/data.py} +64 -33
  4. tracdap/rt/_impl/{models.py → core/models.py} +6 -6
  5. tracdap/rt/_impl/{repos.py → core/repos.py} +1 -1
  6. tracdap/rt/_impl/{schemas.py → core/schemas.py} +4 -4
  7. tracdap/rt/_impl/{shim.py → core/shim.py} +3 -3
  8. tracdap/rt/_impl/{storage.py → core/storage.py} +8 -5
  9. tracdap/rt/_impl/core/struct.py +547 -0
  10. tracdap/rt/_impl/{type_system.py → core/type_system.py} +73 -33
  11. tracdap/rt/_impl/{validation.py → core/validation.py} +58 -17
  12. tracdap/rt/_impl/exec/__init__.py +14 -0
  13. tracdap/rt/{_exec → _impl/exec}/actors.py +9 -12
  14. tracdap/rt/{_exec → _impl/exec}/context.py +70 -16
  15. tracdap/rt/{_exec → _impl/exec}/dev_mode.py +31 -20
  16. tracdap/rt/{_exec → _impl/exec}/engine.py +9 -9
  17. tracdap/rt/{_exec → _impl/exec}/functions.py +89 -40
  18. tracdap/rt/{_exec → _impl/exec}/graph.py +1 -1
  19. tracdap/rt/{_exec → _impl/exec}/graph_builder.py +2 -2
  20. tracdap/rt/{_exec → _impl/grpc}/server.py +4 -4
  21. tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.py +2 -2
  22. tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2_grpc.py +1 -1
  23. tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.py +31 -19
  24. tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.pyi +48 -2
  25. tracdap/rt/{_exec → _impl}/runtime.py +13 -13
  26. tracdap/rt/_impl/static_api.py +13 -5
  27. tracdap/rt/_plugins/format_csv.py +1 -1
  28. tracdap/rt/_plugins/storage_sql.py +13 -6
  29. tracdap/rt/_version.py +1 -1
  30. tracdap/rt/api/experimental.py +32 -0
  31. tracdap/rt/api/hook.py +11 -0
  32. tracdap/rt/config/__init__.py +8 -10
  33. tracdap/rt/config/common.py +0 -34
  34. tracdap/rt/config/platform.py +14 -26
  35. tracdap/rt/ext/embed.py +2 -2
  36. tracdap/rt/ext/plugins.py +2 -2
  37. tracdap/rt/launch/launch.py +3 -3
  38. tracdap/rt/metadata/__init__.py +11 -9
  39. tracdap/rt/metadata/data.py +40 -0
  40. {tracdap_runtime-0.8.0b2.dist-info → tracdap_runtime-0.8.0b4.dist-info}/METADATA +15 -13
  41. {tracdap_runtime-0.8.0b2.dist-info → tracdap_runtime-0.8.0b4.dist-info}/RECORD +47 -45
  42. {tracdap_runtime-0.8.0b2.dist-info → tracdap_runtime-0.8.0b4.dist-info}/WHEEL +1 -1
  43. tracdap/rt/_exec/__init__.py +0 -0
  44. /tracdap/rt/_impl/{guard_rails.py → core/guard_rails.py} +0 -0
  45. /tracdap/rt/_impl/{logging.py → core/logging.py} +0 -0
  46. /tracdap/rt/_impl/{util.py → core/util.py} +0 -0
  47. {tracdap_runtime-0.8.0b2.dist-info → tracdap_runtime-0.8.0b4.dist-info}/LICENSE +0 -0
  48. {tracdap_runtime-0.8.0b2.dist-info → tracdap_runtime-0.8.0b4.dist-info}/top_level.txt +0 -0
@@ -70,6 +70,8 @@ PANDAS = DataFramework.pandas()
70
70
  POLARS = DataFramework.polars()
71
71
  """Data framework constant for the Polars data library"""
72
72
 
73
+ STRUCT_TYPE = _tp.TypeVar('STRUCT_TYPE')
74
+
73
75
 
74
76
  class TracContext(TracContext):
75
77
 
@@ -83,6 +85,14 @@ class TracContext(TracContext):
83
85
 
84
86
  pass
85
87
 
88
+ def get_struct(self, struct_name: str, python_class: _tp.Type[STRUCT_TYPE]) -> STRUCT_TYPE:
89
+
90
+ pass
91
+
92
+ def put_struct(self, struct_name: str, struct_data: STRUCT_TYPE):
93
+
94
+ pass
95
+
86
96
 
87
97
  def init_static():
88
98
  """Ensure TRAC's static model API is available to use (for static definitions at module or class scope)"""
@@ -108,6 +118,28 @@ def map_type(entry_type: BasicType) -> TypeDescriptor:
108
118
  return sa.map_type(entry_type)
109
119
 
110
120
 
121
+ def define_struct(python_type: _tp.Type[STRUCT_TYPE]) -> SchemaDefinition:
122
+ """Build schema definition for a STRUCT"""
123
+ sa = _StaticApiHook.get_instance()
124
+ return sa.define_struct(python_type)
125
+
126
+ def define_input_struct(
127
+ python_type: _tp.Type[STRUCT_TYPE], *,
128
+ label: _tp.Optional[str] = None, optional: bool = False,
129
+ input_props: _tp.Optional[_tp.Dict[str, _tp.Any]] = None) -> ModelInputSchema:
130
+
131
+ schema = define_struct(python_type)
132
+ return define_input(schema, label=label, optional=optional, input_props=input_props)
133
+
134
+ def define_output_struct(
135
+ python_type: _tp.Type[STRUCT_TYPE], *,
136
+ label: _tp.Optional[str] = None, optional: bool = False,
137
+ output_props: _tp.Optional[_tp.Dict[str, _tp.Any]] = None) -> ModelOutputSchema:
138
+
139
+ schema = define_struct(python_type)
140
+ return define_output(schema, label=label, optional=optional, output_props=output_props)
141
+
142
+
111
143
  class FileType(_enum.Enum):
112
144
 
113
145
  FILE = 1
tracdap/rt/api/hook.py CHANGED
@@ -121,6 +121,11 @@ class _StaticApiHook:
121
121
 
122
122
  pass
123
123
 
124
+ @_abc.abstractmethod
125
+ def define_struct(self, python_type: type) -> _meta.SchemaDefinition:
126
+
127
+ pass
128
+
124
129
  @_abc.abstractmethod
125
130
  def load_schema(
126
131
  self, package: _tp.Union[_ts.ModuleType, str], schema_file: str,
@@ -158,3 +163,9 @@ class _StaticApiHook:
158
163
  -> _meta.ModelOutputSchema:
159
164
 
160
165
  pass
166
+
167
+ X = _tp.TypeVar("X")
168
+
169
+ def do_x(x: type[X]) -> X:
170
+
171
+ return x.__new__(x)
@@ -1,30 +1,28 @@
1
1
  # Code generated by TRAC
2
2
 
3
- from .job import JobConfig
4
-
5
3
  from .common import _ConfigFile
6
4
  from .common import PluginConfig
7
5
  from .common import PlatformInfo
8
- from .common import AuthenticationConfig
9
6
  from .common import StorageConfig
10
7
  from .common import ServiceConfig
11
8
 
12
- from .result import TagUpdateList
13
- from .result import JobResult
9
+ from .runtime import RuntimeConfig
10
+ from .runtime import SparkSettings
11
+
12
+ from .job import JobConfig
14
13
 
15
14
  from .platform import RoutingProtocol
16
15
  from .platform import DeploymentLayout
17
16
  from .platform import PlatformConfig
18
17
  from .platform import MetadataConfig
19
18
  from .platform import TenantConfig
20
- from .platform import WebServerConfig
21
- from .platform import WebServerRewriteRule
22
- from .platform import WebServerRedirect
23
19
  from .platform import GatewayConfig
20
+ from .platform import GatewayRedirect
24
21
  from .platform import RouteConfig
25
22
  from .platform import RoutingMatch
26
23
  from .platform import RoutingTarget
27
24
  from .platform import DeploymentConfig
25
+ from .platform import ClientConfig
28
26
 
29
- from .runtime import RuntimeConfig
30
- from .runtime import SparkSettings
27
+ from .result import TagUpdateList
28
+ from .result import JobResult
@@ -33,40 +33,6 @@ class PlatformInfo:
33
33
  deploymentInfo: "_tp.Dict[str, str]" = _dc.field(default_factory=dict)
34
34
 
35
35
 
36
- @_dc.dataclass
37
- class AuthenticationConfig:
38
-
39
- jwtIssuer: "str" = ""
40
-
41
- jwtExpiry: "int" = 0
42
-
43
- jwtLimit: "int" = 0
44
-
45
- jwtRefresh: "int" = 0
46
-
47
- provider: "PluginConfig" = _dc.field(default_factory=lambda: PluginConfig())
48
-
49
- loginPath: "_tp.Optional[str]" = None
50
-
51
- refreshPath: "_tp.Optional[str]" = None
52
-
53
- returnPath: "_tp.Optional[str]" = None
54
-
55
- disableAuth: "bool" = False
56
-
57
- disableSigning: "bool" = False
58
-
59
- systemUserId: "str" = ""
60
-
61
- systemUserName: "str" = ""
62
-
63
- systemTicketDuration: "int" = 0
64
-
65
- systemTicketRefresh: "int" = 0
66
-
67
- externalSystems: "_tp.Dict[str, PluginConfig]" = _dc.field(default_factory=dict)
68
-
69
-
70
36
  @_dc.dataclass
71
37
  class StorageConfig:
72
38
 
@@ -39,8 +39,6 @@ class PlatformConfig:
39
39
 
40
40
  platformInfo: "PlatformInfo" = _dc.field(default_factory=lambda: PlatformInfo())
41
41
 
42
- authentication: "AuthenticationConfig" = _dc.field(default_factory=lambda: AuthenticationConfig())
43
-
44
42
  metadata: "MetadataConfig" = _dc.field(default_factory=lambda: MetadataConfig())
45
43
 
46
44
  storage: "StorageConfig" = _dc.field(default_factory=lambda: StorageConfig())
@@ -53,14 +51,16 @@ class PlatformConfig:
53
51
 
54
52
  tenants: "_tp.Dict[str, TenantConfig]" = _dc.field(default_factory=dict)
55
53
 
56
- webServer: "WebServerConfig" = _dc.field(default_factory=lambda: WebServerConfig())
57
-
58
54
  gateway: "GatewayConfig" = _dc.field(default_factory=lambda: GatewayConfig())
59
55
 
60
56
  services: "_tp.Dict[str, ServiceConfig]" = _dc.field(default_factory=dict)
61
57
 
62
58
  deployment: "DeploymentConfig" = _dc.field(default_factory=lambda: DeploymentConfig())
63
59
 
60
+ clientConfig: "_tp.Dict[str, ClientConfig]" = _dc.field(default_factory=dict)
61
+
62
+ extensions: "_tp.Dict[str, protobuf.Any]" = _dc.field(default_factory=dict)
63
+
64
64
 
65
65
  @_dc.dataclass
66
66
  class MetadataConfig:
@@ -79,25 +79,15 @@ class TenantConfig:
79
79
 
80
80
 
81
81
  @_dc.dataclass
82
- class WebServerConfig:
83
-
84
- contentRoot: "PluginConfig" = _dc.field(default_factory=lambda: PluginConfig())
82
+ class GatewayConfig:
85
83
 
86
- rewriteRules: "_tp.List[WebServerRewriteRule]" = _dc.field(default_factory=list)
84
+ routes: "_tp.List[RouteConfig]" = _dc.field(default_factory=list)
87
85
 
88
- redirects: "_tp.List[WebServerRedirect]" = _dc.field(default_factory=list)
86
+ redirects: "_tp.List[GatewayRedirect]" = _dc.field(default_factory=list)
89
87
 
90
88
 
91
89
  @_dc.dataclass
92
- class WebServerRewriteRule:
93
-
94
- source: "str" = ""
95
-
96
- target: "str" = ""
97
-
98
-
99
- @_dc.dataclass
100
- class WebServerRedirect:
90
+ class GatewayRedirect:
101
91
 
102
92
  source: "str" = ""
103
93
 
@@ -106,14 +96,6 @@ class WebServerRedirect:
106
96
  status: "int" = 0
107
97
 
108
98
 
109
- @_dc.dataclass
110
- class GatewayConfig:
111
-
112
- routes: "_tp.List[RouteConfig]" = _dc.field(default_factory=list)
113
-
114
- redirects: "_tp.List[WebServerRedirect]" = _dc.field(default_factory=list)
115
-
116
-
117
99
  @_dc.dataclass
118
100
  class RouteConfig:
119
101
 
@@ -154,3 +136,9 @@ class RoutingTarget:
154
136
  class DeploymentConfig:
155
137
 
156
138
  layout: "DeploymentLayout" = DeploymentLayout.LAYOUT_NOT_SET
139
+
140
+
141
+ @_dc.dataclass
142
+ class ClientConfig:
143
+
144
+ properties: "_tp.Dict[str, str]" = _dc.field(default_factory=dict)
tracdap/rt/ext/embed.py CHANGED
@@ -14,8 +14,8 @@
14
14
  # limitations under the License.
15
15
 
16
16
  import tracdap.rt.config as _cfg
17
- import tracdap.rt._impl.guard_rails as _guard # noqa
18
- import tracdap.rt._exec.runtime as _rt # noqa
17
+ import tracdap.rt._impl.core.guard_rails as _guard # noqa
18
+ import tracdap.rt._impl.runtime as _rt # noqa
19
19
 
20
20
 
21
21
  class __EmbeddedRuntime:
tracdap/rt/ext/plugins.py CHANGED
@@ -19,8 +19,8 @@ import importlib as _il
19
19
 
20
20
  import tracdap.rt.config as _cfg
21
21
  import tracdap.rt.exceptions as _ex
22
- import tracdap.rt._impl.guard_rails as _guard # noqa
23
- import tracdap.rt._impl.logging as _logging # noqa
22
+ import tracdap.rt._impl.core.guard_rails as _guard # noqa
23
+ import tracdap.rt._impl.core.logging as _logging # noqa
24
24
  from tracdap.rt.exceptions import EStartup
25
25
 
26
26
 
@@ -20,9 +20,9 @@ import pathlib as _pathlib
20
20
  import typing as _tp
21
21
 
22
22
  import tracdap.rt.api as _api
23
- import tracdap.rt._impl.config_parser as _cparse # noqa
24
- import tracdap.rt._impl.util as _util # noqa
25
- import tracdap.rt._exec.runtime as _runtime # noqa
23
+ import tracdap.rt._impl.core.config_parser as _cparse # noqa
24
+ import tracdap.rt._impl.core.util as _util # noqa
25
+ import tracdap.rt._impl.runtime as _runtime # noqa
26
26
 
27
27
  from .cli import _cli_args
28
28
 
@@ -9,6 +9,8 @@ from .type import Value
9
9
  from .type import ArrayValue
10
10
  from .type import MapValue
11
11
 
12
+ from .custom import CustomDefinition
13
+
12
14
  from .object_id import ObjectType
13
15
  from .object_id import TagHeader
14
16
  from .object_id import TagSelector
@@ -17,10 +19,19 @@ from .data import SchemaType
17
19
  from .data import PartType
18
20
  from .data import FieldSchema
19
21
  from .data import TableSchema
22
+ from .data import StructField
23
+ from .data import StructSchema
20
24
  from .data import SchemaDefinition
21
25
  from .data import PartKey
22
26
  from .data import DataDefinition
23
27
 
28
+ from .stoarge import CopyStatus
29
+ from .stoarge import IncarnationStatus
30
+ from .stoarge import StorageCopy
31
+ from .stoarge import StorageIncarnation
32
+ from .stoarge import StorageItem
33
+ from .stoarge import StorageDefinition
34
+
24
35
  from .file import FileDefinition
25
36
  from .file import FileType
26
37
 
@@ -64,15 +75,6 @@ from .common import MetadataFormat
64
75
  from .common import MetadataVersion
65
76
  from .common import TenantInfo
66
77
 
67
- from .stoarge import CopyStatus
68
- from .stoarge import IncarnationStatus
69
- from .stoarge import StorageCopy
70
- from .stoarge import StorageIncarnation
71
- from .stoarge import StorageItem
72
- from .stoarge import StorageDefinition
73
-
74
- from .custom import CustomDefinition
75
-
76
78
  from .object import ObjectDefinition
77
79
 
78
80
  from .tag import Tag
@@ -25,6 +25,10 @@ class SchemaType(_enum.Enum):
25
25
 
26
26
  """Tabular data"""
27
27
 
28
+ STRUCT = 2
29
+
30
+ """Structured objects"""
31
+
28
32
 
29
33
  class PartType(_enum.Enum):
30
34
 
@@ -80,6 +84,40 @@ class TableSchema:
80
84
  fields: "_tp.List[FieldSchema]" = _dc.field(default_factory=list)
81
85
 
82
86
 
87
+ @_dc.dataclass
88
+ class StructField:
89
+
90
+ """* Schema for an individual field in a structured object dataset"""
91
+
92
+ fieldType: "TypeDescriptor" = _dc.field(default_factory=lambda: TypeDescriptor())
93
+
94
+ label: "str" = ""
95
+
96
+ businessKey: "bool" = False
97
+
98
+ categorical: "bool" = False
99
+
100
+ notNull: "_tp.Optional[bool]" = None
101
+
102
+ """This could become mandatory with the next metadata update"""
103
+
104
+ formatCode: "_tp.Optional[str]" = None
105
+
106
+ defaultValue: "Value" = _dc.field(default_factory=lambda: Value())
107
+
108
+ structType: "_tp.Optional[str]" = None
109
+
110
+
111
+ @_dc.dataclass
112
+ class StructSchema:
113
+
114
+ """* Schema for a structured object dataset"""
115
+
116
+ fields: "_tp.Dict[str, StructField]" = _dc.field(default_factory=dict)
117
+
118
+ namedTypes: "_tp.Dict[str, StructSchema]" = _dc.field(default_factory=dict)
119
+
120
+
83
121
  @_dc.dataclass
84
122
  class SchemaDefinition:
85
123
 
@@ -103,6 +141,8 @@ class SchemaDefinition:
103
141
 
104
142
  table: "_tp.Optional[TableSchema]" = None
105
143
 
144
+ struct: "_tp.Optional[StructSchema]" = None
145
+
106
146
 
107
147
  @_dc.dataclass
108
148
  class PartKey:
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: tracdap-runtime
3
- Version: 0.8.0b2
3
+ Version: 0.8.0b4
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
@@ -13,19 +13,20 @@ Platform: any
13
13
  Classifier: Programming Language :: Python :: 3
14
14
  Classifier: License :: OSI Approved :: Apache Software License
15
15
  Classifier: Operating System :: OS Independent
16
- Requires-Python: <3.13,>=3.8
16
+ Requires-Python: <3.14,>=3.9
17
17
  Description-Content-Type: text/markdown
18
18
  License-File: LICENSE
19
- Requires-Dist: protobuf==5.28.2
20
- Requires-Dist: pyarrow==16.1.0
19
+ Requires-Dist: protobuf==5.29.3
20
+ Requires-Dist: pyarrow==18.1.0
21
21
  Requires-Dist: pyyaml==6.0.2
22
- Requires-Dist: dulwich==0.22.1
22
+ Requires-Dist: dulwich==0.22.7
23
23
  Requires-Dist: requests==2.32.3
24
- Requires-Dist: pandas<2.3.0,>=1.2.0
25
- Requires-Dist: numpy<2.0.0
26
24
  Provides-Extra: grpc
27
- Requires-Dist: grpcio==1.66.1; extra == "grpc"
28
- Requires-Dist: grpcio-status==1.66.1; extra == "grpc"
25
+ Requires-Dist: grpcio==1.70.0; extra == "grpc"
26
+ Requires-Dist: grpcio-status==1.70.0; extra == "grpc"
27
+ Provides-Extra: pandas
28
+ Requires-Dist: pandas<2.3.0,>=1.2.0; extra == "pandas"
29
+ Requires-Dist: numpy<2.3.0,>=1.20; extra == "pandas"
29
30
  Provides-Extra: polars
30
31
  Requires-Dist: polars<2.0.0,>=1.0.0; extra == "polars"
31
32
  Provides-Extra: pyspark
@@ -64,12 +65,13 @@ Documentation for the TRAC platform is available on our website at
64
65
 
65
66
  The TRAC runtime for Python has these requirements:
66
67
 
67
- * Python: 3.8 up to 3.12
68
+ * Python: 3.9 up to 3.13
68
69
  * Pandas: 1.2 up to 2.2
69
70
  * PySpark 3.0 up to 3.5 (optional)
70
71
 
71
- 3rd party libraries may impose additional constraints on supported versions of Python, Pandas or PySpark.
72
- As of February 2024, the Python libraries for GCP do not yet support Python 3.12.
72
+ 3rd party libraries may impose additional constraints on supported versions of key libraries.
73
+ For example, Pandas 1.5 is not available for Python 3.12 or 3.13, while NumPy 2.0 is only
74
+ compatible with Pandas 2.1 and later.
73
75
 
74
76
  ## Installing the runtime
75
77
 
@@ -1,44 +1,46 @@
1
1
  tracdap/rt/__init__.py,sha256=4aCSENdKNrf9nC1lUULwmHpI1D3K74_4CJzpG_OjA4Q,830
2
- tracdap/rt/_version.py,sha256=fHyDo-KVrSf3GqUpcx_hKLLApjsp73BdrsQFz-EuwjY,820
2
+ tracdap/rt/_version.py,sha256=_roHKrPP9_ydWZxKJle4XXi0Wb6Ky3E0pFlWcTeY8QM,820
3
3
  tracdap/rt/exceptions.py,sha256=PsB4fExDI-bliqJZD-ESrr9MeLPDW7R5VN_JcWg7TqU,8175
4
- tracdap/rt/_exec/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- tracdap/rt/_exec/actors.py,sha256=xbPHp4kC3egHAHELWcbBAhTK2nnBx9EHtjjxprxhPRs,35209
6
- tracdap/rt/_exec/context.py,sha256=6eAf41PUU5Bo4TCihbo-H6hlePMiPlovwXBFGLKZ9yU,44304
7
- tracdap/rt/_exec/dev_mode.py,sha256=9LAUNE_hKaAKlHyoG7u8oOHqUWjocXOpijsyiaa2Nt0,42620
8
- tracdap/rt/_exec/engine.py,sha256=GRLlNS7AmQYdLqy01S_7OPOXorT-FpoZHBqZubO8NdI,48104
9
- tracdap/rt/_exec/functions.py,sha256=dSyTMBiGfGceywgryZudK5ebg4APug40n9fWSdJgf48,31806
10
- tracdap/rt/_exec/graph.py,sha256=WKlF4ZK9k7EN6Zi-EmMOOWeILLdCHnhQ-pJPueMJ_Fw,11921
11
- tracdap/rt/_exec/graph_builder.py,sha256=pHP48iDLhl3bflHlpfhJuZnOcUaxVG_OXLIfMF9EOos,47705
12
- tracdap/rt/_exec/runtime.py,sha256=9sAeFAXpLgvRQrKL9yLCiOJPl61fiZrDCjpjfqN4Y1o,16949
13
- tracdap/rt/_exec/server.py,sha256=wU62x7yIdRFS9MZy3pZsB4fjUb2Adt0gegQaQu242Bk,12644
14
4
  tracdap/rt/_impl/__init__.py,sha256=nFn00zysNlcEFHQJWs4l6vLm9RS5zsJ_IF9-eRwEXlo,796
15
- tracdap/rt/_impl/config_parser.py,sha256=ZqbGF3qJ2seWvLNNzYkvxQaqI_LMwF6YrY4HQQaBBu0,23103
16
- tracdap/rt/_impl/data.py,sha256=0HC-B2gvSwQqpG8mFPXJW_xciefScHlFmzy-c325ZWA,45611
17
- tracdap/rt/_impl/guard_rails.py,sha256=eixt5hqFuAMmPlzDQyWBXSKDYt12d954qfk-lwkdQmI,11611
18
- tracdap/rt/_impl/logging.py,sha256=AdE_KtZ1HiiEuLwg6C_xcAgq0XULbaxHv3MWuv3GT_A,6505
19
- tracdap/rt/_impl/models.py,sha256=uKrNVFQTgt7wOuR1SN1CsUOUBRu_E0t_V85vu8UiuPI,11073
20
- tracdap/rt/_impl/repos.py,sha256=1bCAVuMAQiJhlMOum1dx_Ih0nF_y126GMRb-LdSBukA,2284
21
- tracdap/rt/_impl/schemas.py,sha256=fdGVAfG2wxOStUX-wh4wgKYAUz40-vZXfNf7FdSI1S0,7605
22
- tracdap/rt/_impl/shim.py,sha256=qkgyhOIhMwplAgva7SXI2FaIiM4HOShzNERn9brCDCk,23373
23
- tracdap/rt/_impl/static_api.py,sha256=Luk2Rsn20cjxA4vL4qc5ODMxUnS2K5ZVIR6uaRpbWVI,10928
24
- tracdap/rt/_impl/storage.py,sha256=IyzlsCZwUs4ArpVrQE0krc2f6Vw0sBNRbbOZ_-lB2Sk,35968
25
- tracdap/rt/_impl/type_system.py,sha256=tGp0-ordYKeKrSRe0_CzqSHtJnTdK73TtlrxcJsXwtI,12897
26
- tracdap/rt/_impl/util.py,sha256=Ro23tt4cjvgvPtiya932poPe5xW9q-vbb_t5u9fGV3Y,7620
27
- tracdap/rt/_impl/validation.py,sha256=5DUp77owSefYZiLGt8YdxCJr2VGU0fSf96eKjOcldHo,23674
5
+ tracdap/rt/_impl/runtime.py,sha256=FX5dqV-KfyvLfQvksv0RTle8N6kd_6-oaIJqSu32S6w,16955
6
+ tracdap/rt/_impl/static_api.py,sha256=EN-ANv5SEoJnzS7o-x97or36plSfFRZYWN6cfZghEVs,11298
7
+ tracdap/rt/_impl/core/__init__.py,sha256=7VEb_giQUbvBBO8OSTjTtgFgu7WSA43qslcZvhweO10,795
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
10
+ tracdap/rt/_impl/core/guard_rails.py,sha256=eixt5hqFuAMmPlzDQyWBXSKDYt12d954qfk-lwkdQmI,11611
11
+ tracdap/rt/_impl/core/logging.py,sha256=AdE_KtZ1HiiEuLwg6C_xcAgq0XULbaxHv3MWuv3GT_A,6505
12
+ tracdap/rt/_impl/core/models.py,sha256=u2ZIql8Xm1kcG_Bu4lGaAsaLhxYEKxrZAkzYP3lBl88,11103
13
+ tracdap/rt/_impl/core/repos.py,sha256=BoW4C7Urejr8YPiW8DFe9e5GynLhvhT2iYeUsDDUuTs,2289
14
+ tracdap/rt/_impl/core/schemas.py,sha256=w9Vk1yNg1-LaAqQkrL1mxY5TCwtKHcJJzpoz23AclwE,7625
15
+ tracdap/rt/_impl/core/shim.py,sha256=Ek9dlbCSyTyt_B-gCJLR21SRRTZig7XluCCRHFv9pbE,23388
16
+ tracdap/rt/_impl/core/storage.py,sha256=AFTdSXeKti67tdTspBQ4V7RlqAGu_S7DZb1rJDlZrdM,36114
17
+ tracdap/rt/_impl/core/struct.py,sha256=4hnwG099BqD3wACXOEUeMBkLhAgNUWkG8lJwIXKSF9c,19144
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
20
+ tracdap/rt/_impl/core/validation.py,sha256=XmRaaiBIYu5iqGPnBzU8SPSCYrCwGKfgEJITj5VKOpk,25029
21
+ tracdap/rt/_impl/exec/__init__.py,sha256=7VEb_giQUbvBBO8OSTjTtgFgu7WSA43qslcZvhweO10,795
22
+ tracdap/rt/_impl/exec/actors.py,sha256=ebPBsIsgok02YM-Ql277Tbz8s-_xDhsteMa3sLV0xFw,35135
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
28
29
  tracdap/rt/_impl/ext/__init__.py,sha256=7VEb_giQUbvBBO8OSTjTtgFgu7WSA43qslcZvhweO10,795
29
30
  tracdap/rt/_impl/ext/sql.py,sha256=wDlSixuDWErDlDSXo55Ti5gpHXJ5oe75Lsb4ttlrUL0,2938
30
31
  tracdap/rt/_impl/ext/storage.py,sha256=HvMHAT5pE6XhUaUfyeZ7ej8JNz2jYsu0UQAEh0Iqnsw,1763
31
32
  tracdap/rt/_impl/grpc/__init__.py,sha256=7VEb_giQUbvBBO8OSTjTtgFgu7WSA43qslcZvhweO10,795
32
33
  tracdap/rt/_impl/grpc/codec.py,sha256=2Uo-j-tbAyD47eCCSpkq6cPN2P80xu-q5v5l_lwMxIU,3970
33
- tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.py,sha256=eH1JFEG4KwIhFAxMJfzw8JmpnTSNiY4seT_Mls2J2sM,5127
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
34
36
  tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.pyi,sha256=78VhnLgm_m6HSgQT0bg7j86O9g8GNMADkm3SotQ39lg,3227
35
- tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2_grpc.py,sha256=6DA9EkXMa8KBOG2IUY4TnCmX1wyRJuV40tA9fLgQKyA,8461
37
+ tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2_grpc.py,sha256=dQod-kQYoAJwpIPHgGRiZBx4q_419JppjqELv7cUJrE,8461
36
38
  tracdap/rt/_impl/grpc/tracdap/metadata/common_pb2.py,sha256=oql1naNGBKxpPIQZViewQSzUmMpt9U8gB-qSJpxkBwo,1945
37
39
  tracdap/rt/_impl/grpc/tracdap/metadata/common_pb2.pyi,sha256=R7fTC8HV0j8zB2E2KVtLWXSAeu5MVLrgeL-PnnOsUxg,1275
38
40
  tracdap/rt/_impl/grpc/tracdap/metadata/custom_pb2.py,sha256=DfHhxxvKU_htkLjUdvsVfxl8Gj8z5GenAuhCSuMT6Ps,1421
39
41
  tracdap/rt/_impl/grpc/tracdap/metadata/custom_pb2.pyi,sha256=_GubsAG9rpuV_QhhXKTDOPeWIpkAkg5jlHkSZxaILak,702
40
- tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.py,sha256=lpEdZORVyg_y9h-Tg0wMwmASmrJRCt1LtYMb1BbZJIk,5211
41
- tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.pyi,sha256=6F7O59tKIXWMFmmCm8zMJQKPQ3hM-fJ8px25Z_ae_Nc,5856
42
+ tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.py,sha256=dLU42LwRw6m8Fcp3Q-f4Hb2a6-7ryUN6SB01zqy_iNA,7060
43
+ tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.pyi,sha256=ZbHX2-NFqeYzJqpz62MPwL7Q6Ayu_4d5AimRI68Lo8A,8167
42
44
  tracdap/rt/_impl/grpc/tracdap/metadata/file_pb2.py,sha256=lKLP3cIzZX3mSdRMmwPBNdYjwunAs-BvzpqK29WJVak,1933
43
45
  tracdap/rt/_impl/grpc/tracdap/metadata/file_pb2.pyi,sha256=3JX6Vcc6cHlLXcihq0R_BDdvLQ2Ubob0XHzZnNCD7as,1385
44
46
  tracdap/rt/_impl/grpc/tracdap/metadata/flow_pb2.py,sha256=GyY4iaqp9wtZ29byMllPmk4o2nosUgdazdqf9KKUg-g,5799
@@ -67,7 +69,7 @@ tracdap/rt/_plugins/__init__.py,sha256=nFn00zysNlcEFHQJWs4l6vLm9RS5zsJ_IF9-eRwEX
67
69
  tracdap/rt/_plugins/_helpers.py,sha256=--AkQUDvC0P_of_FRF5_xPd6er72yWI1G4GNYHUTX8w,6027
68
70
  tracdap/rt/_plugins/config_local.py,sha256=SemksOXRPsUMNoTinjWe00F-Q4o-5X2ql3eswjjVUgM,1944
69
71
  tracdap/rt/_plugins/format_arrow.py,sha256=TQb6WR2MrjXem1gJg4EZQy3NGP-hEe1GneiSkvSAqeM,2397
70
- tracdap/rt/_plugins/format_csv.py,sha256=4EvyeQZwKMdla5Fn9sO7llcbapwrv4CItWoETCm8ykU,17010
72
+ tracdap/rt/_plugins/format_csv.py,sha256=NJ-8XeZH5ZplNUv7iLZBgVXzbXJ9jutU0cqXSdyM-Mo,17015
71
73
  tracdap/rt/_plugins/format_parquet.py,sha256=VwmrcEvaGczzdaWFgmpT9kYDKDk5UwQ6BQF31vm7D-g,2346
72
74
  tracdap/rt/_plugins/repo_git.py,sha256=5snP5IkzEQP_XdhAM5U3IkV8wv-yZGLHzN-d6BL1h2k,10464
73
75
  tracdap/rt/_plugins/repo_local.py,sha256=PZGDeRA2SLJTO-Z-YV9CHeXPUB0zt_fzIElCsw8zR-c,2913
@@ -76,34 +78,34 @@ tracdap/rt/_plugins/storage_aws.py,sha256=yxDYw0jL-hXoUgqBlPhL1I_8i8LehOMjZKtG_n
76
78
  tracdap/rt/_plugins/storage_azure.py,sha256=G8gwrK_irwqodQmfzzOGiWigp9nQK1RvweDAbWFxwBs,6000
77
79
  tracdap/rt/_plugins/storage_gcp.py,sha256=D0ReW2ZZ6IDqRdF-lowL43ceaupmf4tJGo7jvWHk8DQ,6651
78
80
  tracdap/rt/_plugins/storage_local.py,sha256=KY1CsT0GzjYWo5YYetTnQDWu18RhVrmEGBrEUSQHPKU,15742
79
- tracdap/rt/_plugins/storage_sql.py,sha256=8YmASiu87XAXF7pQr4eBnt8X38DkZabKxI-YnzKpGg8,15897
81
+ tracdap/rt/_plugins/storage_sql.py,sha256=QoSDLpxzeAQP-jb3IW9E6cLVXGq9wnVEPAk0JY6Jz1w,16080
80
82
  tracdap/rt/_plugins/storage_sql_dialects.py,sha256=4HWx5Gm50TRf5BTmc3hMREJIFsFgqo4g7wkVEVZzPz0,3550
81
83
  tracdap/rt/api/__init__.py,sha256=QqbrCINnOe0fP8E1496pCjUHKS2ysTRzis3n6CWCLeI,2105
82
- tracdap/rt/api/experimental.py,sha256=f0ELh4Xb2fxawF2yH4xms9rh12cFLjg3I8tEs7IWOpU,7942
84
+ tracdap/rt/api/experimental.py,sha256=ycD7xpMyXBI6W2UCirCbYtQ0rVVCNByAsA0p3euXmo8,9100
83
85
  tracdap/rt/api/file_types.py,sha256=9d8zBI74ALADYKHevGkSnqJlng2Zd4Y7dto4iregnnE,1349
84
- tracdap/rt/api/hook.py,sha256=oaVBR3K-A-QHRtBQSHxOVmM0lS2YbDiTHBavUOel0Y8,5054
86
+ tracdap/rt/api/hook.py,sha256=0TA_pu-22IoVNacf38dq3Aaz4sHoau1IdhabfxgKtOE,5243
85
87
  tracdap/rt/api/model_api.py,sha256=ONDU0ocNnejGi2r9nCKTlblqw847Yz4vtGo4M8inc9Q,22435
86
88
  tracdap/rt/api/static_api.py,sha256=XfmWy1dFP3xS7Z4kTtSl8dtAscMF25vfQbHHtpFpvpw,29938
87
- tracdap/rt/config/__init__.py,sha256=eNv2xERY9ZYTOwbykvireuCE7zRbgZrchAhceanVnpM,885
88
- tracdap/rt/config/common.py,sha256=deB7MBBB0UGkBXiAv-rARBjma2C-61yP8f4xG7aTPZw,1841
89
+ tracdap/rt/config/__init__.py,sha256=evT6_wwpLS6JOMWUneXenjFJNlZ8DmVyYJOIjAJlvbw,796
90
+ tracdap/rt/config/common.py,sha256=uKdwvfAKUzi8Wag4NpIYIZyL3D-Ed-KN1sqYuOpOROw,1187
89
91
  tracdap/rt/config/job.py,sha256=B-aVIq0vJUY41-vPuIOLIq4A2hdfL9EJN0X9--nGfcI,656
90
- tracdap/rt/config/platform.py,sha256=EQMInXQzHSwpd2paq26umroLi9W_dI9U_4Rzlawo9vg,3313
92
+ tracdap/rt/config/platform.py,sha256=aU7sVInAcf7NxPk6KufaHqDbM_NZRQ9qOb3w4rDT4qI,3005
91
93
  tracdap/rt/config/result.py,sha256=cKFz9ql_6Ru6qj7UP_VJZ2HJORf52dmi1dnK7eBxD-g,612
92
94
  tracdap/rt/config/runtime.py,sha256=ENzEEiAOEmHOgaTVXO9j6WOX6Vv0cVSdYcFxJb_CTnQ,707
93
95
  tracdap/rt/ext/__init__.py,sha256=7VEb_giQUbvBBO8OSTjTtgFgu7WSA43qslcZvhweO10,795
94
96
  tracdap/rt/ext/config.py,sha256=5LM1IuRjoVe43oLSgn02LAv1uvDl_lBfZrLjjiduCBU,1223
95
- tracdap/rt/ext/embed.py,sha256=giPa-huK8UaXliyEHdRoYwBxtvMOI6RZHnVIiIlrkV8,2292
96
- tracdap/rt/ext/plugins.py,sha256=2dIZ0MOY0DvqGqvQMDK6hbI_dN4T5ItA2Qey-6GRXbI,4600
97
+ tracdap/rt/ext/embed.py,sha256=QmxDnoRK8jYN664jqEQFQlYBPX81Q7wpHKdKsRqNiDo,2297
98
+ tracdap/rt/ext/plugins.py,sha256=AqscyHdgV1AAxaenDR9HJH8fnG-Db72LEk01dZ0OXVM,4610
97
99
  tracdap/rt/ext/repos.py,sha256=gqMSRX8GhhS5kdUwOEPlzrWPw4alTB-tpIJl23wJlss,3297
98
100
  tracdap/rt/ext/storage.py,sha256=O0gvjB2taZpBJ_a3rZfKzh8B1PxUYwPxug6jHNSpm8Q,4980
99
101
  tracdap/rt/launch/__init__.py,sha256=SPIwj5Bwa-IlhrfY1OJspYnL_mPLvz4F9XTAYKeu6IE,907
100
102
  tracdap/rt/launch/__main__.py,sha256=tfr5wL1gHm0oj4tcX6pv6bl-3Z1K7VMpmmNMQzfMFzU,841
101
103
  tracdap/rt/launch/cli.py,sha256=jGySYBawTDFJrhHgwYnplXb9VPcgfrBVB2UURqx5s-s,2638
102
- tracdap/rt/launch/launch.py,sha256=C2ywDuLHr_1xVrYAmO0j1wd22Hq2ge93iFGZkUhgmNc,7796
103
- tracdap/rt/metadata/__init__.py,sha256=jtSK4vSdvdHKMvptmcdIXp7F4-4xYwyPnA6WEQtBF8g,2093
104
+ tracdap/rt/launch/launch.py,sha256=BogIdacUhIvr_Ay-LU2eik8Y1DvGr-GrOiOi40XqZ1A,7806
105
+ tracdap/rt/metadata/__init__.py,sha256=rqOLFTMY4_Jw4H8aGfI-2CNA-v28eoKLCPr-GwS1FjA,2154
104
106
  tracdap/rt/metadata/common.py,sha256=J24poYPHSJfORPqqhyJGTAmepdhVaT0V0RblWiW9jCI,1404
105
107
  tracdap/rt/metadata/custom.py,sha256=GhCO8xjjsjZzlfSefqmCFX80rXJnxDCDq_STWi0ZL_0,352
106
- tracdap/rt/metadata/data.py,sha256=Hvf1hHks7XQi2zN8TrljGDWmqJ_i_evI-WVik0QLidA,3529
108
+ tracdap/rt/metadata/data.py,sha256=C8rkWVw9lO62Y-LsGebKORseTIaTN-hRNvZjFY2AgIw,4428
107
109
  tracdap/rt/metadata/file.py,sha256=yZenBUoeBATCq1CsIqpC-98HL6MiQdxKBJLR9ukRF7w,544
108
110
  tracdap/rt/metadata/flow.py,sha256=IgZTh62xndAAFG1Y44JORrVKOV7Bd4dEqtWjf1CGeHU,3491
109
111
  tracdap/rt/metadata/job.py,sha256=r8IBe-IumI_An1jrg-h8mM2bZPEew8evpXp5GkfEfNo,6390
@@ -116,8 +118,8 @@ tracdap/rt/metadata/stoarge.py,sha256=-WYc3aJskSCF_ETFQDavG3fTck__WPGMOfzWEBv55p
116
118
  tracdap/rt/metadata/tag.py,sha256=cjKF5gdNECHDtA9sc09Dc2Q4WNZQA_7iJsUEHSKFXiQ,5097
117
119
  tracdap/rt/metadata/tag_update.py,sha256=I7iDJiHEcSQ2vhOlhIc0fzeOoqTg6N1LJZU1R6tG_8g,3779
118
120
  tracdap/rt/metadata/type.py,sha256=7XOGlLVvxd6DEmKRBYTANBsu9lmxDOsMKE0aNvzsB3M,9568
119
- tracdap_runtime-0.8.0b2.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
120
- tracdap_runtime-0.8.0b2.dist-info/METADATA,sha256=KgJolpnRoZ8XknvFyUja2dJ-Dh-pZrq3IunB84JD4PQ,5024
121
- tracdap_runtime-0.8.0b2.dist-info/WHEEL,sha256=A3WOREP4zgxI0fKrHUG8DC8013e3dK3n7a6HDbcEIwE,91
122
- tracdap_runtime-0.8.0b2.dist-info/top_level.txt,sha256=Uv0JfaE1Lp4JnCzqW8lqXNJAEcsAFpAUGOghJolVNdM,8
123
- tracdap_runtime-0.8.0b2.dist-info/RECORD,,
121
+ tracdap_runtime-0.8.0b4.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
122
+ tracdap_runtime-0.8.0b4.dist-info/METADATA,sha256=Kw3jbpvFPWC6zJRJ6Q9d6rJl2so3iPrz5qa1i6GgIZU,5126
123
+ tracdap_runtime-0.8.0b4.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
124
+ tracdap_runtime-0.8.0b4.dist-info/top_level.txt,sha256=Uv0JfaE1Lp4JnCzqW8lqXNJAEcsAFpAUGOghJolVNdM,8
125
+ tracdap_runtime-0.8.0b4.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.7.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
File without changes
File without changes
File without changes