tracdap-runtime 0.8.0rc1__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 (56) 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 +40 -0
  16. tracdap/rt/_impl/grpc/tracdap/metadata/config_pb2.pyi +62 -0
  17. tracdap/rt/_impl/grpc/tracdap/metadata/custom_pb2.py +1 -1
  18. tracdap/rt/_impl/grpc/tracdap/metadata/data_pb2.py +1 -1
  19. tracdap/rt/_impl/grpc/tracdap/metadata/file_pb2.py +1 -1
  20. tracdap/rt/_impl/grpc/tracdap/metadata/flow_pb2.py +1 -1
  21. tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.py +67 -63
  22. tracdap/rt/_impl/grpc/tracdap/metadata/job_pb2.pyi +11 -2
  23. tracdap/rt/_impl/grpc/tracdap/metadata/model_pb2.py +1 -1
  24. tracdap/rt/_impl/grpc/tracdap/metadata/object_id_pb2.py +3 -3
  25. tracdap/rt/_impl/grpc/tracdap/metadata/object_id_pb2.pyi +4 -0
  26. tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.py +8 -6
  27. tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.pyi +8 -2
  28. tracdap/rt/_impl/grpc/tracdap/metadata/resource_pb2.py +18 -5
  29. tracdap/rt/_impl/grpc/tracdap/metadata/resource_pb2.pyi +42 -2
  30. tracdap/rt/_impl/grpc/tracdap/metadata/search_pb2.py +1 -1
  31. tracdap/rt/_impl/grpc/tracdap/metadata/storage_pb2.py +11 -9
  32. tracdap/rt/_impl/grpc/tracdap/metadata/storage_pb2.pyi +11 -2
  33. tracdap/rt/_impl/grpc/tracdap/metadata/tag_pb2.py +1 -1
  34. tracdap/rt/_impl/grpc/tracdap/metadata/tag_update_pb2.py +1 -1
  35. tracdap/rt/_impl/grpc/tracdap/metadata/type_pb2.py +1 -1
  36. tracdap/rt/_impl/runtime.py +8 -0
  37. tracdap/rt/_plugins/repo_git.py +56 -11
  38. tracdap/rt/_version.py +1 -1
  39. tracdap/rt/config/__init__.py +6 -4
  40. tracdap/rt/config/common.py +5 -0
  41. tracdap/rt/config/dynamic.py +28 -0
  42. tracdap/rt/config/job.py +13 -3
  43. tracdap/rt/config/result.py +8 -4
  44. tracdap/rt/config/runtime.py +2 -0
  45. tracdap/rt/metadata/__init__.py +37 -30
  46. tracdap/rt/metadata/config.py +95 -0
  47. tracdap/rt/metadata/job.py +2 -0
  48. tracdap/rt/metadata/object.py +6 -0
  49. tracdap/rt/metadata/object_id.py +4 -0
  50. tracdap/rt/metadata/resource.py +41 -1
  51. tracdap/rt/metadata/storage.py +9 -0
  52. {tracdap_runtime-0.8.0rc1.dist-info → tracdap_runtime-0.9.0b1.dist-info}/METADATA +5 -2
  53. {tracdap_runtime-0.8.0rc1.dist-info → tracdap_runtime-0.9.0b1.dist-info}/RECORD +56 -52
  54. {tracdap_runtime-0.8.0rc1.dist-info → tracdap_runtime-0.9.0b1.dist-info}/WHEEL +1 -1
  55. {tracdap_runtime-0.8.0rc1.dist-info → tracdap_runtime-0.9.0b1.dist-info/licenses}/LICENSE +0 -0
  56. {tracdap_runtime-0.8.0rc1.dist-info → tracdap_runtime-0.9.0b1.dist-info}/top_level.txt +0 -0
@@ -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/object_id.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
@@ -15,7 +15,7 @@ _sym_db = _symbol_database.Default()
15
15
  from tracdap.rt._impl.grpc.tracdap.metadata import type_pb2 as tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_metadata_dot_type__pb2
16
16
 
