slim-bindings 0.5.0__tar.gz → 0.6.0__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.

Potentially problematic release.


This version of slim-bindings might be problematic. Click here for more details.

Files changed (248) hide show
  1. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/Cargo.lock +17 -8
  2. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/Cargo.toml +8 -8
  3. slim_bindings-0.6.0/PKG-INFO +233 -0
  4. slim_bindings-0.6.0/README.md +213 -0
  5. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/auth/CHANGELOG.md +11 -0
  6. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/auth/Cargo.toml +1 -1
  7. slim_bindings-0.6.0/core/auth/src/auth_provider.rs +514 -0
  8. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/auth/src/jwt.rs +10 -10
  9. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/auth/src/jwt_middleware.rs +7 -7
  10. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/auth/src/lib.rs +1 -0
  11. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/auth/src/resolver.rs +18 -36
  12. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/auth/src/shared_secret.rs +0 -3
  13. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/CHANGELOG.md +11 -0
  14. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/Cargo.toml +1 -1
  15. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/auth/basic.rs +2 -2
  16. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/auth/jwt.rs +139 -66
  17. slim_bindings-0.6.0/core/config/src/auth/static_jwt.rs +184 -0
  18. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/auth.rs +1 -1
  19. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/grpc/client.rs +4 -4
  20. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/grpc/server.rs +1 -25
  21. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/opaque.rs +1 -1
  22. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/tls/common.rs +65 -22
  23. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/tls/server.rs +19 -14
  24. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/tests/e2e.rs +67 -8
  25. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/controller/CHANGELOG.md +12 -0
  26. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/controller/Cargo.toml +6 -1
  27. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/controller/proto/v1/controller.proto +44 -28
  28. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/controller/src/api/gen/controller.proto.v1.rs +51 -30
  29. slim_bindings-0.6.0/core/controller/src/config.rs +631 -0
  30. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/controller/src/service.rs +602 -82
  31. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/CHANGELOG.md +18 -0
  32. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/Cargo.toml +1 -1
  33. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/README.md +1 -1
  34. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/build.rs +1 -1
  35. slim_bindings-0.6.0/core/datapath/proto/v1/data-plane.proto +127 -0
  36. slim_bindings-0.5.0/core/datapath/src/api/gen/pubsub.proto.v1.rs → slim_bindings-0.6.0/core/datapath/src/api/gen/dataplane.proto.v1.rs +83 -67
  37. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/src/api/proto.rs +2 -2
  38. slim_bindings-0.6.0/core/datapath/src/api.rs +22 -0
  39. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/src/connection.rs +1 -1
  40. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/src/message_processing.rs +9 -8
  41. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/src/messages/encoder.rs +4 -0
  42. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/src/messages/utils.rs +143 -24
  43. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/src/tables/subscription_table.rs +23 -16
  44. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/tests/data_path_test.rs +2 -2
  45. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/mls/CHANGELOG.md +6 -0
  46. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/mls/Cargo.toml +1 -1
  47. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/service/CHANGELOG.md +29 -0
  48. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/service/Cargo.toml +2 -1
  49. slim_bindings-0.6.0/core/service/src/app.rs +603 -0
  50. slim_bindings-0.6.0/core/service/src/errors.rs +48 -0
  51. slim_bindings-0.6.0/core/service/src/lib.rs +21 -0
  52. slim_bindings-0.5.0/core/service/src/lib.rs → slim_bindings-0.6.0/core/service/src/service.rs +102 -127
  53. {slim_bindings-0.5.0/core/service/src → slim_bindings-0.6.0/core/service/src/session}/channel_endpoint.rs +369 -69
  54. slim_bindings-0.6.0/core/service/src/session/common.rs +37 -0
  55. slim_bindings-0.6.0/core/service/src/session/config.rs +110 -0
  56. slim_bindings-0.6.0/core/service/src/session/context.rs +285 -0
  57. {slim_bindings-0.5.0/core/service/src → slim_bindings-0.6.0/core/service/src/session}/errors.rs +7 -45
  58. slim_bindings-0.6.0/core/service/src/session/handle.rs +1008 -0
  59. {slim_bindings-0.5.0/core/service/src → slim_bindings-0.6.0/core/service/src/session}/interceptor.rs +4 -3
  60. {slim_bindings-0.5.0/core/service/src → slim_bindings-0.6.0/core/service/src/session}/interceptor_mls.rs +19 -13
  61. {slim_bindings-0.5.0/core/service/src → slim_bindings-0.6.0/core/service/src/session}/moderator_task.rs +3 -1
  62. slim_bindings-0.5.0/core/service/src/streaming.rs → slim_bindings-0.6.0/core/service/src/session/multicast.rs +351 -400
  63. slim_bindings-0.6.0/core/service/src/session/notification.rs +26 -0
  64. slim_bindings-0.5.0/core/service/src/fire_and_forget.rs → slim_bindings-0.6.0/core/service/src/session/point_to_point.rs +839 -454
  65. {slim_bindings-0.5.0/core/service/src → slim_bindings-0.6.0/core/service/src/session}/producer_buffer.rs +20 -6
  66. {slim_bindings-0.5.0/core/service/src → slim_bindings-0.6.0/core/service/src/session}/receiver_buffer.rs +98 -15
  67. slim_bindings-0.6.0/core/service/src/session/session_layer.rs +629 -0
  68. {slim_bindings-0.5.0/core/service/src → slim_bindings-0.6.0/core/service/src/session}/timer.rs +6 -3
  69. slim_bindings-0.6.0/core/service/src/session/traits.rs +102 -0
  70. slim_bindings-0.6.0/core/service/src/session/transmitter.rs +317 -0
  71. slim_bindings-0.6.0/core/service/src/session.rs +55 -0
  72. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/tracing/CHANGELOG.md +6 -0
  73. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/tracing/Cargo.toml +1 -1
  74. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/tracing/src/lib.rs +9 -8
  75. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/pyproject.toml +1 -1
  76. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/CHANGELOG.md +30 -0
  77. slim_bindings-0.6.0/python/bindings/README.md +213 -0
  78. slim_bindings-0.6.0/python/bindings/SESSION.md +353 -0
  79. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/Taskfile.yaml +1 -1
  80. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/examples/CHANGELOG.md +12 -0
  81. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/examples/Dockerfile +1 -0
  82. slim_bindings-0.6.0/python/bindings/examples/README.md +486 -0
  83. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/examples/Taskfile.yaml +24 -35
  84. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/examples/pyproject.toml +4 -6
  85. slim_bindings-0.6.0/python/bindings/examples/src/slim_bindings_examples/README_group.md +214 -0
  86. slim_bindings-0.6.0/python/bindings/examples/src/slim_bindings_examples/README_point_to_point.md +182 -0
  87. slim_bindings-0.6.0/python/bindings/examples/src/slim_bindings_examples/__init__.py +76 -0
  88. slim_bindings-0.6.0/python/bindings/examples/src/slim_bindings_examples/common.py +384 -0
  89. slim_bindings-0.6.0/python/bindings/examples/src/slim_bindings_examples/group.py +295 -0
  90. slim_bindings-0.6.0/python/bindings/examples/src/slim_bindings_examples/point_to_point.py +229 -0
  91. slim_bindings-0.6.0/python/bindings/examples/src/slim_bindings_examples/slim.py +154 -0
  92. slim_bindings-0.6.0/python/bindings/slim_bindings/__init__.py +77 -0
  93. slim_bindings-0.6.0/python/bindings/slim_bindings/_slim_bindings.pyi +476 -0
  94. slim_bindings-0.6.0/python/bindings/slim_bindings/errors.py +53 -0
  95. slim_bindings-0.6.0/python/bindings/slim_bindings/session.py +219 -0
  96. slim_bindings-0.6.0/python/bindings/slim_bindings/slim.py +383 -0
  97. slim_bindings-0.6.0/python/bindings/slim_bindings/version.py +38 -0
  98. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/src/lib.rs +7 -4
  99. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/src/pyidentity.rs +233 -0
  100. slim_bindings-0.6.0/python/bindings/src/pymessage.rs +117 -0
  101. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/src/pyservice.rs +231 -186
  102. slim_bindings-0.6.0/python/bindings/src/pysession.rs +407 -0
  103. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/src/utils.rs +8 -9
  104. slim_bindings-0.6.0/python/bindings/tests/common.py +58 -0
  105. slim_bindings-0.6.0/python/bindings/tests/conftest.py +78 -0
  106. slim_bindings-0.6.0/python/bindings/tests/test_bindings.py +486 -0
  107. slim_bindings-0.6.0/python/bindings/tests/test_identity.py +203 -0
  108. slim_bindings-0.6.0/python/bindings/tests/test_multicast.py +233 -0
  109. slim_bindings-0.6.0/python/bindings/tests/test_point_to_point.py +176 -0
  110. slim_bindings-0.6.0/python/bindings/tests/test_session_metadata.py +80 -0
  111. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/uv.lock +25 -2
  112. slim_bindings-0.6.0/slim_bindings/__init__.py +77 -0
  113. slim_bindings-0.6.0/slim_bindings/_slim_bindings.pyi +476 -0
  114. slim_bindings-0.6.0/slim_bindings/errors.py +53 -0
  115. slim_bindings-0.6.0/slim_bindings/session.py +219 -0
  116. slim_bindings-0.6.0/slim_bindings/slim.py +383 -0
  117. slim_bindings-0.6.0/slim_bindings/version.py +38 -0
  118. slim_bindings-0.5.0/PKG-INFO +0 -61
  119. slim_bindings-0.5.0/README.md +0 -41
  120. slim_bindings-0.5.0/core/config/src/auth/bearer.rs +0 -95
  121. slim_bindings-0.5.0/core/controller/src/config.rs +0 -83
  122. slim_bindings-0.5.0/core/datapath/proto/v1/pubsub.proto +0 -114
  123. slim_bindings-0.5.0/core/datapath/src/api.rs +0 -22
  124. slim_bindings-0.5.0/core/service/src/app.rs +0 -1224
  125. slim_bindings-0.5.0/core/service/src/session.rs +0 -591
  126. slim_bindings-0.5.0/core/service/src/testutils.rs +0 -70
  127. slim_bindings-0.5.0/core/service/src/transmitter.rs +0 -105
  128. slim_bindings-0.5.0/python/bindings/README.md +0 -41
  129. slim_bindings-0.5.0/python/bindings/examples/src/slim_bindings_examples/__init__.py +0 -47
  130. slim_bindings-0.5.0/python/bindings/examples/src/slim_bindings_examples/common.py +0 -259
  131. slim_bindings-0.5.0/python/bindings/examples/src/slim_bindings_examples/fire_and_forget.py +0 -201
  132. slim_bindings-0.5.0/python/bindings/examples/src/slim_bindings_examples/pubsub.py +0 -150
  133. slim_bindings-0.5.0/python/bindings/examples/src/slim_bindings_examples/request_reply.py +0 -182
  134. slim_bindings-0.5.0/python/bindings/examples/src/slim_bindings_examples/slim.py +0 -87
  135. slim_bindings-0.5.0/python/bindings/slim_bindings/__init__.py +0 -712
  136. slim_bindings-0.5.0/python/bindings/slim_bindings/_slim_bindings.pyi +0 -161
  137. slim_bindings-0.5.0/python/bindings/src/pysession.rs +0 -208
  138. slim_bindings-0.5.0/python/bindings/tests/common.py +0 -24
  139. slim_bindings-0.5.0/python/bindings/tests/conftest.py +0 -39
  140. slim_bindings-0.5.0/python/bindings/tests/test_bindings.py +0 -366
  141. slim_bindings-0.5.0/python/bindings/tests/test_fire_forget.py +0 -99
  142. slim_bindings-0.5.0/python/bindings/tests/test_identity.py +0 -169
  143. slim_bindings-0.5.0/python/bindings/tests/test_pubsub.py +0 -161
  144. slim_bindings-0.5.0/python/bindings/tests/test_request_reply.py +0 -94
  145. slim_bindings-0.5.0/python/bindings/tests/test_streaming.py +0 -149
  146. slim_bindings-0.5.0/slim_bindings/__init__.py +0 -712
  147. slim_bindings-0.5.0/slim_bindings/_slim_bindings.pyi +0 -161
  148. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/auth/README.md +0 -0
  149. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/auth/src/builder.rs +0 -0
  150. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/auth/src/errors.rs +0 -0
  151. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/auth/src/file_watcher.rs +0 -0
  152. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/auth/src/testutils.rs +0 -0
  153. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/auth/src/traits.rs +0 -0
  154. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/README.md +0 -0
  155. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/build.rs +0 -0
  156. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/proto/hello.proto +0 -0
  157. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/component/configuration.rs +0 -0
  158. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/component/id.rs +0 -0
  159. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/component.rs +0 -0
  160. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/grpc/compression.rs +0 -0
  161. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/grpc/errors.rs +0 -0
  162. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/grpc/headers_middleware.rs +0 -0
  163. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/grpc/helloworld.rs +0 -0
  164. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/grpc/proxy.rs +0 -0
  165. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/grpc/schema/client-config.schema.json +0 -0
  166. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/grpc/schema/generate_schema.rs +0 -0
  167. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/grpc.rs +0 -0
  168. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/lib.rs +0 -0
  169. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/metadata.rs +0 -0
  170. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/provider/env.rs +0 -0
  171. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/provider/file.rs +0 -0
  172. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/provider/lib.rs +0 -0
  173. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/provider.rs +0 -0
  174. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/testutils/helloworld.rs +0 -0
  175. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/testutils/tower_service.rs +0 -0
  176. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/testutils.rs +0 -0
  177. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/tls/client.rs +0 -0
  178. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/tls/provider.rs +0 -0
  179. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/src/tls.rs +0 -0
  180. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/grpc/ca.crt +0 -0
  181. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/grpc/server.crt +0 -0
  182. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/grpc/server.key +0 -0
  183. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/jwt/ec256-public.pem +0 -0
  184. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/jwt/ec256-wrong.pem +0 -0
  185. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/jwt/ec256.pem +0 -0
  186. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/jwt/ec384-public.pem +0 -0
  187. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/jwt/ec384-wrong.pem +0 -0
  188. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/jwt/ec384.pem +0 -0
  189. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/jwt/eddsa-public.pem +0 -0
  190. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/jwt/eddsa-wrong.pem +0 -0
  191. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/jwt/eddsa.pem +0 -0
  192. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/jwt/rsa-public.pem +0 -0
  193. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/jwt/rsa-wrong.pem +0 -0
  194. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/jwt/rsa.pem +0 -0
  195. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/testfile +0 -0
  196. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/tls/ca-1.crt +0 -0
  197. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/tls/ca-2.crt +0 -0
  198. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/tls/ca-bad.crt +0 -0
  199. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/tls/client-1.crt +0 -0
  200. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/tls/client-1.key +0 -0
  201. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/tls/client-2.crt +0 -0
  202. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/tls/client-2.key +0 -0
  203. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/tls/server-1.crt +0 -0
  204. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/tls/server-1.key +0 -0
  205. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/tls/server-2.crt +0 -0
  206. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/testdata/tls/server-2.key +0 -0
  207. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/config/tests/tls.rs +0 -0
  208. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/controller/README.md +0 -0
  209. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/controller/build.rs +0 -0
  210. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/controller/src/api/proto.rs +0 -0
  211. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/controller/src/api.rs +0 -0
  212. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/controller/src/errors.rs +0 -0
  213. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/controller/src/lib.rs +0 -0
  214. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/benches/pool_benchmark.rs +0 -0
  215. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/src/errors.rs +0 -0
  216. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/src/forwarder.rs +0 -0
  217. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/src/lib.rs +0 -0
  218. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/src/messages.rs +0 -0
  219. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/src/tables/connection_table.rs +0 -0
  220. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/src/tables/errors.rs +0 -0
  221. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/src/tables/pool.rs +0 -0
  222. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/src/tables/remote_subscription_table.rs +0 -0
  223. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/datapath/src/tables.rs +0 -0
  224. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/mls/README.md +0 -0
  225. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/mls/src/errors.rs +0 -0
  226. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/mls/src/identity_provider.rs +0 -0
  227. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/mls/src/lib.rs +0 -0
  228. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/mls/src/mls.rs +0 -0
  229. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/service/README.md +0 -0
  230. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/signal/CHANGELOG.md +0 -0
  231. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/signal/Cargo.toml +0 -0
  232. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/signal/README.md +0 -0
  233. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/signal/src/lib.rs +0 -0
  234. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/tracing/README.md +0 -0
  235. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/core/tracing/src/utils.rs +0 -0
  236. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/BUILD.md +0 -0
  237. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/Cargo.toml +0 -0
  238. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/build.rs +0 -0
  239. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/src/bin/stub_gen.rs +0 -0
  240. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/src/build_info.rs +0 -0
  241. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/tests/testdata/ec256-public.pem +0 -0
  242. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/tests/testdata/ec256.pem +0 -0
  243. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/tests/testdata/ec384-public.pem +0 -0
  244. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/tests/testdata/ec384.pem +0 -0
  245. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/tests/testdata/eddsa-public.pem +0 -0
  246. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/tests/testdata/eddsa.pem +0 -0
  247. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/tests/testdata/rsa-public.pem +0 -0
  248. {slim_bindings-0.5.0 → slim_bindings-0.6.0}/python/bindings/tests/testdata/rsa.pem +0 -0
