tracdap-runtime 0.6.2__py3-none-any.whl → 0.6.4__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 (71) hide show
  1. tracdap/rt/_exec/actors.py +87 -10
  2. tracdap/rt/_exec/context.py +207 -100
  3. tracdap/rt/_exec/dev_mode.py +52 -20
  4. tracdap/rt/_exec/engine.py +79 -14
  5. tracdap/rt/_exec/functions.py +14 -17
  6. tracdap/rt/_exec/runtime.py +83 -40
  7. tracdap/rt/_exec/server.py +306 -29
  8. tracdap/rt/_impl/config_parser.py +219 -49
  9. tracdap/rt/_impl/data.py +70 -5
  10. tracdap/rt/_impl/grpc/codec.py +60 -5
  11. tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.py +19 -19
  12. tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.pyi +11 -9
  13. tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2_grpc.py +25 -25
  14. tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.py +18 -18
  15. tracdap/rt/_impl/grpc/tracdap/metadata/model_pb2.py +28 -16
  16. tracdap/rt/_impl/grpc/tracdap/metadata/model_pb2.pyi +37 -6
  17. tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.py +8 -3
  18. tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.pyi +13 -2
  19. tracdap/rt/_impl/guard_rails.py +21 -0
  20. tracdap/rt/_impl/models.py +25 -0
  21. tracdap/rt/_impl/static_api.py +43 -13
  22. tracdap/rt/_impl/type_system.py +17 -0
  23. tracdap/rt/_impl/validation.py +47 -4
  24. tracdap/rt/_plugins/config_local.py +49 -0
  25. tracdap/rt/_version.py +1 -1
  26. tracdap/rt/api/hook.py +6 -5
  27. tracdap/rt/api/model_api.py +50 -7
  28. tracdap/rt/api/static_api.py +81 -23
  29. tracdap/rt/config/__init__.py +4 -4
  30. tracdap/rt/config/common.py +25 -15
  31. tracdap/rt/config/job.py +2 -2
  32. tracdap/rt/config/platform.py +25 -35
  33. tracdap/rt/config/result.py +2 -2
  34. tracdap/rt/config/runtime.py +4 -2
  35. tracdap/rt/ext/config.py +34 -0
  36. tracdap/rt/ext/embed.py +1 -3
  37. tracdap/rt/ext/plugins.py +47 -6
  38. tracdap/rt/launch/cli.py +11 -4
  39. tracdap/rt/launch/launch.py +53 -12
  40. tracdap/rt/metadata/__init__.py +17 -17
  41. tracdap/rt/metadata/common.py +2 -2
  42. tracdap/rt/metadata/custom.py +3 -3
  43. tracdap/rt/metadata/data.py +12 -12
  44. tracdap/rt/metadata/file.py +6 -6
  45. tracdap/rt/metadata/flow.py +6 -6
  46. tracdap/rt/metadata/job.py +8 -8
  47. tracdap/rt/metadata/model.py +21 -11
  48. tracdap/rt/metadata/object.py +3 -0
  49. tracdap/rt/metadata/object_id.py +8 -8
  50. tracdap/rt/metadata/search.py +5 -5
  51. tracdap/rt/metadata/stoarge.py +6 -6
  52. tracdap/rt/metadata/tag.py +1 -1
  53. tracdap/rt/metadata/tag_update.py +1 -1
  54. tracdap/rt/metadata/type.py +4 -4
  55. {tracdap_runtime-0.6.2.dist-info → tracdap_runtime-0.6.4.dist-info}/METADATA +4 -4
  56. tracdap_runtime-0.6.4.dist-info/RECORD +112 -0
  57. {tracdap_runtime-0.6.2.dist-info → tracdap_runtime-0.6.4.dist-info}/WHEEL +1 -1
  58. tracdap/rt/_impl/grpc/tracdap/config/common_pb2.py +0 -55
  59. tracdap/rt/_impl/grpc/tracdap/config/common_pb2.pyi +0 -103
  60. tracdap/rt/_impl/grpc/tracdap/config/job_pb2.py +0 -42
  61. tracdap/rt/_impl/grpc/tracdap/config/job_pb2.pyi +0 -44
  62. tracdap/rt/_impl/grpc/tracdap/config/platform_pb2.py +0 -71
  63. tracdap/rt/_impl/grpc/tracdap/config/platform_pb2.pyi +0 -197
  64. tracdap/rt/_impl/grpc/tracdap/config/result_pb2.py +0 -37
  65. tracdap/rt/_impl/grpc/tracdap/config/result_pb2.pyi +0 -35
  66. tracdap/rt/_impl/grpc/tracdap/config/runtime_pb2.py +0 -42
  67. tracdap/rt/_impl/grpc/tracdap/config/runtime_pb2.pyi +0 -46
  68. tracdap/rt/ext/_guard.py +0 -37
  69. tracdap_runtime-0.6.2.dist-info/RECORD +0 -121
  70. {tracdap_runtime-0.6.2.dist-info → tracdap_runtime-0.6.4.dist-info}/LICENSE +0 -0
  71. {tracdap_runtime-0.6.2.dist-info → tracdap_runtime-0.6.4.dist-info}/top_level.txt +0 -0
tracdap/rt/_impl/data.py CHANGED
@@ -74,17 +74,21 @@ class DataView:
74
74
 
75
75
  parts: tp.Dict[DataPartKey, tp.List[DataItem]]
76
76
 
77
+ @staticmethod
78
+ def create_empty() -> DataView:
79
+ return DataView(_meta.SchemaDefinition(), pa.schema([]), dict())
80
+
77
81
  @staticmethod
78
82
  def for_trac_schema(trac_schema: _meta.SchemaDefinition):
79
83
  arrow_schema = DataMapping.trac_to_arrow_schema(trac_schema)
80
84
  return DataView(trac_schema, arrow_schema, dict())
81
85
 
82
- def is_empty(self) -> bool:
83
- return self.parts is None or len(self.parts) == 0
86
+ def with_trac_schema(self, trac_schema: _meta.SchemaDefinition):
87
+ arrow_schema = DataMapping.trac_to_arrow_schema(trac_schema)
88
+ return DataView(trac_schema, arrow_schema, self.parts)
84
89
 
85
- @staticmethod
86
- def create_empty() -> DataView:
87
- return DataView(_meta.SchemaDefinition(), pa.schema([]), dict())
90
+ def is_empty(self) -> bool:
91
+ return self.parts is None or not any(self.parts.values())
88
92
 
89
93
 
90
94
  class _DataInternal:
@@ -170,9 +174,29 @@ class DataMapping:
170
174
  pa.float16(): pd.Float32Dtype(),
171
175
  pa.float32(): pd.Float32Dtype(),
172
176
  pa.float64(): pd.Float64Dtype(),
177
+ pa.string(): pd.StringDtype(),
173
178
  pa.utf8(): pd.StringDtype()
174
179
  }
175
180
 
181
+ __ARROW_TO_TRAC_BASIC_TYPE_MAPPING = {
182
+ pa.bool_(): _meta.BasicType.BOOLEAN,
183
+ pa.int8(): _meta.BasicType.INTEGER,
184
+ pa.int16(): _meta.BasicType.INTEGER,
185
+ pa.int32(): _meta.BasicType.INTEGER,
186
+ pa.int64():_meta.BasicType.INTEGER,
187
+ pa.uint8(): _meta.BasicType.INTEGER,
188
+ pa.uint16(): _meta.BasicType.INTEGER,
189
+ pa.uint32(): _meta.BasicType.INTEGER,
190
+ pa.uint64(): _meta.BasicType.INTEGER,
191
+ pa.float16(): _meta.BasicType.FLOAT,
192
+ pa.float32(): _meta.BasicType.FLOAT,
193
+ pa.float64(): _meta.BasicType.FLOAT,
194
+ pa.string(): _meta.BasicType.STRING,
195
+ pa.utf8(): _meta.BasicType.STRING,
196
+ pa.date32(): _meta.BasicType.DATE,
197
+ pa.date64(): _meta.BasicType.DATE
198
+ }
199
+
176
200
  @staticmethod
177
201
  def arrow_to_python_type(arrow_type: pa.DataType) -> type:
178
202
 
