otdf-python 0.5.0__tar.gz → 0.9.1__tar.gz

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 (315) hide show
  1. {otdf_python-0.5.0 → otdf_python-0.9.1}/PKG-INFO +4 -8
  2. {otdf_python-0.5.0 → otdf_python-0.9.1}/README.md +1 -1
  3. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/authorization/authorization_connect.py +5 -2
  4. otdf_python-0.9.1/_proto/otdf_python_proto/authorization/authorization_pb2.py +73 -0
  5. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/authorization/authorization_pb2.pyi +0 -1
  6. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/authorization/v2/authorization_connect.py +5 -2
  7. otdf_python-0.9.1/_proto/otdf_python_proto/authorization/v2/authorization_pb2.py +113 -0
  8. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/authorization/v2/authorization_pb2.pyi +16 -8
  9. otdf_python-0.9.1/_proto/otdf_python_proto/common/common_pb2.py +69 -0
  10. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/common/common_pb2.pyi +17 -0
  11. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/entityresolution/entity_resolution_connect.py +5 -2
  12. otdf_python-0.9.1/_proto/otdf_python_proto/entityresolution/entity_resolution_pb2.py +52 -0
  13. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/entityresolution/entity_resolution_pb2.pyi +1 -2
  14. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/entityresolution/v2/entity_resolution_connect.py +5 -2
  15. otdf_python-0.9.1/_proto/otdf_python_proto/entityresolution/v2/entity_resolution_pb2.py +58 -0
  16. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/entityresolution/v2/entity_resolution_pb2.pyi +17 -4
  17. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/kas/kas_connect.py +5 -2
  18. otdf_python-0.9.1/_proto/otdf_python_proto/kas/kas_pb2.py +93 -0
  19. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/kas/kas_pb2.pyi +0 -2
  20. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/policy/attributes/attributes_pb2_grpc.py +11 -4
  21. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/policy/namespaces/namespaces_pb2_grpc.py +4 -1
  22. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/policy/obligations/obligations_pb2_grpc.py +87 -1
  23. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/actions/actions_connect.py +5 -2
  24. otdf_python-0.9.1/_proto/otdf_python_proto/policy/actions/actions_pb2.py +93 -0
  25. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/actions/actions_pb2.pyi +18 -6
  26. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/attributes/attributes_connect.py +5 -2
  27. otdf_python-0.9.1/_proto/otdf_python_proto/policy/attributes/attributes_pb2.py +250 -0
  28. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/attributes/attributes_pb2.pyi +47 -11
  29. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/kasregistry/key_access_server_registry_connect.py +5 -2
  30. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.py +133 -114
  31. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.pyi +55 -7
  32. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/keymanagement/key_management_connect.py +5 -2
  33. otdf_python-0.9.1/_proto/otdf_python_proto/policy/keymanagement/key_management_pb2.py +85 -0
  34. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/keymanagement/key_management_pb2.pyi +12 -6
  35. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/namespaces/namespaces_connect.py +5 -2
  36. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/namespaces/namespaces_pb2.py +49 -35
  37. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/namespaces/namespaces_pb2.pyi +26 -2
  38. otdf_python-0.9.1/_proto/otdf_python_proto/policy/objects_pb2.py +164 -0
  39. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/objects_pb2.pyi +80 -26
  40. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/obligations/obligations_connect.py +143 -2
  41. otdf_python-0.9.1/_proto/otdf_python_proto/policy/obligations/obligations_pb2.py +215 -0
  42. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/obligations/obligations_pb2.pyi +101 -28
  43. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/registeredresources/registered_resources_connect.py +5 -2
  44. otdf_python-0.9.1/_proto/otdf_python_proto/policy/registeredresources/registered_resources_pb2.py +167 -0
  45. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/registeredresources/registered_resources_pb2.pyi +40 -6
  46. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/resourcemapping/resource_mapping_connect.py +5 -2
  47. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/selectors_pb2.py +3 -1
  48. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/selectors_pb2.pyi +10 -0
  49. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/subjectmapping/subject_mapping_connect.py +5 -2
  50. otdf_python-0.9.1/_proto/otdf_python_proto/policy/subjectmapping/subject_mapping_pb2.py +171 -0
  51. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/subjectmapping/subject_mapping_pb2.pyi +63 -8
  52. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/unsafe/unsafe_connect.py +5 -2
  53. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/unsafe/unsafe_pb2.py +44 -43
  54. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/unsafe/unsafe_pb2.pyi +5 -2
  55. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/wellknownconfiguration/wellknown_configuration_connect.py +5 -2
  56. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/wellknownconfiguration/wellknown_configuration_pb2.py +12 -13
  57. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/wellknownconfiguration/wellknown_configuration_pb2.pyi +0 -1
  58. otdf_python-0.9.1/hatch_build.py +34 -0
  59. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/auth_headers.py +1 -0
  60. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/kas_client.py +4 -0
  61. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/kas_connect_rpc_client.py +29 -28
  62. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/kas_info.py +1 -0
  63. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/key_type_constants.py +1 -0
  64. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/nanotdf_ecdsa_struct.py +1 -0
  65. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/policy_binding_serializer.py +1 -0
  66. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/sdk.py +2 -0
  67. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/sdk_builder.py +1 -1
  68. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/tdf_reader.py +1 -0
  69. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/token_source.py +1 -1
  70. otdf_python-0.9.1/pyproject.toml +70 -0
  71. otdf_python-0.5.0/.gemini/config.yaml +0 -4
  72. otdf_python-0.5.0/.github/check_entitlements.sh +0 -62
  73. otdf_python-0.5.0/.github/start_opentdf_docker.sh +0 -61
  74. otdf_python-0.5.0/.github/workflows/build-python.yaml +0 -39
  75. otdf_python-0.5.0/.github/workflows/platform-integration-test.yaml +0 -214
  76. otdf_python-0.5.0/.github/workflows/release-please.yaml +0 -139
  77. otdf_python-0.5.0/.github/workflows/test-suite.yaml +0 -141
  78. otdf_python-0.5.0/.pre-commit-config.yaml +0 -48
  79. otdf_python-0.5.0/.release-please-config-develop.json +0 -44
  80. otdf_python-0.5.0/.release-please-config.json +0 -42
  81. otdf_python-0.5.0/.release-please-manifest-develop.json +0 -3
  82. otdf_python-0.5.0/.release-please-manifest.json +0 -3
  83. otdf_python-0.5.0/.vscode/extensions.json +0 -5
  84. otdf_python-0.5.0/.vscode/settings.json +0 -8
  85. otdf_python-0.5.0/CHANGELOG.md +0 -102
  86. otdf_python-0.5.0/LICENSE +0 -21
  87. otdf_python-0.5.0/conftest.py +0 -66
  88. otdf_python-0.5.0/docs/CONNECT_RPC.md +0 -156
  89. otdf_python-0.5.0/docs/DEVELOPING.md +0 -95
  90. otdf_python-0.5.0/docs/LEGACY_VERSION.md +0 -20
  91. otdf_python-0.5.0/docs/RELEASES.md +0 -205
  92. otdf_python-0.5.0/otdf-python-proto/README.md +0 -186
  93. otdf_python-0.5.0/otdf-python-proto/buf.gen.yaml +0 -28
  94. otdf_python-0.5.0/otdf-python-proto/buf.lock +0 -12
  95. otdf_python-0.5.0/otdf-python-proto/buf.yaml +0 -24
  96. otdf_python-0.5.0/otdf-python-proto/proto-files/authorization/authorization.proto +0 -305
  97. otdf_python-0.5.0/otdf-python-proto/proto-files/authorization/v2/authorization.proto +0 -180
  98. otdf_python-0.5.0/otdf-python-proto/proto-files/common/common.proto +0 -41
  99. otdf_python-0.5.0/otdf-python-proto/proto-files/entity/entity.proto +0 -41
  100. otdf_python-0.5.0/otdf-python-proto/proto-files/entityresolution/entity_resolution.proto +0 -124
  101. otdf_python-0.5.0/otdf-python-proto/proto-files/entityresolution/v2/entity_resolution.proto +0 -46
  102. otdf_python-0.5.0/otdf-python-proto/proto-files/kas/kas.proto +0 -160
  103. otdf_python-0.5.0/otdf-python-proto/proto-files/logger/audit/test.proto +0 -40
  104. otdf_python-0.5.0/otdf-python-proto/proto-files/policy/actions/actions.proto +0 -108
  105. otdf_python-0.5.0/otdf-python-proto/proto-files/policy/attributes/attributes.proto +0 -464
  106. otdf_python-0.5.0/otdf-python-proto/proto-files/policy/kasregistry/key_access_server_registry.proto +0 -695
  107. otdf_python-0.5.0/otdf-python-proto/proto-files/policy/keymanagement/key_management.proto +0 -84
  108. otdf_python-0.5.0/otdf-python-proto/proto-files/policy/namespaces/namespaces.proto +0 -200
  109. otdf_python-0.5.0/otdf-python-proto/proto-files/policy/objects.proto +0 -600
  110. otdf_python-0.5.0/otdf-python-proto/proto-files/policy/obligations/obligations.proto +0 -260
  111. otdf_python-0.5.0/otdf-python-proto/proto-files/policy/registeredresources/registered_resources.proto +0 -330
  112. otdf_python-0.5.0/otdf-python-proto/proto-files/policy/resourcemapping/resource_mapping.proto +0 -276
  113. otdf_python-0.5.0/otdf-python-proto/proto-files/policy/selectors.proto +0 -70
  114. otdf_python-0.5.0/otdf-python-proto/proto-files/policy/subjectmapping/subject_mapping.proto +0 -215
  115. otdf_python-0.5.0/otdf-python-proto/proto-files/policy/unsafe/unsafe.proto +0 -216
  116. otdf_python-0.5.0/otdf-python-proto/proto-files/wellknownconfiguration/wellknown_configuration.proto +0 -23
  117. otdf_python-0.5.0/otdf-python-proto/pyproject.toml +0 -37
  118. otdf_python-0.5.0/otdf-python-proto/scripts/build_connect_proto.sh +0 -91
  119. otdf_python-0.5.0/otdf-python-proto/scripts/generate_connect_proto.py +0 -309
  120. otdf_python-0.5.0/otdf-python-proto/scripts/setup_connect_rpc.py +0 -26
  121. otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/authorization/authorization_pb2.py +0 -80
  122. otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/authorization/v2/authorization_pb2.py +0 -107
  123. otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/common/common_pb2.py +0 -52
  124. otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/entityresolution/entity_resolution_pb2.py +0 -57
  125. otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/entityresolution/v2/entity_resolution_pb2.py +0 -55
  126. otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/kas/kas_pb2.py +0 -103
  127. otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/policy/actions/actions_pb2.py +0 -75
  128. otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/policy/attributes/attributes_pb2.py +0 -234
  129. otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/policy/keymanagement/key_management_pb2.py +0 -79
  130. otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/policy/objects_pb2.py +0 -156
  131. otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/policy/obligations/__init__.py +0 -0
  132. otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/policy/obligations/obligations_pb2.py +0 -110
  133. otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/policy/registeredresources/registered_resources_pb2.py +0 -139
  134. otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/policy/subjectmapping/subject_mapping_pb2.py +0 -127
  135. otdf_python-0.5.0/otdf-python-proto/tests/__init__.py +0 -0
  136. otdf_python-0.5.0/otdf-python-proto/tests/test_generate_connect_proto.py +0 -355
  137. otdf_python-0.5.0/otdf-python-proto/tests/test_package_imports.py +0 -66
  138. otdf_python-0.5.0/otdf-python-proto/uv.lock +0 -465
  139. otdf_python-0.5.0/pyproject.toml +0 -115
  140. otdf_python-0.5.0/tests/__init__.py +0 -1
  141. otdf_python-0.5.0/tests/config_pydantic.py +0 -103
  142. otdf_python-0.5.0/tests/integration/conftest.py +0 -72
  143. otdf_python-0.5.0/tests/integration/otdfctl_only/test_otdfctl_generated_fixtures.py +0 -111
  144. otdf_python-0.5.0/tests/integration/otdfctl_to_python/test_cli_comparison.py +0 -174
  145. otdf_python-0.5.0/tests/integration/otdfctl_to_python/test_cli_decrypt.py +0 -182
  146. otdf_python-0.5.0/tests/integration/otdfctl_to_python/test_cli_inspect.py +0 -115
  147. otdf_python-0.5.0/tests/integration/otdfctl_to_python/test_nanotdf_cli_comparison.py +0 -370
  148. otdf_python-0.5.0/tests/integration/otdfctl_to_python/test_python_nanotdf_only.py +0 -103
  149. otdf_python-0.5.0/tests/integration/otdfctl_to_python/test_tdf_reader_integration.py +0 -267
  150. otdf_python-0.5.0/tests/integration/python_only/test_kas_client_integration.py +0 -242
  151. otdf_python-0.5.0/tests/integration/support_sdk.py +0 -74
  152. otdf_python-0.5.0/tests/integration/test_cli_integration.py +0 -292
  153. otdf_python-0.5.0/tests/integration/test_cli_tdf_validation.py +0 -561
  154. otdf_python-0.5.0/tests/integration/test_data/empty_file.txt +0 -0
  155. otdf_python-0.5.0/tests/integration/test_data/sample_binary.png +0 -0
  156. otdf_python-0.5.0/tests/integration/test_data/sample_text.txt +0 -5
  157. otdf_python-0.5.0/tests/integration/test_data/sample_with_attributes.txt +0 -4
  158. otdf_python-0.5.0/tests/integration/test_pe_interaction.py +0 -94
  159. otdf_python-0.5.0/tests/mock_crypto.py +0 -35
  160. otdf_python-0.5.0/tests/server_logs.py +0 -95
  161. otdf_python-0.5.0/tests/support_cli_args.py +0 -177
  162. otdf_python-0.5.0/tests/support_common.py +0 -89
  163. otdf_python-0.5.0/tests/support_otdfctl.py +0 -24
  164. otdf_python-0.5.0/tests/support_otdfctl_args.py +0 -276
  165. otdf_python-0.5.0/tests/test_address_normalizer.py +0 -71
  166. otdf_python-0.5.0/tests/test_aesgcm.py +0 -35
  167. otdf_python-0.5.0/tests/test_assertion_config.py +0 -56
  168. otdf_python-0.5.0/tests/test_asym_encryption.py +0 -12
  169. otdf_python-0.5.0/tests/test_autoconfigure_utils.py +0 -50
  170. otdf_python-0.5.0/tests/test_cli.py +0 -185
  171. otdf_python-0.5.0/tests/test_collection_store.py +0 -43
  172. otdf_python-0.5.0/tests/test_config.py +0 -35
  173. otdf_python-0.5.0/tests/test_crypto_utils.py +0 -38
  174. otdf_python-0.5.0/tests/test_ecdh.py +0 -433
  175. otdf_python-0.5.0/tests/test_eckeypair.py +0 -34
  176. otdf_python-0.5.0/tests/test_header.py +0 -41
  177. otdf_python-0.5.0/tests/test_inner_classes.py +0 -88
  178. otdf_python-0.5.0/tests/test_kas_allowlist.py +0 -333
  179. otdf_python-0.5.0/tests/test_kas_client.py +0 -511
  180. otdf_python-0.5.0/tests/test_kas_key_cache.py +0 -47
  181. otdf_python-0.5.0/tests/test_kas_key_management.py +0 -123
  182. otdf_python-0.5.0/tests/test_key_type.py +0 -38
  183. otdf_python-0.5.0/tests/test_log_collection.py +0 -38
  184. otdf_python-0.5.0/tests/test_manifest.py +0 -67
  185. otdf_python-0.5.0/tests/test_manifest_format.py +0 -100
  186. otdf_python-0.5.0/tests/test_nanotdf.py +0 -65
  187. otdf_python-0.5.0/tests/test_nanotdf_ecdh.py +0 -319
  188. otdf_python-0.5.0/tests/test_nanotdf_ecdsa_struct.py +0 -89
  189. otdf_python-0.5.0/tests/test_nanotdf_integration.py +0 -45
  190. otdf_python-0.5.0/tests/test_nanotdf_type.py +0 -53
  191. otdf_python-0.5.0/tests/test_policy_object.py +0 -45
  192. otdf_python-0.5.0/tests/test_sdk.py +0 -106
  193. otdf_python-0.5.0/tests/test_sdk_builder.py +0 -212
  194. otdf_python-0.5.0/tests/test_sdk_exceptions.py +0 -28
  195. otdf_python-0.5.0/tests/test_sdk_mock.py +0 -44
  196. otdf_python-0.5.0/tests/test_sdk_tdf_integration.py +0 -261
  197. otdf_python-0.5.0/tests/test_tdf.py +0 -62
  198. otdf_python-0.5.0/tests/test_tdf_key_management.py +0 -153
  199. otdf_python-0.5.0/tests/test_tdf_reader.py +0 -153
  200. otdf_python-0.5.0/tests/test_tdf_writer.py +0 -68
  201. otdf_python-0.5.0/tests/test_token_source.py +0 -42
  202. otdf_python-0.5.0/tests/test_url_normalization.py +0 -44
  203. otdf_python-0.5.0/tests/test_use_plaintext_flow.py +0 -98
  204. otdf_python-0.5.0/tests/test_validate_otdf_python.py +0 -188
  205. otdf_python-0.5.0/tests/test_version.py +0 -47
  206. otdf_python-0.5.0/tests/test_zip_reader.py +0 -78
  207. otdf_python-0.5.0/tests/test_zip_writer.py +0 -41
  208. otdf_python-0.5.0/uv.lock +0 -849
  209. {otdf_python-0.5.0 → otdf_python-0.9.1}/.gitignore +0 -0
  210. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/__init__.py +0 -0
  211. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/authorization/__init__.py +0 -0
  212. {otdf_python-0.5.0/otdf-python-proto/generated → otdf_python-0.9.1/_proto/otdf_python_proto/authorization/v2}/__init__.py +0 -0
  213. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/common/__init__.py +0 -0
  214. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/entity/__init__.py +0 -0
  215. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/entity/entity_pb2.py +0 -0
  216. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/entity/entity_pb2.pyi +0 -0
  217. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/entityresolution/__init__.py +0 -0
  218. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/authorization → otdf_python-0.9.1/_proto/otdf_python_proto/entityresolution}/v2/__init__.py +0 -0
  219. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/kas/__init__.py +0 -0
  220. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/__init__.py +0 -0
  221. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/entityresolution/v2 → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/authorization}/__init__.py +0 -0
  222. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/authorization/authorization_pb2_grpc.py +0 -0
  223. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/authorization → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/authorization/v2}/__init__.py +0 -0
  224. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/authorization/v2/authorization_pb2_grpc.py +0 -0
  225. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/authorization/v2 → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/common}/__init__.py +0 -0
  226. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/common/common_pb2_grpc.py +0 -0
  227. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/common → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/entity}/__init__.py +0 -0
  228. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/entity/entity_pb2_grpc.py +0 -0
  229. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/entity → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/entityresolution}/__init__.py +0 -0
  230. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/entityresolution/entity_resolution_pb2_grpc.py +0 -0
  231. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/entityresolution → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/entityresolution/v2}/__init__.py +0 -0
  232. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/entityresolution/v2/entity_resolution_pb2_grpc.py +0 -0
  233. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/entityresolution/v2 → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/kas}/__init__.py +0 -0
  234. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/kas/kas_pb2_grpc.py +0 -0
  235. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/kas → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/logger}/__init__.py +0 -0
  236. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/logger → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/logger/audit}/__init__.py +0 -0
  237. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/logger/audit/test_pb2_grpc.py +0 -0
  238. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/logger/audit → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/policy}/__init__.py +0 -0
  239. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/policy → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/policy/actions}/__init__.py +0 -0
  240. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/policy/actions/actions_pb2_grpc.py +0 -0
  241. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/policy/actions → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/policy/attributes}/__init__.py +0 -0
  242. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/policy/attributes → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/policy/kasregistry}/__init__.py +0 -0
  243. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/policy/kasregistry/key_access_server_registry_pb2_grpc.py +0 -0
  244. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/policy/kasregistry → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/policy/keymanagement}/__init__.py +0 -0
  245. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/policy/keymanagement/key_management_pb2_grpc.py +0 -0
  246. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/policy/keymanagement → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/policy/namespaces}/__init__.py +0 -0
  247. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/policy/objects_pb2_grpc.py +0 -0
  248. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/policy/namespaces → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/policy/obligations}/__init__.py +0 -0
  249. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/policy/obligations → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/policy/registeredresources}/__init__.py +0 -0
  250. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/policy/registeredresources/registered_resources_pb2_grpc.py +0 -0
  251. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/policy/registeredresources → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/policy/resourcemapping}/__init__.py +0 -0
  252. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/policy/resourcemapping/resource_mapping_pb2_grpc.py +0 -0
  253. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/policy/selectors_pb2_grpc.py +0 -0
  254. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/policy/resourcemapping → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/policy/subjectmapping}/__init__.py +0 -0
  255. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/policy/subjectmapping/subject_mapping_pb2_grpc.py +0 -0
  256. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/policy/subjectmapping → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/policy/unsafe}/__init__.py +0 -0
  257. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/policy/unsafe/unsafe_pb2_grpc.py +0 -0
  258. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/policy/unsafe → otdf_python-0.9.1/_proto/otdf_python_proto/legacy_grpc/wellknownconfiguration}/__init__.py +0 -0
  259. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/legacy_grpc/wellknownconfiguration/wellknown_configuration_pb2_grpc.py +0 -0
  260. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/logger/__init__.py +0 -0
  261. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/legacy_grpc/wellknownconfiguration → otdf_python-0.9.1/_proto/otdf_python_proto/logger/audit}/__init__.py +0 -0
  262. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/logger/audit/test_pb2.py +0 -0
  263. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/logger/audit/test_pb2.pyi +0 -0
  264. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/__init__.py +0 -0
  265. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/actions/__init__.py +0 -0
  266. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/attributes/__init__.py +0 -0
  267. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/kasregistry/__init__.py +0 -0
  268. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/keymanagement/__init__.py +0 -0
  269. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/namespaces/__init__.py +0 -0
  270. {otdf_python-0.5.0/otdf-python-proto/src/otdf_python_proto/logger/audit → otdf_python-0.9.1/_proto/otdf_python_proto/policy/obligations}/__init__.py +0 -0
  271. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/registeredresources/__init__.py +0 -0
  272. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/resourcemapping/__init__.py +0 -0
  273. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/resourcemapping/resource_mapping_pb2.py +0 -0
  274. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/resourcemapping/resource_mapping_pb2.pyi +0 -0
  275. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/subjectmapping/__init__.py +0 -0
  276. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/policy/unsafe/__init__.py +0 -0
  277. {otdf_python-0.5.0/otdf-python-proto/src → otdf_python-0.9.1/_proto}/otdf_python_proto/wellknownconfiguration/__init__.py +0 -0
  278. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/__init__.py +0 -0
  279. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/__main__.py +0 -0
  280. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/address_normalizer.py +0 -0
  281. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/aesgcm.py +0 -0
  282. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/assertion_config.py +0 -0
  283. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/asym_crypto.py +0 -0
  284. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/autoconfigure_utils.py +0 -0
  285. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/cli.py +0 -0
  286. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/collection_store.py +0 -0
  287. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/collection_store_impl.py +0 -0
  288. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/config.py +0 -0
  289. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/connect_client.py +0 -0
  290. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/constants.py +0 -0
  291. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/crypto_utils.py +0 -0
  292. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/dpop.py +0 -0
  293. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/ecc_constants.py +0 -0
  294. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/ecc_mode.py +0 -0
  295. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/ecdh.py +0 -0
  296. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/eckeypair.py +0 -0
  297. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/header.py +0 -0
  298. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/invalid_zip_exception.py +0 -0
  299. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/kas_allowlist.py +0 -0
  300. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/kas_key_cache.py +0 -0
  301. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/key_type.py +0 -0
  302. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/manifest.py +0 -0
  303. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/nanotdf.py +0 -0
  304. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/nanotdf_type.py +0 -0
  305. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/policy_info.py +0 -0
  306. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/policy_object.py +0 -0
  307. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/policy_stub.py +0 -0
  308. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/resource_locator.py +0 -0
  309. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/sdk_exceptions.py +0 -0
  310. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/symmetric_and_payload_config.py +0 -0
  311. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/tdf.py +0 -0
  312. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/tdf_writer.py +0 -0
  313. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/version.py +0 -0
  314. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/zip_reader.py +0 -0
  315. {otdf_python-0.5.0/src → otdf_python-0.9.1}/otdf_python/zip_writer.py +0 -0