17
17
 
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n6tracdap/rt/_impl/grpc/tracdap/metadata/object_id.proto\x12\x10tracdap.metadata\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/type.proto\"\x98\x02\n\tTagHeader\x12\x30\n\nobjectType\x18\x01 \x01(\x0e\x32\x1c.tracdap.metadata.ObjectType\x12\x10\n\x08objectId\x18\x02 \x01(\t\x12\x15\n\robjectVersion\x18\x03 \x01(\x05\x12\x38\n\x0fobjectTimestamp\x18\x04 \x01(\x0b\x32\x1f.tracdap.metadata.DatetimeValue\x12\x12\n\ntagVersion\x18\x05 \x01(\x05\x12\x35\n\x0ctagTimestamp\x18\x06 \x01(\x0b\x32\x1f.tracdap.metadata.DatetimeValue\x12\x16\n\x0eisLatestObject\x18\x07 \x01(\x08\x12\x13\n\x0bisLatestTag\x18\x08 \x01(\x08\"\xb9\x02\n\x0bTagSelector\x12\x30\n\nobjectType\x18\x01 \x01(\x0e\x32\x1c.tracdap.metadata.ObjectType\x12\x10\n\x08objectId\x18\x02 \x01(\t\x12\x16\n\x0clatestObject\x18\x03 \x01(\x08H\x00\x12\x17\n\robjectVersion\x18\x04 \x01(\x05H\x00\x12\x35\n\nobjectAsOf\x18\x05 \x01(\x0b\x32\x1f.tracdap.metadata.DatetimeValueH\x00\x12\x13\n\tlatestTag\x18\x06 \x01(\x08H\x01\x12\x14\n\ntagVersion\x18\x07 \x01(\x05H\x01\x12\x32\n\x07tagAsOf\x18\x08 \x01(\x0b\x32\x1f.tracdap.metadata.DatetimeValueH\x01\x42\x10\n\x0eobjectCriteriaB\r\n\x0btagCriteria*\x88\x01\n\nObjectType\x12\x17\n\x13OBJECT_TYPE_NOT_SET\x10\x00\x12\x08\n\x04\x44\x41TA\x10\x01\x12\t\n\x05MODEL\x10\x02\x12\x08\n\x04\x46LOW\x10\x03\x12\x07\n\x03JOB\x10\x04\x12\x08\n\x04\x46ILE\x10\x05\x12\n\n\x06\x43USTOM\x10\x06\x12\x0b\n\x07STORAGE\x10\x07\x12\n\n\x06SCHEMA\x10\x08\x12\n\n\x06RESULT\x10\tB\x1e\n\x1aorg.finos.tracdap.metadataP\x01\x62\x06proto3')
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n6tracdap/rt/_impl/grpc/tracdap/metadata/object_id.proto\x12\x10tracdap.metadata\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/type.proto\"\x98\x02\n\tTagHeader\x12\x30\n\nobjectType\x18\x01 \x01(\x0e\x32\x1c.tracdap.metadata.ObjectType\x12\x10\n\x08objectId\x18\x02 \x01(\t\x12\x15\n\robjectVersion\x18\x03 \x01(\x05\x12\x38\n\x0fobjectTimestamp\x18\x04 \x01(\x0b\x32\x1f.tracdap.metadata.DatetimeValue\x12\x12\n\ntagVersion\x18\x05 \x01(\x05\x12\x35\n\x0ctagTimestamp\x18\x06 \x01(\x0b\x32\x1f.tracdap.metadata.DatetimeValue\x12\x16\n\x0eisLatestObject\x18\x07 \x01(\x08\x12\x13\n\x0bisLatestTag\x18\x08 \x01(\x08\"\xb9\x02\n\x0bTagSelector\x12\x30\n\nobjectType\x18\x01 \x01(\x0e\x32\x1c.tracdap.metadata.ObjectType\x12\x10\n\x08objectId\x18\x02 \x01(\t\x12\x16\n\x0clatestObject\x18\x03 \x01(\x08H\x00\x12\x17\n\robjectVersion\x18\x04 \x01(\x05H\x00\x12\x35\n\nobjectAsOf\x18\x05 \x01(\x0b\x32\x1f.tracdap.metadata.DatetimeValueH\x00\x12\x13\n\tlatestTag\x18\x06 \x01(\x08H\x01\x12\x14\n\ntagVersion\x18\x07 \x01(\x05H\x01\x12\x32\n\x07tagAsOf\x18\x08 \x01(\x0b\x32\x1f.tracdap.metadata.DatetimeValueH\x01\x42\x10\n\x0eobjectCriteriaB\r\n\x0btagCriteria*\xa2\x01\n\nObjectType\x12\x17\n\x13OBJECT_TYPE_NOT_SET\x10\x00\x12\x08\n\x04\x44\x41TA\x10\x01\x12\t\n\x05MODEL\x10\x02\x12\x08\n\x04\x46LOW\x10\x03\x12\x07\n\x03JOB\x10\x04\x12\x08\n\x04\x46ILE\x10\x05\x12\n\n\x06\x43USTOM\x10\x06\x12\x0b\n\x07STORAGE\x10\x07\x12\n\n\x06SCHEMA\x10\x08\x12\n\n\x06RESULT\x10\t\x12\n\n\x06\x43ONFIG\x10\n\x12\x0c\n\x08RESOURCE\x10\x0b\x42\x1e\n\x1aorg.finos.tracdap.metadataP\x01\x62\x06proto3')
19
19
 
20
20
  _globals = globals()
21
21
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -24,7 +24,7 @@ if _descriptor._USE_C_DESCRIPTORS == False:
24
24
  _globals['DESCRIPTOR']._options = None
25
25
  _globals['DESCRIPTOR']._serialized_options = b'\n\032org.finos.tracdap.metadataP\001'
26
26
  _globals['_OBJECTTYPE']._serialized_start=727
27
- _globals['_OBJECTTYPE']._serialized_end=863
27
+ _globals['_OBJECTTYPE']._serialized_end=889
28
28
  _globals['_TAGHEADER']._serialized_start=128
29
29
  _globals['_TAGHEADER']._serialized_end=408
30
30
  _globals['_TAGSELECTOR']._serialized_start=411
@@ -18,6 +18,8 @@ class ObjectType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
18
18
  STORAGE: _ClassVar[ObjectType]
19
19
  SCHEMA: _ClassVar[ObjectType]
20
20
  RESULT: _ClassVar[ObjectType]
21
+ CONFIG: _ClassVar[ObjectType]
22
+ RESOURCE: _ClassVar[ObjectType]
21
23
  OBJECT_TYPE_NOT_SET: ObjectType
22
24
  DATA: ObjectType
23
25
  MODEL: ObjectType