@@ -265,6 +289,47 @@ class DataMapping:
265
289
  cls.__TRAC_DECIMAL_PRECISION,
266
290
  cls.__TRAC_DECIMAL_SCALE)
267
291
 
292
+ @classmethod
293
+ def arrow_to_trac_schema(cls, arrow_schema: pa.Schema) -> _meta.SchemaDefinition:
294
+
295
+ trac_fields = list(
296
+ cls.arrow_to_trac_field(i, arrow_schema.field(i))
297
+ for (i, f) in enumerate(arrow_schema.names))
298
+
299
+ return _meta.SchemaDefinition(
300
+ schemaType=_meta.SchemaType.TABLE,
301
+ partType=_meta.PartType.PART_ROOT,
302
+ table=_meta.TableSchema(trac_fields))
303
+
304
+ @classmethod
305
+ def arrow_to_trac_field(cls, field_index: int, field: pa.Field) -> _meta.FieldSchema:
306
+
307
+ field_type = cls.arrow_to_trac_type(field.type)
308
+ label = field.metadata["label"] if field.metadata and "label" in field.metadata else field.name
309
+
310
+ return _meta.FieldSchema(
311
+ field.name, field_index, field_type,
312
+ label=label,
313
+ businessKey=False,
314
+ notNull=not field.nullable,
315
+ categorical=False)
316
+
317
+ @classmethod
318
+ def arrow_to_trac_type(cls, arrow_type: pa.DataType) -> _meta.BasicType:
319
+
320
+ mapped_basic_type = cls.__ARROW_TO_TRAC_BASIC_TYPE_MAPPING.get(arrow_type) # noqa
321
+
322
+ if mapped_basic_type is not None:
323
+ return mapped_basic_type
324
+
325
+ if pa.types.is_decimal(arrow_type):
326
+ return _meta.BasicType.DECIMAL
327
+
328
+ if pa.types.is_timestamp(arrow_type):
329
+ return _meta.BasicType.DATETIME
330
+
331
+ raise _ex.ETracInternal(f"No data type mapping available for Arrow type [{arrow_type}]")
332
+
268
333
  @classmethod
269
334
  def pandas_date_type(cls):
270
335
  return cls.__PANDAS_DATE_TYPE
@@ -15,6 +15,58 @@
15
15
  import enum
16
16
  import typing as tp
17
17
 
18
+ import tracdap.rt.exceptions as ex
19
+ import tracdap.rt.metadata as metadata
20
+
21
+ import tracdap.rt._impl.grpc.tracdap.metadata.type_pb2 as type_pb2
22
+ import tracdap.rt._impl.grpc.tracdap.metadata.object_id_pb2 as object_id_pb2
23
+ import tracdap.rt._impl.grpc.tracdap.metadata.object_pb2 as object_pb2
24
+ from tracdap.rt._impl.grpc.tracdap.metadata import model_pb2
25
+ import tracdap.rt._impl.grpc.tracdap.metadata.data_pb2 as data_pb2
26
+ import tracdap.rt._impl.grpc.tracdap.metadata.stoarge_pb2 as storage_pb2
27
+
28
+ from google.protobuf import message as _message
29
+
30
+
31
+ __METADATA_MAPPING = {
32
+ metadata.TypeDescriptor: type_pb2.TypeDescriptor,
33
+ metadata.Value: type_pb2.Value,
34
+ metadata.DecimalValue: type_pb2.DecimalValue,
35
+ metadata.DateValue: type_pb2.DateValue,
36
+ metadata.DatetimeValue: type_pb2.DatetimeValue,
37
+ metadata.ArrayValue: type_pb2.ArrayValue,
38
+ metadata.MapValue: type_pb2.MapValue,
39
+ metadata.TagHeader: object_id_pb2.TagHeader,
40
+ metadata.TagSelector: object_id_pb2.TagSelector,
41
+ metadata.ObjectDefinition: object_pb2.ObjectDefinition,
42
+ metadata.ModelDefinition: model_pb2.ModelDefinition,
43
+ metadata.ModelParameter: model_pb2.ModelParameter,
44
+ metadata.ModelInputSchema: model_pb2.ModelInputSchema,
45
+ metadata.ModelOutputSchema: model_pb2.ModelOutputSchema,
46
+ metadata.SchemaDefinition: data_pb2.SchemaDefinition,
47
+ metadata.TableSchema: data_pb2.TableSchema,
48
+ metadata.FieldSchema: data_pb2.FieldSchema,
49
+ metadata.PartKey: data_pb2.PartKey,
50
+ metadata.DataDefinition: data_pb2.DataDefinition,
51
+ metadata.DataDefinition.Part: data_pb2.DataDefinition.Part,
52
+ metadata.DataDefinition.Snap: data_pb2.DataDefinition.Snap,
53
+ metadata.DataDefinition.Delta: data_pb2.DataDefinition.Delta,
54
+ metadata.StorageDefinition: storage_pb2.StorageDefinition,
55
+ metadata.StorageIncarnation: storage_pb2.StorageIncarnation,
56
+ metadata.StorageCopy: storage_pb2.StorageCopy,
57
+ metadata.StorageItem: storage_pb2.StorageItem
58
+ }
59
+
60
+
61
+ _T_MSG = tp.TypeVar('_T_MSG', bound=_message.Message)
62
+
63
+
64
+ def encode_message(msg_class: _T_MSG.__class__, obj: tp.Any) -> _T_MSG:
65
+
66
+ attrs = dict((k, encode(v)) for k, v in obj.__dict__.items())
67
+
68
+ return msg_class(**attrs)
69
+
18
70
 
19
71
  def encode(obj: tp.Any) -> tp.Any:
20
72
 
@@ -35,10 +87,13 @@ def encode(obj: tp.Any) -> tp.Any:
35
87
  return list(map(encode, obj))
36
88
 
37
89
  if isinstance(obj, dict):
38
- return dict(map(lambda kv: (kv[0], encode(kv[1])), obj.items()))
90
+ return dict((k, encode(v)) for k, v in obj.items())
91
+
92
+ msg_class = __METADATA_MAPPING.get(type(obj))
93
+
94
+ if msg_class is None:
95
+ raise ex.ETracInternal(f"No gRPC metadata mapping is available for type {type(obj).__name__}")
39
96
 
40
- # Filter classes for TRAC domain objects (sanity check, not a watertight validation)
41
- if hasattr(obj, "__module__") and "tracdap" in obj.__module__:
42
- return dict(map(lambda kv: (kv[0], encode(kv[1])), obj.__dict__.items()))
97
+ attrs = dict((k, encode(v)) for k, v in obj.__dict__.items() if v is not None)
43
98
 
44
- raise RuntimeError(f"Cannot encode object of type [{type(obj).__name__}] for gRPC")
99
+ return msg_class(**attrs)
@@ -18,7 +18,7 @@ from tracdap.rt._impl.grpc.tracdap.metadata import object_pb2 as tracdap_dot_rt_
18
18
  from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
19
19
 
20
20
 
