tracdap-runtime 0.6.2__py3-none-any.whl → 0.6.3__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 (51) hide show
  1. tracdap/rt/_exec/actors.py +87 -10
  2. tracdap/rt/_exec/dev_mode.py +9 -17
  3. tracdap/rt/_exec/engine.py +79 -14
  4. tracdap/rt/_exec/runtime.py +83 -40
  5. tracdap/rt/_exec/server.py +306 -29
  6. tracdap/rt/_impl/config_parser.py +219 -49
  7. tracdap/rt/_impl/grpc/codec.py +60 -5
  8. tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.py +19 -19
  9. tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2.pyi +11 -9
  10. tracdap/rt/_impl/grpc/tracdap/api/internal/runtime_pb2_grpc.py +25 -25
  11. tracdap/rt/_impl/grpc/tracdap/metadata/model_pb2.py +28 -16
  12. tracdap/rt/_impl/grpc/tracdap/metadata/model_pb2.pyi +33 -6
  13. tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.py +8 -3
  14. tracdap/rt/_impl/grpc/tracdap/metadata/object_pb2.pyi +13 -2
  15. tracdap/rt/_impl/guard_rails.py +21 -0
  16. tracdap/rt/_impl/models.py +25 -0
  17. tracdap/rt/_impl/static_api.py +23 -9
  18. tracdap/rt/_impl/type_system.py +17 -0
  19. tracdap/rt/_impl/validation.py +10 -0
  20. tracdap/rt/_plugins/config_local.py +49 -0
  21. tracdap/rt/_version.py +1 -1
  22. tracdap/rt/api/hook.py +6 -3
  23. tracdap/rt/api/static_api.py +71 -21
  24. tracdap/rt/config/__init__.py +4 -4
  25. tracdap/rt/config/common.py +10 -0
  26. tracdap/rt/config/platform.py +0 -10
  27. tracdap/rt/config/runtime.py +2 -0
  28. tracdap/rt/ext/config.py +34 -0
  29. tracdap/rt/ext/embed.py +1 -3
  30. tracdap/rt/ext/plugins.py +47 -6
  31. tracdap/rt/launch/cli.py +4 -0
  32. tracdap/rt/launch/launch.py +34 -9
  33. tracdap/rt/metadata/__init__.py +17 -17
  34. tracdap/rt/metadata/model.py +6 -0
  35. tracdap/rt/metadata/object.py +3 -0
  36. {tracdap_runtime-0.6.2.dist-info → tracdap_runtime-0.6.3.dist-info}/METADATA +4 -4
  37. {tracdap_runtime-0.6.2.dist-info → tracdap_runtime-0.6.3.dist-info}/RECORD +40 -49
  38. {tracdap_runtime-0.6.2.dist-info → tracdap_runtime-0.6.3.dist-info}/WHEEL +1 -1
  39. tracdap/rt/_impl/grpc/tracdap/config/common_pb2.py +0 -55
  40. tracdap/rt/_impl/grpc/tracdap/config/common_pb2.pyi +0 -103
  41. tracdap/rt/_impl/grpc/tracdap/config/job_pb2.py +0 -42
  42. tracdap/rt/_impl/grpc/tracdap/config/job_pb2.pyi +0 -44
  43. tracdap/rt/_impl/grpc/tracdap/config/platform_pb2.py +0 -71
  44. tracdap/rt/_impl/grpc/tracdap/config/platform_pb2.pyi +0 -197
  45. tracdap/rt/_impl/grpc/tracdap/config/result_pb2.py +0 -37
  46. tracdap/rt/_impl/grpc/tracdap/config/result_pb2.pyi +0 -35
  47. tracdap/rt/_impl/grpc/tracdap/config/runtime_pb2.py +0 -42
  48. tracdap/rt/_impl/grpc/tracdap/config/runtime_pb2.pyi +0 -46
  49. tracdap/rt/ext/_guard.py +0 -37
  50. {tracdap_runtime-0.6.2.dist-info → tracdap_runtime-0.6.3.dist-info}/LICENSE +0 -0
  51. {tracdap_runtime-0.6.2.dist-info → tracdap_runtime-0.6.3.dist-info}/top_level.txt +0 -0