@@ -29,7 +29,7 @@ dependencies = [
29
29
 
30
30
  [[package]]
31
31
  name = "agntcy-slim"
32
- version = "0.5.0"
32
+ version = "0.6.0"
33
33
  dependencies = [
34
34
  "agntcy-slim-config",
35
35
  "agntcy-slim-service",
@@ -51,7 +51,7 @@ dependencies = [
51
51
 
52
52
  [[package]]
53
53
  name = "agntcy-slim-auth"
54
- version = "0.3.0"
54
+ version = "0.3.1"
55
55
  dependencies = [
56
56
  "agntcy-slim-config",
57
57
  "async-trait",
@@ -102,7 +102,7 @@ dependencies = [
102
102
 
103
103
  [[package]]
104
104
  name = "agntcy-slim-config"
105
- version = "0.3.0"
105
+ version = "0.4.0"
106
106
  dependencies = [
107
107
  "agntcy-slim-auth",
108
108
  "base64 0.22.1",
@@ -141,19 +141,24 @@ dependencies = [
141
141
 
142
142
  [[package]]
143
143
  name = "agntcy-slim-controller"
144
- version = "0.3.0"
144
+ version = "0.4.0"
145
145
  dependencies = [
146
+ "agntcy-slim-auth",
146
147
  "agntcy-slim-config",
147
148
  "agntcy-slim-datapath",
148
149
  "agntcy-slim-signal",
149
150
  "agntcy-slim-tracing",
151
+ "base64 0.22.1",
152
+ "bincode",
150
153
  "drain",
151
154
  "h2 0.4.10",
152
155
  "parking_lot",
153
156
  "prost 0.13.5",
154
157
  "protoc-bin-vendored",
158
+ "rand 0.9.1",
155
159
  "serde",
156
160
  "serde_json",
161
+ "serde_yaml",
157
162
  "thiserror 2.0.12",
158
163
  "tokio",
159
164
  "tokio-stream",
@@ -167,7 +172,7 @@ dependencies = [
167
172
 
168
173
  [[package]]
169
174
  name = "agntcy-slim-datapath"
170
- version = "0.9.0"
175
+ version = "0.10.0"
171
176
  dependencies = [
172
177
  "agntcy-slim-config",
173
178
  "agntcy-slim-tracing",
@@ -196,7 +201,7 @@ dependencies = [
196
201
 
197
202
  [[package]]
198
203
  name = "agntcy-slim-mls"
199
- version = "0.1.1"
204
+ version = "0.1.2"
200
205
  dependencies = [
201
206
  "agntcy-slim-auth",
202
207
  "agntcy-slim-datapath",
@@ -223,7 +228,7 @@ dependencies = [
223
228
 
224
229
  [[package]]
225
230
  name = "agntcy-slim-service"
226
- version = "0.6.0"
231
+ version = "0.7.0"
227
232
  dependencies = [
228
233
  "agntcy-slim-auth",
229
234
  "agntcy-slim-config",
@@ -231,6 +236,7 @@ dependencies = [
231
236
  "agntcy-slim-datapath",
232
237
  "agntcy-slim-mls",
233
238
  "async-trait",
239
+ "base64 0.22.1",
234
240
  "bincode",
235
241
  "dirs",
236
242
  "drain",
@@ -255,7 +261,7 @@ dependencies = [
255
261
 
256
262
  [[package]]
257
263
  name = "agntcy-slim-tracing"
258
- version = "0.2.3"
264
+ version = "0.2.4"
259
265
  dependencies = [
260
266
  "agntcy-slim-config",
261
267
  "once_cell",
@@ -3760,11 +3766,14 @@ dependencies = [
3760
3766
  "agntcy-slim",
3761
3767
  "agntcy-slim-auth",
3762
3768
  "agntcy-slim-config",
3769
+ "agntcy-slim-controller",
3763
3770
  "agntcy-slim-datapath",
3764
3771
  "agntcy-slim-mls",
3765
3772
  "agntcy-slim-service",
3766
3773
  "agntcy-slim-signal",
3774
+ "anyhow",
3767
3775
  "clap",
3776
+ "prost 0.13.5",
3768
3777
  "tokio",
3769
3778
  "tracing",
3770
3779
  ]
@@ -21,15 +21,15 @@ resolver = "2"
21
21
 
22
22
  [workspace.dependencies]
23
23
  # Local dependencies
24
- agntcy-slim = { path = "core/slim", version = "0.5.0" }
25
- agntcy-slim-auth = { path = "core/auth", version = "0.3.0" }
26
- agntcy-slim-config = { path = "core/config", version = "0.3.0" }
27
- agntcy-slim-controller = { path = "core/controller", version = "0.3.0" }
28
- agntcy-slim-datapath = { path = "core/datapath", version = "0.9.0" }
29
- agntcy-slim-mls = { path = "core/mls", version = "0.1.1" }
30
- agntcy-slim-service = { path = "core/service", version = "0.6.0" }
24
+ agntcy-slim = { path = "core/slim", version = "0.6.0" }
25
+ agntcy-slim-auth = { path = "core/auth", version = "0.3.1" }
26
+ agntcy-slim-config = { path = "core/config", version = "0.4.0" }
27
+ agntcy-slim-controller = { path = "core/controller", version = "0.4.0" }
28
+ agntcy-slim-datapath = { path = "core/datapath", version = "0.10.0" }
29
+ agntcy-slim-mls = { path = "core/mls", version = "0.1.2" }
30
+ agntcy-slim-service = { path = "core/service", version = "0.7.0" }
31
31
  agntcy-slim-signal = { path = "core/signal", version = "0.1.3" }
32
- agntcy-slim-tracing = { path = "core/tracing", version = "0.2.3" }
32
+ agntcy-slim-tracing = { path = "core/tracing", version = "0.2.4" }
33
33
 
34
34
  anyhow = "1.0.98"
35
35
 
@@ -0,0 +1,233 @@
1
+ Metadata-Version: 2.4
2
+ Name: slim-bindings
3
+ Version: 0.6.0
4
+ Classifier: Development Status :: 3 - Alpha
5
+ Classifier: Intended Audience :: Developers
6
+ Classifier: Topic :: Software Development :: Libraries
7
+ Classifier: Programming Language :: Python :: 3.9
8
+ Classifier: Programming Language :: Python :: 3.10
9
+ Classifier: Programming Language :: Python :: 3.11
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Classifier: Programming Language :: Python :: 3.13
12
+ Summary: SLIM Rust bindings for Python
13
+ License-Expression: Apache-2.0
14
+ Requires-Python: >=3.9, <4.0
15
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
16
+ Project-URL: Repository, https://github.com/agntcy/slim
17
+ Project-URL: Issues, https://github.com/agntcy/slim/issues
18
+ Project-URL: Changelog, https://github.com/agntcy/slim/blob/main/data-plane/python/bindings/CHANGELOG.md
19
+
20
+ # SLIM Python Bindings
21
+
22
+ High-level asynchronous Python bindings for the SLIM data‑plane service (Rust core).
23
+ They let you embed SLIM directly into your Python application to:
24
+
25
+ - Instantiate a local SLIM service (`Slim.new`)
26
+ - Run a server listener (start / stop a SLIM endpoint)
27
+ - Establish outbound client connections (`connect` / `disconnect`)
28
+ - Create, accept, configure, and delete sessions (Point2Point / Group)
29
+ - Publish / receive messages (point‑to‑point or group (channel) based)
30
+ - Manage routing and subscriptions (add / remove routes, subscribe / unsubscribe)
31
+ - Configure identity & trust (shared secret, static JWT, dynamic signing JWT, JWKS auto‑resolve)
32
+ - Integrate tracing / OpenTelemetry
33
+
34
+ ---
35
+
36
+ ## Supported Session Types
37
+
38
+ | Type | Description | Sticky Peer | Metadata | MLS (group security) |
39
+ |-------------|------------------------------------------------------------------------------------------|-------------|----------|----------------------|
40
+ | Point2Point | Point-to-point with a fixed destination | Yes | Yes | Yes |
41
+ | Group | Many-to-many via channel/topic name (channel moderator can invite/remove participants) | N/A | Yes | Yes |
42
+
43
+ ---
44
+
45
+ ## Identity & Authentication
46
+
47
+ You can choose among multiple identity provider / verifier strategies:
48
+
49
+ | Provider Variant | Use Case | Notes |
50
+ |--------------------------------------|-----------------------------------------|-------|
51
+ | `PyIdentityProvider.SharedSecret` | Local dev / tests | Symmetric; not for production |
52
+ | `PyIdentityProvider.StaticJwt` | Pre-issued token loaded from file | No key rotation; simple |
53
+ | `PyIdentityProvider.Jwt` | Dynamically signed JWT (private key) | Supports exp, iss, aud, sub, duration |
54
+ | `PyIdentityVerifier.Jwt` | Verifies JWT (public key or JWKS auto) | Optional claim requirements (`require_iss`, etc.) |
55
+ | `PyIdentityVerifier.SharedSecret` | Matches shared secret provider | Symmetric validation |
56
+
57
+ JWKS auto‑resolution (when configured in the verifier with `autoresolve=True`) will:
58
+ 1. Try OpenID discovery (`/.well-known/openid-configuration`) for `jwks_uri`
59
+ 2. Fallback to `/.well-known/jwks.json`
60
+ 3. Cache the key set with a TTL and prefer `kid` match, else algorithm match.
61
+
62
+ ---
63
+
64
+ ## Quick Start
65
+
66
+ ### 1. Install
67
+
68
+ ```bash
69
+ pip install slim-bindings
70
+ ```
71
+
72
+ ### 2. Minimal Receiver Example
73
+
74
+ ```python
75
+ import asyncio
76
+ import slim_bindings
77
+
78
+ async def main():
79
+ # 1. Create identity (shared secret for demo)
80
+ provider = slim_bindings.PyIdentityProvider.SharedSecret(identity="demo", shared_secret="secret")
81
+ verifier = slim_bindings.PyIdentityVerifier.SharedSecret(identity="demo", shared_secret="secret")
82
+
83
+ local_name = slim_bindings.PyName("org", "namespace", "demo")
84
+ slim = await slim_bindings.Slim.new(local_name, provider, verifier)
85
+
86
+ # 2. (Optionally) connect as a client to a remote endpoint
87
+ # await slim.connect({"endpoint": "http://127.0.0.1:50000", "tls": {"insecure": True}})
88
+
89
+ # 3. (Optionally) run a local server (insecure TLS for local dev)
90
+ # await slim.run_server({"endpoint": "127.0.0.1:40000", "tls": {"insecure": True}})
91
+
92
+ # 4. Wait for inbound session
93
+ print("Waiting for an inbound session...")
94
+ session = await slim.listen_for_session()
95
+
96
+ # 5. Receive one message and reply
97
+ msg_ctx, payload = await session.get_message()
98
+ print("Received:", payload)
99
+ await session.publish_to(msg_ctx, b"echo:" + payload)
100
+
101
+ # 6. Clean shutdown
102
+ await slim.delete_session(session)
103
+ await slim.stop_server("127.0.0.1:40000")
104
+
105
+ asyncio.run(main())
106
+ ```
107
+
108
+ ### 3. Outbound Session (PointToPoint)
109
+
110
+ ```python
111
+ remote = slim_bindings.PyName("org", "namespace", "peer")
112
+ session = await slim.create_session(
113
+ slim_bindings.PySessionConfiguration.PointToPoint(
114
+ peer_name=remote,
115
+ mls_enabled=True,
116
+ metadata={"trace_id": "abc123"},
117
+ )
118
+ )
119
+ await slim.set_route(remote)
120
+ await session.publish(b"hello")
121
+ ctx, reply = await session.get_message()
122
+ print("Reply:", reply)
123
+ await slim.delete_session(session)
124
+ ```
125
+
126
+ ---
127
+
128
+ ## Tracing / Observability
129
+
130
+ Initialize tracing (optionally enabling OpenTelemetry export):
131
+
132
+ ```python
133
+ await slim_bindings.init_tracing({
134
+ "log_level": "info",
135
+ "opentelemetry": {
136
+ "enabled": True,
137
+ "grpc": {"endpoint": "http://localhost:4317"}
138
+ }
139
+ })
140
+ ```
141
+
142
+ ---
143
+
144
+ ## Installation
145
+
146
+ ```bash
147
+ pip install slim-bindings
148
+ ```
149
+
150
+ ---
151
+
152
+ ## Include as Dependency
153
+
154
+ ### With `pyproject.toml`
155
+
156
+ ```toml
157
+ [project]
158
+ name = "slim-example"
159
+ version = "0.1.0"
160
+ description = "Python program using SLIM"
161
+ requires-python = ">=3.9"
162
+ dependencies = [
163
+ "slim-bindings>=0.6.0"
164
+ ]
165
+ ```
166
+
167
+ ### With Poetry
168
+
169
+ ```toml
170
+ [tool.poetry]
171
+ name = "slim-example"
172
+ version = "0.1.0"
173
+ description = "Python program using SLIM"
174
+
175
+ [tool.poetry.dependencies]
176
+ python = ">=3.9,<3.14"
177
+ slim-bindings = ">=0.5.0"
178
+ ```
179
+
180
+ ---
181
+
182
+ ## Feature Highlights
183
+
184
+ | Area | Capability |
185
+ |-----------------|------------|
186
+ | Server | `run_server`, `stop_server` |
187
+ | Client | `connect`, `disconnect`, automatic subscribe to local name |
188
+ | Routing | `set_route`, `remove_route` |
189
+ | Subscriptions | `subscribe`, `unsubscribe` |
190
+ | Sessions | `create_session`, `listen_for_session`, `delete_session`, `set_session_config` |
191
+ | Messaging | `publish`, `publish_to`, `get_message` |
192
+ | Identity | Shared secret, static JWT, dynamic JWT signing, JWT verification (public key / JWKS) |
193
+ | Tracing | Structured logs & optional OpenTelemetry export |
194
+
195
+ ---
196
+
197
+ ## Example Programs
198
+
199
+ Complete runnable examples (point2point, group, server) live in the repository:
200
+
201
+ https://github.com/agntcy/slim/tree/slim-v0.5.0/data-plane/python/bindings/examples
202
+
203
+ You can install and invoke them (after building) via:
204
+
205
+ ```bash
206
+ slim-bindings-examples point2point ...
207
+ slim-bindings-examples group ...
208
+ slim-bindings-examples slim ...
209
+ ```
210
+
211
+ ---
212
+
213
+ ## When to Use Each Session Type
214
+
215
+ | Use Case | Recommended Type |
216
+ |----------------------------------|-------------------|
217
+ | Stable peer workflow / stateful | Point2Point |
218
+ | Group chat / fan-out | Group |
219
+
220
+ ---
221
+
222
+ ## Security Notes
223
+
224
+ - Prefer asymmetric JWT-based identity in production.
225
+ - Rotate keys periodically and enable `require_iss`, `require_aud`, `require_sub`.
226
+ - Shared secret is only suitable for local tests and prototypes.
227
+
228
+ ---
229
+
230
+ ## License
231
+
232
+ Apache-2.0 (see repository for full license text).
233
+
@@ -0,0 +1,213 @@
1
+ # SLIM Python Bindings
2
+
3
+ High-level asynchronous Python bindings for the SLIM data‑plane service (Rust core).
4
+ They let you embed SLIM directly into your Python application to:
5
+
6
+ - Instantiate a local SLIM service (`Slim.new`)
7
+ - Run a server listener (start / stop a SLIM endpoint)
8
+ - Establish outbound client connections (`connect` / `disconnect`)
9
+ - Create, accept, configure, and delete sessions (Point2Point / Group)
10
+ - Publish / receive messages (point‑to‑point or group (channel) based)
11
+ - Manage routing and subscriptions (add / remove routes, subscribe / unsubscribe)
12
+ - Configure identity & trust (shared secret, static JWT, dynamic signing JWT, JWKS auto‑resolve)
13
+ - Integrate tracing / OpenTelemetry
14
+
15
+ ---
16
+
17
+ ## Supported Session Types
18
+
19
+ | Type | Description | Sticky Peer | Metadata | MLS (group security) |
20
+ |-------------|------------------------------------------------------------------------------------------|-------------|----------|----------------------|
21
+ | Point2Point | Point-to-point with a fixed destination | Yes | Yes | Yes |
22
+ | Group | Many-to-many via channel/topic name (channel moderator can invite/remove participants) | N/A | Yes | Yes |
23
+
24
+ ---
25
+
26
+ ## Identity & Authentication
27
+
28
+ You can choose among multiple identity provider / verifier strategies:
29
+
30
+ | Provider Variant | Use Case | Notes |
31
+ |--------------------------------------|-----------------------------------------|-------|
32
+ | `PyIdentityProvider.SharedSecret` | Local dev / tests | Symmetric; not for production |
33
+ | `PyIdentityProvider.StaticJwt` | Pre-issued token loaded from file | No key rotation; simple |
34
+ | `PyIdentityProvider.Jwt` | Dynamically signed JWT (private key) | Supports exp, iss, aud, sub, duration |
35
+ | `PyIdentityVerifier.Jwt` | Verifies JWT (public key or JWKS auto) | Optional claim requirements (`require_iss`, etc.) |
36
+ | `PyIdentityVerifier.SharedSecret` | Matches shared secret provider | Symmetric validation |
37
+
38
+ JWKS auto‑resolution (when configured in the verifier with `autoresolve=True`) will:
39
+ 1. Try OpenID discovery (`/.well-known/openid-configuration`) for `jwks_uri`
40
+ 2. Fallback to `/.well-known/jwks.json`
41
+ 3. Cache the key set with a TTL and prefer `kid` match, else algorithm match.
42
+
43
+ ---
44
+
45
+ ## Quick Start
46
+
47
+ ### 1. Install
48
+
49
+ ```bash
50
+ pip install slim-bindings
51
+ ```
52
+
53
+ ### 2. Minimal Receiver Example
54
+
55
+ ```python
56
+ import asyncio
57
+ import slim_bindings
58
+
59
+ async def main():
60
+ # 1. Create identity (shared secret for demo)
61
+ provider = slim_bindings.PyIdentityProvider.SharedSecret(identity="demo", shared_secret="secret")
62
+ verifier = slim_bindings.PyIdentityVerifier.SharedSecret(identity="demo", shared_secret="secret")
63
+
64
+ local_name = slim_bindings.PyName("org", "namespace", "demo")
65
+ slim = await slim_bindings.Slim.new(local_name, provider, verifier)
66
+
67
+ # 2. (Optionally) connect as a client to a remote endpoint
68
+ # await slim.connect({"endpoint": "http://127.0.0.1:50000", "tls": {"insecure": True}})
69
+
70
+ # 3. (Optionally) run a local server (insecure TLS for local dev)
71
+ # await slim.run_server({"endpoint": "127.0.0.1:40000", "tls": {"insecure": True}})
72
+
73
+ # 4. Wait for inbound session
74
+ print("Waiting for an inbound session...")
75
+ session = await slim.listen_for_session()
76
+
77
+ # 5. Receive one message and reply
78
+ msg_ctx, payload = await session.get_message()
79
+ print("Received:", payload)
80
+ await session.publish_to(msg_ctx, b"echo:" + payload)
81
+
82
+ # 6. Clean shutdown
83
+ await slim.delete_session(session)
84
+ await slim.stop_server("127.0.0.1:40000")
85
+
86
+ asyncio.run(main())
87
+ ```
88
+
89
+ ### 3. Outbound Session (PointToPoint)
90
+
91
+ ```python
92
+ remote = slim_bindings.PyName("org", "namespace", "peer")
93
+ session = await slim.create_session(
94
+ slim_bindings.PySessionConfiguration.PointToPoint(
95
+ peer_name=remote,
96
+ mls_enabled=True,
97
+ metadata={"trace_id": "abc123"},
98
+ )
99
+ )
100
+ await slim.set_route(remote)
101
+ await session.publish(b"hello")
102
+ ctx, reply = await session.get_message()
103
+ print("Reply:", reply)
104
+ await slim.delete_session(session)
105
+ ```
106
+
107
+ ---
108
+
109
+ ## Tracing / Observability
110
+
111
+ Initialize tracing (optionally enabling OpenTelemetry export):
112
+
113
+ ```python
114
+ await slim_bindings.init_tracing({
115
+ "log_level": "info",
116
+ "opentelemetry": {
117
+ "enabled": True,
118
+ "grpc": {"endpoint": "http://localhost:4317"}
119
+ }
120
+ })
121
+ ```
122
+
123
+ ---
124
+
125
+ ## Installation
126
+
127
+ ```bash
128
+ pip install slim-bindings
129
+ ```
130
+
131
+ ---
132
+
133
+ ## Include as Dependency
134
+
135
+ ### With `pyproject.toml`
136
+
137
+ ```toml
138
+ [project]
139
+ name = "slim-example"
140
+ version = "0.1.0"
141
+ description = "Python program using SLIM"
142
+ requires-python = ">=3.9"
143
+ dependencies = [
144
+ "slim-bindings>=0.6.0"
145
+ ]
146
+ ```
147
+
148
+ ### With Poetry
149
+
150
+ ```toml
151
+ [tool.poetry]
152
+ name = "slim-example"
153
+ version = "0.1.0"
154
+ description = "Python program using SLIM"
155
+
156
+ [tool.poetry.dependencies]
157
+ python = ">=3.9,<3.14"
158
+ slim-bindings = ">=0.5.0"
159
+ ```
160
+
161
+ ---
162
+
163
+ ## Feature Highlights
164
+
165
+ | Area | Capability |
166
+ |-----------------|------------|
167
+ | Server | `run_server`, `stop_server` |
168
+ | Client | `connect`, `disconnect`, automatic subscribe to local name |
169
+ | Routing | `set_route`, `remove_route` |
170
+ | Subscriptions | `subscribe`, `unsubscribe` |
171
+ | Sessions | `create_session`, `listen_for_session`, `delete_session`, `set_session_config` |
172
+ | Messaging | `publish`, `publish_to`, `get_message` |
173
+ | Identity | Shared secret, static JWT, dynamic JWT signing, JWT verification (public key / JWKS) |
174
+ | Tracing | Structured logs & optional OpenTelemetry export |
175
+
176
+ ---
177
+
178
+ ## Example Programs
179
+
180
+ Complete runnable examples (point2point, group, server) live in the repository:
181
+
182
+ https://github.com/agntcy/slim/tree/slim-v0.5.0/data-plane/python/bindings/examples
183
+
184
+ You can install and invoke them (after building) via:
185
+
186
+ ```bash
187
+ slim-bindings-examples point2point ...
188
+ slim-bindings-examples group ...
189
+ slim-bindings-examples slim ...
190
+ ```
191
+
192
+ ---
193
+
194
+ ## When to Use Each Session Type
195
+
196
+ | Use Case | Recommended Type |
197
+ |----------------------------------|-------------------|
198
+ | Stable peer workflow / stateful | Point2Point |
199
+ | Group chat / fan-out | Group |
200
+
201
+ ---
202
+
203
+ ## Security Notes
204
+
205
+ - Prefer asymmetric JWT-based identity in production.
206
+ - Rotate keys periodically and enable `require_iss`, `require_aud`, `require_sub`.
207
+ - Shared secret is only suitable for local tests and prototypes.
208
+
209
+ ---
210
+
211
+ ## License
212
+
213
+ Apache-2.0 (see repository for full license text).
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.3.1](https://github.com/agntcy/slim/compare/slim-auth-v0.3.0...slim-auth-v0.3.1) - 2025-10-09
11
+
12
+ ### Added
13
+
14
+ - implement control plane group management ([#554](https://github.com/agntcy/slim/pull/554))
15
+ - remove bearer auth in favour of static jwt ([#774](https://github.com/agntcy/slim/pull/774))
16
+
17
+ ### Other
18
+
19
+ - upgrade to rust toolchain 1.90.0 ([#730](https://github.com/agntcy/slim/pull/730))
20
+
10
21
  ## [0.3.0](https://github.com/agntcy/slim/compare/slim-auth-v0.2.0...slim-auth-v0.3.0) - 2025-09-17
11
22
 
12
23
  ### Added
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "agntcy-slim-auth"
3
- version = "0.3.0"
3
+ version = "0.3.1"
4
4
  license = { workspace = true }
5
5
  edition = { workspace = true }
6
6
  description = "Authentication utilities for the Agntcy Slim framework"