21
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n8tracdap/rt/_impl/grpc/tracdap/api/internal/runtime.proto\x12\x14tracdap.api.internal\x1a\x36tracdap/rt/_impl/grpc/tracdap/metadata/object_id.proto\x1a\x30tracdap/rt/_impl/grpc/tracdap/metadata/job.proto\x1a\x33tracdap/rt/_impl/grpc/tracdap/metadata/object.proto\x1a\x1cgoogle/api/annotations.proto\"/\n\x0fListJobsRequest\x12\x12\n\x05limit\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\x08\n\x06_limit\"A\n\x10ListJobsResponse\x12-\n\x04jobs\x18\x01 \x03(\x0b\x32\x1f.tracdap.api.internal.JobStatus\"f\n\x15\x42\x61tchJobStatusRequest\x12\x34\n\x0bjobSelector\x18\x01 \x01(\x0b\x32\x1d.tracdap.metadata.TagSelectorH\x00\x12\x10\n\x06jobKey\x18\x02 \x01(\tH\x00\x42\x05\n\x03job\"\x83\x01\n\tJobStatus\x12*\n\x05jobId\x18\x01 \x01(\x0b\x32\x1b.tracdap.metadata.TagHeader\x12\x33\n\nstatusCode\x18\x02 \x01(\x0e\x32\x1f.tracdap.metadata.JobStatusCode\x12\x15\n\rstatusMessage\x18\x03 \x01(\t\"\xa0\x02\n\x0e\x42\x61tchJobResult\x12*\n\x05jobId\x18\x01 \x01(\x0b\x32\x1b.tracdap.metadata.TagHeader\x12\x33\n\nstatusCode\x18\x02 \x01(\x0e\x32\x1f.tracdap.metadata.JobStatusCode\x12\x15\n\rstatusMessage\x18\x03 \x01(\t\x12\x42\n\x07results\x18\x04 \x03(\x0b\x32\x31.tracdap.api.internal.BatchJobResult.ResultsEntry\x1aR\n\x0cResultsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x31\n\x05value\x18\x02 \x01(\x0b\x32\".tracdap.metadata.ObjectDefinition:\x02\x38\x01\x32\xff\x02\n\x0eTracRuntimeApi\x12m\n\x08listJobs\x12%.tracdap.api.internal.ListJobsRequest\x1a&.tracdap.api.internal.ListJobsResponse\"\x12\x82\xd3\xe4\x93\x02\x0c\x12\n/list-jobs\x12z\n\x0cgetJobStatus\x12+.tracdap.api.internal.BatchJobStatusRequest\x1a\x1f.tracdap.api.internal.JobStatus\"\x1c\x82\xd3\xe4\x93\x02\x16\x12\x14/job-status/{jobKey}\x12\x81\x01\n\rgetJobDetails\x12+.tracdap.api.internal.BatchJobStatusRequest\x1a$.tracdap.api.internal.BatchJobResult\"\x1d\x82\xd3\xe4\x93\x02\x17\x12\x15/job-details/{jobKey}B\"\n\x1eorg.finos.tracdap.api.internalP\x01\x62\x06proto3')
21
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n8tracdap/rt/_impl/grpc/tracdap/api/internal/runtime.proto\x12\x14tracdap.api.internal\x1a\x36tracdap/rt/_impl/grpc/tracdap/metadata/object_id.proto\x1a\x30tracdap/rt/_impl/grpc/tracdap/metadata/job.proto\x1a\x33tracdap/rt/_impl/grpc/tracdap/metadata/object.proto\x1a\x1cgoogle/api/annotations.proto\"6\n\x16RuntimeListJobsRequest\x12\x12\n\x05limit\x18\x01 \x01(\rH\x00\x88\x01\x01\x42\x08\n\x06_limit\"O\n\x17RuntimeListJobsResponse\x12\x34\n\x04jobs\x18\x01 \x03(\x0b\x32&.tracdap.api.internal.RuntimeJobStatus\"f\n\x15RuntimeJobInfoRequest\x12\x34\n\x0bjobSelector\x18\x01 \x01(\x0b\x32\x1d.tracdap.metadata.TagSelectorH\x00\x12\x10\n\x06jobKey\x18\x02 \x01(\tH\x00\x42\x05\n\x03job\"\x9f\x01\n\x10RuntimeJobStatus\x12*\n\x05jobId\x18\x01 \x01(\x0b\x32\x1b.tracdap.metadata.TagHeader\x12\x33\n\nstatusCode\x18\x02 \x01(\x0e\x32\x1f.tracdap.metadata.JobStatusCode\x12\x15\n\rstatusMessage\x18\x03 \x01(\t\x12\x13\n\x0b\x65rrorDetail\x18\x04 \x01(\t\"\xa4\x02\n\x10RuntimeJobResult\x12*\n\x05jobId\x18\x01 \x01(\x0b\x32\x1b.tracdap.metadata.TagHeader\x12\x33\n\nstatusCode\x18\x02 \x01(\x0e\x32\x1f.tracdap.metadata.JobStatusCode\x12\x15\n\rstatusMessage\x18\x03 \x01(\t\x12\x44\n\x07results\x18\x04 \x03(\x0b\x32\x33.tracdap.api.internal.RuntimeJobResult.ResultsEntry\x1aR\n\x0cResultsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x31\n\x05value\x18\x02 \x01(\x0b\x32\".tracdap.metadata.ObjectDefinition:\x02\x38\x01\x32\x95\x03\n\x0eTracRuntimeApi\x12{\n\x08listJobs\x12,.tracdap.api.internal.RuntimeListJobsRequest\x1a-.tracdap.api.internal.RuntimeListJobsResponse\"\x12\x82\xd3\xe4\x93\x02\x0c\x12\n/list-jobs\x12\x81\x01\n\x0cgetJobStatus\x12+.tracdap.api.internal.RuntimeJobInfoRequest\x1a&.tracdap.api.internal.RuntimeJobStatus\"\x1c\x82\xd3\xe4\x93\x02\x16\x12\x14/job-status/{jobKey}\x12\x81\x01\n\x0cgetJobResult\x12+.tracdap.api.internal.RuntimeJobInfoRequest\x1a&.tracdap.api.internal.RuntimeJobResult\"\x1c\x82\xd3\xe4\x93\x02\x16\x12\x14/job-result/{jobKey}B\"\n\x1eorg.finos.tracdap.api.internalP\x01\x62\x06proto3')
22
22
 
23
23
  _globals = globals()
24
24
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -26,26 +26,26 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tracdap.rt._impl.grpc.tracd
26
26
  if _descriptor._USE_C_DESCRIPTORS == False:
27
27
  _globals['DESCRIPTOR']._options = None
28
28
  _globals['DESCRIPTOR']._serialized_options = b'\n\036org.finos.tracdap.api.internalP\001'
29
- _globals['_BATCHJOBRESULT_RESULTSENTRY']._options = None
30
- _globals['_BATCHJOBRESULT_RESULTSENTRY']._serialized_options = b'8\001'
29
+ _globals['_RUNTIMEJOBRESULT_RESULTSENTRY']._options = None
30
+ _globals['_RUNTIMEJOBRESULT_RESULTSENTRY']._serialized_options = b'8\001'
31
31
  _globals['_TRACRUNTIMEAPI'].methods_by_name['listJobs']._options = None
32
32
  _globals['_TRACRUNTIMEAPI'].methods_by_name['listJobs']._serialized_options = b'\202\323\344\223\002\014\022\n/list-jobs'
33
33
  _globals['_TRACRUNTIMEAPI'].methods_by_name['getJobStatus']._options = None
34
34
  _globals['_TRACRUNTIMEAPI'].methods_by_name['getJobStatus']._serialized_options = b'\202\323\344\223\002\026\022\024/job-status/{jobKey}'
35
- _globals['_TRACRUNTIMEAPI'].methods_by_name['getJobDetails']._options = None
36
- _globals['_TRACRUNTIMEAPI'].methods_by_name['getJobDetails']._serialized_options = b'\202\323\344\223\002\027\022\025/job-details/{jobKey}'
37
- _globals['_LISTJOBSREQUEST']._serialized_start=271
38
- _globals['_LISTJOBSREQUEST']._serialized_end=318
39
- _globals['_LISTJOBSRESPONSE']._serialized_start=320
40
- _globals['_LISTJOBSRESPONSE']._serialized_end=385
41
- _globals['_BATCHJOBSTATUSREQUEST']._serialized_start=387
42
- _globals['_BATCHJOBSTATUSREQUEST']._serialized_end=489
43
- _globals['_JOBSTATUS']._serialized_start=492
44
- _globals['_JOBSTATUS']._serialized_end=623
45
- _globals['_BATCHJOBRESULT']._serialized_start=626
46
- _globals['_BATCHJOBRESULT']._serialized_end=914
47
- _globals['_BATCHJOBRESULT_RESULTSENTRY']._serialized_start=832
48
- _globals['_BATCHJOBRESULT_RESULTSENTRY']._serialized_end=914
49
- _globals['_TRACRUNTIMEAPI']._serialized_start=917
50
- _globals['_TRACRUNTIMEAPI']._serialized_end=1300
35
+ _globals['_TRACRUNTIMEAPI'].methods_by_name['getJobResult']._options = None
36
+ _globals['_TRACRUNTIMEAPI'].methods_by_name['getJobResult']._serialized_options = b'\202\323\344\223\002\026\022\024/job-result/{jobKey}'
37
+ _globals['_RUNTIMELISTJOBSREQUEST']._serialized_start=271
38
+ _globals['_RUNTIMELISTJOBSREQUEST']._serialized_end=325
39
+ _globals['_RUNTIMELISTJOBSRESPONSE']._serialized_start=327
40
+ _globals['_RUNTIMELISTJOBSRESPONSE']._serialized_end=406
41
+ _globals['_RUNTIMEJOBINFOREQUEST']._serialized_start=408
42
+ _globals['_RUNTIMEJOBINFOREQUEST']._serialized_end=510
43
+ _globals['_RUNTIMEJOBSTATUS']._serialized_start=513
44
+ _globals['_RUNTIMEJOBSTATUS']._serialized_end=672
45
+ _globals['_RUNTIMEJOBRESULT']._serialized_start=675
46
+ _globals['_RUNTIMEJOBRESULT']._serialized_end=967
47
+ _globals['_RUNTIMEJOBRESULT_RESULTSENTRY']._serialized_start=885
48
+ _globals['_RUNTIMEJOBRESULT_RESULTSENTRY']._serialized_end=967
49
+ _globals['_TRACRUNTIMEAPI']._serialized_start=970
50
+ _globals['_TRACRUNTIMEAPI']._serialized_end=1375
51
51
  # @@protoc_insertion_point(module_scope)