@@ -1,12 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: otdf-python
3
- Version: 0.5.0
3
+ Version: 0.9.1
4
4
  Summary: Unofficial OpenTDF SDK for Python
5
5
  Project-URL: Homepage, https://github.com/b-long/opentdf-python-sdk
6
6
  Project-URL: Repository, https://github.com/b-long/opentdf-python-sdk
7
7
  Project-URL: Issues, https://github.com/b-long/opentdf-python-sdk/issues
8
8
  Author-email: b-long <b-long@users.noreply.github.com>
9
- License-File: LICENSE
10
9
  Classifier: Development Status :: 4 - Beta
11
10
  Classifier: Intended Audience :: Developers
12
11
  Classifier: License :: OSI Approved :: MIT License
@@ -22,15 +21,12 @@ Classifier: Topic :: Security :: Cryptography
22
21
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
22
  Classifier: Typing :: Typed
24
23
  Requires-Python: >=3.10
25
- Requires-Dist: connect-python<0.7,>=0.6.0
24
+ Requires-Dist: connect-python>=0.9.0
26
25
  Requires-Dist: cryptography>=45.0.4
27
26
  Requires-Dist: grpcio-status>=1.74.0
28
- Requires-Dist: grpcio-tools>=1.74.0
29
27
  Requires-Dist: grpcio>=1.74.0