@@ -28,6 +30,8 @@ CUSTOM: ObjectType
28
30
  STORAGE: ObjectType
29
31
  SCHEMA: ObjectType
30
32
  RESULT: ObjectType
33
+ CONFIG: ObjectType
34
+ RESOURCE: ObjectType
31
35
 
32
36
  class TagHeader(_message.Message):
33
37
  __slots__ = ("objectType", "objectId", "objectVersion", "objectTimestamp", "tagVersion", "tagTimestamp", "isLatestObject", "isLatestTag")
@@ -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/object.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
@@ -21,9 +21,11 @@ from tracdap.rt._impl.grpc.tracdap.metadata import job_pb2 as tracdap_dot_rt_dot
21
21
  from tracdap.rt._impl.grpc.tracdap.metadata import file_pb2 as tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_metadata_dot_file__pb2
22
22
  from tracdap.rt._impl.grpc.tracdap.metadata import custom_pb2 as tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_metadata_dot_custom__pb2
23
23
  from tracdap.rt._impl.grpc.tracdap.metadata import storage_pb2 as tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_metadata_dot_storage__pb2
24
+ from tracdap.rt._impl.grpc.tracdap.metadata import config_pb2 as tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_metadata_dot_config__pb2
25
+ from tracdap.rt._impl.grpc.tracdap.metadata import resource_pb2 as tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_metadata_dot_resource__pb2
24
26
 
25
27
 
26
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n3tracdap/rt/_impl/grpc/tracdap/metadata/object.proto\x12\x10tracdap.metadata\x1a\x36tracdap/rt/_impl/grpc/tracdap/metadata/object_id.proto\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/type.proto\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/data.proto\x1a\x32tracdap/rt/_impl/grpc/tracdap/metadata/model.proto\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/flow.proto\x1a\x30tracdap/rt/_impl/grpc/tracdap/metadata/job.proto\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/file.proto\x1a\x33tracdap/rt/_impl/grpc/tracdap/metadata/custom.proto\x1a\x34tracdap/rt/_impl/grpc/tracdap/metadata/storage.proto\"\xbd\x05\n\x10ObjectDefinition\x12\x30\n\nobjectType\x18\x01 \x01(\x0e\x32\x1c.tracdap.metadata.ObjectType\x12\x30\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32 .tracdap.metadata.DataDefinitionH\x00\x12\x32\n\x05model\x18\x03 \x01(\x0b\x32!.tracdap.metadata.ModelDefinitionH\x00\x12\x30\n\x04\x66low\x18\x04 \x01(\x0b\x32 .tracdap.metadata.FlowDefinitionH\x00\x12.\n\x03job\x18\x05 \x01(\x0b\x32\x1f.tracdap.metadata.JobDefinitionH\x00\x12\x30\n\x04\x66ile\x18\x06 \x01(\x0b\x32 .tracdap.metadata.FileDefinitionH\x00\x12\x34\n\x06\x63ustom\x18\x07 \x01(\x0b\x32\".tracdap.metadata.CustomDefinitionH\x00\x12\x36\n\x07storage\x18\x08 \x01(\x0b\x32#.tracdap.metadata.StorageDefinitionH\x00\x12\x34\n\x06schema\x18\t \x01(\x0b\x32\".tracdap.metadata.SchemaDefinitionH\x00\x12\x34\n\x06result\x18\n \x01(\x0b\x32\".tracdap.metadata.ResultDefinitionH\x00\x12H\n\x0bobjectProps\x18\x64 \x03(\x0b\x32\x33.tracdap.metadata.ObjectDefinition.ObjectPropsEntry\x1aK\n\x10ObjectPropsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.tracdap.metadata.Value:\x02\x38\x01\x42\x0c\n\ndefinitionB2\n\x1aorg.finos.tracdap.metadataB\x12ObjectProtoWrapperP\x01\x62\x06proto3')
28
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n3tracdap/rt/_impl/grpc/tracdap/metadata/object.proto\x12\x10tracdap.metadata\x1a\x36tracdap/rt/_impl/grpc/tracdap/metadata/object_id.proto\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/type.proto\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/data.proto\x1a\x32tracdap/rt/_impl/grpc/tracdap/metadata/model.proto\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/flow.proto\x1a\x30tracdap/rt/_impl/grpc/tracdap/metadata/job.proto\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/file.proto\x1a\x33tracdap/rt/_impl/grpc/tracdap/metadata/custom.proto\x1a\x34tracdap/rt/_impl/grpc/tracdap/metadata/storage.proto\x1a\x33tracdap/rt/_impl/grpc/tracdap/metadata/config.proto\x1a\x35tracdap/rt/_impl/grpc/tracdap/metadata/resource.proto\"\xad\x06\n\x10ObjectDefinition\x12\x30\n\nobjectType\x18\x01 \x01(\x0e\x32\x1c.tracdap.metadata.ObjectType\x12\x30\n\x04\x64\x61ta\x18\x02 \x01(\x0b\x32 .tracdap.metadata.DataDefinitionH\x00\x12\x32\n\x05model\x18\x03 \x01(\x0b\x32!.tracdap.metadata.ModelDefinitionH\x00\x12\x30\n\x04\x66low\x18\x04 \x01(\x0b\x32 .tracdap.metadata.FlowDefinitionH\x00\x12.\n\x03job\x18\x05 \x01(\x0b\x32\x1f.tracdap.metadata.JobDefinitionH\x00\x12\x30\n\x04\x66ile\x18\x06 \x01(\x0b\x32 .tracdap.metadata.FileDefinitionH\x00\x12\x34\n\x06\x63ustom\x18\x07 \x01(\x0b\x32\".tracdap.metadata.CustomDefinitionH\x00\x12\x36\n\x07storage\x18\x08 \x01(\x0b\x32#.tracdap.metadata.StorageDefinitionH\x00\x12\x34\n\x06schema\x18\t \x01(\x0b\x32\".tracdap.metadata.SchemaDefinitionH\x00\x12\x34\n\x06result\x18\n \x01(\x0b\x32\".tracdap.metadata.ResultDefinitionH\x00\x12\x34\n\x06\x63onfig\x18\x0b \x01(\x0b\x32\".tracdap.metadata.ConfigDefinitionH\x00\x12\x38\n\x08resource\x18\x0c \x01(\x0b\x32$.tracdap.metadata.ResourceDefinitionH\x00\x12H\n\x0bobjectProps\x18\x64 \x03(\x0b\x32\x33.tracdap.metadata.ObjectDefinition.ObjectPropsEntry\x1aK\n\x10ObjectPropsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.tracdap.metadata.Value:\x02\x38\x01\x42\x0c\n\ndefinitionB2\n\x1aorg.finos.tracdap.metadataB\x12ObjectProtoWrapperP\x01\x62\x06proto3')
27
29
 