@@ -9,19 +9,19 @@ from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Map
9
9
 
10
10
  DESCRIPTOR: _descriptor.FileDescriptor
11
11
 
12
- class ListJobsRequest(_message.Message):
12
+ class RuntimeListJobsRequest(_message.Message):
13
13
  __slots__ = ("limit",)
14
14
  LIMIT_FIELD_NUMBER: _ClassVar[int]
15
15
  limit: int
16
16
  def __init__(self, limit: _Optional[int] = ...) -> None: ...
17
17
 
18
- class ListJobsResponse(_message.Message):
18
+ class RuntimeListJobsResponse(_message.Message):
19
19
  __slots__ = ("jobs",)
20
20
  JOBS_FIELD_NUMBER: _ClassVar[int]
21
- jobs: _containers.RepeatedCompositeFieldContainer[JobStatus]
22
- def __init__(self, jobs: _Optional[_Iterable[_Union[JobStatus, _Mapping]]] = ...) -> None: ...
21
+ jobs: _containers.RepeatedCompositeFieldContainer[RuntimeJobStatus]
22
+ def __init__(self, jobs: _Optional[_Iterable[_Union[RuntimeJobStatus, _Mapping]]] = ...) -> None: ...
23
23
 
24
- class BatchJobStatusRequest(_message.Message):
24
+ class RuntimeJobInfoRequest(_message.Message):
25
25
  __slots__ = ("jobSelector", "jobKey")
26
26
  JOBSELECTOR_FIELD_NUMBER: _ClassVar[int]
27
27
  JOBKEY_FIELD_NUMBER: _ClassVar[int]
@@ -29,17 +29,19 @@ class BatchJobStatusRequest(_message.Message):
29
29
  jobKey: str
30
30
  def __init__(self, jobSelector: _Optional[_Union[_object_id_pb2.TagSelector, _Mapping]] = ..., jobKey: _Optional[str] = ...) -> None: ...
31
31
 
32
- class JobStatus(_message.Message):
33
- __slots__ = ("jobId", "statusCode", "statusMessage")
32
+ class RuntimeJobStatus(_message.Message):
33
+ __slots__ = ("jobId", "statusCode", "statusMessage", "errorDetail")
34
34
  JOBID_FIELD_NUMBER: _ClassVar[int]
35
35
  STATUSCODE_FIELD_NUMBER: _ClassVar[int]
36
36
  STATUSMESSAGE_FIELD_NUMBER: _ClassVar[int]
37
+ ERRORDETAIL_FIELD_NUMBER: _ClassVar[int]
37
38
  jobId: _object_id_pb2.TagHeader
38
39
  statusCode: _job_pb2.JobStatusCode
39
40
  statusMessage: str
40
- def __init__(self, jobId: _Optional[_Union[_object_id_pb2.TagHeader, _Mapping]] = ..., statusCode: _Optional[_Union[_job_pb2.JobStatusCode, str]] = ..., statusMessage: _Optional[str] = ...) -> None: ...
41
+ errorDetail: str
42
+ def __init__(self, jobId: _Optional[_Union[_object_id_pb2.TagHeader, _Mapping]] = ..., statusCode: _Optional[_Union[_job_pb2.JobStatusCode, str]] = ..., statusMessage: _Optional[str] = ..., errorDetail: _Optional[str] = ...) -> None: ...
41
43
 
42
- class BatchJobResult(_message.Message):
44
+ class RuntimeJobResult(_message.Message):
43
45
  __slots__ = ("jobId", "statusCode", "statusMessage", "results")
44
46
  class ResultsEntry(_message.Message):
45
47
  __slots__ = ("key", "value")