30
- Requires-Dist: httpx>=0.28.1
28
+ Requires-Dist: httpx2>=2.3.0
31
29
  Requires-Dist: protobuf>=6.31.1
32
- Requires-Dist: protoc-gen-connect-python<0.7,>=0.6.0
33
- Requires-Dist: protoc-gen-openapiv2>=0.0.1
34
30
  Requires-Dist: pyjwt>=2.10.1
35
31
  Requires-Dist: typing-extensions>=4.14.1
36
32
  Description-Content-Type: text/markdown
@@ -137,7 +133,7 @@ with open("decrypted.txt", "wb") as f:
137
133
  ## Project Structure
138
134
 
139
135
  ```
140
- src/otdf_python/
136
+ packages/otdf-python/src/otdf_python/
141
137
  ├── sdk.py # Main SDK interface
142
138
  ├── config.py # Configuration management
143
139
  ├── tdf.py # TDF format handling
@@ -100,7 +100,7 @@ with open("decrypted.txt", "wb") as f:
100
100
  ## Project Structure
101
101
 
102
102
  ```
103
- src/otdf_python/
103
+ packages/otdf-python/src/otdf_python/
104
104
  ├── sdk.py # Main SDK interface
105
105
  ├── config.py # Configuration management
106
106
  ├── tdf.py # TDF format handling
@@ -7,6 +7,7 @@ from typing import Protocol
7
7
 
8
8
  from connectrpc.client import ConnectClient, ConnectClientSync
9
9
  from connectrpc.code import Code
10
+ from connectrpc.compression import Compression
10
11
  from connectrpc.errors import ConnectError
11
12
  from connectrpc.interceptor import Interceptor, InterceptorSync
12
13
  from connectrpc.method import IdempotencyLevel, MethodInfo
@@ -27,7 +28,7 @@ class AuthorizationService(Protocol):
27
28
 
28
29
 
29
30
  class AuthorizationServiceASGIApplication(ConnectASGIApplication[AuthorizationService]):
