otdf-python 0.4.0__py3-none-any.whl → 0.4.2__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 (96) hide show
  1. otdf_python/__init__.py +1 -2
  2. otdf_python/__main__.py +1 -2
  3. otdf_python/address_normalizer.py +8 -10
  4. otdf_python/aesgcm.py +8 -0
  5. otdf_python/assertion_config.py +21 -0
  6. otdf_python/asym_crypto.py +18 -22
  7. otdf_python/auth_headers.py +7 -6
  8. otdf_python/autoconfigure_utils.py +21 -7
  9. otdf_python/cli.py +5 -5
  10. otdf_python/collection_store.py +13 -1
  11. otdf_python/collection_store_impl.py +5 -0
  12. otdf_python/config.py +13 -0
  13. otdf_python/connect_client.py +1 -0
  14. otdf_python/constants.py +2 -0
  15. otdf_python/crypto_utils.py +4 -0
  16. otdf_python/dpop.py +3 -5
  17. otdf_python/ecc_constants.py +12 -14
  18. otdf_python/ecc_mode.py +7 -2
  19. otdf_python/ecdh.py +24 -31
  20. otdf_python/eckeypair.py +5 -0
  21. otdf_python/header.py +5 -0
  22. otdf_python/invalid_zip_exception.py +6 -2
  23. otdf_python/kas_client.py +66 -55
  24. otdf_python/kas_connect_rpc_client.py +75 -38
  25. otdf_python/kas_info.py +4 -3
  26. otdf_python/kas_key_cache.py +10 -9
  27. otdf_python/key_type.py +4 -0
  28. otdf_python/key_type_constants.py +4 -11
  29. otdf_python/manifest.py +24 -0
  30. otdf_python/nanotdf.py +30 -28
  31. otdf_python/nanotdf_ecdsa_struct.py +5 -11
  32. otdf_python/nanotdf_type.py +13 -1
  33. otdf_python/policy_binding_serializer.py +6 -4
  34. otdf_python/policy_info.py +6 -0
  35. otdf_python/policy_object.py +8 -0
  36. otdf_python/policy_stub.py +2 -0
  37. otdf_python/resource_locator.py +22 -13
  38. otdf_python/sdk.py +51 -73
  39. otdf_python/sdk_builder.py +60 -47
  40. otdf_python/sdk_exceptions.py +11 -1
  41. otdf_python/symmetric_and_payload_config.py +6 -0
  42. otdf_python/tdf.py +47 -10
  43. otdf_python/tdf_reader.py +10 -13
  44. otdf_python/tdf_writer.py +5 -0
  45. otdf_python/token_source.py +4 -3
  46. otdf_python/version.py +5 -0
  47. otdf_python/zip_reader.py +10 -2
  48. otdf_python/zip_writer.py +11 -0
  49. {otdf_python-0.4.0.dist-info → otdf_python-0.4.2.dist-info}/METADATA +3 -2
  50. {otdf_python-0.4.0.dist-info → otdf_python-0.4.2.dist-info}/RECORD +81 -72
  51. {otdf_python-0.4.0.dist-info → otdf_python-0.4.2.dist-info}/WHEEL +1 -1
  52. otdf_python_proto/__init__.py +2 -6
  53. otdf_python_proto/authorization/__init__.py +10 -0
  54. otdf_python_proto/authorization/authorization_connect.py +250 -0
  55. otdf_python_proto/authorization/v2/authorization_connect.py +315 -0
  56. otdf_python_proto/entityresolution/__init__.py +10 -0
  57. otdf_python_proto/entityresolution/entity_resolution_connect.py +185 -0
  58. otdf_python_proto/entityresolution/v2/entity_resolution_connect.py +185 -0
  59. otdf_python_proto/kas/__init__.py +2 -2
  60. otdf_python_proto/kas/kas_connect.py +259 -0
  61. otdf_python_proto/policy/actions/__init__.py +11 -0
  62. otdf_python_proto/policy/actions/actions_connect.py +380 -0
  63. otdf_python_proto/policy/attributes/__init__.py +11 -0
  64. otdf_python_proto/policy/attributes/attributes_connect.py +1310 -0
  65. otdf_python_proto/policy/kasregistry/__init__.py +11 -0
  66. otdf_python_proto/policy/kasregistry/key_access_server_registry_connect.py +912 -0
  67. otdf_python_proto/policy/keymanagement/__init__.py +11 -0
  68. otdf_python_proto/policy/keymanagement/key_management_connect.py +380 -0
  69. otdf_python_proto/policy/namespaces/__init__.py +11 -0
  70. otdf_python_proto/policy/namespaces/namespaces_connect.py +648 -0
  71. otdf_python_proto/policy/registeredresources/__init__.py +11 -0
  72. otdf_python_proto/policy/registeredresources/registered_resources_connect.py +770 -0
  73. otdf_python_proto/policy/resourcemapping/__init__.py +11 -0
  74. otdf_python_proto/policy/resourcemapping/resource_mapping_connect.py +790 -0
  75. otdf_python_proto/policy/subjectmapping/__init__.py +11 -0
  76. otdf_python_proto/policy/subjectmapping/subject_mapping_connect.py +851 -0
  77. otdf_python_proto/policy/unsafe/__init__.py +11 -0
  78. otdf_python_proto/policy/unsafe/unsafe_connect.py +705 -0
  79. otdf_python_proto/wellknownconfiguration/__init__.py +10 -0
  80. otdf_python_proto/wellknownconfiguration/wellknown_configuration_connect.py +124 -0
  81. otdf_python_proto/authorization/authorization_pb2_connect.py +0 -191
  82. otdf_python_proto/authorization/v2/authorization_pb2_connect.py +0 -233
  83. otdf_python_proto/entityresolution/entity_resolution_pb2_connect.py +0 -149
  84. otdf_python_proto/entityresolution/v2/entity_resolution_pb2_connect.py +0 -149
  85. otdf_python_proto/kas/kas_pb2_connect.py +0 -192
  86. otdf_python_proto/policy/actions/actions_pb2_connect.py +0 -275
  87. otdf_python_proto/policy/attributes/attributes_pb2_connect.py +0 -863
  88. otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2_connect.py +0 -611
  89. otdf_python_proto/policy/keymanagement/key_management_pb2_connect.py +0 -275
  90. otdf_python_proto/policy/namespaces/namespaces_pb2_connect.py +0 -443
  91. otdf_python_proto/policy/registeredresources/registered_resources_pb2_connect.py +0 -527
  92. otdf_python_proto/policy/resourcemapping/resource_mapping_pb2_connect.py +0 -527
  93. otdf_python_proto/policy/subjectmapping/subject_mapping_pb2_connect.py +0 -569
  94. otdf_python_proto/policy/unsafe/unsafe_pb2_connect.py +0 -485
  95. otdf_python_proto/wellknownconfiguration/wellknown_configuration_pb2_connect.py +0 -107
  96. {otdf_python-0.4.0.dist-info → otdf_python-0.4.2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,185 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by https://github.com/connectrpc/connect-python. DO NOT EDIT!
3
+ # source: entityresolution/entity_resolution.proto
4
+
5
+ from collections.abc import AsyncGenerator, AsyncIterator, Iterable, Iterator, Mapping
6
+ from typing import Protocol
7
+
8
+ from connectrpc.client import ConnectClient, ConnectClientSync
9
+ from connectrpc.code import Code
10
+ from connectrpc.errors import ConnectError
11
+ from connectrpc.interceptor import Interceptor, InterceptorSync
12
+ from connectrpc.method import IdempotencyLevel, MethodInfo
13
+ from connectrpc.request import Headers, RequestContext
14
+ from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, Endpoint, EndpointSync
15
+ from . import entity_resolution_pb2 as entityresolution_dot_entity__resolution__pb2
16
+
17
+
18
+ class EntityResolutionService(Protocol):
19
+ async def resolve_entities(self, request: entityresolution_dot_entity__resolution__pb2.ResolveEntitiesRequest, ctx: RequestContext) -> entityresolution_dot_entity__resolution__pb2.ResolveEntitiesResponse:
20
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
21
+
22
+ async def create_entity_chain_from_jwt(self, request: entityresolution_dot_entity__resolution__pb2.CreateEntityChainFromJwtRequest, ctx: RequestContext) -> entityresolution_dot_entity__resolution__pb2.CreateEntityChainFromJwtResponse:
23
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
24
+
25
+
26
+ class EntityResolutionServiceASGIApplication(ConnectASGIApplication[EntityResolutionService]):
27
+ def __init__(self, service: EntityResolutionService | AsyncGenerator[EntityResolutionService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None:
28
+ super().__init__(
29
+ service=service,
30
+ endpoints=lambda svc: {
31
+ "/entityresolution.EntityResolutionService/ResolveEntities": Endpoint.unary(
32
+ method=MethodInfo(
33
+ name="ResolveEntities",
34
+ service_name="entityresolution.EntityResolutionService",
35
+ input=entityresolution_dot_entity__resolution__pb2.ResolveEntitiesRequest,
36
+ output=entityresolution_dot_entity__resolution__pb2.ResolveEntitiesResponse,
37
+ idempotency_level=IdempotencyLevel.UNKNOWN,
38
+ ),
39
+ function=svc.resolve_entities,
40
+ ),
41
+ "/entityresolution.EntityResolutionService/CreateEntityChainFromJwt": Endpoint.unary(
42
+ method=MethodInfo(
43
+ name="CreateEntityChainFromJwt",
44
+ service_name="entityresolution.EntityResolutionService",
45
+ input=entityresolution_dot_entity__resolution__pb2.CreateEntityChainFromJwtRequest,
46
+ output=entityresolution_dot_entity__resolution__pb2.CreateEntityChainFromJwtResponse,
47
+ idempotency_level=IdempotencyLevel.UNKNOWN,
48
+ ),
49
+ function=svc.create_entity_chain_from_jwt,
50
+ ),
51
+ },
52
+ interceptors=interceptors,
53
+ read_max_bytes=read_max_bytes,
54
+ )
55
+
56
+ @property
57
+ def path(self) -> str:
58
+ """Returns the URL path to mount the application to when serving multiple applications."""
59
+ return "/entityresolution.EntityResolutionService"
60
+
61
+
62
+ class EntityResolutionServiceClient(ConnectClient):
63
+ async def resolve_entities(
64
+ self,
65
+ request: entityresolution_dot_entity__resolution__pb2.ResolveEntitiesRequest,
66
+ *,
67
+ headers: Headers | Mapping[str, str] | None = None,
68
+ timeout_ms: int | None = None,
69
+ ) -> entityresolution_dot_entity__resolution__pb2.ResolveEntitiesResponse:
70
+ return await self.execute_unary(
71
+ request=request,
72
+ method=MethodInfo(
73
+ name="ResolveEntities",
74
+ service_name="entityresolution.EntityResolutionService",
75
+ input=entityresolution_dot_entity__resolution__pb2.ResolveEntitiesRequest,
76
+ output=entityresolution_dot_entity__resolution__pb2.ResolveEntitiesResponse,
77
+ idempotency_level=IdempotencyLevel.UNKNOWN,
78
+ ),
79
+ headers=headers,
80
+ timeout_ms=timeout_ms,
81
+ )
82
+
83
+ async def create_entity_chain_from_jwt(
84
+ self,
85
+ request: entityresolution_dot_entity__resolution__pb2.CreateEntityChainFromJwtRequest,
86
+ *,
87
+ headers: Headers | Mapping[str, str] | None = None,
88
+ timeout_ms: int | None = None,
89
+ ) -> entityresolution_dot_entity__resolution__pb2.CreateEntityChainFromJwtResponse:
90
+ return await self.execute_unary(
91
+ request=request,
92
+ method=MethodInfo(
93
+ name="CreateEntityChainFromJwt",
94
+ service_name="entityresolution.EntityResolutionService",
95
+ input=entityresolution_dot_entity__resolution__pb2.CreateEntityChainFromJwtRequest,
96
+ output=entityresolution_dot_entity__resolution__pb2.CreateEntityChainFromJwtResponse,
97
+ idempotency_level=IdempotencyLevel.UNKNOWN,
98
+ ),
99
+ headers=headers,
100
+ timeout_ms=timeout_ms,
101
+ )
102
+
103
+
104
+ class EntityResolutionServiceSync(Protocol):
105
+ def resolve_entities(self, request: entityresolution_dot_entity__resolution__pb2.ResolveEntitiesRequest, ctx: RequestContext) -> entityresolution_dot_entity__resolution__pb2.ResolveEntitiesResponse:
106
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
107
+ def create_entity_chain_from_jwt(self, request: entityresolution_dot_entity__resolution__pb2.CreateEntityChainFromJwtRequest, ctx: RequestContext) -> entityresolution_dot_entity__resolution__pb2.CreateEntityChainFromJwtResponse:
108
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
109
+
110
+
111
+ class EntityResolutionServiceWSGIApplication(ConnectWSGIApplication):
112
+ def __init__(self, service: EntityResolutionServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None:
113
+ super().__init__(
114
+ endpoints={
115
+ "/entityresolution.EntityResolutionService/ResolveEntities": EndpointSync.unary(
116
+ method=MethodInfo(
117
+ name="ResolveEntities",
118
+ service_name="entityresolution.EntityResolutionService",
119
+ input=entityresolution_dot_entity__resolution__pb2.ResolveEntitiesRequest,
120
+ output=entityresolution_dot_entity__resolution__pb2.ResolveEntitiesResponse,
121
+ idempotency_level=IdempotencyLevel.UNKNOWN,
122
+ ),
123
+ function=service.resolve_entities,
124
+ ),
125
+ "/entityresolution.EntityResolutionService/CreateEntityChainFromJwt": EndpointSync.unary(
126
+ method=MethodInfo(
127
+ name="CreateEntityChainFromJwt",
128
+ service_name="entityresolution.EntityResolutionService",
129
+ input=entityresolution_dot_entity__resolution__pb2.CreateEntityChainFromJwtRequest,
130
+ output=entityresolution_dot_entity__resolution__pb2.CreateEntityChainFromJwtResponse,
131
+ idempotency_level=IdempotencyLevel.UNKNOWN,
132
+ ),
133
+ function=service.create_entity_chain_from_jwt,
134
+ ),
135
+ },
136
+ interceptors=interceptors,
137
+ read_max_bytes=read_max_bytes,
138
+ )
139
+
140
+ @property
141
+ def path(self) -> str:
142
+ """Returns the URL path to mount the application to when serving multiple applications."""
143
+ return "/entityresolution.EntityResolutionService"
144
+
145
+
146
+ class EntityResolutionServiceClientSync(ConnectClientSync):
147
+ def resolve_entities(
148
+ self,
149
+ request: entityresolution_dot_entity__resolution__pb2.ResolveEntitiesRequest,
150
+ *,
151
+ headers: Headers | Mapping[str, str] | None = None,
152
+ timeout_ms: int | None = None,
153
+ ) -> entityresolution_dot_entity__resolution__pb2.ResolveEntitiesResponse:
154
+ return self.execute_unary(
155
+ request=request,
156
+ method=MethodInfo(
157
+ name="ResolveEntities",
158
+ service_name="entityresolution.EntityResolutionService",
159
+ input=entityresolution_dot_entity__resolution__pb2.ResolveEntitiesRequest,
160
+ output=entityresolution_dot_entity__resolution__pb2.ResolveEntitiesResponse,
161
+ idempotency_level=IdempotencyLevel.UNKNOWN,
162
+ ),
163
+ headers=headers,
164
+ timeout_ms=timeout_ms,
165
+ )
166
+
167
+ def create_entity_chain_from_jwt(
168
+ self,
169
+ request: entityresolution_dot_entity__resolution__pb2.CreateEntityChainFromJwtRequest,
170
+ *,
171
+ headers: Headers | Mapping[str, str] | None = None,
172
+ timeout_ms: int | None = None,
173
+ ) -> entityresolution_dot_entity__resolution__pb2.CreateEntityChainFromJwtResponse:
174
+ return self.execute_unary(
175
+ request=request,
176
+ method=MethodInfo(
177
+ name="CreateEntityChainFromJwt",
178
+ service_name="entityresolution.EntityResolutionService",
179
+ input=entityresolution_dot_entity__resolution__pb2.CreateEntityChainFromJwtRequest,
180
+ output=entityresolution_dot_entity__resolution__pb2.CreateEntityChainFromJwtResponse,
181
+ idempotency_level=IdempotencyLevel.UNKNOWN,
182
+ ),
183
+ headers=headers,
184
+ timeout_ms=timeout_ms,
185
+ )
@@ -0,0 +1,185 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by https://github.com/connectrpc/connect-python. DO NOT EDIT!
3
+ # source: entityresolution/v2/entity_resolution.proto
4
+
5
+ from collections.abc import AsyncGenerator, AsyncIterator, Iterable, Iterator, Mapping
6
+ from typing import Protocol
7
+
8
+ from connectrpc.client import ConnectClient, ConnectClientSync
9
+ from connectrpc.code import Code
10
+ from connectrpc.errors import ConnectError
11
+ from connectrpc.interceptor import Interceptor, InterceptorSync
12
+ from connectrpc.method import IdempotencyLevel, MethodInfo
13
+ from connectrpc.request import Headers, RequestContext
14
+ from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, Endpoint, EndpointSync
15
+ import entityresolution.v2.entity_resolution_pb2 as entityresolution_dot_v2_dot_entity__resolution__pb2
16
+
17
+
18
+ class EntityResolutionService(Protocol):
19
+ async def resolve_entities(self, request: entityresolution_dot_v2_dot_entity__resolution__pb2.ResolveEntitiesRequest, ctx: RequestContext) -> entityresolution_dot_v2_dot_entity__resolution__pb2.ResolveEntitiesResponse:
20
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
21
+
22
+ async def create_entity_chains_from_tokens(self, request: entityresolution_dot_v2_dot_entity__resolution__pb2.CreateEntityChainsFromTokensRequest, ctx: RequestContext) -> entityresolution_dot_v2_dot_entity__resolution__pb2.CreateEntityChainsFromTokensResponse:
23
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
24
+
25
+
26
+ class EntityResolutionServiceASGIApplication(ConnectASGIApplication[EntityResolutionService]):
27
+ def __init__(self, service: EntityResolutionService | AsyncGenerator[EntityResolutionService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None:
28
+ super().__init__(
29
+ service=service,
30
+ endpoints=lambda svc: {
31
+ "/entityresolution.v2.EntityResolutionService/ResolveEntities": Endpoint.unary(
32
+ method=MethodInfo(
33
+ name="ResolveEntities",
34
+ service_name="entityresolution.v2.EntityResolutionService",
35
+ input=entityresolution_dot_v2_dot_entity__resolution__pb2.ResolveEntitiesRequest,
36
+ output=entityresolution_dot_v2_dot_entity__resolution__pb2.ResolveEntitiesResponse,
37
+ idempotency_level=IdempotencyLevel.UNKNOWN,
38
+ ),
39
+ function=svc.resolve_entities,
40
+ ),
41
+ "/entityresolution.v2.EntityResolutionService/CreateEntityChainsFromTokens": Endpoint.unary(
42
+ method=MethodInfo(
43
+ name="CreateEntityChainsFromTokens",
44
+ service_name="entityresolution.v2.EntityResolutionService",
45
+ input=entityresolution_dot_v2_dot_entity__resolution__pb2.CreateEntityChainsFromTokensRequest,
46
+ output=entityresolution_dot_v2_dot_entity__resolution__pb2.CreateEntityChainsFromTokensResponse,
47
+ idempotency_level=IdempotencyLevel.UNKNOWN,
48
+ ),
49
+ function=svc.create_entity_chains_from_tokens,
50
+ ),
51
+ },
52
+ interceptors=interceptors,
53
+ read_max_bytes=read_max_bytes,
54
+ )
55
+
56
+ @property
57
+ def path(self) -> str:
58
+ """Returns the URL path to mount the application to when serving multiple applications."""
59
+ return "/entityresolution.v2.EntityResolutionService"
60
+
61
+
62
+ class EntityResolutionServiceClient(ConnectClient):
63
+ async def resolve_entities(
64
+ self,
65
+ request: entityresolution_dot_v2_dot_entity__resolution__pb2.ResolveEntitiesRequest,
66
+ *,
67
+ headers: Headers | Mapping[str, str] | None = None,
68
+ timeout_ms: int | None = None,
69
+ ) -> entityresolution_dot_v2_dot_entity__resolution__pb2.ResolveEntitiesResponse:
70
+ return await self.execute_unary(
71
+ request=request,
72
+ method=MethodInfo(
73
+ name="ResolveEntities",
74
+ service_name="entityresolution.v2.EntityResolutionService",
75
+ input=entityresolution_dot_v2_dot_entity__resolution__pb2.ResolveEntitiesRequest,
76
+ output=entityresolution_dot_v2_dot_entity__resolution__pb2.ResolveEntitiesResponse,
77
+ idempotency_level=IdempotencyLevel.UNKNOWN,
78
+ ),
79
+ headers=headers,
80
+ timeout_ms=timeout_ms,
81
+ )
82
+
83
+ async def create_entity_chains_from_tokens(
84
+ self,
85
+ request: entityresolution_dot_v2_dot_entity__resolution__pb2.CreateEntityChainsFromTokensRequest,
86
+ *,
87
+ headers: Headers | Mapping[str, str] | None = None,
88
+ timeout_ms: int | None = None,
89
+ ) -> entityresolution_dot_v2_dot_entity__resolution__pb2.CreateEntityChainsFromTokensResponse:
90
+ return await self.execute_unary(
91
+ request=request,
92
+ method=MethodInfo(
93
+ name="CreateEntityChainsFromTokens",
94
+ service_name="entityresolution.v2.EntityResolutionService",
95
+ input=entityresolution_dot_v2_dot_entity__resolution__pb2.CreateEntityChainsFromTokensRequest,
96
+ output=entityresolution_dot_v2_dot_entity__resolution__pb2.CreateEntityChainsFromTokensResponse,
97
+ idempotency_level=IdempotencyLevel.UNKNOWN,
98
+ ),
99
+ headers=headers,
100
+ timeout_ms=timeout_ms,
101
+ )
102
+
103
+
104
+ class EntityResolutionServiceSync(Protocol):
105
+ def resolve_entities(self, request: entityresolution_dot_v2_dot_entity__resolution__pb2.ResolveEntitiesRequest, ctx: RequestContext) -> entityresolution_dot_v2_dot_entity__resolution__pb2.ResolveEntitiesResponse:
106
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
107
+ def create_entity_chains_from_tokens(self, request: entityresolution_dot_v2_dot_entity__resolution__pb2.CreateEntityChainsFromTokensRequest, ctx: RequestContext) -> entityresolution_dot_v2_dot_entity__resolution__pb2.CreateEntityChainsFromTokensResponse:
108
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
109
+
110
+
111
+ class EntityResolutionServiceWSGIApplication(ConnectWSGIApplication):
112
+ def __init__(self, service: EntityResolutionServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None:
113
+ super().__init__(
114
+ endpoints={
115
+ "/entityresolution.v2.EntityResolutionService/ResolveEntities": EndpointSync.unary(
116
+ method=MethodInfo(
117
+ name="ResolveEntities",
118
+ service_name="entityresolution.v2.EntityResolutionService",
119
+ input=entityresolution_dot_v2_dot_entity__resolution__pb2.ResolveEntitiesRequest,
120
+ output=entityresolution_dot_v2_dot_entity__resolution__pb2.ResolveEntitiesResponse,
121
+ idempotency_level=IdempotencyLevel.UNKNOWN,
122
+ ),
123
+ function=service.resolve_entities,
124
+ ),
125
+ "/entityresolution.v2.EntityResolutionService/CreateEntityChainsFromTokens": EndpointSync.unary(
126
+ method=MethodInfo(
127
+ name="CreateEntityChainsFromTokens",
128
+ service_name="entityresolution.v2.EntityResolutionService",
129
+ input=entityresolution_dot_v2_dot_entity__resolution__pb2.CreateEntityChainsFromTokensRequest,
130
+ output=entityresolution_dot_v2_dot_entity__resolution__pb2.CreateEntityChainsFromTokensResponse,
131
+ idempotency_level=IdempotencyLevel.UNKNOWN,
132
+ ),
133
+ function=service.create_entity_chains_from_tokens,
134
+ ),
135
+ },
136
+ interceptors=interceptors,
137
+ read_max_bytes=read_max_bytes,
138
+ )
139
+
140
+ @property
141
+ def path(self) -> str:
142
+ """Returns the URL path to mount the application to when serving multiple applications."""
143
+ return "/entityresolution.v2.EntityResolutionService"
144
+
145
+
146
+ class EntityResolutionServiceClientSync(ConnectClientSync):
147
+ def resolve_entities(
148
+ self,
149
+ request: entityresolution_dot_v2_dot_entity__resolution__pb2.ResolveEntitiesRequest,
150
+ *,
151
+ headers: Headers | Mapping[str, str] | None = None,
152
+ timeout_ms: int | None = None,
153
+ ) -> entityresolution_dot_v2_dot_entity__resolution__pb2.ResolveEntitiesResponse:
154
+ return self.execute_unary(
155
+ request=request,
156
+ method=MethodInfo(
157
+ name="ResolveEntities",
158
+ service_name="entityresolution.v2.EntityResolutionService",
159
+ input=entityresolution_dot_v2_dot_entity__resolution__pb2.ResolveEntitiesRequest,
160
+ output=entityresolution_dot_v2_dot_entity__resolution__pb2.ResolveEntitiesResponse,
161
+ idempotency_level=IdempotencyLevel.UNKNOWN,
162
+ ),
163
+ headers=headers,
164
+ timeout_ms=timeout_ms,
165
+ )
166
+
167
+ def create_entity_chains_from_tokens(
168
+ self,
169
+ request: entityresolution_dot_v2_dot_entity__resolution__pb2.CreateEntityChainsFromTokensRequest,
170
+ *,
171
+ headers: Headers | Mapping[str, str] | None = None,
172
+ timeout_ms: int | None = None,
173
+ ) -> entityresolution_dot_v2_dot_entity__resolution__pb2.CreateEntityChainsFromTokensResponse:
174
+ return self.execute_unary(
175
+ request=request,
176
+ method=MethodInfo(
177
+ name="CreateEntityChainsFromTokens",
178
+ service_name="entityresolution.v2.EntityResolutionService",
179
+ input=entityresolution_dot_v2_dot_entity__resolution__pb2.CreateEntityChainsFromTokensRequest,
180
+ output=entityresolution_dot_v2_dot_entity__resolution__pb2.CreateEntityChainsFromTokensResponse,
181
+ idempotency_level=IdempotencyLevel.UNKNOWN,
182
+ ),
183
+ headers=headers,
184
+ timeout_ms=timeout_ms,
185
+ )
@@ -1,9 +1,9 @@
1
1
  """KAS (Key Access Service) protobuf definitions."""
2
2
 
3
3
  from .kas_pb2 import *
4
- from .kas_pb2_connect import AccessServiceClient, AsyncAccessServiceClient
4
+ from .kas_connect import AccessServiceClient, AccessServiceClientSync
5
5
 
6
6
  __all__ = [
7
7
  "AccessServiceClient",
8
- "AsyncAccessServiceClient",
8
+ "AccessServiceClientSync",
9
9
  ]
@@ -0,0 +1,259 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by https://github.com/connectrpc/connect-python. DO NOT EDIT!
3
+ # source: kas/kas.proto
4
+
5
+ from collections.abc import AsyncGenerator, AsyncIterator, Iterable, Iterator, Mapping
6
+ from typing import Protocol
7
+
8
+ from connectrpc.client import ConnectClient, ConnectClientSync
9
+ from connectrpc.code import Code
10
+ from connectrpc.errors import ConnectError
11
+ from connectrpc.interceptor import Interceptor, InterceptorSync
12
+ from connectrpc.method import IdempotencyLevel, MethodInfo
13
+ from connectrpc.request import Headers, RequestContext
14
+ from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, Endpoint, EndpointSync
15
+ import google.protobuf.wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2
16
+ from . import kas_pb2 as kas_dot_kas__pb2
17
+
18
+
19
+ class AccessService(Protocol):
20
+ async def public_key(self, request: kas_dot_kas__pb2.PublicKeyRequest, ctx: RequestContext) -> kas_dot_kas__pb2.PublicKeyResponse:
21
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
22
+
23
+ async def legacy_public_key(self, request: kas_dot_kas__pb2.LegacyPublicKeyRequest, ctx: RequestContext) -> google_dot_protobuf_dot_wrappers__pb2.StringValue:
24
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
25
+
26
+ async def rewrap(self, request: kas_dot_kas__pb2.RewrapRequest, ctx: RequestContext) -> kas_dot_kas__pb2.RewrapResponse:
27
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
28
+
29
+
30
+ class AccessServiceASGIApplication(ConnectASGIApplication[AccessService]):
31
+ def __init__(self, service: AccessService | AsyncGenerator[AccessService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None:
32
+ super().__init__(
33
+ service=service,
34
+ endpoints=lambda svc: {
35
+ "/kas.AccessService/PublicKey": Endpoint.unary(
36
+ method=MethodInfo(
37
+ name="PublicKey",
38
+ service_name="kas.AccessService",
39
+ input=kas_dot_kas__pb2.PublicKeyRequest,
40
+ output=kas_dot_kas__pb2.PublicKeyResponse,
41
+ idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS,
42
+ ),
43
+ function=svc.public_key,
44
+ ),
45
+ "/kas.AccessService/LegacyPublicKey": Endpoint.unary(
46
+ method=MethodInfo(
47
+ name="LegacyPublicKey",
48
+ service_name="kas.AccessService",
49
+ input=kas_dot_kas__pb2.LegacyPublicKeyRequest,
50
+ output=google_dot_protobuf_dot_wrappers__pb2.StringValue,
51
+ idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS,
52
+ ),
53
+ function=svc.legacy_public_key,
54
+ ),
55
+ "/kas.AccessService/Rewrap": Endpoint.unary(
56
+ method=MethodInfo(
57
+ name="Rewrap",
58
+ service_name="kas.AccessService",
59
+ input=kas_dot_kas__pb2.RewrapRequest,
60
+ output=kas_dot_kas__pb2.RewrapResponse,
61
+ idempotency_level=IdempotencyLevel.UNKNOWN,
62
+ ),
63
+ function=svc.rewrap,
64
+ ),
65
+ },
66
+ interceptors=interceptors,
67
+ read_max_bytes=read_max_bytes,
68
+ )
69
+
70
+ @property
71
+ def path(self) -> str:
72
+ """Returns the URL path to mount the application to when serving multiple applications."""
73
+ return "/kas.AccessService"
74
+
75
+
76
+ class AccessServiceClient(ConnectClient):
77
+ async def public_key(
78
+ self,
79
+ request: kas_dot_kas__pb2.PublicKeyRequest,
80
+ *,
81
+ headers: Headers | Mapping[str, str] | None = None,
82
+ timeout_ms: int | None = None,
83
+ use_get: bool = False,
84
+ ) -> kas_dot_kas__pb2.PublicKeyResponse:
85
+ return await self.execute_unary(
86
+ request=request,
87
+ method=MethodInfo(
88
+ name="PublicKey",
89
+ service_name="kas.AccessService",
90
+ input=kas_dot_kas__pb2.PublicKeyRequest,
91
+ output=kas_dot_kas__pb2.PublicKeyResponse,
92
+ idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS,
93
+ ),
94
+ headers=headers,
95
+ timeout_ms=timeout_ms,
96
+ use_get=use_get,
97
+ )
98
+
99
+ async def legacy_public_key(
100
+ self,
101
+ request: kas_dot_kas__pb2.LegacyPublicKeyRequest,
102
+ *,
103
+ headers: Headers | Mapping[str, str] | None = None,
104
+ timeout_ms: int | None = None,
105
+ use_get: bool = False,
106
+ ) -> google_dot_protobuf_dot_wrappers__pb2.StringValue:
107
+ return await self.execute_unary(
108
+ request=request,
109
+ method=MethodInfo(
110
+ name="LegacyPublicKey",
111
+ service_name="kas.AccessService",
112
+ input=kas_dot_kas__pb2.LegacyPublicKeyRequest,
113
+ output=google_dot_protobuf_dot_wrappers__pb2.StringValue,
114
+ idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS,
115
+ ),
116
+ headers=headers,
117
+ timeout_ms=timeout_ms,
118
+ use_get=use_get,
119
+ )
120
+
121
+ async def rewrap(
122
+ self,
123
+ request: kas_dot_kas__pb2.RewrapRequest,
124
+ *,
125
+ headers: Headers | Mapping[str, str] | None = None,
126
+ timeout_ms: int | None = None,
127
+ ) -> kas_dot_kas__pb2.RewrapResponse:
128
+ return await self.execute_unary(
129
+ request=request,
130
+ method=MethodInfo(
131
+ name="Rewrap",
132
+ service_name="kas.AccessService",
133
+ input=kas_dot_kas__pb2.RewrapRequest,
134
+ output=kas_dot_kas__pb2.RewrapResponse,
135
+ idempotency_level=IdempotencyLevel.UNKNOWN,
136
+ ),
137
+ headers=headers,
138
+ timeout_ms=timeout_ms,
139
+ )
140
+
141
+
142
+ class AccessServiceSync(Protocol):
143
+ def public_key(self, request: kas_dot_kas__pb2.PublicKeyRequest, ctx: RequestContext) -> kas_dot_kas__pb2.PublicKeyResponse:
144
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
145
+ def legacy_public_key(self, request: kas_dot_kas__pb2.LegacyPublicKeyRequest, ctx: RequestContext) -> google_dot_protobuf_dot_wrappers__pb2.StringValue:
146
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
147
+ def rewrap(self, request: kas_dot_kas__pb2.RewrapRequest, ctx: RequestContext) -> kas_dot_kas__pb2.RewrapResponse:
148
+ raise ConnectError(Code.UNIMPLEMENTED, "Not implemented")
149
+
150
+
151
+ class AccessServiceWSGIApplication(ConnectWSGIApplication):
152
+ def __init__(self, service: AccessServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None:
153
+ super().__init__(
154
+ endpoints={
155
+ "/kas.AccessService/PublicKey": EndpointSync.unary(
156
+ method=MethodInfo(
157
+ name="PublicKey",
158
+ service_name="kas.AccessService",
159
+ input=kas_dot_kas__pb2.PublicKeyRequest,
160
+ output=kas_dot_kas__pb2.PublicKeyResponse,
161
+ idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS,
162
+ ),
163
+ function=service.public_key,
164
+ ),
165
+ "/kas.AccessService/LegacyPublicKey": EndpointSync.unary(
166
+ method=MethodInfo(
167
+ name="LegacyPublicKey",
168
+ service_name="kas.AccessService",
169
+ input=kas_dot_kas__pb2.LegacyPublicKeyRequest,
170
+ output=google_dot_protobuf_dot_wrappers__pb2.StringValue,
171
+ idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS,
172
+ ),
173
+ function=service.legacy_public_key,
174
+ ),
175
+ "/kas.AccessService/Rewrap": EndpointSync.unary(
176
+ method=MethodInfo(
177
+ name="Rewrap",
178
+ service_name="kas.AccessService",
179
+ input=kas_dot_kas__pb2.RewrapRequest,
180
+ output=kas_dot_kas__pb2.RewrapResponse,
181
+ idempotency_level=IdempotencyLevel.UNKNOWN,
182
+ ),
183
+ function=service.rewrap,
184
+ ),
185
+ },
186
+ interceptors=interceptors,
187
+ read_max_bytes=read_max_bytes,
188
+ )
189
+
190
+ @property
191
+ def path(self) -> str:
192
+ """Returns the URL path to mount the application to when serving multiple applications."""
193
+ return "/kas.AccessService"
194
+
195
+
196
+ class AccessServiceClientSync(ConnectClientSync):
197
+ def public_key(
198
+ self,
199
+ request: kas_dot_kas__pb2.PublicKeyRequest,
200
+ *,
201
+ headers: Headers | Mapping[str, str] | None = None,
202
+ timeout_ms: int | None = None,
203
+ use_get: bool = False,
204
+ ) -> kas_dot_kas__pb2.PublicKeyResponse:
205
+ return self.execute_unary(
206
+ request=request,
207
+ method=MethodInfo(
208
+ name="PublicKey",
209
+ service_name="kas.AccessService",
210
+ input=kas_dot_kas__pb2.PublicKeyRequest,
211
+ output=kas_dot_kas__pb2.PublicKeyResponse,
212
+ idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS,
213
+ ),
214
+ headers=headers,
215
+ timeout_ms=timeout_ms,
216
+ use_get=use_get,
217
+ )
218
+
219
+ def legacy_public_key(
220
+ self,
221
+ request: kas_dot_kas__pb2.LegacyPublicKeyRequest,
222
+ *,
223
+ headers: Headers | Mapping[str, str] | None = None,
224
+ timeout_ms: int | None = None,
225
+ use_get: bool = False,
226
+ ) -> google_dot_protobuf_dot_wrappers__pb2.StringValue:
227
+ return self.execute_unary(
228
+ request=request,
229
+ method=MethodInfo(
230
+ name="LegacyPublicKey",
231
+ service_name="kas.AccessService",
232
+ input=kas_dot_kas__pb2.LegacyPublicKeyRequest,
233
+ output=google_dot_protobuf_dot_wrappers__pb2.StringValue,
234
+ idempotency_level=IdempotencyLevel.NO_SIDE_EFFECTS,
235
+ ),
236
+ headers=headers,
237
+ timeout_ms=timeout_ms,
238
+ use_get=use_get,
239
+ )
240
+
241
+ def rewrap(
242
+ self,
243
+ request: kas_dot_kas__pb2.RewrapRequest,
244
+ *,
245
+ headers: Headers | Mapping[str, str] | None = None,
246
+ timeout_ms: int | None = None,
247
+ ) -> kas_dot_kas__pb2.RewrapResponse:
248
+ return self.execute_unary(
249
+ request=request,
250
+ method=MethodInfo(
251
+ name="Rewrap",
252
+ service_name="kas.AccessService",
253
+ input=kas_dot_kas__pb2.RewrapRequest,
254
+ output=kas_dot_kas__pb2.RewrapResponse,
255
+ idempotency_level=IdempotencyLevel.UNKNOWN,
256
+ ),
257
+ headers=headers,
258
+ timeout_ms=timeout_ms,
259
+ )
@@ -0,0 +1,11 @@
1
+ """policy.actions protobuf definitions."""
2
+
3
+ from .actions_connect import (
4
+ ActionsServiceClient,
5
+ ActionsServiceClientSync,
6
+ )
7
+
8
+ __all__ = [
9
+ "ActionsServiceClient",
10
+ "ActionsServiceClientSync",
11
+ ]