@@ -36,18 +36,18 @@ class TracRuntimeApiStub(object):
36
36
  """
37
37
  self.listJobs = channel.unary_unary(
38
38
  '/tracdap.api.internal.TracRuntimeApi/listJobs',
39
- request_serializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.ListJobsRequest.SerializeToString,
40
- response_deserializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.ListJobsResponse.FromString,
39
+ request_serializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeListJobsRequest.SerializeToString,
40
+ response_deserializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeListJobsResponse.FromString,
41
41
  _registered_method=True)
42
42
  self.getJobStatus = channel.unary_unary(
43
43
  '/tracdap.api.internal.TracRuntimeApi/getJobStatus',
44
- request_serializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.BatchJobStatusRequest.SerializeToString,
45
- response_deserializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.JobStatus.FromString,
44
+ request_serializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeJobInfoRequest.SerializeToString,
45
+ response_deserializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeJobStatus.FromString,
46
46
  _registered_method=True)
47
- self.getJobDetails = channel.unary_unary(
48
- '/tracdap.api.internal.TracRuntimeApi/getJobDetails',
49
- request_serializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.BatchJobStatusRequest.SerializeToString,
50
- response_deserializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.BatchJobResult.FromString,
47
+ self.getJobResult = channel.unary_unary(
48
+ '/tracdap.api.internal.TracRuntimeApi/getJobResult',
49
+ request_serializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeJobInfoRequest.SerializeToString,
50
+ response_deserializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeJobResult.FromString,
51
51
  _registered_method=True)
52
52
 
53
53
 
@@ -66,7 +66,7 @@ class TracRuntimeApiServicer(object):
66
66
  context.set_details('Method not implemented!')
67
67
  raise NotImplementedError('Method not implemented!')
68
68
 
69
- def getJobDetails(self, request, context):
69
+ def getJobResult(self, request, context):
70
70
  """Missing associated documentation comment in .proto file."""
71
71
  context.set_code(grpc.StatusCode.UNIMPLEMENTED)
72
72
  context.set_details('Method not implemented!')
@@ -77,18 +77,18 @@ def add_TracRuntimeApiServicer_to_server(servicer, server):
77
77
  rpc_method_handlers = {
78
78
  'listJobs': grpc.unary_unary_rpc_method_handler(
79
79
  servicer.listJobs,
80
- request_deserializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.ListJobsRequest.FromString,
81
- response_serializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.ListJobsResponse.SerializeToString,
80
+ request_deserializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeListJobsRequest.FromString,
81
+ response_serializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeListJobsResponse.SerializeToString,
82
82
  ),
83
83
  'getJobStatus': grpc.unary_unary_rpc_method_handler(
84
84
  servicer.getJobStatus,
85
- request_deserializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.BatchJobStatusRequest.FromString,
86
- response_serializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.JobStatus.SerializeToString,
85
+ request_deserializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeJobInfoRequest.FromString,
86
+ response_serializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeJobStatus.SerializeToString,
87
87
  ),
88
- 'getJobDetails': grpc.unary_unary_rpc_method_handler(
89
- servicer.getJobDetails,
90
- request_deserializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.BatchJobStatusRequest.FromString,
91
- response_serializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.BatchJobResult.SerializeToString,
88
+ 'getJobResult': grpc.unary_unary_rpc_method_handler(
89
+ servicer.getJobResult,
90
+ request_deserializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeJobInfoRequest.FromString,
91
+ response_serializer=tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeJobResult.SerializeToString,
92
92
  ),
93
93
  }
94
94
  generic_handler = grpc.method_handlers_generic_handler(
@@ -116,8 +116,8 @@ class TracRuntimeApi(object):
116
116
  request,
117
117
  target,
118
118
  '/tracdap.api.internal.TracRuntimeApi/listJobs',
119
- tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.ListJobsRequest.SerializeToString,
120
- tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.ListJobsResponse.FromString,
119
+ tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeListJobsRequest.SerializeToString,
120
+ tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeListJobsResponse.FromString,
121
121
  options,
122
122
  channel_credentials,
123
123
  insecure,
@@ -143,8 +143,8 @@ class TracRuntimeApi(object):
143
143
  request,
144
144
  target,
145
145
  '/tracdap.api.internal.TracRuntimeApi/getJobStatus',
146
- tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.BatchJobStatusRequest.SerializeToString,
147
- tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.JobStatus.FromString,
146
+ tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeJobInfoRequest.SerializeToString,
147
+ tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeJobStatus.FromString,
148
148
  options,
149
149
  channel_credentials,
150
150
  insecure,
@@ -156,7 +156,7 @@ class TracRuntimeApi(object):
156
156
  _registered_method=True)
157
157
 
158
158
  @staticmethod
159
- def getJobDetails(request,
159
+ def getJobResult(request,
160
160
  target,
161
161
  options=(),
162
162
  channel_credentials=None,
@@ -169,9 +169,9 @@ class TracRuntimeApi(object):
169
169
  return grpc.experimental.unary_unary(
170
170
  request,
171
171
  target,
172
- '/tracdap.api.internal.TracRuntimeApi/getJobDetails',
173
- tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.BatchJobStatusRequest.SerializeToString,
174
- tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.BatchJobResult.FromString,
172
+ '/tracdap.api.internal.TracRuntimeApi/getJobResult',
173
+ tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeJobInfoRequest.SerializeToString,
174
+ tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_api_dot_internal_dot_runtime__pb2.RuntimeJobResult.FromString,
175
175
  options,
176
176
  channel_credentials,
177
177
  insecure,
@@ -16,7 +16,7 @@ from tracdap.rt._impl.grpc.tracdap.metadata import type_pb2 as tracdap_dot_rt_do
16
16
  from tracdap.rt._impl.grpc.tracdap.metadata import object_id_pb2 as tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_metadata_dot_object__id__pb2
17
17
 
18
18
 
19
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n1tracdap/rt/_impl/grpc/tracdap/metadata/data.proto\x12\x10tracdap.metadata\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/type.proto\x1a\x36tracdap/rt/_impl/grpc/tracdap/metadata/object_id.proto\"\xe7\x01\n\x0b\x46ieldSchema\x12\x11\n\tfieldName\x18\x01 \x01(\t\x12\x12\n\nfieldOrder\x18\x02 \x01(\x11\x12.\n\tfieldType\x18\x03 \x01(\x0e\x32\x1b.tracdap.metadata.BasicType\x12\r\n\x05label\x18\x04 \x01(\t\x12\x13\n\x0b\x62usinessKey\x18\x05 \x01(\x08\x12\x13\n\x0b\x63\x61tegorical\x18\x06 \x01(\x08\x12\x14\n\x07notNull\x18\x08 \x01(\x08H\x00\x88\x01\x01\x12\x17\n\nformatCode\x18\x07 \x01(\tH\x01\x88\x01\x01\x42\n\n\x08_notNullB\r\n\x0b_formatCode\"<\n\x0bTableSchema\x12-\n\x06\x66ields\x18\x01 \x03(\x0b\x32\x1d.tracdap.metadata.FieldSchema\"\xba\x01\n\x10SchemaDefinition\x12\x30\n\nschemaType\x18\x01 \x01(\x0e\x32\x1c.tracdap.metadata.SchemaType\x12,\n\x08partType\x18\x02 \x01(\x0e\x32\x1a.tracdap.metadata.PartType\x12.\n\x05table\x18\x03 \x01(\x0b\x32\x1d.tracdap.metadata.TableSchemaH\x00\x42\x16\n\x14schemaTypeDefinition\"\x81\x02\n\x07PartKey\x12\x11\n\topaqueKey\x18\x01 \x01(\t\x12,\n\x08partType\x18\x02 \x01(\x0e\x32\x1a.tracdap.metadata.PartType\x12+\n\npartValues\x18\x03 \x03(\x0b\x32\x17.tracdap.metadata.Value\x12\x32\n\x0cpartRangeMin\x18\x04 \x01(\x0b\x32\x17.tracdap.metadata.ValueH\x00\x88\x01\x01\x12\x32\n\x0cpartRangeMax\x18\x05 \x01(\x0b\x32\x17.tracdap.metadata.ValueH\x01\x88\x01\x01\x42\x0f\n\r_partRangeMinB\x0f\n\r_partRangeMax\"\xba\x04\n\x0e\x44\x61taDefinition\x12\x31\n\x08schemaId\x18\x01 \x01(\x0b\x32\x1d.tracdap.metadata.TagSelectorH\x00\x12\x34\n\x06schema\x18\x02 \x01(\x0b\x32\".tracdap.metadata.SchemaDefinitionH\x00\x12:\n\x05parts\x18\x03 \x03(\x0b\x32+.tracdap.metadata.DataDefinition.PartsEntry\x12\x30\n\tstorageId\x18\x04 \x01(\x0b\x32\x1d.tracdap.metadata.TagSelector\x1a-\n\x05\x44\x65lta\x12\x12\n\ndeltaIndex\x18\x01 \x01(\r\x12\x10\n\x08\x64\x61taItem\x18\x02 \x01(\t\x1aQ\n\x04Snap\x12\x11\n\tsnapIndex\x18\x01 \x01(\r\x12\x36\n\x06\x64\x65ltas\x18\x02 \x03(\x0b\x32&.tracdap.metadata.DataDefinition.Delta\x1ag\n\x04Part\x12*\n\x07partKey\x18\x01 \x01(\x0b\x32\x19.tracdap.metadata.PartKey\x12\x33\n\x04snap\x18\x02 \x01(\x0b\x32%.tracdap.metadata.DataDefinition.Snap\x1aS\n\nPartsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.tracdap.metadata.DataDefinition.Part:\x02\x38\x01\x42\x11\n\x0fschemaSpecifier*0\n\nSchemaType\x12\x17\n\x13SCHEMA_TYPE_NOT_SET\x10\x00\x12\t\n\x05TABLE\x10\x01*?\n\x08PartType\x12\r\n\tPART_ROOT\x10\x00\x12\x11\n\rPART_BY_RANGE\x10\x01\x12\x11\n\rPART_BY_VALUE\x10\x02\x42\x1e\n\x1aorg.finos.tracdap.metadataP\x01\x62\x06proto3')
19
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n1tracdap/rt/_impl/grpc/tracdap/metadata/data.proto\x12\x10tracdap.metadata\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/type.proto\x1a\x36tracdap/rt/_impl/grpc/tracdap/metadata/object_id.proto\"\xe7\x01\n\x0b\x46ieldSchema\x12\x11\n\tfieldName\x18\x01 \x01(\t\x12\x12\n\nfieldOrder\x18\x02 \x01(\x11\x12.\n\tfieldType\x18\x03 \x01(\x0e\x32\x1b.tracdap.metadata.BasicType\x12\r\n\x05label\x18\x04 \x01(\t\x12\x13\n\x0b\x62usinessKey\x18\x05 \x01(\x08\x12\x13\n\x0b\x63\x61tegorical\x18\x06 \x01(\x08\x12\x14\n\x07notNull\x18\x08 \x01(\x08H\x00\x88\x01\x01\x12\x17\n\nformatCode\x18\x07 \x01(\tH\x01\x88\x01\x01\x42\n\n\x08_notNullB\r\n\x0b_formatCode\"<\n\x0bTableSchema\x12-\n\x06\x66ields\x18\x01 \x03(\x0b\x32\x1d.tracdap.metadata.FieldSchema\"\xb3\x01\n\x10SchemaDefinition\x12\x30\n\nschemaType\x18\x01 \x01(\x0e\x32\x1c.tracdap.metadata.SchemaType\x12,\n\x08partType\x18\x02 \x01(\x0e\x32\x1a.tracdap.metadata.PartType\x12.\n\x05table\x18\x03 \x01(\x0b\x32\x1d.tracdap.metadata.TableSchemaH\x00\x42\x0f\n\rschemaDetails\"\x81\x02\n\x07PartKey\x12\x11\n\topaqueKey\x18\x01 \x01(\t\x12,\n\x08partType\x18\x02 \x01(\x0e\x32\x1a.tracdap.metadata.PartType\x12+\n\npartValues\x18\x03 \x03(\x0b\x32\x17.tracdap.metadata.Value\x12\x32\n\x0cpartRangeMin\x18\x04 \x01(\x0b\x32\x17.tracdap.metadata.ValueH\x00\x88\x01\x01\x12\x32\n\x0cpartRangeMax\x18\x05 \x01(\x0b\x32\x17.tracdap.metadata.ValueH\x01\x88\x01\x01\x42\x0f\n\r_partRangeMinB\x0f\n\r_partRangeMax\"\xba\x04\n\x0e\x44\x61taDefinition\x12\x31\n\x08schemaId\x18\x01 \x01(\x0b\x32\x1d.tracdap.metadata.TagSelectorH\x00\x12\x34\n\x06schema\x18\x02 \x01(\x0b\x32\".tracdap.metadata.SchemaDefinitionH\x00\x12:\n\x05parts\x18\x03 \x03(\x0b\x32+.tracdap.metadata.DataDefinition.PartsEntry\x12\x30\n\tstorageId\x18\x04 \x01(\x0b\x32\x1d.tracdap.metadata.TagSelector\x1a-\n\x05\x44\x65lta\x12\x12\n\ndeltaIndex\x18\x01 \x01(\r\x12\x10\n\x08\x64\x61taItem\x18\x02 \x01(\t\x1aQ\n\x04Snap\x12\x11\n\tsnapIndex\x18\x01 \x01(\r\x12\x36\n\x06\x64\x65ltas\x18\x02 \x03(\x0b\x32&.tracdap.metadata.DataDefinition.Delta\x1ag\n\x04Part\x12*\n\x07partKey\x18\x01 \x01(\x0b\x32\x19.tracdap.metadata.PartKey\x12\x33\n\x04snap\x18\x02 \x01(\x0b\x32%.tracdap.metadata.DataDefinition.Snap\x1aS\n\nPartsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.tracdap.metadata.DataDefinition.Part:\x02\x38\x01\x42\x11\n\x0fschemaSpecifier*0\n\nSchemaType\x12\x17\n\x13SCHEMA_TYPE_NOT_SET\x10\x00\x12\t\n\x05TABLE\x10\x01*?\n\x08PartType\x12\r\n\tPART_ROOT\x10\x00\x12\x11\n\rPART_BY_RANGE\x10\x01\x12\x11\n\rPART_BY_VALUE\x10\x02\x42\x1e\n\x1aorg.finos.tracdap.metadataP\x01\x62\x06proto3')
20
20
 
21
21
  _globals = globals()
22
22
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -26,26 +26,26 @@ if _descriptor._USE_C_DESCRIPTORS == False:
26
26
  _globals['DESCRIPTOR']._serialized_options = b'\n\032org.finos.tracdap.metadataP\001'
27
27
  _globals['_DATADEFINITION_PARTSENTRY']._options = None
28
28
  _globals['_DATADEFINITION_PARTSENTRY']._serialized_options = b'8\001'
29
- _globals['_SCHEMATYPE']._serialized_start=1496
30
- _globals['_SCHEMATYPE']._serialized_end=1544
31
- _globals['_PARTTYPE']._serialized_start=1546
32
- _globals['_PARTTYPE']._serialized_end=1609
29
+ _globals['_SCHEMATYPE']._serialized_start=1489
30
+ _globals['_SCHEMATYPE']._serialized_end=1537
31
+ _globals['_PARTTYPE']._serialized_start=1539
32
+ _globals['_PARTTYPE']._serialized_end=1602
33
33
  _globals['_FIELDSCHEMA']._serialized_start=179
34
34
  _globals['_FIELDSCHEMA']._serialized_end=410
35
35
  _globals['_TABLESCHEMA']._serialized_start=412
36
36
  _globals['_TABLESCHEMA']._serialized_end=472
37
37
  _globals['_SCHEMADEFINITION']._serialized_start=475
38
- _globals['_SCHEMADEFINITION']._serialized_end=661
39
- _globals['_PARTKEY']._serialized_start=664
40
- _globals['_PARTKEY']._serialized_end=921
41
- _globals['_DATADEFINITION']._serialized_start=924
42
- _globals['_DATADEFINITION']._serialized_end=1494
43
- _globals['_DATADEFINITION_DELTA']._serialized_start=1157
44
- _globals['_DATADEFINITION_DELTA']._serialized_end=1202
45
- _globals['_DATADEFINITION_SNAP']._serialized_start=1204
46
- _globals['_DATADEFINITION_SNAP']._serialized_end=1285
47
- _globals['_DATADEFINITION_PART']._serialized_start=1287
48
- _globals['_DATADEFINITION_PART']._serialized_end=1390
49
- _globals['_DATADEFINITION_PARTSENTRY']._serialized_start=1392
50
- _globals['_DATADEFINITION_PARTSENTRY']._serialized_end=1475
38
+ _globals['_SCHEMADEFINITION']._serialized_end=654
39
+ _globals['_PARTKEY']._serialized_start=657
40
+ _globals['_PARTKEY']._serialized_end=914
41
+ _globals['_DATADEFINITION']._serialized_start=917
42
+ _globals['_DATADEFINITION']._serialized_end=1487
43
+ _globals['_DATADEFINITION_DELTA']._serialized_start=1150
44
+ _globals['_DATADEFINITION_DELTA']._serialized_end=1195
45
+ _globals['_DATADEFINITION_SNAP']._serialized_start=1197
46
+ _globals['_DATADEFINITION_SNAP']._serialized_end=1278
47
+ _globals['_DATADEFINITION_PART']._serialized_start=1280
48
+ _globals['_DATADEFINITION_PART']._serialized_end=1383
49
+ _globals['_DATADEFINITION_PARTSENTRY']._serialized_start=1385
50
+ _globals['_DATADEFINITION_PARTSENTRY']._serialized_end=1468
51
51
  # @@protoc_insertion_point(module_scope)
@@ -16,7 +16,7 @@ from tracdap.rt._impl.grpc.tracdap.metadata import type_pb2 as tracdap_dot_rt_do
16
16
  from tracdap.rt._impl.grpc.tracdap.metadata import data_pb2 as tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_metadata_dot_data__pb2
17
17
 
18
18
 
19
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n2tracdap/rt/_impl/grpc/tracdap/metadata/model.proto\x12\x10tracdap.metadata\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/type.proto\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/data.proto\"\x99\x01\n\x0eModelParameter\x12\x33\n\tparamType\x18\x01 \x01(\x0b\x32 .tracdap.metadata.TypeDescriptor\x12\r\n\x05label\x18\x02 \x01(\t\x12\x32\n\x0c\x64\x65\x66\x61ultValue\x18\x03 \x01(\x0b\x32\x17.tracdap.metadata.ValueH\x00\x88\x01\x01\x42\x0f\n\r_defaultValue\"v\n\x10ModelInputSchema\x12\x32\n\x06schema\x18\x01 \x01(\x0b\x32\".tracdap.metadata.SchemaDefinition\x12\x12\n\x05label\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08optional\x18\x03 \x01(\x08\x42\x08\n\x06_label\"w\n\x11ModelOutputSchema\x12\x32\n\x06schema\x18\x01 \x01(\x0b\x32\".tracdap.metadata.SchemaDefinition\x12\x12\n\x05label\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08optional\x18\x03 \x01(\x08\x42\x08\n\x06_label\"\x9e\x06\n\x0fModelDefinition\x12\x10\n\x08language\x18\x01 \x01(\t\x12\x12\n\nrepository\x18\x02 \x01(\t\x12\x19\n\x0cpackageGroup\x18\n \x01(\tH\x00\x88\x01\x01\x12\x0f\n\x07package\x18\x0b \x01(\t\x12\x0f\n\x07version\x18\x06 \x01(\t\x12\x12\n\nentryPoint\x18\x05 \x01(\t\x12\x11\n\x04path\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x45\n\nparameters\x18\x07 \x03(\x0b\x32\x31.tracdap.metadata.ModelDefinition.ParametersEntry\x12=\n\x06inputs\x18\x08 \x03(\x0b\x32-.tracdap.metadata.ModelDefinition.InputsEntry\x12?\n\x07outputs\x18\t \x03(\x0b\x32..tracdap.metadata.ModelDefinition.OutputsEntry\x12Q\n\x10staticAttributes\x18\x0c \x03(\x0b\x32\x37.tracdap.metadata.ModelDefinition.StaticAttributesEntry\x1aS\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12/\n\x05value\x18\x02 \x01(\x0b\x32 .tracdap.metadata.ModelParameter:\x02\x38\x01\x1aQ\n\x0bInputsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x31\n\x05value\x18\x02 \x01(\x0b\x32\".tracdap.metadata.ModelInputSchema:\x02\x38\x01\x1aS\n\x0cOutputsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.tracdap.metadata.ModelOutputSchema:\x02\x38\x01\x1aP\n\x15StaticAttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.tracdap.metadata.Value:\x02\x38\x01\x42\x0f\n\r_packageGroupB\x07\n\x05_pathB\x1e\n\x1aorg.finos.tracdap.metadataP\x01\x62\x06proto3')
19
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n2tracdap/rt/_impl/grpc/tracdap/metadata/model.proto\x12\x10tracdap.metadata\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/type.proto\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/data.proto\"\xab\x02\n\x0eModelParameter\x12\x33\n\tparamType\x18\x01 \x01(\x0b\x32 .tracdap.metadata.TypeDescriptor\x12\r\n\x05label\x18\x02 \x01(\t\x12\x32\n\x0c\x64\x65\x66\x61ultValue\x18\x03 \x01(\x0b\x32\x17.tracdap.metadata.ValueH\x00\x88\x01\x01\x12\x44\n\nparamProps\x18\x04 \x03(\x0b\x32\x30.tracdap.metadata.ModelParameter.ParamPropsEntry\x1aJ\n\x0fParamPropsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.tracdap.metadata.Value:\x02\x38\x01\x42\x0f\n\r_defaultValue\"\x9b\x02\n\x10ModelInputSchema\x12\x32\n\x06schema\x18\x01 \x01(\x0b\x32\".tracdap.metadata.SchemaDefinition\x12\x12\n\x05label\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08optional\x18\x03 \x01(\x08\x12\x0f\n\x07\x64ynamic\x18\x05 \x01(\x08\x12\x46\n\ninputProps\x18\x04 \x03(\x0b\x32\x32.tracdap.metadata.ModelInputSchema.InputPropsEntry\x1aJ\n\x0fInputPropsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.tracdap.metadata.Value:\x02\x38\x01\x42\x08\n\x06_label\"\xa0\x02\n\x11ModelOutputSchema\x12\x32\n\x06schema\x18\x01 \x01(\x0b\x32\".tracdap.metadata.SchemaDefinition\x12\x12\n\x05label\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08optional\x18\x03 \x01(\x08\x12\x0f\n\x07\x64ynamic\x18\x05 \x01(\x08\x12I\n\x0boutputProps\x18\x04 \x03(\x0b\x32\x34.tracdap.metadata.ModelOutputSchema.OutputPropsEntry\x1aK\n\x10OutputPropsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.tracdap.metadata.Value:\x02\x38\x01\x42\x08\n\x06_label\"\x9e\x06\n\x0fModelDefinition\x12\x10\n\x08language\x18\x01 \x01(\t\x12\x12\n\nrepository\x18\x02 \x01(\t\x12\x19\n\x0cpackageGroup\x18\n \x01(\tH\x00\x88\x01\x01\x12\x0f\n\x07package\x18\x0b \x01(\t\x12\x0f\n\x07version\x18\x06 \x01(\t\x12\x12\n\nentryPoint\x18\x05 \x01(\t\x12\x11\n\x04path\x18\x03 \x01(\tH\x01\x88\x01\x01\x12\x45\n\nparameters\x18\x07 \x03(\x0b\x32\x31.tracdap.metadata.ModelDefinition.ParametersEntry\x12=\n\x06inputs\x18\x08 \x03(\x0b\x32-.tracdap.metadata.ModelDefinition.InputsEntry\x12?\n\x07outputs\x18\t \x03(\x0b\x32..tracdap.metadata.ModelDefinition.OutputsEntry\x12Q\n\x10staticAttributes\x18\x0c \x03(\x0b\x32\x37.tracdap.metadata.ModelDefinition.StaticAttributesEntry\x1aS\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12/\n\x05value\x18\x02 \x01(\x0b\x32 .tracdap.metadata.ModelParameter:\x02\x38\x01\x1aQ\n\x0bInputsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x31\n\x05value\x18\x02 \x01(\x0b\x32\".tracdap.metadata.ModelInputSchema:\x02\x38\x01\x1aS\n\x0cOutputsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.tracdap.metadata.ModelOutputSchema:\x02\x38\x01\x1aP\n\x15StaticAttributesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.tracdap.metadata.Value:\x02\x38\x01\x42\x0f\n\r_packageGroupB\x07\n\x05_pathB\x1e\n\x1aorg.finos.tracdap.metadataP\x01\x62\x06proto3')
20
20
 
21
21
  _globals = globals()
22
22
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -24,6 +24,12 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tracdap.rt._impl.grpc.tracd
24
24
  if _descriptor._USE_C_DESCRIPTORS == False:
25
25
  _globals['DESCRIPTOR']._options = None
26
26
  _globals['DESCRIPTOR']._serialized_options = b'\n\032org.finos.tracdap.metadataP\001'
27
+ _globals['_MODELPARAMETER_PARAMPROPSENTRY']._options = None
28
+ _globals['_MODELPARAMETER_PARAMPROPSENTRY']._serialized_options = b'8\001'
29
+ _globals['_MODELINPUTSCHEMA_INPUTPROPSENTRY']._options = None
30
+ _globals['_MODELINPUTSCHEMA_INPUTPROPSENTRY']._serialized_options = b'8\001'
31
+ _globals['_MODELOUTPUTSCHEMA_OUTPUTPROPSENTRY']._options = None
32
+ _globals['_MODELOUTPUTSCHEMA_OUTPUTPROPSENTRY']._serialized_options = b'8\001'
27
33
  _globals['_MODELDEFINITION_PARAMETERSENTRY']._options = None
28
34
  _globals['_MODELDEFINITION_PARAMETERSENTRY']._serialized_options = b'8\001'
29
35
  _globals['_MODELDEFINITION_INPUTSENTRY']._options = None
@@ -33,19 +39,25 @@ if _descriptor._USE_C_DESCRIPTORS == False:
33
39
  _globals['_MODELDEFINITION_STATICATTRIBUTESENTRY']._options = None
34
40
  _globals['_MODELDEFINITION_STATICATTRIBUTESENTRY']._serialized_options = b'8\001'
35
41
  _globals['_MODELPARAMETER']._serialized_start=175
36
- _globals['_MODELPARAMETER']._serialized_end=328
37
- _globals['_MODELINPUTSCHEMA']._serialized_start=330
38
- _globals['_MODELINPUTSCHEMA']._serialized_end=448
39
- _globals['_MODELOUTPUTSCHEMA']._serialized_start=450
40
- _globals['_MODELOUTPUTSCHEMA']._serialized_end=569
41
- _globals['_MODELDEFINITION']._serialized_start=572
42
- _globals['_MODELDEFINITION']._serialized_end=1370
43
- _globals['_MODELDEFINITION_PARAMETERSENTRY']._serialized_start=1011
44
- _globals['_MODELDEFINITION_PARAMETERSENTRY']._serialized_end=1094
45
- _globals['_MODELDEFINITION_INPUTSENTRY']._serialized_start=1096
46
- _globals['_MODELDEFINITION_INPUTSENTRY']._serialized_end=1177
47
- _globals['_MODELDEFINITION_OUTPUTSENTRY']._serialized_start=1179
48
- _globals['_MODELDEFINITION_OUTPUTSENTRY']._serialized_end=1262
49
- _globals['_MODELDEFINITION_STATICATTRIBUTESENTRY']._serialized_start=1264
50
- _globals['_MODELDEFINITION_STATICATTRIBUTESENTRY']._serialized_end=1344
42
+ _globals['_MODELPARAMETER']._serialized_end=474
43
+ _globals['_MODELPARAMETER_PARAMPROPSENTRY']._serialized_start=383
44
+ _globals['_MODELPARAMETER_PARAMPROPSENTRY']._serialized_end=457
45
+ _globals['_MODELINPUTSCHEMA']._serialized_start=477
46
+ _globals['_MODELINPUTSCHEMA']._serialized_end=760
47
+ _globals['_MODELINPUTSCHEMA_INPUTPROPSENTRY']._serialized_start=676
48
+ _globals['_MODELINPUTSCHEMA_INPUTPROPSENTRY']._serialized_end=750
49
+ _globals['_MODELOUTPUTSCHEMA']._serialized_start=763
50
+ _globals['_MODELOUTPUTSCHEMA']._serialized_end=1051
51
+ _globals['_MODELOUTPUTSCHEMA_OUTPUTPROPSENTRY']._serialized_start=966
52
+ _globals['_MODELOUTPUTSCHEMA_OUTPUTPROPSENTRY']._serialized_end=1041
53
+ _globals['_MODELDEFINITION']._serialized_start=1054
54
+ _globals['_MODELDEFINITION']._serialized_end=1852
55
+ _globals['_MODELDEFINITION_PARAMETERSENTRY']._serialized_start=1493
56
+ _globals['_MODELDEFINITION_PARAMETERSENTRY']._serialized_end=1576
57
+ _globals['_MODELDEFINITION_INPUTSENTRY']._serialized_start=1578
58
+ _globals['_MODELDEFINITION_INPUTSENTRY']._serialized_end=1659
59
+ _globals['_MODELDEFINITION_OUTPUTSENTRY']._serialized_start=1661
60
+ _globals['_MODELDEFINITION_OUTPUTSENTRY']._serialized_end=1744
61
+ _globals['_MODELDEFINITION_STATICATTRIBUTESENTRY']._serialized_start=1746
62
+ _globals['_MODELDEFINITION_STATICATTRIBUTESENTRY']._serialized_end=1826
51
63
  # @@protoc_insertion_point(module_scope)
@@ -8,34 +8,65 @@ from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Opti
8
8
  DESCRIPTOR: _descriptor.FileDescriptor
9
9
 
10
10
  class ModelParameter(_message.Message):
11
- __slots__ = ("paramType", "label", "defaultValue")
11
+ __slots__ = ("paramType", "label", "defaultValue", "paramProps")
12
+ class ParamPropsEntry(_message.Message):
13
+ __slots__ = ("key", "value")
14
+ KEY_FIELD_NUMBER: _ClassVar[int]
15
+ VALUE_FIELD_NUMBER: _ClassVar[int]
16
+ key: str
17
+ value: _type_pb2.Value
18
+ def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[_type_pb2.Value, _Mapping]] = ...) -> None: ...
12
19
  PARAMTYPE_FIELD_NUMBER: _ClassVar[int]
13
20
  LABEL_FIELD_NUMBER: _ClassVar[int]
14
21
  DEFAULTVALUE_FIELD_NUMBER: _ClassVar[int]
22
+ PARAMPROPS_FIELD_NUMBER: _ClassVar[int]
15
23
  paramType: _type_pb2.TypeDescriptor
16
24
  label: str
17
25
  defaultValue: _type_pb2.Value
18
- def __init__(self, paramType: _Optional[_Union[_type_pb2.TypeDescriptor, _Mapping]] = ..., label: _Optional[str] = ..., defaultValue: _Optional[_Union[_type_pb2.Value, _Mapping]] = ...) -> None: ...
26
+ paramProps: _containers.MessageMap[str, _type_pb2.Value]
27
+ def __init__(self, paramType: _Optional[_Union[_type_pb2.TypeDescriptor, _Mapping]] = ..., label: _Optional[str] = ..., defaultValue: _Optional[_Union[_type_pb2.Value, _Mapping]] = ..., paramProps: _Optional[_Mapping[str, _type_pb2.Value]] = ...) -> None: ...
19
28
 
20
29
  class ModelInputSchema(_message.Message):
21
- __slots__ = ("schema", "label", "optional")
30
+ __slots__ = ("schema", "label", "optional", "dynamic", "inputProps")
31
+ class InputPropsEntry(_message.Message):
32
+ __slots__ = ("key", "value")
33
+ KEY_FIELD_NUMBER: _ClassVar[int]
34
+ VALUE_FIELD_NUMBER: _ClassVar[int]
35
+ key: str
36
+ value: _type_pb2.Value
37
+ def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[_type_pb2.Value, _Mapping]] = ...) -> None: ...
22
38
  SCHEMA_FIELD_NUMBER: _ClassVar[int]
23
39
  LABEL_FIELD_NUMBER: _ClassVar[int]
24
40
  OPTIONAL_FIELD_NUMBER: _ClassVar[int]
41
+ DYNAMIC_FIELD_NUMBER: _ClassVar[int]
42
+ INPUTPROPS_FIELD_NUMBER: _ClassVar[int]
25
43
  schema: _data_pb2.SchemaDefinition
26
44
  label: str
27
45
  optional: bool
28
- def __init__(self, schema: _Optional[_Union[_data_pb2.SchemaDefinition, _Mapping]] = ..., label: _Optional[str] = ..., optional: bool = ...) -> None: ...
46
+ dynamic: bool
47
+ inputProps: _containers.MessageMap[str, _type_pb2.Value]
48
+ def __init__(self, schema: _Optional[_Union[_data_pb2.SchemaDefinition, _Mapping]] = ..., label: _Optional[str] = ..., optional: bool = ..., dynamic: bool = ..., inputProps: _Optional[_Mapping[str, _type_pb2.Value]] = ...) -> None: ...
29
49
 
30
50
  class ModelOutputSchema(_message.Message):
31
- __slots__ = ("schema", "label", "optional")
51
+ __slots__ = ("schema", "label", "optional", "dynamic", "outputProps")
52
+ class OutputPropsEntry(_message.Message):
53
+ __slots__ = ("key", "value")
54
+ KEY_FIELD_NUMBER: _ClassVar[int]
55
+ VALUE_FIELD_NUMBER: _ClassVar[int]
56
+ key: str
57
+ value: _type_pb2.Value
58
+ def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[_type_pb2.Value, _Mapping]] = ...) -> None: ...
32
59
  SCHEMA_FIELD_NUMBER: _ClassVar[int]
33
60
  LABEL_FIELD_NUMBER: _ClassVar[int]
34
61
  OPTIONAL_FIELD_NUMBER: _ClassVar[int]
62
+ DYNAMIC_FIELD_NUMBER: _ClassVar[int]
63
+ OUTPUTPROPS_FIELD_NUMBER: _ClassVar[int]
35
64
  schema: _data_pb2.SchemaDefinition
36
65
  label: str
37
66
  optional: bool
38
- def __init__(self, schema: _Optional[_Union[_data_pb2.SchemaDefinition, _Mapping]] = ..., label: _Optional[str] = ..., optional: bool = ...) -> None: ...
67
+ dynamic: bool
68
+ outputProps: _containers.MessageMap[str, _type_pb2.Value]
69
+ def __init__(self, schema: _Optional[_Union[_data_pb2.SchemaDefinition, _Mapping]] = ..., label: _Optional[str] = ..., optional: bool = ..., dynamic: bool = ..., outputProps: _Optional[_Mapping[str, _type_pb2.Value]] = ...) -> None: ...
39
70
 
40
71
  class ModelDefinition(_message.Message):
41
72
  __slots__ = ("language", "repository", "packageGroup", "package", "version", "entryPoint", "path", "parameters", "inputs", "outputs", "staticAttributes")