30
- def __init__(self, service: AuthorizationService | AsyncGenerator[AuthorizationService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None:
31
+ def __init__(self, service: AuthorizationService | AsyncGenerator[AuthorizationService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
31
32
  super().__init__(
32
33
  service=service,
33
34
  endpoints=lambda svc: {
@@ -64,6 +65,7 @@ class AuthorizationServiceASGIApplication(ConnectASGIApplication[AuthorizationSe
64
65
  },
65
66
  interceptors=interceptors,
66
67
  read_max_bytes=read_max_bytes,
68
+ compressions=compressions,
67
69
  )
68
70
 
69
71
  @property
@@ -144,7 +146,7 @@ class AuthorizationServiceSync(Protocol):
144
146
 
145
147
 
146
148
  class AuthorizationServiceWSGIApplication(ConnectWSGIApplication):
147
- def __init__(self, service: AuthorizationServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None:
149
+ def __init__(self, service: AuthorizationServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
148
150
  super().__init__(
149
151
  endpoints={
150
152
  "/authorization.AuthorizationService/GetDecisions": EndpointSync.unary(
@@ -180,6 +182,7 @@ class AuthorizationServiceWSGIApplication(ConnectWSGIApplication):
180
182
  },
181
183
  interceptors=interceptors,
182
184
  read_max_bytes=read_max_bytes,
185
+ compressions=compressions,
183
186
  )
184
187
 
185
188
  @property
@@ -0,0 +1,73 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: authorization/authorization.proto
5
+ # Protobuf Python Version: 6.31.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 6,
15
+ 31,
16
+ 1,
17
+ '',
18
+ 'authorization/authorization.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+ from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
26
+ from policy import objects_pb2 as policy_dot_objects__pb2
27
+
28
+
29
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!authorization/authorization.proto\x12\rauthorization\x1a\x19google/protobuf/any.proto\x1a\x14policy/objects.proto\")\n\x05Token\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n\x03jwt\x18\x02 \x01(\tR\x03jwt\"\xc9\x03\n\x06\x45ntity\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12%\n\remail_address\x18\x02 \x01(\tH\x00R\x0c\x65mailAddress\x12\x1d\n\tuser_name\x18\x03 \x01(\tH\x00R\x08userName\x12,\n\x11remote_claims_url\x18\x04 \x01(\tH\x00R\x0fremoteClaimsUrl\x12\x14\n\x04uuid\x18\x05 \x01(\tH\x00R\x04uuid\x12.\n\x06\x63laims\x18\x06 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00R\x06\x63laims\x12\x35\n\x06\x63ustom\x18\x07 \x01(\x0b\x32\x1b.authorization.EntityCustomH\x00R\x06\x63ustom\x12\x1d\n\tclient_id\x18\x08 \x01(\tH\x00R\x08\x63lientId\x12:\n\x08\x63\x61tegory\x18\t \x01(\x0e\x32\x1e.authorization.Entity.CategoryR\x08\x63\x61tegory\"T\n\x08\x43\x61tegory\x12\x18\n\x14\x43\x41TEGORY_UNSPECIFIED\x10\x00\x12\x14\n\x10\x43\x41TEGORY_SUBJECT\x10\x01\x12\x18\n\x14\x43\x41TEGORY_ENVIRONMENT\x10\x02\x42\r\n\x0b\x65ntity_type\"B\n\x0c\x45ntityCustom\x12\x32\n\textension\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyR\textension\"P\n\x0b\x45ntityChain\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x31\n\x08\x65ntities\x18\x02 \x03(\x0b\x32\x15.authorization.EntityR\x08\x65ntities\"\xcf\x01\n\x0f\x44\x65\x63isionRequest\x12(\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x0e.policy.ActionR\x07\x61\x63tions\x12?\n\rentity_chains\x18\x02 \x03(\x0b\x32\x1a.authorization.EntityChainR\x0c\x65ntityChains\x12Q\n\x13resource_attributes\x18\x03 \x03(\x0b\x32 .authorization.ResourceAttributeR\x12resourceAttributes\"\xce\x02\n\x10\x44\x65\x63isionResponse\x12&\n\x0f\x65ntity_chain_id\x18\x01 \x01(\tR\rentityChainId\x12\x34\n\x16resource_attributes_id\x18\x02 \x01(\tR\x14resourceAttributesId\x12&\n\x06\x61\x63tion\x18\x03 \x01(\x0b\x32\x0e.policy.ActionR\x06\x61\x63tion\x12\x44\n\x08\x64\x65\x63ision\x18\x04 \x01(\x0e\x32(.authorization.DecisionResponse.DecisionR\x08\x64\x65\x63ision\x12 \n\x0bobligations\x18\x05 \x03(\tR\x0bobligations\"L\n\x08\x44\x65\x63ision\x12\x18\n\x14\x44\x45\x43ISION_UNSPECIFIED\x10\x00\x12\x11\n\rDECISION_DENY\x10\x01\x12\x13\n\x0f\x44\x45\x43ISION_PERMIT\x10\x02\"b\n\x13GetDecisionsRequest\x12K\n\x11\x64\x65\x63ision_requests\x18\x01 \x03(\x0b\x32\x1e.authorization.DecisionRequestR\x10\x64\x65\x63isionRequests\"f\n\x14GetDecisionsResponse\x12N\n\x12\x64\x65\x63ision_responses\x18\x01 \x03(\x0b\x32\x1f.authorization.DecisionResponseR\x11\x64\x65\x63isionResponses\"\xfa\x01\n\x16GetEntitlementsRequest\x12\x31\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x15.authorization.EntityR\x08\x65ntities\x12;\n\x05scope\x18\x02 \x01(\x0b\x32 .authorization.ResourceAttributeH\x00R\x05scope\x88\x01\x01\x12\x45\n\x1cwith_comprehensive_hierarchy\x18\x03 \x01(\x08H\x01R\x1awithComprehensiveHierarchy\x88\x01\x01\x42\x08\n\x06_scopeB\x1f\n\x1d_with_comprehensive_hierarchy\"c\n\x12\x45ntityEntitlements\x12\x1b\n\tentity_id\x18\x01 \x01(\tR\x08\x65ntityId\x12\x30\n\x14\x61ttribute_value_fqns\x18\x02 \x03(\tR\x12\x61ttributeValueFqns\"{\n\x11ResourceAttribute\x12\x34\n\x16resource_attributes_id\x18\x01 \x01(\tR\x14resourceAttributesId\x12\x30\n\x14\x61ttribute_value_fqns\x18\x02 \x03(\tR\x12\x61ttributeValueFqns\"`\n\x17GetEntitlementsResponse\x12\x45\n\x0c\x65ntitlements\x18\x01 \x03(\x0b\x32!.authorization.EntityEntitlementsR\x0c\x65ntitlements\"\xc1\x01\n\x14TokenDecisionRequest\x12(\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x0e.policy.ActionR\x07\x61\x63tions\x12,\n\x06tokens\x18\x02 \x03(\x0b\x32\x14.authorization.TokenR\x06tokens\x12Q\n\x13resource_attributes\x18\x03 \x03(\x0b\x32 .authorization.ResourceAttributeR\x12resourceAttributes\"n\n\x1aGetDecisionsByTokenRequest\x12P\n\x11\x64\x65\x63ision_requests\x18\x01 \x03(\x0b\x32#.authorization.TokenDecisionRequestR\x10\x64\x65\x63isionRequests\"m\n\x1bGetDecisionsByTokenResponse\x12N\n\x12\x64\x65\x63ision_responses\x18\x01 \x03(\x0b\x32\x1f.authorization.DecisionResponseR\x11\x64\x65\x63isionResponses2\xc5\x02\n\x14\x41uthorizationService\x12Y\n\x0cGetDecisions\x12\".authorization.GetDecisionsRequest\x1a#.authorization.GetDecisionsResponse\"\x00\x12n\n\x13GetDecisionsByToken\x12).authorization.GetDecisionsByTokenRequest\x1a*.authorization.GetDecisionsByTokenResponse\"\x00\x12\x62\n\x0fGetEntitlements\x12%.authorization.GetEntitlementsRequest\x1a&.authorization.GetEntitlementsResponse\"\x00\x42{\n\x11\x63om.authorizationB\x12\x41uthorizationProtoP\x01\xa2\x02\x03\x41XX\xaa\x02\rAuthorization\xca\x02\rAuthorization\xe2\x02\x19\x41uthorization\\GPBMetadata\xea\x02\rAuthorizationb\x06proto3')
30
+
31
+ _globals = globals()
32
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
33
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'authorization.authorization_pb2', _globals)
34
+ if not _descriptor._USE_C_DESCRIPTORS:
35
+ _globals['DESCRIPTOR']._loaded_options = None
36
+ _globals['DESCRIPTOR']._serialized_options = b'\n\021com.authorizationB\022AuthorizationProtoP\001\242\002\003AXX\252\002\rAuthorization\312\002\rAuthorization\342\002\031Authorization\\GPBMetadata\352\002\rAuthorization'
37
+ _globals['_TOKEN']._serialized_start=101
38
+ _globals['_TOKEN']._serialized_end=142
39
+ _globals['_ENTITY']._serialized_start=145
40
+ _globals['_ENTITY']._serialized_end=602
41
+ _globals['_ENTITY_CATEGORY']._serialized_start=503
42
+ _globals['_ENTITY_CATEGORY']._serialized_end=587
43
+ _globals['_ENTITYCUSTOM']._serialized_start=604
44
+ _globals['_ENTITYCUSTOM']._serialized_end=670
45
+ _globals['_ENTITYCHAIN']._serialized_start=672
46
+ _globals['_ENTITYCHAIN']._serialized_end=752
47
+ _globals['_DECISIONREQUEST']._serialized_start=755
48
+ _globals['_DECISIONREQUEST']._serialized_end=962
49
+ _globals['_DECISIONRESPONSE']._serialized_start=965
50
+ _globals['_DECISIONRESPONSE']._serialized_end=1299
51
+ _globals['_DECISIONRESPONSE_DECISION']._serialized_start=1223
52
+ _globals['_DECISIONRESPONSE_DECISION']._serialized_end=1299
53
+ _globals['_GETDECISIONSREQUEST']._serialized_start=1301
54
+ _globals['_GETDECISIONSREQUEST']._serialized_end=1399
55
+ _globals['_GETDECISIONSRESPONSE']._serialized_start=1401
56
+ _globals['_GETDECISIONSRESPONSE']._serialized_end=1503
57
+ _globals['_GETENTITLEMENTSREQUEST']._serialized_start=1506
58
+ _globals['_GETENTITLEMENTSREQUEST']._serialized_end=1756
59
+ _globals['_ENTITYENTITLEMENTS']._serialized_start=1758
60
+ _globals['_ENTITYENTITLEMENTS']._serialized_end=1857
61
+ _globals['_RESOURCEATTRIBUTE']._serialized_start=1859
62
+ _globals['_RESOURCEATTRIBUTE']._serialized_end=1982
63
+ _globals['_GETENTITLEMENTSRESPONSE']._serialized_start=1984
64
+ _globals['_GETENTITLEMENTSRESPONSE']._serialized_end=2080
65
+ _globals['_TOKENDECISIONREQUEST']._serialized_start=2083
66
+ _globals['_TOKENDECISIONREQUEST']._serialized_end=2276
67
+ _globals['_GETDECISIONSBYTOKENREQUEST']._serialized_start=2278
68
+ _globals['_GETDECISIONSBYTOKENREQUEST']._serialized_end=2388
69
+ _globals['_GETDECISIONSBYTOKENRESPONSE']._serialized_start=2390
70
+ _globals['_GETDECISIONSBYTOKENRESPONSE']._serialized_end=2499
71
+ _globals['_AUTHORIZATIONSERVICE']._serialized_start=2502
72
+ _globals['_AUTHORIZATIONSERVICE']._serialized_end=2827
73
+ # @@protoc_insertion_point(module_scope)
@@ -1,4 +1,3 @@
1
- from google.api import annotations_pb2 as _annotations_pb2
2
1
  from google.protobuf import any_pb2 as _any_pb2
3
2
  from policy import objects_pb2 as _objects_pb2
4
3
  from google.protobuf.internal import containers as _containers
@@ -7,6 +7,7 @@ from typing import Protocol
7
7
 
8
8
  from connectrpc.client import ConnectClient, ConnectClientSync
9
9
  from connectrpc.code import Code
10
+ from connectrpc.compression import Compression
10
11
  from connectrpc.errors import ConnectError
11
12
  from connectrpc.interceptor import Interceptor, InterceptorSync
12
13
  from connectrpc.method import IdempotencyLevel, MethodInfo
@@ -30,7 +31,7 @@ class AuthorizationService(Protocol):
30
31
 
31
32
 
32
33
  class AuthorizationServiceASGIApplication(ConnectASGIApplication[AuthorizationService]):
33
- def __init__(self, service: AuthorizationService | AsyncGenerator[AuthorizationService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None:
34
+ def __init__(self, service: AuthorizationService | AsyncGenerator[AuthorizationService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
34
35
  super().__init__(
35
36
  service=service,
36
37
  endpoints=lambda svc: {
@@ -77,6 +78,7 @@ class AuthorizationServiceASGIApplication(ConnectASGIApplication[AuthorizationSe
77
78
  },
78
79
  interceptors=interceptors,
79
80
  read_max_bytes=read_max_bytes,
81
+ compressions=compressions,
80
82
  )
81
83
 
82
84
  @property
@@ -179,7 +181,7 @@ class AuthorizationServiceSync(Protocol):
179
181
 
180
182
 
181
183
  class AuthorizationServiceWSGIApplication(ConnectWSGIApplication):
182
- def __init__(self, service: AuthorizationServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None:
184
+ def __init__(self, service: AuthorizationServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
183
185
  super().__init__(
184
186
  endpoints={
185
187
  "/authorization.v2.AuthorizationService/GetDecision": EndpointSync.unary(
@@ -225,6 +227,7 @@ class AuthorizationServiceWSGIApplication(ConnectWSGIApplication):
225
227
  },
226
228
  interceptors=interceptors,
227
229
  read_max_bytes=read_max_bytes,
230
+ compressions=compressions,
228
231
  )
229
232
 
230
233
  @property
@@ -0,0 +1,113 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: authorization/v2/authorization.proto
5
+ # Protobuf Python Version: 6.31.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 6,
15
+ 31,
16
+ 1,
17
+ '',
18
+ 'authorization/v2/authorization.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+ from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2
26
+ from entity import entity_pb2 as entity_dot_entity__pb2
27
+ from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2
28
+ from policy import objects_pb2 as policy_dot_objects__pb2
29
+
30
+
31
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$authorization/v2/authorization.proto\x12\x10\x61uthorization.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x13\x65ntity/entity.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x14policy/objects.proto\"\x87\x05\n\x10\x45ntityIdentifier\x12\xe1\x01\n\x0c\x65ntity_chain\x18\x01 \x01(\x0b\x32\x13.entity.EntityChainB\xa6\x01\xbaH\xa2\x01\xba\x01\x9e\x01\n\x15\x65ntity_chain_required\x12\x37\x65ntities must be provided and between 1 and 10 in count\x1aLhas(this.entities) && this.entities.size() > 0 && this.entities.size() <= 10H\x00R\x0b\x65ntityChain\x12O\n\x1dregistered_resource_value_fqn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x1aregisteredResourceValueFqn\x12{\n\x05token\x18\x03 \x01(\x0b\x32\r.entity.TokenBT\xbaHQ\xba\x01N\n\x0etoken_required\x12\x16token must be provided\x1a$has(this.jwt) && this.jwt.size() > 0H\x00R\x05token\x12\xab\x01\n\x12with_request_token\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB_\xbaH\\\xba\x01Y\n\x1fwith_request_token_must_be_true\x12(with_request_token must be true when set\x1a\x0cthis == trueH\x00R\x10withRequestTokenB\x13\n\nidentifier\x12\x05\xbaH\x02\x08\x01\"\x81\x03\n\x12\x45ntityEntitlements\x12!\n\x0c\x65phemeral_id\x18\x01 \x01(\tR\x0b\x65phemeralId\x12\x8b\x01\n\x1f\x61\x63tions_per_attribute_value_fqn\x18\x02 \x03(\x0b\x32\x45.authorization.v2.EntityEntitlements.ActionsPerAttributeValueFqnEntryR\x1b\x61\x63tionsPerAttributeValueFqn\x1a\x37\n\x0b\x41\x63tionsList\x12(\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x0e.policy.ActionR\x07\x61\x63tions\x1a\x80\x01\n ActionsPerAttributeValueFqnEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x46\n\x05value\x18\x02 \x01(\x0b\x32\x30.authorization.v2.EntityEntitlements.ActionsListR\x05value:\x02\x38\x01\"\xe4\x03\n\x08Resource\x12!\n\x0c\x65phemeral_id\x18\x01 \x01(\tR\x0b\x65phemeralId\x12\xb0\x02\n\x10\x61ttribute_values\x18\x02 \x01(\x0b\x32*.authorization.v2.Resource.AttributeValuesB\xd6\x01\xbaH\xd2\x01\xba\x01\xce\x01\n\x19\x61ttribute_values_required\x12\\if provided, resource.attribute_values must be between 1 and 20 in count with all valid FQNs\x1aSthis.fqns.size() > 0 && this.fqns.size() <= 20 && this.fqns.all(item, item.isUri())H\x00R\x0f\x61ttributeValues\x12O\n\x1dregistered_resource_value_fqn\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x1aregisteredResourceValueFqn\x1a%\n\x0f\x41ttributeValues\x12\x12\n\x04\x66qns\x18\x01 \x03(\tR\x04\x66qnsB\n\n\x08resource\"\xb1\x01\n\x10ResourceDecision\x12\x32\n\x15\x65phemeral_resource_id\x18\x01 \x01(\tR\x13\x65phemeralResourceId\x12\x36\n\x08\x64\x65\x63ision\x18\x02 \x01(\x0e\x32\x1a.authorization.v2.DecisionR\x08\x64\x65\x63ision\x12\x31\n\x14required_obligations\x18\x03 \x03(\tR\x13requiredObligations\"\xd6\x04\n\x12GetDecisionRequest\x12W\n\x11\x65ntity_identifier\x18\x01 \x01(\x0b\x32\".authorization.v2.EntityIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x10\x65ntityIdentifier\x12.\n\x06\x61\x63tion\x18\x02 \x01(\x0b\x32\x0e.policy.ActionB\x06\xbaH\x03\xc8\x01\x01R\x06\x61\x63tion\x12>\n\x08resource\x18\x03 \x01(\x0b\x32\x1a.authorization.v2.ResourceB\x06\xbaH\x03\xc8\x01\x01R\x08resource\x12\x8f\x02\n\x1b\x66ulfillable_obligation_fqns\x18\x04 \x03(\tB\xce\x01\xbaH\xca\x01\xba\x01\xc6\x01\n\x1bobligation_value_fqns_valid\x12^if provided, fulfillable_obligation_fqns must be between 1 and 50 in count with all valid FQNs\x1aGthis.size() == 0 || (this.size() <= 50 && this.all(item, item.isUri()))R\x19\x66ulfillableObligationFqns:e\xbaHb\x1a`\n)get_decision_request.action_name_required\x12\x1c\x61\x63tion.name must be provided\x1a\x15has(this.action.name)\"U\n\x13GetDecisionResponse\x12>\n\x08\x64\x65\x63ision\x18\x01 \x01(\x0b\x32\".authorization.v2.ResourceDecisionR\x08\x64\x65\x63ision\"\xf0\x04\n\x1fGetDecisionMultiResourceRequest\x12W\n\x11\x65ntity_identifier\x18\x01 \x01(\x0b\x32\".authorization.v2.EntityIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x10\x65ntityIdentifier\x12.\n\x06\x61\x63tion\x18\x02 \x01(\x0b\x32\x0e.policy.ActionB\x06\xbaH\x03\xc8\x01\x01R\x06\x61\x63tion\x12\x45\n\tresources\x18\x03 \x03(\x0b\x32\x1a.authorization.v2.ResourceB\x0b\xbaH\x08\x92\x01\x05\x08\x01\x10\xe8\x07R\tresources\x12\x8f\x02\n\x1b\x66ulfillable_obligation_fqns\x18\x04 \x03(\tB\xce\x01\xbaH\xca\x01\xba\x01\xc6\x01\n\x1bobligation_value_fqns_valid\x12^if provided, fulfillable_obligation_fqns must be between 1 and 50 in count with all valid FQNs\x1aGthis.size() == 0 || (this.size() <= 50 && this.all(item, item.isUri()))R\x19\x66ulfillableObligationFqns:k\xbaHh\x1a\x66\n/get_decision_multi_request.action_name_required\x12\x1c\x61\x63tion.name must be provided\x1a\x15has(this.action.name)\"\xb6\x01\n GetDecisionMultiResourceResponse\x12?\n\rall_permitted\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x0c\x61llPermitted\x12Q\n\x12resource_decisions\x18\x02 \x03(\x0b\x32\".authorization.v2.ResourceDecisionR\x11resourceDecisions\"\x85\x01\n\x16GetDecisionBulkRequest\x12k\n\x11\x64\x65\x63ision_requests\x18\x01 \x03(\x0b\x32\x31.authorization.v2.GetDecisionMultiResourceRequestB\x0b\xbaH\x08\x92\x01\x05\x08\x01\x10\xc8\x01R\x10\x64\x65\x63isionRequests\"|\n\x17GetDecisionBulkResponse\x12\x61\n\x12\x64\x65\x63ision_responses\x18\x01 \x03(\x0b\x32\x32.authorization.v2.GetDecisionMultiResourceResponseR\x11\x64\x65\x63isionResponses\"\xd9\x01\n\x16GetEntitlementsRequest\x12W\n\x11\x65ntity_identifier\x18\x01 \x01(\x0b\x32\".authorization.v2.EntityIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x10\x65ntityIdentifier\x12\x45\n\x1cwith_comprehensive_hierarchy\x18\x02 \x01(\x08H\x00R\x1awithComprehensiveHierarchy\x88\x01\x01\x42\x1f\n\x1d_with_comprehensive_hierarchy\"c\n\x17GetEntitlementsResponse\x12H\n\x0c\x65ntitlements\x18\x01 \x03(\x0b\x32$.authorization.v2.EntityEntitlementsR\x0c\x65ntitlements*L\n\x08\x44\x65\x63ision\x12\x18\n\x14\x44\x45\x43ISION_UNSPECIFIED\x10\x00\x12\x11\n\rDECISION_DENY\x10\x01\x12\x13\n\x0f\x44\x45\x43ISION_PERMIT\x10\x02\x32\xce\x03\n\x14\x41uthorizationService\x12\\\n\x0bGetDecision\x12$.authorization.v2.GetDecisionRequest\x1a%.authorization.v2.GetDecisionResponse\"\x00\x12\x83\x01\n\x18GetDecisionMultiResource\x12\x31.authorization.v2.GetDecisionMultiResourceRequest\x1a\x32.authorization.v2.GetDecisionMultiResourceResponse\"\x00\x12h\n\x0fGetDecisionBulk\x12(.authorization.v2.GetDecisionBulkRequest\x1a).authorization.v2.GetDecisionBulkResponse\"\x00\x12h\n\x0fGetEntitlements\x12(.authorization.v2.GetEntitlementsRequest\x1a).authorization.v2.GetEntitlementsResponse\"\x00\x42\x8b\x01\n\x14\x63om.authorization.v2B\x12\x41uthorizationProtoP\x01\xa2\x02\x03\x41XX\xaa\x02\x10\x41uthorization.V2\xca\x02\x10\x41uthorization\\V2\xe2\x02\x1c\x41uthorization\\V2\\GPBMetadata\xea\x02\x11\x41uthorization::V2b\x06proto3')
32
+
33
+ _globals = globals()
34
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
35
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'authorization.v2.authorization_pb2', _globals)
36
+ if not _descriptor._USE_C_DESCRIPTORS:
37
+ _globals['DESCRIPTOR']._loaded_options = None
38
+ _globals['DESCRIPTOR']._serialized_options = b'\n\024com.authorization.v2B\022AuthorizationProtoP\001\242\002\003AXX\252\002\020Authorization.V2\312\002\020Authorization\\V2\342\002\034Authorization\\V2\\GPBMetadata\352\002\021Authorization::V2'
39
+ _globals['_ENTITYIDENTIFIER'].oneofs_by_name['identifier']._loaded_options = None
40
+ _globals['_ENTITYIDENTIFIER'].oneofs_by_name['identifier']._serialized_options = b'\272H\002\010\001'
41
+ _globals['_ENTITYIDENTIFIER'].fields_by_name['entity_chain']._loaded_options = None
42
+ _globals['_ENTITYIDENTIFIER'].fields_by_name['entity_chain']._serialized_options = b'\272H\242\001\272\001\236\001\n\025entity_chain_required\0227entities must be provided and between 1 and 10 in count\032Lhas(this.entities) && this.entities.size() > 0 && this.entities.size() <= 10'
43
+ _globals['_ENTITYIDENTIFIER'].fields_by_name['registered_resource_value_fqn']._loaded_options = None
44
+ _globals['_ENTITYIDENTIFIER'].fields_by_name['registered_resource_value_fqn']._serialized_options = b'\272H\007r\005\020\001\210\001\001'
45
+ _globals['_ENTITYIDENTIFIER'].fields_by_name['token']._loaded_options = None
46
+ _globals['_ENTITYIDENTIFIER'].fields_by_name['token']._serialized_options = b'\272HQ\272\001N\n\016token_required\022\026token must be provided\032$has(this.jwt) && this.jwt.size() > 0'
47
+ _globals['_ENTITYIDENTIFIER'].fields_by_name['with_request_token']._loaded_options = None
48
+ _globals['_ENTITYIDENTIFIER'].fields_by_name['with_request_token']._serialized_options = b'\272H\\\272\001Y\n\037with_request_token_must_be_true\022(with_request_token must be true when set\032\014this == true'
49
+ _globals['_ENTITYENTITLEMENTS_ACTIONSPERATTRIBUTEVALUEFQNENTRY']._loaded_options = None
50
+ _globals['_ENTITYENTITLEMENTS_ACTIONSPERATTRIBUTEVALUEFQNENTRY']._serialized_options = b'8\001'
51
+ _globals['_RESOURCE'].fields_by_name['attribute_values']._loaded_options = None
52
+ _globals['_RESOURCE'].fields_by_name['attribute_values']._serialized_options = b'\272H\322\001\272\001\316\001\n\031attribute_values_required\022\\if provided, resource.attribute_values must be between 1 and 20 in count with all valid FQNs\032Sthis.fqns.size() > 0 && this.fqns.size() <= 20 && this.fqns.all(item, item.isUri())'
53
+ _globals['_RESOURCE'].fields_by_name['registered_resource_value_fqn']._loaded_options = None
54
+ _globals['_RESOURCE'].fields_by_name['registered_resource_value_fqn']._serialized_options = b'\272H\007r\005\020\001\210\001\001'
55
+ _globals['_GETDECISIONREQUEST'].fields_by_name['entity_identifier']._loaded_options = None
56
+ _globals['_GETDECISIONREQUEST'].fields_by_name['entity_identifier']._serialized_options = b'\272H\003\310\001\001'
57
+ _globals['_GETDECISIONREQUEST'].fields_by_name['action']._loaded_options = None
58
+ _globals['_GETDECISIONREQUEST'].fields_by_name['action']._serialized_options = b'\272H\003\310\001\001'
59
+ _globals['_GETDECISIONREQUEST'].fields_by_name['resource']._loaded_options = None
60
+ _globals['_GETDECISIONREQUEST'].fields_by_name['resource']._serialized_options = b'\272H\003\310\001\001'
61
+ _globals['_GETDECISIONREQUEST'].fields_by_name['fulfillable_obligation_fqns']._loaded_options = None
62
+ _globals['_GETDECISIONREQUEST'].fields_by_name['fulfillable_obligation_fqns']._serialized_options = b'\272H\312\001\272\001\306\001\n\033obligation_value_fqns_valid\022^if provided, fulfillable_obligation_fqns must be between 1 and 50 in count with all valid FQNs\032Gthis.size() == 0 || (this.size() <= 50 && this.all(item, item.isUri()))'
63
+ _globals['_GETDECISIONREQUEST']._loaded_options = None
64
+ _globals['_GETDECISIONREQUEST']._serialized_options = b'\272Hb\032`\n)get_decision_request.action_name_required\022\034action.name must be provided\032\025has(this.action.name)'
65
+ _globals['_GETDECISIONMULTIRESOURCEREQUEST'].fields_by_name['entity_identifier']._loaded_options = None
66
+ _globals['_GETDECISIONMULTIRESOURCEREQUEST'].fields_by_name['entity_identifier']._serialized_options = b'\272H\003\310\001\001'
67
+ _globals['_GETDECISIONMULTIRESOURCEREQUEST'].fields_by_name['action']._loaded_options = None
68
+ _globals['_GETDECISIONMULTIRESOURCEREQUEST'].fields_by_name['action']._serialized_options = b'\272H\003\310\001\001'
69
+ _globals['_GETDECISIONMULTIRESOURCEREQUEST'].fields_by_name['resources']._loaded_options = None
70
+ _globals['_GETDECISIONMULTIRESOURCEREQUEST'].fields_by_name['resources']._serialized_options = b'\272H\010\222\001\005\010\001\020\350\007'
71
+ _globals['_GETDECISIONMULTIRESOURCEREQUEST'].fields_by_name['fulfillable_obligation_fqns']._loaded_options = None
72
+ _globals['_GETDECISIONMULTIRESOURCEREQUEST'].fields_by_name['fulfillable_obligation_fqns']._serialized_options = b'\272H\312\001\272\001\306\001\n\033obligation_value_fqns_valid\022^if provided, fulfillable_obligation_fqns must be between 1 and 50 in count with all valid FQNs\032Gthis.size() == 0 || (this.size() <= 50 && this.all(item, item.isUri()))'
73
+ _globals['_GETDECISIONMULTIRESOURCEREQUEST']._loaded_options = None
74
+ _globals['_GETDECISIONMULTIRESOURCEREQUEST']._serialized_options = b'\272Hh\032f\n/get_decision_multi_request.action_name_required\022\034action.name must be provided\032\025has(this.action.name)'
75
+ _globals['_GETDECISIONBULKREQUEST'].fields_by_name['decision_requests']._loaded_options = None
76
+ _globals['_GETDECISIONBULKREQUEST'].fields_by_name['decision_requests']._serialized_options = b'\272H\010\222\001\005\010\001\020\310\001'
77
+ _globals['_GETENTITLEMENTSREQUEST'].fields_by_name['entity_identifier']._loaded_options = None
78
+ _globals['_GETENTITLEMENTSREQUEST'].fields_by_name['entity_identifier']._serialized_options = b'\272H\003\310\001\001'
79
+ _globals['_DECISION']._serialized_start=3950
80
+ _globals['_DECISION']._serialized_end=4026
81
+ _globals['_ENTITYIDENTIFIER']._serialized_start=163
82
+ _globals['_ENTITYIDENTIFIER']._serialized_end=810
83
+ _globals['_ENTITYENTITLEMENTS']._serialized_start=813
84
+ _globals['_ENTITYENTITLEMENTS']._serialized_end=1198
85
+ _globals['_ENTITYENTITLEMENTS_ACTIONSLIST']._serialized_start=1012
86
+ _globals['_ENTITYENTITLEMENTS_ACTIONSLIST']._serialized_end=1067
87
+ _globals['_ENTITYENTITLEMENTS_ACTIONSPERATTRIBUTEVALUEFQNENTRY']._serialized_start=1070
88
+ _globals['_ENTITYENTITLEMENTS_ACTIONSPERATTRIBUTEVALUEFQNENTRY']._serialized_end=1198
89
+ _globals['_RESOURCE']._serialized_start=1201
90
+ _globals['_RESOURCE']._serialized_end=1685
91
+ _globals['_RESOURCE_ATTRIBUTEVALUES']._serialized_start=1636
92
+ _globals['_RESOURCE_ATTRIBUTEVALUES']._serialized_end=1673
93
+ _globals['_RESOURCEDECISION']._serialized_start=1688
94
+ _globals['_RESOURCEDECISION']._serialized_end=1865
95
+ _globals['_GETDECISIONREQUEST']._serialized_start=1868
96
+ _globals['_GETDECISIONREQUEST']._serialized_end=2466
97
+ _globals['_GETDECISIONRESPONSE']._serialized_start=2468
98
+ _globals['_GETDECISIONRESPONSE']._serialized_end=2553
99
+ _globals['_GETDECISIONMULTIRESOURCEREQUEST']._serialized_start=2556
100
+ _globals['_GETDECISIONMULTIRESOURCEREQUEST']._serialized_end=3180
101
+ _globals['_GETDECISIONMULTIRESOURCERESPONSE']._serialized_start=3183
102
+ _globals['_GETDECISIONMULTIRESOURCERESPONSE']._serialized_end=3365
103
+ _globals['_GETDECISIONBULKREQUEST']._serialized_start=3368
104
+ _globals['_GETDECISIONBULKREQUEST']._serialized_end=3501
105
+ _globals['_GETDECISIONBULKRESPONSE']._serialized_start=3503
106
+ _globals['_GETDECISIONBULKRESPONSE']._serialized_end=3627
107
+ _globals['_GETENTITLEMENTSREQUEST']._serialized_start=3630
108
+ _globals['_GETENTITLEMENTSREQUEST']._serialized_end=3847
109
+ _globals['_GETENTITLEMENTSRESPONSE']._serialized_start=3849
110
+ _globals['_GETENTITLEMENTSRESPONSE']._serialized_end=3948
111
+ _globals['_AUTHORIZATIONSERVICE']._serialized_start=4029
112
+ _globals['_AUTHORIZATIONSERVICE']._serialized_end=4491
113
+ # @@protoc_insertion_point(module_scope)
@@ -21,14 +21,16 @@ DECISION_DENY: Decision
21
21
  DECISION_PERMIT: Decision
22
22
 
23
23
  class EntityIdentifier(_message.Message):
24
- __slots__ = ("entity_chain", "registered_resource_value_fqn", "token")
24
+ __slots__ = ("entity_chain", "registered_resource_value_fqn", "token", "with_request_token")
25
25
  ENTITY_CHAIN_FIELD_NUMBER: _ClassVar[int]
26
26
  REGISTERED_RESOURCE_VALUE_FQN_FIELD_NUMBER: _ClassVar[int]
27
27
  TOKEN_FIELD_NUMBER: _ClassVar[int]
28
+ WITH_REQUEST_TOKEN_FIELD_NUMBER: _ClassVar[int]
28
29
  entity_chain: _entity_pb2.EntityChain
29
30
  registered_resource_value_fqn: str
30
31
  token: _entity_pb2.Token
31
- def __init__(self, entity_chain: _Optional[_Union[_entity_pb2.EntityChain, _Mapping]] = ..., registered_resource_value_fqn: _Optional[str] = ..., token: _Optional[_Union[_entity_pb2.Token, _Mapping]] = ...) -> None: ...
32
+ with_request_token: _wrappers_pb2.BoolValue
33
+ def __init__(self, entity_chain: _Optional[_Union[_entity_pb2.EntityChain, _Mapping]] = ..., registered_resource_value_fqn: _Optional[str] = ..., token: _Optional[_Union[_entity_pb2.Token, _Mapping]] = ..., with_request_token: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ...) -> None: ...
32
34
 
33
35
  class EntityEntitlements(_message.Message):
34
36
  __slots__ = ("ephemeral_id", "actions_per_attribute_value_fqn")
@@ -66,22 +68,26 @@ class Resource(_message.Message):
66
68
  def __init__(self, ephemeral_id: _Optional[str] = ..., attribute_values: _Optional[_Union[Resource.AttributeValues, _Mapping]] = ..., registered_resource_value_fqn: _Optional[str] = ...) -> None: ...
67
69
 
68
70
  class ResourceDecision(_message.Message):
69
- __slots__ = ("ephemeral_resource_id", "decision")
71
+ __slots__ = ("ephemeral_resource_id", "decision", "required_obligations")
70
72
  EPHEMERAL_RESOURCE_ID_FIELD_NUMBER: _ClassVar[int]
71
73
  DECISION_FIELD_NUMBER: _ClassVar[int]
74
+ REQUIRED_OBLIGATIONS_FIELD_NUMBER: _ClassVar[int]
72
75
  ephemeral_resource_id: str
73
76
  decision: Decision
74
- def __init__(self, ephemeral_resource_id: _Optional[str] = ..., decision: _Optional[_Union[Decision, str]] = ...) -> None: ...
77
+ required_obligations: _containers.RepeatedScalarFieldContainer[str]
78
+ def __init__(self, ephemeral_resource_id: _Optional[str] = ..., decision: _Optional[_Union[Decision, str]] = ..., required_obligations: _Optional[_Iterable[str]] = ...) -> None: ...
75
79
 
76
80
  class GetDecisionRequest(_message.Message):
77
- __slots__ = ("entity_identifier", "action", "resource")
81
+ __slots__ = ("entity_identifier", "action", "resource", "fulfillable_obligation_fqns")
78
82
  ENTITY_IDENTIFIER_FIELD_NUMBER: _ClassVar[int]
79
83
  ACTION_FIELD_NUMBER: _ClassVar[int]
80
84
  RESOURCE_FIELD_NUMBER: _ClassVar[int]
85
+ FULFILLABLE_OBLIGATION_FQNS_FIELD_NUMBER: _ClassVar[int]
81
86
  entity_identifier: EntityIdentifier
82
87
  action: _objects_pb2.Action
83
88
  resource: Resource
84
- def __init__(self, entity_identifier: _Optional[_Union[EntityIdentifier, _Mapping]] = ..., action: _Optional[_Union[_objects_pb2.Action, _Mapping]] = ..., resource: _Optional[_Union[Resource, _Mapping]] = ...) -> None: ...
89
+ fulfillable_obligation_fqns: _containers.RepeatedScalarFieldContainer[str]
90
+ def __init__(self, entity_identifier: _Optional[_Union[EntityIdentifier, _Mapping]] = ..., action: _Optional[_Union[_objects_pb2.Action, _Mapping]] = ..., resource: _Optional[_Union[Resource, _Mapping]] = ..., fulfillable_obligation_fqns: _Optional[_Iterable[str]] = ...) -> None: ...
85
91
 
86
92
  class GetDecisionResponse(_message.Message):
87
93
  __slots__ = ("decision",)
@@ -90,14 +96,16 @@ class GetDecisionResponse(_message.Message):
90
96
  def __init__(self, decision: _Optional[_Union[ResourceDecision, _Mapping]] = ...) -> None: ...
91
97
 
92
98
  class GetDecisionMultiResourceRequest(_message.Message):
93
- __slots__ = ("entity_identifier", "action", "resources")
99
+ __slots__ = ("entity_identifier", "action", "resources", "fulfillable_obligation_fqns")
94
100
  ENTITY_IDENTIFIER_FIELD_NUMBER: _ClassVar[int]
95
101
  ACTION_FIELD_NUMBER: _ClassVar[int]
96
102
  RESOURCES_FIELD_NUMBER: _ClassVar[int]
103
+ FULFILLABLE_OBLIGATION_FQNS_FIELD_NUMBER: _ClassVar[int]
97
104
  entity_identifier: EntityIdentifier
98
105
  action: _objects_pb2.Action
99
106
  resources: _containers.RepeatedCompositeFieldContainer[Resource]
100
- def __init__(self, entity_identifier: _Optional[_Union[EntityIdentifier, _Mapping]] = ..., action: _Optional[_Union[_objects_pb2.Action, _Mapping]] = ..., resources: _Optional[_Iterable[_Union[Resource, _Mapping]]] = ...) -> None: ...
107
+ fulfillable_obligation_fqns: _containers.RepeatedScalarFieldContainer[str]
108
+ def __init__(self, entity_identifier: _Optional[_Union[EntityIdentifier, _Mapping]] = ..., action: _Optional[_Union[_objects_pb2.Action, _Mapping]] = ..., resources: _Optional[_Iterable[_Union[Resource, _Mapping]]] = ..., fulfillable_obligation_fqns: _Optional[_Iterable[str]] = ...) -> None: ...
101
109
 
102
110
  class GetDecisionMultiResourceResponse(_message.Message):
103
111
  __slots__ = ("all_permitted", "resource_decisions")
@@ -0,0 +1,69 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: common/common.proto
5
+ # Protobuf Python Version: 6.31.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 6,
15
+ 31,
16
+ 1,
17
+ '',
18
+ 'common/common.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
26
+ from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2
27
+
28
+
29
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13\x63ommon/common.proto\x12\x06\x63ommon\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1b\x62uf/validate/validate.proto\"\xd2\x02\n\x10IdNameIdentifier\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x90\x02\n\x04name\x18\x02 \x01(\tB\xfb\x01\xbaH\xf7\x01r\x05\x10\x01\x18\xfd\x01\xba\x01\xec\x01\n\x0bname_format\x12\x9f\x01Name must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored name will be normalized to lower case.\x1a;this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\')R\x04name:\x11\xbaH\x0e\"\x0c\n\x02id\n\x04name\x10\x01\"[\n\x0fIdFqnIdentifier\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x1c\n\x03\x66qn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x03\x66qn:\x10\xbaH\r\"\x0b\n\x02id\n\x03\x66qn\x10\x01\"\xf1\x01\n\x08Metadata\x12\x39\n\ncreated_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x34\n\x06labels\x18\x03 \x03(\x0b\x32\x1c.common.Metadata.LabelsEntryR\x06labels\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\x89\x01\n\x0fMetadataMutable\x12;\n\x06labels\x18\x03 \x03(\x0b\x32#.common.MetadataMutable.LabelsEntryR\x06labels\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01*}\n\x12MetadataUpdateEnum\x12$\n METADATA_UPDATE_ENUM_UNSPECIFIED\x10\x00\x12\x1f\n\x1bMETADATA_UPDATE_ENUM_EXTEND\x10\x01\x12 \n\x1cMETADATA_UPDATE_ENUM_REPLACE\x10\x02*\x8d\x01\n\x0f\x41\x63tiveStateEnum\x12!\n\x1d\x41\x43TIVE_STATE_ENUM_UNSPECIFIED\x10\x00\x12\x1c\n\x18\x41\x43TIVE_STATE_ENUM_ACTIVE\x10\x01\x12\x1e\n\x1a\x41\x43TIVE_STATE_ENUM_INACTIVE\x10\x02\x12\x19\n\x15\x41\x43TIVE_STATE_ENUM_ANY\x10\x03\x42Q\n\ncom.commonB\x0b\x43ommonProtoP\x01\xa2\x02\x03\x43XX\xaa\x02\x06\x43ommon\xca\x02\x06\x43ommon\xe2\x02\x12\x43ommon\\GPBMetadata\xea\x02\x06\x43ommonb\x06proto3')
30
+
31
+ _globals = globals()
32
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
33
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'common.common_pb2', _globals)
34
+ if not _descriptor._USE_C_DESCRIPTORS:
35
+ _globals['DESCRIPTOR']._loaded_options = None
36
+ _globals['DESCRIPTOR']._serialized_options = b'\n\ncom.commonB\013CommonProtoP\001\242\002\003CXX\252\002\006Common\312\002\006Common\342\002\022Common\\GPBMetadata\352\002\006Common'
37
+ _globals['_IDNAMEIDENTIFIER'].fields_by_name['id']._loaded_options = None
38
+ _globals['_IDNAMEIDENTIFIER'].fields_by_name['id']._serialized_options = b'\272H\005r\003\260\001\001'
39
+ _globals['_IDNAMEIDENTIFIER'].fields_by_name['name']._loaded_options = None
40
+ _globals['_IDNAMEIDENTIFIER'].fields_by_name['name']._serialized_options = b'\272H\367\001r\005\020\001\030\375\001\272\001\354\001\n\013name_format\022\237\001Name must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored name will be normalized to lower case.\032;this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\')'
41
+ _globals['_IDNAMEIDENTIFIER']._loaded_options = None
42
+ _globals['_IDNAMEIDENTIFIER']._serialized_options = b'\272H\016\"\014\n\002id\n\004name\020\001'
43
+ _globals['_IDFQNIDENTIFIER'].fields_by_name['id']._loaded_options = None
44
+ _globals['_IDFQNIDENTIFIER'].fields_by_name['id']._serialized_options = b'\272H\005r\003\260\001\001'
45
+ _globals['_IDFQNIDENTIFIER'].fields_by_name['fqn']._loaded_options = None
46
+ _globals['_IDFQNIDENTIFIER'].fields_by_name['fqn']._serialized_options = b'\272H\007r\005\020\001\210\001\001'
47
+ _globals['_IDFQNIDENTIFIER']._loaded_options = None
48
+ _globals['_IDFQNIDENTIFIER']._serialized_options = b'\272H\r\"\013\n\002id\n\003fqn\020\001'
49
+ _globals['_METADATA_LABELSENTRY']._loaded_options = None
50
+ _globals['_METADATA_LABELSENTRY']._serialized_options = b'8\001'
51
+ _globals['_METADATAMUTABLE_LABELSENTRY']._loaded_options = None
52
+ _globals['_METADATAMUTABLE_LABELSENTRY']._serialized_options = b'8\001'
53
+ _globals['_METADATAUPDATEENUM']._serialized_start=911
54
+ _globals['_METADATAUPDATEENUM']._serialized_end=1036
55
+ _globals['_ACTIVESTATEENUM']._serialized_start=1039
56
+ _globals['_ACTIVESTATEENUM']._serialized_end=1180
57
+ _globals['_IDNAMEIDENTIFIER']._serialized_start=94
58
+ _globals['_IDNAMEIDENTIFIER']._serialized_end=432
59
+ _globals['_IDFQNIDENTIFIER']._serialized_start=434
60
+ _globals['_IDFQNIDENTIFIER']._serialized_end=525
61
+ _globals['_METADATA']._serialized_start=528
62
+ _globals['_METADATA']._serialized_end=769
63
+ _globals['_METADATA_LABELSENTRY']._serialized_start=712
64
+ _globals['_METADATA_LABELSENTRY']._serialized_end=769
65
+ _globals['_METADATAMUTABLE']._serialized_start=772
66
+ _globals['_METADATAMUTABLE']._serialized_end=909
67
+ _globals['_METADATAMUTABLE_LABELSENTRY']._serialized_start=712
68
+ _globals['_METADATAMUTABLE_LABELSENTRY']._serialized_end=769
69
+ # @@protoc_insertion_point(module_scope)
@@ -1,6 +1,7 @@
1
1
  import datetime
2
2
 
3
3
  from google.protobuf import timestamp_pb2 as _timestamp_pb2
4
+ from buf.validate import validate_pb2 as _validate_pb2
4
5
  from google.protobuf.internal import containers as _containers
5
6
  from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
6
7
  from google.protobuf import descriptor as _descriptor
@@ -30,6 +31,22 @@ ACTIVE_STATE_ENUM_ACTIVE: ActiveStateEnum
30
31
  ACTIVE_STATE_ENUM_INACTIVE: ActiveStateEnum
31
32
  ACTIVE_STATE_ENUM_ANY: ActiveStateEnum
32
33
 
34
+ class IdNameIdentifier(_message.Message):
35
+ __slots__ = ("id", "name")
36
+ ID_FIELD_NUMBER: _ClassVar[int]
37
+ NAME_FIELD_NUMBER: _ClassVar[int]
38
+ id: str
39
+ name: str
40
+ def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ...) -> None: ...
41
+
42
+ class IdFqnIdentifier(_message.Message):
43
+ __slots__ = ("id", "fqn")
44
+ ID_FIELD_NUMBER: _ClassVar[int]
45
+ FQN_FIELD_NUMBER: _ClassVar[int]
46
+ id: str
47
+ fqn: str
48
+ def __init__(self, id: _Optional[str] = ..., fqn: _Optional[str] = ...) -> None: ...
49
+
33
50
  class Metadata(_message.Message):
34
51
  __slots__ = ("created_at", "updated_at", "labels")
35
52
  class LabelsEntry(_message.Message):
@@ -7,6 +7,7 @@ from typing import Protocol
7
7
 
8
8
  from connectrpc.client import ConnectClient, ConnectClientSync
9
9
  from connectrpc.code import Code
10
+ from connectrpc.compression import Compression
10
11
  from connectrpc.errors import ConnectError
11
12
  from connectrpc.interceptor import Interceptor, InterceptorSync
12
13
  from connectrpc.method import IdempotencyLevel, MethodInfo
@@ -24,7 +25,7 @@ class EntityResolutionService(Protocol):
24
25
 
25
26
 
26
27
  class EntityResolutionServiceASGIApplication(ConnectASGIApplication[EntityResolutionService]):
27
- def __init__(self, service: EntityResolutionService | AsyncGenerator[EntityResolutionService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None:
28
+ def __init__(self, service: EntityResolutionService | AsyncGenerator[EntityResolutionService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
28
29
  super().__init__(
29
30
  service=service,
30
31
  endpoints=lambda svc: {
@@ -51,6 +52,7 @@ class EntityResolutionServiceASGIApplication(ConnectASGIApplication[EntityResolu
51
52
  },
52
53
  interceptors=interceptors,
53
54
  read_max_bytes=read_max_bytes,
55
+ compressions=compressions,
54
56
  )
55
57
 
56
58
  @property
@@ -109,7 +111,7 @@ class EntityResolutionServiceSync(Protocol):
109
111
 
110
112
 
111
113
  class EntityResolutionServiceWSGIApplication(ConnectWSGIApplication):
112
- def __init__(self, service: EntityResolutionServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None:
114
+ def __init__(self, service: EntityResolutionServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None:
113
115
  super().__init__(
114
116
  endpoints={
115
117
  "/entityresolution.EntityResolutionService/ResolveEntities": EndpointSync.unary(
@@ -135,6 +137,7 @@ class EntityResolutionServiceWSGIApplication(ConnectWSGIApplication):
135
137
  },
136
138
  interceptors=interceptors,
137
139
  read_max_bytes=read_max_bytes,
140
+ compressions=compressions,
138
141
  )
139
142
 
140
143
  @property
@@ -0,0 +1,52 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: entityresolution/entity_resolution.proto
5
+ # Protobuf Python Version: 6.31.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 6,
15
+ 31,
16
+ 1,
17
+ '',
18
+ 'entityresolution/entity_resolution.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+ from authorization import authorization_pb2 as authorization_dot_authorization__pb2
26
+ from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
27
+ from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2
28
+
29
+
30
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(entityresolution/entity_resolution.proto\x12\x10\x65ntityresolution\x1a!authorization/authorization.proto\x1a\x19google/protobuf/any.proto\x1a\x1cgoogle/protobuf/struct.proto\"K\n\x16ResolveEntitiesRequest\x12\x31\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x15.authorization.EntityR\x08\x65ntities\"{\n\x14\x45ntityRepresentation\x12\x42\n\x10\x61\x64\x64itional_props\x18\x01 \x03(\x0b\x32\x17.google.protobuf.StructR\x0f\x61\x64\x64itionalProps\x12\x1f\n\x0boriginal_id\x18\x02 \x01(\tR\noriginalId\"x\n\x17ResolveEntitiesResponse\x12]\n\x16\x65ntity_representations\x18\x01 \x03(\x0b\x32&.entityresolution.EntityRepresentationR\x15\x65ntityRepresentations\"\x8b\x01\n\x13\x45ntityNotFoundError\x12\x12\n\x04\x63ode\x18\x01 \x01(\x05R\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\x12.\n\x07\x64\x65tails\x18\x03 \x03(\x0b\x32\x14.google.protobuf.AnyR\x07\x64\x65tails\x12\x16\n\x06\x65ntity\x18\x04 \x01(\tR\x06\x65ntity\"O\n\x1f\x43reateEntityChainFromJwtRequest\x12,\n\x06tokens\x18\x01 \x03(\x0b\x32\x14.authorization.TokenR\x06tokens\"c\n CreateEntityChainFromJwtResponse\x12?\n\rentity_chains\x18\x01 \x03(\x0b\x32\x1a.authorization.EntityChainR\x0c\x65ntityChains2\x89\x02\n\x17\x45ntityResolutionService\x12h\n\x0fResolveEntities\x12(.entityresolution.ResolveEntitiesRequest\x1a).entityresolution.ResolveEntitiesResponse\"\x00\x12\x83\x01\n\x18\x43reateEntityChainFromJwt\x12\x31.entityresolution.CreateEntityChainFromJwtRequest\x1a\x32.entityresolution.CreateEntityChainFromJwtResponse\"\x00\x42\x8d\x01\n\x14\x63om.entityresolutionB\x15\x45ntityResolutionProtoP\x01\xa2\x02\x03\x45XX\xaa\x02\x10\x45ntityresolution\xca\x02\x10\x45ntityresolution\xe2\x02\x1c\x45ntityresolution\\GPBMetadata\xea\x02\x10\x45ntityresolutionb\x06proto3')
31
+
32
+ _globals = globals()
33
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
34
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'entityresolution.entity_resolution_pb2', _globals)
35
+ if not _descriptor._USE_C_DESCRIPTORS:
36
+ _globals['DESCRIPTOR']._loaded_options = None
37
+ _globals['DESCRIPTOR']._serialized_options = b'\n\024com.entityresolutionB\025EntityResolutionProtoP\001\242\002\003EXX\252\002\020Entityresolution\312\002\020Entityresolution\342\002\034Entityresolution\\GPBMetadata\352\002\020Entityresolution'
38
+ _globals['_RESOLVEENTITIESREQUEST']._serialized_start=154
39
+ _globals['_RESOLVEENTITIESREQUEST']._serialized_end=229
40
+ _globals['_ENTITYREPRESENTATION']._serialized_start=231
41
+ _globals['_ENTITYREPRESENTATION']._serialized_end=354
42
+ _globals['_RESOLVEENTITIESRESPONSE']._serialized_start=356
43
+ _globals['_RESOLVEENTITIESRESPONSE']._serialized_end=476
44
+ _globals['_ENTITYNOTFOUNDERROR']._serialized_start=479
45
+ _globals['_ENTITYNOTFOUNDERROR']._serialized_end=618
46
+ _globals['_CREATEENTITYCHAINFROMJWTREQUEST']._serialized_start=620
47
+ _globals['_CREATEENTITYCHAINFROMJWTREQUEST']._serialized_end=699
48
+ _globals['_CREATEENTITYCHAINFROMJWTRESPONSE']._serialized_start=701
49
+ _globals['_CREATEENTITYCHAINFROMJWTRESPONSE']._serialized_end=800
50
+ _globals['_ENTITYRESOLUTIONSERVICE']._serialized_start=803
51
+ _globals['_ENTITYRESOLUTIONSERVICE']._serialized_end=1068
52
+ # @@protoc_insertion_point(module_scope)
@@ -1,7 +1,6 @@
1
1
  from authorization import authorization_pb2 as _authorization_pb2
2
- from google.protobuf import struct_pb2 as _struct_pb2
3
2
  from google.protobuf import any_pb2 as _any_pb2
4
- from google.api import annotations_pb2 as _annotations_pb2
3
+ from google.protobuf import struct_pb2 as _struct_pb2
5
4
  from google.protobuf.internal import containers as _containers
6
5
  from google.protobuf import descriptor as _descriptor
7
6
  from google.protobuf import message as _message