28
30
  _globals = globals()
29
31
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -33,8 +35,8 @@ if _descriptor._USE_C_DESCRIPTORS == False:
33
35
  _globals['DESCRIPTOR']._serialized_options = b'\n\032org.finos.tracdap.metadataB\022ObjectProtoWrapperP\001'
34
36
  _globals['_OBJECTDEFINITION_OBJECTPROPSENTRY']._options = None
35
37
  _globals['_OBJECTDEFINITION_OBJECTPROPSENTRY']._serialized_options = b'8\001'
36
- _globals['_OBJECTDEFINITION']._serialized_start=543
37
- _globals['_OBJECTDEFINITION']._serialized_end=1244
38
- _globals['_OBJECTDEFINITION_OBJECTPROPSENTRY']._serialized_start=1155
39
- _globals['_OBJECTDEFINITION_OBJECTPROPSENTRY']._serialized_end=1230
38
+ _globals['_OBJECTDEFINITION']._serialized_start=651
39
+ _globals['_OBJECTDEFINITION']._serialized_end=1464
40
+ _globals['_OBJECTDEFINITION_OBJECTPROPSENTRY']._serialized_start=1375
41
+ _globals['_OBJECTDEFINITION_OBJECTPROPSENTRY']._serialized_end=1450
40
42
  # @@protoc_insertion_point(module_scope)
@@ -7,6 +7,8 @@ from tracdap.rt._impl.grpc.tracdap.metadata import job_pb2 as _job_pb2
7
7
  from tracdap.rt._impl.grpc.tracdap.metadata import file_pb2 as _file_pb2
8
8
  from tracdap.rt._impl.grpc.tracdap.metadata import custom_pb2 as _custom_pb2
9
9
  from tracdap.rt._impl.grpc.tracdap.metadata import storage_pb2 as _storage_pb2
10
+ from tracdap.rt._impl.grpc.tracdap.metadata import config_pb2 as _config_pb2
11
+ from tracdap.rt._impl.grpc.tracdap.metadata import resource_pb2 as _resource_pb2
10
12
  from google.protobuf.internal import containers as _containers
11
13
  from google.protobuf import descriptor as _descriptor
12
14
  from google.protobuf import message as _message
@@ -15,7 +17,7 @@ from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Opti
15
17
  DESCRIPTOR: _descriptor.FileDescriptor
16
18
 
17
19
  class ObjectDefinition(_message.Message):
18
- __slots__ = ("objectType", "data", "model", "flow", "job", "file", "custom", "storage", "schema", "result", "objectProps")
20
+ __slots__ = ("objectType", "data", "model", "flow", "job", "file", "custom", "storage", "schema", "result", "config", "resource", "objectProps")
19
21
  class ObjectPropsEntry(_message.Message):
20
22
  __slots__ = ("key", "value")
21
23
  KEY_FIELD_NUMBER: _ClassVar[int]
@@ -33,6 +35,8 @@ class ObjectDefinition(_message.Message):
33
35
  STORAGE_FIELD_NUMBER: _ClassVar[int]
34
36
  SCHEMA_FIELD_NUMBER: _ClassVar[int]
35
37
  RESULT_FIELD_NUMBER: _ClassVar[int]
38
+ CONFIG_FIELD_NUMBER: _ClassVar[int]
39
+ RESOURCE_FIELD_NUMBER: _ClassVar[int]
36
40
  OBJECTPROPS_FIELD_NUMBER: _ClassVar[int]
37
41
  objectType: _object_id_pb2.ObjectType
38
42
  data: _data_pb2.DataDefinition
@@ -44,5 +48,7 @@ class ObjectDefinition(_message.Message):
44
48
  storage: _storage_pb2.StorageDefinition
45
49
  schema: _data_pb2.SchemaDefinition
46
50
  result: _job_pb2.ResultDefinition
51
+ config: _config_pb2.ConfigDefinition
52
+ resource: _resource_pb2.ResourceDefinition
47
53
  objectProps: _containers.MessageMap[str, _type_pb2.Value]