@@ -1,44 +0,0 @@
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
3
- from tracdap.rt._impl.grpc.tracdap.metadata import job_pb2 as _job_pb2
4
- from google.protobuf.internal import containers as _containers
5
- from google.protobuf import descriptor as _descriptor
6
- from google.protobuf import message as _message
7
- from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union
8
-
9
- DESCRIPTOR: _descriptor.FileDescriptor
10
-
11
- class JobConfig(_message.Message):
12
- __slots__ = ("jobId", "job", "resources", "resourceMapping", "resultMapping")
13
- class ResourcesEntry(_message.Message):
14
- __slots__ = ("key", "value")
15
- KEY_FIELD_NUMBER: _ClassVar[int]
16
- VALUE_FIELD_NUMBER: _ClassVar[int]
17
- key: str
18
- value: _object_pb2.ObjectDefinition
19
- def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[_object_pb2.ObjectDefinition, _Mapping]] = ...) -> None: ...
20
- class ResourceMappingEntry(_message.Message):
21
- __slots__ = ("key", "value")
22
- KEY_FIELD_NUMBER: _ClassVar[int]
23
- VALUE_FIELD_NUMBER: _ClassVar[int]
24
- key: str
25
- value: _object_id_pb2.TagHeader
26
- def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[_object_id_pb2.TagHeader, _Mapping]] = ...) -> None: ...
27
- class ResultMappingEntry(_message.Message):
28
- __slots__ = ("key", "value")
29
- KEY_FIELD_NUMBER: _ClassVar[int]
30
- VALUE_FIELD_NUMBER: _ClassVar[int]
31
- key: str
32
- value: _object_id_pb2.TagHeader
33
- def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[_object_id_pb2.TagHeader, _Mapping]] = ...) -> None: ...
34
- JOBID_FIELD_NUMBER: _ClassVar[int]
35
- JOB_FIELD_NUMBER: _ClassVar[int]
36
- RESOURCES_FIELD_NUMBER: _ClassVar[int]
37
- RESOURCEMAPPING_FIELD_NUMBER: _ClassVar[int]
38
- RESULTMAPPING_FIELD_NUMBER: _ClassVar[int]
39
- jobId: _object_id_pb2.TagHeader
40
- job: _job_pb2.JobDefinition
41
- resources: _containers.MessageMap[str, _object_pb2.ObjectDefinition]
42
- resourceMapping: _containers.MessageMap[str, _object_id_pb2.TagHeader]
43
- resultMapping: _containers.MessageMap[str, _object_id_pb2.TagHeader]
44
- def __init__(self, jobId: _Optional[_Union[_object_id_pb2.TagHeader, _Mapping]] = ..., job: _Optional[_Union[_job_pb2.JobDefinition, _Mapping]] = ..., resources: _Optional[_Mapping[str, _object_pb2.ObjectDefinition]] = ..., resourceMapping: _Optional[_Mapping[str, _object_id_pb2.TagHeader]] = ..., resultMapping: _Optional[_Mapping[str, _object_id_pb2.TagHeader]] = ...) -> None: ...
@@ -1,71 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Generated by the protocol buffer compiler. DO NOT EDIT!
3
- # source: tracdap/rt/_impl/grpc/tracdap/config/platform.proto
4
- # Protobuf Python Version: 4.25.3
5
- """Generated protocol buffer code."""
6
- from google.protobuf import descriptor as _descriptor
7
- from google.protobuf import descriptor_pool as _descriptor_pool
8
- from google.protobuf import symbol_database as _symbol_database
9
- from google.protobuf.internal import builder as _builder
10
- # @@protoc_insertion_point(imports)
11
-
12
- _sym_db = _symbol_database.Default()
13
-
14
-
15
- from tracdap.rt._impl.grpc.tracdap.metadata import common_pb2 as tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_metadata_dot_common__pb2
16
- from tracdap.rt._impl.grpc.tracdap.config import common_pb2 as tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_config_dot_common__pb2
17
-
18
-
19
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n3tracdap/rt/_impl/grpc/tracdap/config/platform.proto\x12\x0etracdap.config\x1a\x33tracdap/rt/_impl/grpc/tracdap/metadata/common.proto\x1a\x31tracdap/rt/_impl/grpc/tracdap/config/common.proto\"\xa4\x08\n\x0ePlatformConfig\x12:\n\x06\x63onfig\x18\x01 \x03(\x0b\x32*.tracdap.config.PlatformConfig.ConfigEntry\x12\x32\n\x0cplatformInfo\x18\x02 \x01(\x0b\x32\x1c.tracdap.config.PlatformInfo\x12<\n\x0e\x61uthentication\x18\x05 \x01(\x0b\x32$.tracdap.config.AuthenticationConfig\x12\x30\n\x08metadata\x18\x06 \x01(\x0b\x32\x1e.tracdap.config.MetadataConfig\x12.\n\x07storage\x18\x07 \x01(\x0b\x32\x1d.tracdap.config.StorageConfig\x12\x46\n\x0crepositories\x18\x08 \x03(\x0b\x32\x30.tracdap.config.PlatformConfig.RepositoriesEntry\x12.\n\x08\x65xecutor\x18\t \x01(\x0b\x32\x1c.tracdap.config.PluginConfig\x12.\n\x08jobCache\x18\x0c \x01(\x0b\x32\x1c.tracdap.config.PluginConfig\x12<\n\x07tenants\x18\n \x03(\x0b\x32+.tracdap.config.PlatformConfig.TenantsEntry\x12\x37\n\twebServer\x18\x0b \x01(\x0b\x32\x1f.tracdap.config.WebServerConfigH\x00\x88\x01\x01\x12\x33\n\x07gateway\x18\r \x01(\x0b\x32\x1d.tracdap.config.GatewayConfigH\x01\x88\x01\x01\x12>\n\x08services\x18\x04 \x03(\x0b\x32,.tracdap.config.PlatformConfig.ServicesEntry\x12\x34\n\ndeployment\x18\x0e \x01(\x0b\x32 .tracdap.config.DeploymentConfig\x1a-\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aQ\n\x11RepositoriesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.tracdap.config.PluginConfig:\x02\x38\x01\x1aL\n\x0cTenantsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.tracdap.config.TenantConfig:\x02\x38\x01\x1aN\n\rServicesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x1d.tracdap.config.ServiceConfig:\x02\x38\x01\x42\x0c\n\n_webServerB\n\n\x08_gateway\"r\n\x0eMetadataConfig\x12.\n\x08\x64\x61tabase\x18\x01 \x01(\x0b\x32\x1c.tracdap.config.PluginConfig\x12\x30\n\x06\x66ormat\x18\x02 \x01(\x0e\x32 .tracdap.metadata.MetadataFormat\"j\n\x0cTenantConfig\x12\x1a\n\rdefaultBucket\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rdefaultFormat\x18\x02 \x01(\tH\x01\x88\x01\x01\x42\x10\n\x0e_defaultBucketB\x10\n\x0e_defaultFormat\"\xc7\x01\n\x0fWebServerConfig\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x31\n\x0b\x63ontentRoot\x18\x03 \x01(\x0b\x32\x1c.tracdap.config.PluginConfig\x12:\n\x0crewriteRules\x18\x04 \x03(\x0b\x32$.tracdap.config.WebServerRewriteRule\x12\x34\n\tredirects\x18\x05 \x03(\x0b\x32!.tracdap.config.WebServerRedirect\"6\n\x14WebServerRewriteRule\x12\x0e\n\x06source\x18\x01 \x01(\t\x12\x0e\n\x06target\x18\x02 \x01(\t\"C\n\x11WebServerRedirect\x12\x0e\n\x06source\x18\x01 \x01(\t\x12\x0e\n\x06target\x18\x02 \x01(\t\x12\x0e\n\x06status\x18\x03 \x01(\x05\"\x87\x01\n\rGatewayConfig\x12\x13\n\x0bidleTimeout\x18\x01 \x01(\r\x12+\n\x06routes\x18\x02 \x03(\x0b\x32\x1b.tracdap.config.RouteConfig\x12\x34\n\tredirects\x18\x03 \x03(\x0b\x32!.tracdap.config.WebServerRedirect\"\xe4\x01\n\x0bRouteConfig\x12\x11\n\trouteName\x18\x01 \x01(\t\x12\x32\n\trouteType\x18\x02 \x01(\x0e\x32\x1f.tracdap.config.RoutingProtocol\x12\x32\n\tprotocols\x18\x03 \x03(\x0e\x32\x1f.tracdap.config.RoutingProtocol\x12+\n\x05match\x18\x05 \x01(\x0b\x32\x1c.tracdap.config.RoutingMatch\x12-\n\x06target\x18\x06 \x01(\x0b\x32\x1d.tracdap.config.RoutingTarget\"*\n\x0cRoutingMatch\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"I\n\rRoutingTarget\x12\x0e\n\x06scheme\x18\x01 \x01(\t\x12\x0c\n\x04host\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\r\x12\x0c\n\x04path\x18\x04 \x01(\t\"N\n\rServiceConfig\x12\x14\n\x07\x65nabled\x18\x01 \x01(\x08H\x00\x88\x01\x01\x12\r\n\x05\x61lias\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\rB\n\n\x08_enabled\"D\n\x10\x44\x65ploymentConfig\x12\x30\n\x06layout\x18\x01 \x01(\x0e\x32 .tracdap.config.DeploymentLayout*S\n\x0fRoutingProtocol\x12\x14\n\x10PROTOCOL_NOT_SET\x10\x00\x12\x08\n\x04HTTP\x10\x01\x12\x08\n\x04GRPC\x10\x02\x12\x0c\n\x08GRPC_WEB\x10\x03\x12\x08\n\x04REST\x10\x04*K\n\x10\x44\x65ploymentLayout\x12\x12\n\x0eLAYOUT_NOT_SET\x10\x00\x12\x0b\n\x07SANDBOX\x10\x01\x12\n\n\x06HOSTED\x10\x02\x12\n\n\x06\x43USTOM\x10\x03\x42\x1c\n\x18org.finos.tracdap.configP\x01\x62\x06proto3')
20
-
21
- _globals = globals()
22
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
23
- _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tracdap.rt._impl.grpc.tracdap.config.platform_pb2', _globals)
24
- if _descriptor._USE_C_DESCRIPTORS == False:
25
- _globals['DESCRIPTOR']._options = None
26
- _globals['DESCRIPTOR']._serialized_options = b'\n\030org.finos.tracdap.configP\001'
27
- _globals['_PLATFORMCONFIG_CONFIGENTRY']._options = None
28
- _globals['_PLATFORMCONFIG_CONFIGENTRY']._serialized_options = b'8\001'
29
- _globals['_PLATFORMCONFIG_REPOSITORIESENTRY']._options = None
30
- _globals['_PLATFORMCONFIG_REPOSITORIESENTRY']._serialized_options = b'8\001'
31
- _globals['_PLATFORMCONFIG_TENANTSENTRY']._options = None
32
- _globals['_PLATFORMCONFIG_TENANTSENTRY']._serialized_options = b'8\001'
33
- _globals['_PLATFORMCONFIG_SERVICESENTRY']._options = None
34
- _globals['_PLATFORMCONFIG_SERVICESENTRY']._serialized_options = b'8\001'
35
- _globals['_ROUTINGPROTOCOL']._serialized_start=2427
36
- _globals['_ROUTINGPROTOCOL']._serialized_end=2510
37
- _globals['_DEPLOYMENTLAYOUT']._serialized_start=2512
38
- _globals['_DEPLOYMENTLAYOUT']._serialized_end=2587
39
- _globals['_PLATFORMCONFIG']._serialized_start=176
40
- _globals['_PLATFORMCONFIG']._serialized_end=1236
41
- _globals['_PLATFORMCONFIG_CONFIGENTRY']._serialized_start=924
42
- _globals['_PLATFORMCONFIG_CONFIGENTRY']._serialized_end=969
43
- _globals['_PLATFORMCONFIG_REPOSITORIESENTRY']._serialized_start=971
44
- _globals['_PLATFORMCONFIG_REPOSITORIESENTRY']._serialized_end=1052
45
- _globals['_PLATFORMCONFIG_TENANTSENTRY']._serialized_start=1054
46
- _globals['_PLATFORMCONFIG_TENANTSENTRY']._serialized_end=1130
47
- _globals['_PLATFORMCONFIG_SERVICESENTRY']._serialized_start=1132
48
- _globals['_PLATFORMCONFIG_SERVICESENTRY']._serialized_end=1210
49
- _globals['_METADATACONFIG']._serialized_start=1238
50
- _globals['_METADATACONFIG']._serialized_end=1352
51
- _globals['_TENANTCONFIG']._serialized_start=1354
52
- _globals['_TENANTCONFIG']._serialized_end=1460
53
- _globals['_WEBSERVERCONFIG']._serialized_start=1463
54
- _globals['_WEBSERVERCONFIG']._serialized_end=1662
55
- _globals['_WEBSERVERREWRITERULE']._serialized_start=1664
56
- _globals['_WEBSERVERREWRITERULE']._serialized_end=1718
57
- _globals['_WEBSERVERREDIRECT']._serialized_start=1720
58
- _globals['_WEBSERVERREDIRECT']._serialized_end=1787
59
- _globals['_GATEWAYCONFIG']._serialized_start=1790
60
- _globals['_GATEWAYCONFIG']._serialized_end=1925
61
- _globals['_ROUTECONFIG']._serialized_start=1928
62
- _globals['_ROUTECONFIG']._serialized_end=2156
63
- _globals['_ROUTINGMATCH']._serialized_start=2158
64
- _globals['_ROUTINGMATCH']._serialized_end=2200
65
- _globals['_ROUTINGTARGET']._serialized_start=2202
66
- _globals['_ROUTINGTARGET']._serialized_end=2275
67
- _globals['_SERVICECONFIG']._serialized_start=2277
68
- _globals['_SERVICECONFIG']._serialized_end=2355
69
- _globals['_DEPLOYMENTCONFIG']._serialized_start=2357
70
- _globals['_DEPLOYMENTCONFIG']._serialized_end=2425
71
- # @@protoc_insertion_point(module_scope)
@@ -1,197 +0,0 @@
1
- from tracdap.rt._impl.grpc.tracdap.metadata import common_pb2 as _common_pb2
2
- from tracdap.rt._impl.grpc.tracdap.config import common_pb2 as _common_pb2_1
3
- from google.protobuf.internal import containers as _containers
4
- from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
5
- from google.protobuf import descriptor as _descriptor
6
- from google.protobuf import message as _message
7
- from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
8
-
9
- DESCRIPTOR: _descriptor.FileDescriptor
10
-
11
- class RoutingProtocol(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
12
- __slots__ = ()
13
- PROTOCOL_NOT_SET: _ClassVar[RoutingProtocol]
14
- HTTP: _ClassVar[RoutingProtocol]
15
- GRPC: _ClassVar[RoutingProtocol]
16
- GRPC_WEB: _ClassVar[RoutingProtocol]
17
- REST: _ClassVar[RoutingProtocol]
18
-
19
- class DeploymentLayout(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
20
- __slots__ = ()
21
- LAYOUT_NOT_SET: _ClassVar[DeploymentLayout]
22
- SANDBOX: _ClassVar[DeploymentLayout]
23
- HOSTED: _ClassVar[DeploymentLayout]
24
- CUSTOM: _ClassVar[DeploymentLayout]
25
- PROTOCOL_NOT_SET: RoutingProtocol
26
- HTTP: RoutingProtocol
27
- GRPC: RoutingProtocol
28
- GRPC_WEB: RoutingProtocol
29
- REST: RoutingProtocol
30
- LAYOUT_NOT_SET: DeploymentLayout
31
- SANDBOX: DeploymentLayout
32
- HOSTED: DeploymentLayout
33
- CUSTOM: DeploymentLayout
34
-
35
- class PlatformConfig(_message.Message):
36
- __slots__ = ("config", "platformInfo", "authentication", "metadata", "storage", "repositories", "executor", "jobCache", "tenants", "webServer", "gateway", "services", "deployment")
37
- class ConfigEntry(_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
- class RepositoriesEntry(_message.Message):
45
- __slots__ = ("key", "value")
46
- KEY_FIELD_NUMBER: _ClassVar[int]
47
- VALUE_FIELD_NUMBER: _ClassVar[int]
48
- key: str
49
- value: _common_pb2_1.PluginConfig
50
- def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[_common_pb2_1.PluginConfig, _Mapping]] = ...) -> None: ...
51
- class TenantsEntry(_message.Message):
52
- __slots__ = ("key", "value")
53
- KEY_FIELD_NUMBER: _ClassVar[int]
54
- VALUE_FIELD_NUMBER: _ClassVar[int]
55
- key: str
56
- value: TenantConfig
57
- def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[TenantConfig, _Mapping]] = ...) -> None: ...
58
- class ServicesEntry(_message.Message):
59
- __slots__ = ("key", "value")
60
- KEY_FIELD_NUMBER: _ClassVar[int]
61
- VALUE_FIELD_NUMBER: _ClassVar[int]
62
- key: str
63
- value: ServiceConfig
64
- def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[ServiceConfig, _Mapping]] = ...) -> None: ...
65
- CONFIG_FIELD_NUMBER: _ClassVar[int]
66
- PLATFORMINFO_FIELD_NUMBER: _ClassVar[int]
67
- AUTHENTICATION_FIELD_NUMBER: _ClassVar[int]
68
- METADATA_FIELD_NUMBER: _ClassVar[int]
69
- STORAGE_FIELD_NUMBER: _ClassVar[int]
70
- REPOSITORIES_FIELD_NUMBER: _ClassVar[int]
71
- EXECUTOR_FIELD_NUMBER: _ClassVar[int]
72
- JOBCACHE_FIELD_NUMBER: _ClassVar[int]
73
- TENANTS_FIELD_NUMBER: _ClassVar[int]
74
- WEBSERVER_FIELD_NUMBER: _ClassVar[int]
75
- GATEWAY_FIELD_NUMBER: _ClassVar[int]
76
- SERVICES_FIELD_NUMBER: _ClassVar[int]
77
- DEPLOYMENT_FIELD_NUMBER: _ClassVar[int]
78
- config: _containers.ScalarMap[str, str]
79
- platformInfo: _common_pb2_1.PlatformInfo
80
- authentication: _common_pb2_1.AuthenticationConfig
81
- metadata: MetadataConfig
82
- storage: _common_pb2_1.StorageConfig
83
- repositories: _containers.MessageMap[str, _common_pb2_1.PluginConfig]
84
- executor: _common_pb2_1.PluginConfig
85
- jobCache: _common_pb2_1.PluginConfig
86
- tenants: _containers.MessageMap[str, TenantConfig]
87
- webServer: WebServerConfig
88
- gateway: GatewayConfig
89
- services: _containers.MessageMap[str, ServiceConfig]
90
- deployment: DeploymentConfig
91
- def __init__(self, config: _Optional[_Mapping[str, str]] = ..., platformInfo: _Optional[_Union[_common_pb2_1.PlatformInfo, _Mapping]] = ..., authentication: _Optional[_Union[_common_pb2_1.AuthenticationConfig, _Mapping]] = ..., metadata: _Optional[_Union[MetadataConfig, _Mapping]] = ..., storage: _Optional[_Union[_common_pb2_1.StorageConfig, _Mapping]] = ..., repositories: _Optional[_Mapping[str, _common_pb2_1.PluginConfig]] = ..., executor: _Optional[_Union[_common_pb2_1.PluginConfig, _Mapping]] = ..., jobCache: _Optional[_Union[_common_pb2_1.PluginConfig, _Mapping]] = ..., tenants: _Optional[_Mapping[str, TenantConfig]] = ..., webServer: _Optional[_Union[WebServerConfig, _Mapping]] = ..., gateway: _Optional[_Union[GatewayConfig, _Mapping]] = ..., services: _Optional[_Mapping[str, ServiceConfig]] = ..., deployment: _Optional[_Union[DeploymentConfig, _Mapping]] = ...) -> None: ...
92
-
93
- class MetadataConfig(_message.Message):
94
- __slots__ = ("database", "format")
95
- DATABASE_FIELD_NUMBER: _ClassVar[int]
96
- FORMAT_FIELD_NUMBER: _ClassVar[int]
97
- database: _common_pb2_1.PluginConfig
98
- format: _common_pb2.MetadataFormat
99
- def __init__(self, database: _Optional[_Union[_common_pb2_1.PluginConfig, _Mapping]] = ..., format: _Optional[_Union[_common_pb2.MetadataFormat, str]] = ...) -> None: ...
100
-
101
- class TenantConfig(_message.Message):
102
- __slots__ = ("defaultBucket", "defaultFormat")
103
- DEFAULTBUCKET_FIELD_NUMBER: _ClassVar[int]
104
- DEFAULTFORMAT_FIELD_NUMBER: _ClassVar[int]
105
- defaultBucket: str
106
- defaultFormat: str
107
- def __init__(self, defaultBucket: _Optional[str] = ..., defaultFormat: _Optional[str] = ...) -> None: ...
108
-
109
- class WebServerConfig(_message.Message):
110
- __slots__ = ("enabled", "contentRoot", "rewriteRules", "redirects")
111
- ENABLED_FIELD_NUMBER: _ClassVar[int]
112
- CONTENTROOT_FIELD_NUMBER: _ClassVar[int]
113
- REWRITERULES_FIELD_NUMBER: _ClassVar[int]
114
- REDIRECTS_FIELD_NUMBER: _ClassVar[int]
115
- enabled: bool
116
- contentRoot: _common_pb2_1.PluginConfig
117
- rewriteRules: _containers.RepeatedCompositeFieldContainer[WebServerRewriteRule]
118
- redirects: _containers.RepeatedCompositeFieldContainer[WebServerRedirect]
119
- def __init__(self, enabled: bool = ..., contentRoot: _Optional[_Union[_common_pb2_1.PluginConfig, _Mapping]] = ..., rewriteRules: _Optional[_Iterable[_Union[WebServerRewriteRule, _Mapping]]] = ..., redirects: _Optional[_Iterable[_Union[WebServerRedirect, _Mapping]]] = ...) -> None: ...
120
-
121
- class WebServerRewriteRule(_message.Message):
122
- __slots__ = ("source", "target")
123
- SOURCE_FIELD_NUMBER: _ClassVar[int]
124
- TARGET_FIELD_NUMBER: _ClassVar[int]
125
- source: str
126
- target: str
127
- def __init__(self, source: _Optional[str] = ..., target: _Optional[str] = ...) -> None: ...
128
-
129
- class WebServerRedirect(_message.Message):
130
- __slots__ = ("source", "target", "status")
131
- SOURCE_FIELD_NUMBER: _ClassVar[int]
132
- TARGET_FIELD_NUMBER: _ClassVar[int]
133
- STATUS_FIELD_NUMBER: _ClassVar[int]
134
- source: str
135
- target: str
136
- status: int
137
- def __init__(self, source: _Optional[str] = ..., target: _Optional[str] = ..., status: _Optional[int] = ...) -> None: ...
138
-
139
- class GatewayConfig(_message.Message):
140
- __slots__ = ("idleTimeout", "routes", "redirects")
141
- IDLETIMEOUT_FIELD_NUMBER: _ClassVar[int]
142
- ROUTES_FIELD_NUMBER: _ClassVar[int]
143
- REDIRECTS_FIELD_NUMBER: _ClassVar[int]
144
- idleTimeout: int
145
- routes: _containers.RepeatedCompositeFieldContainer[RouteConfig]
146
- redirects: _containers.RepeatedCompositeFieldContainer[WebServerRedirect]
147
- def __init__(self, idleTimeout: _Optional[int] = ..., routes: _Optional[_Iterable[_Union[RouteConfig, _Mapping]]] = ..., redirects: _Optional[_Iterable[_Union[WebServerRedirect, _Mapping]]] = ...) -> None: ...
148
-
149
- class RouteConfig(_message.Message):
150
- __slots__ = ("routeName", "routeType", "protocols", "match", "target")
151
- ROUTENAME_FIELD_NUMBER: _ClassVar[int]
152
- ROUTETYPE_FIELD_NUMBER: _ClassVar[int]
153
- PROTOCOLS_FIELD_NUMBER: _ClassVar[int]
154
- MATCH_FIELD_NUMBER: _ClassVar[int]
155
- TARGET_FIELD_NUMBER: _ClassVar[int]
156
- routeName: str
157
- routeType: RoutingProtocol
158
- protocols: _containers.RepeatedScalarFieldContainer[RoutingProtocol]
159
- match: RoutingMatch
160
- target: RoutingTarget
161
- def __init__(self, routeName: _Optional[str] = ..., routeType: _Optional[_Union[RoutingProtocol, str]] = ..., protocols: _Optional[_Iterable[_Union[RoutingProtocol, str]]] = ..., match: _Optional[_Union[RoutingMatch, _Mapping]] = ..., target: _Optional[_Union[RoutingTarget, _Mapping]] = ...) -> None: ...
162
-
163
- class RoutingMatch(_message.Message):
164
- __slots__ = ("host", "path")
165
- HOST_FIELD_NUMBER: _ClassVar[int]
166
- PATH_FIELD_NUMBER: _ClassVar[int]
167
- host: str
168
- path: str
169
- def __init__(self, host: _Optional[str] = ..., path: _Optional[str] = ...) -> None: ...
170
-
171
- class RoutingTarget(_message.Message):
172
- __slots__ = ("scheme", "host", "port", "path")
173
- SCHEME_FIELD_NUMBER: _ClassVar[int]
174
- HOST_FIELD_NUMBER: _ClassVar[int]
175
- PORT_FIELD_NUMBER: _ClassVar[int]
176
- PATH_FIELD_NUMBER: _ClassVar[int]
177
- scheme: str
178
- host: str
179
- port: int
180
- path: str
181
- def __init__(self, scheme: _Optional[str] = ..., host: _Optional[str] = ..., port: _Optional[int] = ..., path: _Optional[str] = ...) -> None: ...
182
-
183
- class ServiceConfig(_message.Message):
184
- __slots__ = ("enabled", "alias", "port")
185
- ENABLED_FIELD_NUMBER: _ClassVar[int]
186
- ALIAS_FIELD_NUMBER: _ClassVar[int]
187
- PORT_FIELD_NUMBER: _ClassVar[int]
188
- enabled: bool
189
- alias: str
190
- port: int
191
- def __init__(self, enabled: bool = ..., alias: _Optional[str] = ..., port: _Optional[int] = ...) -> None: ...
192
-
193
- class DeploymentConfig(_message.Message):
194
- __slots__ = ("layout",)
195
- LAYOUT_FIELD_NUMBER: _ClassVar[int]
196
- layout: DeploymentLayout
197
- def __init__(self, layout: _Optional[_Union[DeploymentLayout, str]] = ...) -> None: ...
@@ -1,37 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Generated by the protocol buffer compiler. DO NOT EDIT!
3
- # source: tracdap/rt/_impl/grpc/tracdap/config/result.proto
4
- # Protobuf Python Version: 4.25.3
5
- """Generated protocol buffer code."""
6
- from google.protobuf import descriptor as _descriptor
7
- from google.protobuf import descriptor_pool as _descriptor_pool
8
- from google.protobuf import symbol_database as _symbol_database
9
- from google.protobuf.internal import builder as _builder
10
- # @@protoc_insertion_point(imports)
11
-
12
- _sym_db = _symbol_database.Default()
13
-
14
-
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
- from tracdap.rt._impl.grpc.tracdap.metadata import job_pb2 as tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_metadata_dot_job__pb2
18
- from tracdap.rt._impl.grpc.tracdap.metadata import tag_update_pb2 as tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_metadata_dot_tag__update__pb2
19
-
20
-
21
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n1tracdap/rt/_impl/grpc/tracdap/config/result.proto\x12\x0etracdap.config\x1a\x36tracdap/rt/_impl/grpc/tracdap/metadata/object_id.proto\x1a\x33tracdap/rt/_impl/grpc/tracdap/metadata/object.proto\x1a\x30tracdap/rt/_impl/grpc/tracdap/metadata/job.proto\x1a\x37tracdap/rt/_impl/grpc/tracdap/metadata/tag_update.proto\";\n\rTagUpdateList\x12*\n\x05\x61ttrs\x18\x01 \x03(\x0b\x32\x1b.tracdap.metadata.TagUpdate\"\x9d\x02\n\tJobResult\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\x37\n\x07results\x18\x04 \x03(\x0b\x32&.tracdap.config.JobResult.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\x01J\x04\x08\x05\x10\x06R\x05\x61ttrsB\x1c\n\x18org.finos.tracdap.configP\x01\x62\x06proto3')
22
-
23
- _globals = globals()
24
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
25
- _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tracdap.rt._impl.grpc.tracdap.config.result_pb2', _globals)
26
- if _descriptor._USE_C_DESCRIPTORS == False:
27
- _globals['DESCRIPTOR']._options = None
28
- _globals['DESCRIPTOR']._serialized_options = b'\n\030org.finos.tracdap.configP\001'
29
- _globals['_JOBRESULT_RESULTSENTRY']._options = None
30
- _globals['_JOBRESULT_RESULTSENTRY']._serialized_options = b'8\001'
31
- _globals['_TAGUPDATELIST']._serialized_start=285
32
- _globals['_TAGUPDATELIST']._serialized_end=344
33
- _globals['_JOBRESULT']._serialized_start=347
34
- _globals['_JOBRESULT']._serialized_end=632
35
- _globals['_JOBRESULT_RESULTSENTRY']._serialized_start=537
36
- _globals['_JOBRESULT_RESULTSENTRY']._serialized_end=619
37
- # @@protoc_insertion_point(module_scope)
@@ -1,35 +0,0 @@
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
3
- from tracdap.rt._impl.grpc.tracdap.metadata import job_pb2 as _job_pb2
4
- from tracdap.rt._impl.grpc.tracdap.metadata import tag_update_pb2 as _tag_update_pb2
5
- from google.protobuf.internal import containers as _containers
6
- from google.protobuf import descriptor as _descriptor
7
- from google.protobuf import message as _message
8
- from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
9
-
10
- DESCRIPTOR: _descriptor.FileDescriptor
11
-
12
- class TagUpdateList(_message.Message):
13
- __slots__ = ("attrs",)
14
- ATTRS_FIELD_NUMBER: _ClassVar[int]
15
- attrs: _containers.RepeatedCompositeFieldContainer[_tag_update_pb2.TagUpdate]
16
- def __init__(self, attrs: _Optional[_Iterable[_Union[_tag_update_pb2.TagUpdate, _Mapping]]] = ...) -> None: ...
17
-
18
- class JobResult(_message.Message):
19
- __slots__ = ("jobId", "statusCode", "statusMessage", "results")
20
- class ResultsEntry(_message.Message):
21
- __slots__ = ("key", "value")
22
- KEY_FIELD_NUMBER: _ClassVar[int]
23
- VALUE_FIELD_NUMBER: _ClassVar[int]
24
- key: str
25
- value: _object_pb2.ObjectDefinition
26
- def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[_object_pb2.ObjectDefinition, _Mapping]] = ...) -> None: ...
27
- JOBID_FIELD_NUMBER: _ClassVar[int]
28
- STATUSCODE_FIELD_NUMBER: _ClassVar[int]
29
- STATUSMESSAGE_FIELD_NUMBER: _ClassVar[int]
30
- RESULTS_FIELD_NUMBER: _ClassVar[int]
31
- jobId: _object_id_pb2.TagHeader
32
- statusCode: _job_pb2.JobStatusCode
33
- statusMessage: str
34
- results: _containers.MessageMap[str, _object_pb2.ObjectDefinition]
35
- def __init__(self, jobId: _Optional[_Union[_object_id_pb2.TagHeader, _Mapping]] = ..., statusCode: _Optional[_Union[_job_pb2.JobStatusCode, str]] = ..., statusMessage: _Optional[str] = ..., results: _Optional[_Mapping[str, _object_pb2.ObjectDefinition]] = ...) -> None: ...
@@ -1,42 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Generated by the protocol buffer compiler. DO NOT EDIT!
3
- # source: tracdap/rt/_impl/grpc/tracdap/config/runtime.proto
4
- # Protobuf Python Version: 4.25.3
5
- """Generated protocol buffer code."""
6
- from google.protobuf import descriptor as _descriptor
7
- from google.protobuf import descriptor_pool as _descriptor_pool
8
- from google.protobuf import symbol_database as _symbol_database
9
- from google.protobuf.internal import builder as _builder
10
- # @@protoc_insertion_point(imports)
11
-
12
- _sym_db = _symbol_database.Default()
13
-
14
-
15
- from tracdap.rt._impl.grpc.tracdap.config import common_pb2 as tracdap_dot_rt_dot___impl_dot_grpc_dot_tracdap_dot_config_dot_common__pb2
16
-
17
-
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n2tracdap/rt/_impl/grpc/tracdap/config/runtime.proto\x12\x0etracdap.config\x1a\x31tracdap/rt/_impl/grpc/tracdap/config/common.proto\"\xf9\x02\n\rRuntimeConfig\x12\x39\n\x06\x63onfig\x18\x01 \x03(\x0b\x32).tracdap.config.RuntimeConfig.ConfigEntry\x12.\n\x07storage\x18\x02 \x01(\x0b\x32\x1d.tracdap.config.StorageConfig\x12\x45\n\x0crepositories\x18\x03 \x03(\x0b\x32/.tracdap.config.RuntimeConfig.RepositoriesEntry\x12\x34\n\rsparkSettings\x18\x05 \x01(\x0b\x32\x1d.tracdap.config.SparkSettings\x1a-\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1aQ\n\x11RepositoriesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.tracdap.config.PluginConfig:\x02\x38\x01\"\x85\x01\n\rSparkSettings\x12\x41\n\nsparkProps\x18\x01 \x03(\x0b\x32-.tracdap.config.SparkSettings.SparkPropsEntry\x1a\x31\n\x0fSparkPropsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x1c\n\x18org.finos.tracdap.configP\x01\x62\x06proto3')
19
-
20
- _globals = globals()
21
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
- _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tracdap.rt._impl.grpc.tracdap.config.runtime_pb2', _globals)
23
- if _descriptor._USE_C_DESCRIPTORS == False:
24
- _globals['DESCRIPTOR']._options = None
25
- _globals['DESCRIPTOR']._serialized_options = b'\n\030org.finos.tracdap.configP\001'
26
- _globals['_RUNTIMECONFIG_CONFIGENTRY']._options = None
27
- _globals['_RUNTIMECONFIG_CONFIGENTRY']._serialized_options = b'8\001'
28
- _globals['_RUNTIMECONFIG_REPOSITORIESENTRY']._options = None
29
- _globals['_RUNTIMECONFIG_REPOSITORIESENTRY']._serialized_options = b'8\001'
30
- _globals['_SPARKSETTINGS_SPARKPROPSENTRY']._options = None
31
- _globals['_SPARKSETTINGS_SPARKPROPSENTRY']._serialized_options = b'8\001'
32
- _globals['_RUNTIMECONFIG']._serialized_start=122
33
- _globals['_RUNTIMECONFIG']._serialized_end=499
34
- _globals['_RUNTIMECONFIG_CONFIGENTRY']._serialized_start=371
35
- _globals['_RUNTIMECONFIG_CONFIGENTRY']._serialized_end=416
36
- _globals['_RUNTIMECONFIG_REPOSITORIESENTRY']._serialized_start=418
37
- _globals['_RUNTIMECONFIG_REPOSITORIESENTRY']._serialized_end=499
38
- _globals['_SPARKSETTINGS']._serialized_start=502
39
- _globals['_SPARKSETTINGS']._serialized_end=635
40
- _globals['_SPARKSETTINGS_SPARKPROPSENTRY']._serialized_start=586
41
- _globals['_SPARKSETTINGS_SPARKPROPSENTRY']._serialized_end=635
42
- # @@protoc_insertion_point(module_scope)
@@ -1,46 +0,0 @@
1
- from tracdap.rt._impl.grpc.tracdap.config import common_pb2 as _common_pb2
2
- from google.protobuf.internal import containers as _containers
3
- from google.protobuf import descriptor as _descriptor
4
- from google.protobuf import message as _message
5
- from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union
6
-
7
- DESCRIPTOR: _descriptor.FileDescriptor
8
-
9
- class RuntimeConfig(_message.Message):
10
- __slots__ = ("config", "storage", "repositories", "sparkSettings")
11
- class ConfigEntry(_message.Message):
12
- __slots__ = ("key", "value")
13
- KEY_FIELD_NUMBER: _ClassVar[int]
14
- VALUE_FIELD_NUMBER: _ClassVar[int]
15
- key: str
16
- value: str
17
- def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
18
- class RepositoriesEntry(_message.Message):
19
- __slots__ = ("key", "value")
20
- KEY_FIELD_NUMBER: _ClassVar[int]
21
- VALUE_FIELD_NUMBER: _ClassVar[int]
22
- key: str
23
- value: _common_pb2.PluginConfig
24
- def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[_common_pb2.PluginConfig, _Mapping]] = ...) -> None: ...
25
- CONFIG_FIELD_NUMBER: _ClassVar[int]
26
- STORAGE_FIELD_NUMBER: _ClassVar[int]
27
- REPOSITORIES_FIELD_NUMBER: _ClassVar[int]
28
- SPARKSETTINGS_FIELD_NUMBER: _ClassVar[int]
29
- config: _containers.ScalarMap[str, str]
30
- storage: _common_pb2.StorageConfig
31
- repositories: _containers.MessageMap[str, _common_pb2.PluginConfig]
32
- sparkSettings: SparkSettings
33
- def __init__(self, config: _Optional[_Mapping[str, str]] = ..., storage: _Optional[_Union[_common_pb2.StorageConfig, _Mapping]] = ..., repositories: _Optional[_Mapping[str, _common_pb2.PluginConfig]] = ..., sparkSettings: _Optional[_Union[SparkSettings, _Mapping]] = ...) -> None: ...
34
-
35
- class SparkSettings(_message.Message):
36
- __slots__ = ("sparkProps",)
37
- class SparkPropsEntry(_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
- SPARKPROPS_FIELD_NUMBER: _ClassVar[int]
45
- sparkProps: _containers.ScalarMap[str, str]
46
- def __init__(self, sparkProps: _Optional[_Mapping[str, str]] = ...) -> None: ...
tracdap/rt/ext/_guard.py DELETED
@@ -1,37 +0,0 @@
1
- # Copyright 2023 Accenture Global Solutions Limited
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- import inspect
16
- import tracdap.rt.exceptions as ex
17
-
18
-
19
- def run_model_guard(operation: str = None):
20
-
21
- # Loading resources from inside run_model is an invalid use of the runtime API
22
- # If a model attempts this, throw back a runtime validation error
23
-
24
- stack = inspect.stack()
25
- frame = stack[-1]
26
-
27
- if operation is None:
28
- operation = f"Calling {frame.function}()"
29
-
30
- for frame_index in range(len(stack) - 2, 0, -1):
31
-
32
- parent_frame = frame
33
- frame = stack[frame_index]
34
-
35
- if frame.function == "run_model" and parent_frame.function == "_execute":
36
- err = f"{operation} is not allowed inside run_model()"
37
- raise ex.ERuntimeValidation(err)