48
- def __init__(self, objectType: _Optional[_Union[_object_id_pb2.ObjectType, str]] = ..., data: _Optional[_Union[_data_pb2.DataDefinition, _Mapping]] = ..., model: _Optional[_Union[_model_pb2.ModelDefinition, _Mapping]] = ..., flow: _Optional[_Union[_flow_pb2.FlowDefinition, _Mapping]] = ..., job: _Optional[_Union[_job_pb2.JobDefinition, _Mapping]] = ..., file: _Optional[_Union[_file_pb2.FileDefinition, _Mapping]] = ..., custom: _Optional[_Union[_custom_pb2.CustomDefinition, _Mapping]] = ..., storage: _Optional[_Union[_storage_pb2.StorageDefinition, _Mapping]] = ..., schema: _Optional[_Union[_data_pb2.SchemaDefinition, _Mapping]] = ..., result: _Optional[_Union[_job_pb2.ResultDefinition, _Mapping]] = ..., objectProps: _Optional[_Mapping[str, _type_pb2.Value]] = ...) -> None: ...
54
+ def __init__(self, objectType: _Optional[_Union[_object_id_pb2.ObjectType, str]] = ..., data: _Optional[_Union[_data_pb2.DataDefinition, _Mapping]] = ..., model: _Optional[_Union[_model_pb2.ModelDefinition, _Mapping]] = ..., flow: _Optional[_Union[_flow_pb2.FlowDefinition, _Mapping]] = ..., job: _Optional[_Union[_job_pb2.JobDefinition, _Mapping]] = ..., file: _Optional[_Union[_file_pb2.FileDefinition, _Mapping]] = ..., custom: _Optional[_Union[_custom_pb2.CustomDefinition, _Mapping]] = ..., storage: _Optional[_Union[_storage_pb2.StorageDefinition, _Mapping]] = ..., schema: _Optional[_Union[_data_pb2.SchemaDefinition, _Mapping]] = ..., result: _Optional[_Union[_job_pb2.ResultDefinition, _Mapping]] = ..., config: _Optional[_Union[_config_pb2.ConfigDefinition, _Mapping]] = ..., resource: _Optional[_Union[_resource_pb2.ResourceDefinition, _Mapping]] = ..., objectProps: _Optional[_Mapping[str, _type_pb2.Value]] = ...) -> 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/resource.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
@@ -13,10 +13,9 @@ _sym_db = _symbol_database.Default()
13
13
 
14
14
 
15
15
  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
16
- from tracdap.rt._impl.grpc.tracdap.metadata import object_pb2 as tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_metadata_dot_object__pb2
17
16
 
18
17
 
19
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n5tracdap/rt/_impl/grpc/tracdap/metadata/resource.proto\x12\x10tracdap.metadata\x1a\x36tracdap/rt/_impl/grpc/tracdap/metadata/object_id.proto\x1a\x33tracdap/rt/_impl/grpc/tracdap/metadata/object.proto*m\n\x0cResourceType\x12\x19\n\x15RESOURCE_TYPE_NOT_SET\x10\x00\x12\x14\n\x10MODEL_REPOSITORY\x10\x01\x12\x14\n\x10INTERNAL_STORAGE\x10\x02\"\x04\x08\x03\x10\x03*\x10\x45XTERNAL_STORAGEB\x1e\n\x1aorg.finos.tracdap.metadataP\x01\x62\x06proto3')
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n5tracdap/rt/_impl/grpc/tracdap/metadata/resource.proto\x12\x10tracdap.metadata\x1a\x36tracdap/rt/_impl/grpc/tracdap/metadata/object_id.proto\"\x86\x04\n\x12ResourceDefinition\x12\x34\n\x0cresourceType\x18\x01 \x01(\x0e\x32\x1e.tracdap.metadata.ResourceType\x12\x10\n\x08protocol\x18\x02 \x01(\t\x12\x18\n\x0bsubProtocol\x18\x03 \x01(\tH\x00\x88\x01\x01\x12T\n\x10publicProperties\x18\x04 \x03(\x0b\x32:.tracdap.metadata.ResourceDefinition.PublicPropertiesEntry\x12H\n\nproperties\x18\x05 \x03(\x0b\x32\x34.tracdap.metadata.ResourceDefinition.PropertiesEntry\x12\x42\n\x07secrets\x18\x06 \x03(\x0b\x32\x31.tracdap.metadata.ResourceDefinition.SecretsEntry\x1a\x37\n\x15PublicPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\x31\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a.\n\x0cSecretsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0e\n\x0c_subProtocol*k\n\x0cResourceType\x12\x19\n\x15RESOURCE_TYPE_NOT_SET\x10\x00\x12\x14\n\x10MODEL_REPOSITORY\x10\x01\x12\x14\n\x10INTERNAL_STORAGE\x10\x02\x12\x14\n\x10\x45XTERNAL_STORAGE\x10\x03\x42\x1e\n\x1aorg.finos.tracdap.metadataP\x01\x62\x06proto3')
20
19
 
21
20
  _globals = globals()
22
21
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -24,6 +23,20 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tracdap.rt._impl.grpc.tracd
24
23
  if _descriptor._USE_C_DESCRIPTORS == False:
25
24
  _globals['DESCRIPTOR']._options = None
26
25
  _globals['DESCRIPTOR']._serialized_options = b'\n\032org.finos.tracdap.metadataP\001'
27
- _globals['_RESOURCETYPE']._serialized_start=184
28
- _globals['_RESOURCETYPE']._serialized_end=293
26
+ _globals['_RESOURCEDEFINITION_PUBLICPROPERTIESENTRY']._options = None
27
+ _globals['_RESOURCEDEFINITION_PUBLICPROPERTIESENTRY']._serialized_options = b'8\001'
28
+ _globals['_RESOURCEDEFINITION_PROPERTIESENTRY']._options = None
29
+ _globals['_RESOURCEDEFINITION_PROPERTIESENTRY']._serialized_options = b'8\001'
30
+ _globals['_RESOURCEDEFINITION_SECRETSENTRY']._options = None
31
+ _globals['_RESOURCEDEFINITION_SECRETSENTRY']._serialized_options = b'8\001'
32
+ _globals['_RESOURCETYPE']._serialized_start=652
33
+ _globals['_RESOURCETYPE']._serialized_end=759
34
+ _globals['_RESOURCEDEFINITION']._serialized_start=132
35
+ _globals['_RESOURCEDEFINITION']._serialized_end=650
36
+ _globals['_RESOURCEDEFINITION_PUBLICPROPERTIESENTRY']._serialized_start=480
37
+ _globals['_RESOURCEDEFINITION_PUBLICPROPERTIESENTRY']._serialized_end=535
38
+ _globals['_RESOURCEDEFINITION_PROPERTIESENTRY']._serialized_start=537
39
+ _globals['_RESOURCEDEFINITION_PROPERTIESENTRY']._serialized_end=586
40
+ _globals['_RESOURCEDEFINITION_SECRETSENTRY']._serialized_start=588
41
+ _globals['_RESOURCEDEFINITION_SECRETSENTRY']._serialized_end=634
29
42
  # @@protoc_insertion_point(module_scope)
@@ -1,8 +1,9 @@
1
1
  from tracdap.rt._impl.grpc.tracdap.metadata import object_id_pb2 as _object_id_pb2
2
- from tracdap.rt._impl.grpc.tracdap.metadata import object_pb2 as _object_pb2
2
+ from google.protobuf.internal import containers as _containers
3
3
  from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
4
4
  from google.protobuf import descriptor as _descriptor
5
- from typing import ClassVar as _ClassVar
5
+ from google.protobuf import message as _message
6
+ from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union
6
7
 
7
8
  DESCRIPTOR: _descriptor.FileDescriptor
8
9
 
@@ -11,6 +12,45 @@ class ResourceType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
11
12
  RESOURCE_TYPE_NOT_SET: _ClassVar[ResourceType]
12
13
  MODEL_REPOSITORY: _ClassVar[ResourceType]
13
14
  INTERNAL_STORAGE: _ClassVar[ResourceType]
15
+ EXTERNAL_STORAGE: _ClassVar[ResourceType]
14
16
  RESOURCE_TYPE_NOT_SET: ResourceType
15
17
  MODEL_REPOSITORY: ResourceType
16
18
  INTERNAL_STORAGE: ResourceType
19
+ EXTERNAL_STORAGE: ResourceType
20
+
21
+ class ResourceDefinition(_message.Message):
22
+ __slots__ = ("resourceType", "protocol", "subProtocol", "publicProperties", "properties", "secrets")
23
+ class PublicPropertiesEntry(_message.Message):
24
+ __slots__ = ("key", "value")
25
+ KEY_FIELD_NUMBER: _ClassVar[int]
26
+ VALUE_FIELD_NUMBER: _ClassVar[int]
27
+ key: str
28
+ value: str
29
+ def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
30
+ class PropertiesEntry(_message.Message):
31
+ __slots__ = ("key", "value")
32
+ KEY_FIELD_NUMBER: _ClassVar[int]
33
+ VALUE_FIELD_NUMBER: _ClassVar[int]
34
+ key: str
35
+ value: str
36
+ def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
37
+ class SecretsEntry(_message.Message):
38
+ __slots__ = ("key", "value")
39
+ KEY_FIELD_NUMBER: _ClassVar[int]
40
+ VALUE_FIELD_NUMBER: _ClassVar[int]
41
+ key: str
42
+ value: str
43
+ def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
44
+ RESOURCETYPE_FIELD_NUMBER: _ClassVar[int]
45
+ PROTOCOL_FIELD_NUMBER: _ClassVar[int]
46
+ SUBPROTOCOL_FIELD_NUMBER: _ClassVar[int]
47
+ PUBLICPROPERTIES_FIELD_NUMBER: _ClassVar[int]
48
+ PROPERTIES_FIELD_NUMBER: _ClassVar[int]
49
+ SECRETS_FIELD_NUMBER: _ClassVar[int]
50
+ resourceType: ResourceType
51
+ protocol: str
52
+ subProtocol: str
53
+ publicProperties: _containers.ScalarMap[str, str]
54
+ properties: _containers.ScalarMap[str, str]
55
+ secrets: _containers.ScalarMap[str, str]
56
+ def __init__(self, resourceType: _Optional[_Union[ResourceType, str]] = ..., protocol: _Optional[str] = ..., subProtocol: _Optional[str] = ..., publicProperties: _Optional[_Mapping[str, str]] = ..., properties: _Optional[_Mapping[str, str]] = ..., secrets: _Optional[_Mapping[str, 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/search.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/storage.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
@@ -15,7 +15,7 @@ _sym_db = _symbol_database.Default()
15
15
  from tracdap.rt._impl.grpc.tracdap.metadata import type_pb2 as tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_metadata_dot_type__pb2
16
16
 
17
17
 
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n4tracdap/rt/_impl/grpc/tracdap/metadata/storage.proto\x12\x10tracdap.metadata\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/type.proto\"\xd2\x02\n\x0bStorageCopy\x12\x12\n\nstorageKey\x18\x01 \x01(\t\x12\x13\n\x0bstoragePath\x18\x02 \x01(\t\x12\x15\n\rstorageFormat\x18\x03 \x01(\t\x12\x30\n\ncopyStatus\x18\x04 \x01(\x0e\x32\x1c.tracdap.metadata.CopyStatus\x12\x36\n\rcopyTimestamp\x18\x05 \x01(\x0b\x32\x1f.tracdap.metadata.DatetimeValue\x12I\n\x0estorageOptions\x18\x06 \x03(\x0b\x32\x31.tracdap.metadata.StorageCopy.StorageOptionsEntry\x1aN\n\x13StorageOptionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.tracdap.metadata.Value:\x02\x38\x01\"\xdc\x01\n\x12StorageIncarnation\x12-\n\x06\x63opies\x18\x01 \x03(\x0b\x32\x1d.tracdap.metadata.StorageCopy\x12\x18\n\x10incarnationIndex\x18\x02 \x01(\x05\x12=\n\x14incarnationTimestamp\x18\x03 \x01(\x0b\x32\x1f.tracdap.metadata.DatetimeValue\x12>\n\x11incarnationStatus\x18\x04 \x01(\x0e\x32#.tracdap.metadata.IncarnationStatus\"I\n\x0bStorageItem\x12:\n\x0cincarnations\x18\x01 \x03(\x0b\x32$.tracdap.metadata.StorageIncarnation\"\xe1\x02\n\x11StorageDefinition\x12\x45\n\tdataItems\x18\x01 \x03(\x0b\x32\x32.tracdap.metadata.StorageDefinition.DataItemsEntry\x12O\n\x0estorageOptions\x18\x03 \x03(\x0b\x32\x37.tracdap.metadata.StorageDefinition.StorageOptionsEntry\x1aO\n\x0e\x44\x61taItemsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.tracdap.metadata.StorageItem:\x02\x38\x01\x1aN\n\x13StorageOptionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.tracdap.metadata.Value:\x02\x38\x01J\x04\x08\x02\x10\x03R\rstorageFormat*L\n\nCopyStatus\x12\x17\n\x13\x43OPY_STATUS_NOT_SET\x10\x00\x12\x12\n\x0e\x43OPY_AVAILABLE\x10\x01\x12\x11\n\rCOPY_EXPUNGED\x10\x02*h\n\x11IncarnationStatus\x12\x1e\n\x1aINCARNATION_STATUS_NOT_SET\x10\x00\x12\x19\n\x15INCARNATION_AVAILABLE\x10\x01\x12\x18\n\x14INCARNATION_EXPUNGED\x10\x02\x42\x1e\n\x1aorg.finos.tracdap.metadataP\x01\x62\x06proto3')
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n4tracdap/rt/_impl/grpc/tracdap/metadata/storage.proto\x12\x10tracdap.metadata\x1a\x31tracdap/rt/_impl/grpc/tracdap/metadata/type.proto\"\xd2\x02\n\x0bStorageCopy\x12\x12\n\nstorageKey\x18\x01 \x01(\t\x12\x13\n\x0bstoragePath\x18\x02 \x01(\t\x12\x15\n\rstorageFormat\x18\x03 \x01(\t\x12\x30\n\ncopyStatus\x18\x04 \x01(\x0e\x32\x1c.tracdap.metadata.CopyStatus\x12\x36\n\rcopyTimestamp\x18\x05 \x01(\x0b\x32\x1f.tracdap.metadata.DatetimeValue\x12I\n\x0estorageOptions\x18\x06 \x03(\x0b\x32\x31.tracdap.metadata.StorageCopy.StorageOptionsEntry\x1aN\n\x13StorageOptionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.tracdap.metadata.Value:\x02\x38\x01\"\xdc\x01\n\x12StorageIncarnation\x12-\n\x06\x63opies\x18\x01 \x03(\x0b\x32\x1d.tracdap.metadata.StorageCopy\x12\x18\n\x10incarnationIndex\x18\x02 \x01(\x05\x12=\n\x14incarnationTimestamp\x18\x03 \x01(\x0b\x32\x1f.tracdap.metadata.DatetimeValue\x12>\n\x11incarnationStatus\x18\x04 \x01(\x0e\x32#.tracdap.metadata.IncarnationStatus\"I\n\x0bStorageItem\x12:\n\x0cincarnations\x18\x01 \x03(\x0b\x32$.tracdap.metadata.StorageIncarnation\"\x92\x03\n\x11StorageDefinition\x12\x45\n\tdataItems\x18\x01 \x03(\x0b\x32\x32.tracdap.metadata.StorageDefinition.DataItemsEntry\x12O\n\x0estorageOptions\x18\x03 \x03(\x0b\x32\x37.tracdap.metadata.StorageDefinition.StorageOptionsEntry\x12/\n\x06layout\x18\x04 \x01(\x0e\x32\x1f.tracdap.metadata.StorageLayout\x1aO\n\x0e\x44\x61taItemsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.tracdap.metadata.StorageItem:\x02\x38\x01\x1aN\n\x13StorageOptionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.tracdap.metadata.Value:\x02\x38\x01J\x04\x08\x02\x10\x03R\rstorageFormat*L\n\nCopyStatus\x12\x17\n\x13\x43OPY_STATUS_NOT_SET\x10\x00\x12\x12\n\x0e\x43OPY_AVAILABLE\x10\x01\x12\x11\n\rCOPY_EXPUNGED\x10\x02*h\n\x11IncarnationStatus\x12\x1e\n\x1aINCARNATION_STATUS_NOT_SET\x10\x00\x12\x19\n\x15INCARNATION_AVAILABLE\x10\x01\x12\x18\n\x14INCARNATION_EXPUNGED\x10\x02*;\n\rStorageLayout\x12\x14\n\x10OBJECT_ID_LAYOUT\x10\x00\x12\x14\n\x10\x44\x45VELOPER_LAYOUT\x10\x01\x42\x1e\n\x1aorg.finos.tracdap.metadataP\x01\x62\x06proto3')
19
19
 
20
20
  _globals = globals()
21
21
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -29,10 +29,12 @@ if _descriptor._USE_C_DESCRIPTORS == False:
29
29
  _globals['_STORAGEDEFINITION_DATAITEMSENTRY']._serialized_options = b'8\001'
30
30
  _globals['_STORAGEDEFINITION_STORAGEOPTIONSENTRY']._options = None
31
31
  _globals['_STORAGEDEFINITION_STORAGEOPTIONSENTRY']._serialized_options = b'8\001'
32
- _globals['_COPYSTATUS']._serialized_start=1120
33
- _globals['_COPYSTATUS']._serialized_end=1196
34
- _globals['_INCARNATIONSTATUS']._serialized_start=1198
35
- _globals['_INCARNATIONSTATUS']._serialized_end=1302
32
+ _globals['_COPYSTATUS']._serialized_start=1169
33
+ _globals['_COPYSTATUS']._serialized_end=1245
34
+ _globals['_INCARNATIONSTATUS']._serialized_start=1247
35
+ _globals['_INCARNATIONSTATUS']._serialized_end=1351
36
+ _globals['_STORAGELAYOUT']._serialized_start=1353
37
+ _globals['_STORAGELAYOUT']._serialized_end=1412
36
38
  _globals['_STORAGECOPY']._serialized_start=126
37
39
  _globals['_STORAGECOPY']._serialized_end=464
38
40
  _globals['_STORAGECOPY_STORAGEOPTIONSENTRY']._serialized_start=386
@@ -42,9 +44,9 @@ if _descriptor._USE_C_DESCRIPTORS == False:
42
44
  _globals['_STORAGEITEM']._serialized_start=689
43
45
  _globals['_STORAGEITEM']._serialized_end=762
44
46
  _globals['_STORAGEDEFINITION']._serialized_start=765
45
- _globals['_STORAGEDEFINITION']._serialized_end=1118
46
- _globals['_STORAGEDEFINITION_DATAITEMSENTRY']._serialized_start=938
47
- _globals['_STORAGEDEFINITION_DATAITEMSENTRY']._serialized_end=1017
47
+ _globals['_STORAGEDEFINITION']._serialized_end=1167
48
+ _globals['_STORAGEDEFINITION_DATAITEMSENTRY']._serialized_start=987
49
+ _globals['_STORAGEDEFINITION_DATAITEMSENTRY']._serialized_end=1066
48
50
  _globals['_STORAGEDEFINITION_STORAGEOPTIONSENTRY']._serialized_start=386
49
51
  _globals['_STORAGEDEFINITION_STORAGEOPTIONSENTRY']._serialized_end=464
50
52
  # @@protoc_insertion_point(module_scope)
@@ -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.0rc1"
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,9 +9,6 @@ from .common import PlatformInfo
8
9
  from .common import StorageConfig
9
10
  from .common import ServiceConfig
10
11
 
11
- from .result import TagUpdateList
12
- from .result import JobResult
13
-
14
12
  from .platform import RoutingProtocol
15
13
  from .platform import DeploymentLayout
16
14
  from .platform import PlatformConfig
@@ -26,3 +24,7 @@ from .platform import ClientConfig
26
24
 
27
25
  from .runtime import RuntimeConfig
28
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:
@@ -0,0 +1,28 @@
1
+ # Code generated by TRAC
2
+
3
+ import typing as _tp # noqa
4
+ import dataclasses as _dc # noqa
5
+ import enum as _enum # noqa
6
+
7
+ import tracdap.rt.metadata as metadata
8
+
9
+
10
+
11
+ @_dc.dataclass
12
+ class DynamicConfig:
13
+
14
+ """
15
+ Represent config that is normally held in the metadata store
16
+
17
+ This can be used to supply config to isolated processes, including
18
+ the runtime when operating in batch mode. It can also be used to
19
+ to supply config for testing or to bootstrap the metadata store.
20
+ """
21
+
22
+ configClass: "str" = ""
23
+
24
+ resourceClass: "str" = ""
25
+
26
+ config: "_tp.Dict[str, metadata.ConfigDefinition]" = _dc.field(default_factory=dict)
27
+
28
+ resources: "_tp.Dict[str, metadata.ResourceDefinition]" = _dc.field(default_factory=dict)
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: