valkey-glide 2.0.0rc5__tar.gz → 2.0.0rc6__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 valkey-glide might be problematic. Click here for more details.

Files changed (176) hide show
  1. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/.gitignore +1 -0
  2. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/Cargo.lock +3 -3
  3. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/Cargo.toml +2 -2
  4. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/DEVELOPER.md +15 -1
  5. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/PKG-INFO +21 -4
  6. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/README.md +19 -2
  7. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/THIRD_PARTY_LICENSES_PYTHON +75 -29
  8. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/dev.py +1 -1
  9. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/dev_requirements.txt +2 -3
  10. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/docs/conf.py +2 -0
  11. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/Cargo.toml +2 -2
  12. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/THIRD_PARTY_LICENSES_RUST +1 -1
  13. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/benches/connections_benchmark.rs +3 -3
  14. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/benches/memory_benchmark.rs +1 -1
  15. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/benches/rotating_buffer_benchmark.rs +3 -3
  16. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/src/client/mod.rs +70 -5
  17. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/src/client/reconnecting_connection.rs +3 -3
  18. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/src/client/standalone_client.rs +4 -4
  19. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/src/client/types.rs +1 -5
  20. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/src/client/value_conversion.rs +93 -76
  21. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/src/request_type.rs +1 -1
  22. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/src/rotating_buffer.rs +2 -2
  23. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/src/socket_listener.rs +86 -84
  24. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/tests/test_client.rs +8 -6
  25. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/tests/test_cluster_client.rs +3 -3
  26. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/tests/test_socket_listener.rs +2 -2
  27. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/tests/utilities/cluster.rs +2 -2
  28. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/tests/utilities/mod.rs +2 -2
  29. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/logger_core/Cargo.toml +1 -1
  30. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/logger_core/src/lib.rs +5 -5
  31. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/logger_core/tests/test_logger.rs +1 -1
  32. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/telemetrylib/Cargo.toml +1 -1
  33. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/pyproject.toml +3 -5
  34. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/async_commands/batch.py +40 -24
  35. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/async_commands/cluster_commands.py +7 -1
  36. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/async_commands/core.py +25 -20
  37. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/async_commands/standalone_commands.py +8 -1
  38. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/glide_client.py +191 -85
  39. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/routes.py +25 -0
  40. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/requirements.txt +1 -1
  41. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/tests/conftest.py +78 -25
  42. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/tests/test_api_export.py +2 -0
  43. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/tests/test_async_client.py +117 -92
  44. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/tests/test_auth.py +9 -9
  45. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/tests/test_batch.py +11 -3
  46. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/tests/test_proto_coded.py +1 -0
  47. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/tests/test_pubsub.py +82 -69
  48. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/tests/test_read_from_strategy.py +2 -2
  49. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/tests/test_scan.py +6 -6
  50. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/tests/test_utils.py +0 -1
  51. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/tests/tests_server_modules/test_ft.py +2 -1
  52. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/tests/tests_server_modules/test_json.py +2 -2
  53. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/tests/utils/utils.py +2 -1
  54. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/.cargo/config.toml +0 -0
  55. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/.flake8 +0 -0
  56. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/.ort.yml +0 -0
  57. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/Pipfile +0 -0
  58. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/docs/Makefile +0 -0
  59. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/docs/index.rst +0 -0
  60. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/docs/make.bat +0 -0
  61. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/.cargo/config.toml +0 -0
  62. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/.ort.yml +0 -0
  63. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/README.md +0 -0
  64. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/build.rs +0 -0
  65. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/src/cluster_scan_container.rs +0 -0
  66. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/src/errors.rs +0 -0
  67. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/src/lib.rs +0 -0
  68. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/src/protobuf/command_request.proto +0 -0
  69. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/src/protobuf/connection_request.proto +0 -0
  70. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/src/protobuf/response.proto +0 -0
  71. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/src/scripts_container.rs +0 -0
  72. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/tests/test_standalone_client.rs +0 -0
  73. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/glide-core/tests/utilities/mocks.rs +1 -1
  74. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/CHANGELOG.md +0 -0
  75. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/Cargo.toml +0 -0
  76. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/LICENSE +0 -0
  77. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/benches/bench_basic.rs +0 -0
  78. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/benches/bench_cluster.rs +0 -0
  79. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/benches/bench_cluster_async.rs +0 -0
  80. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/examples/async-await.rs +0 -0
  81. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/examples/async-connection-loss.rs +0 -0
  82. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/examples/async-multiplexed.rs +0 -0
  83. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/examples/async-pub-sub.rs +0 -0
  84. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/examples/async-scan.rs +0 -0
  85. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/examples/basic.rs +0 -0
  86. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/examples/geospatial.rs +0 -0
  87. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/examples/streams.rs +0 -0
  88. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/release.toml +0 -0
  89. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/acl.rs +0 -0
  90. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/aio/connection.rs +0 -0
  91. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/aio/connection_manager.rs +0 -0
  92. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/aio/mod.rs +0 -0
  93. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/aio/multiplexed_connection.rs +0 -0
  94. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/aio/runtime.rs +0 -0
  95. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/aio/tokio.rs +0 -0
  96. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/client.rs +0 -0
  97. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/cluster.rs +0 -0
  98. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/cluster_async/LICENSE +0 -0
  99. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/cluster_async/connections_container.rs +0 -0
  100. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/cluster_async/connections_logic.rs +0 -0
  101. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/cluster_async/mod.rs +0 -0
  102. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/cluster_async/pipeline_routing.rs +0 -0
  103. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/cluster_client.rs +0 -0
  104. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/cluster_pipeline.rs +0 -0
  105. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/cluster_routing.rs +0 -0
  106. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/cluster_slotmap.rs +0 -0
  107. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/cluster_topology.rs +0 -0
  108. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/cmd.rs +0 -0
  109. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/commands/cluster_scan.rs +0 -0
  110. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/commands/json.rs +0 -0
  111. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/commands/macros.rs +0 -0
  112. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/commands/mod.rs +0 -0
  113. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/connection.rs +0 -0
  114. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/geo.rs +0 -0
  115. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/lib.rs +0 -0
  116. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/macros.rs +0 -0
  117. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/parser.rs +0 -0
  118. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/pipeline.rs +0 -0
  119. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/push_manager.rs +0 -0
  120. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/r2d2.rs +0 -0
  121. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/retry_strategies.rs +0 -0
  122. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/script.rs +0 -0
  123. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/sentinel.rs +0 -0
  124. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/streams.rs +0 -0
  125. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/tls.rs +0 -0
  126. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/src/types.rs +0 -0
  127. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/auth.rs +0 -0
  128. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/parser.rs +0 -0
  129. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/support/cluster.rs +0 -0
  130. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/support/mock_cluster.rs +0 -0
  131. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/support/mod.rs +0 -0
  132. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/support/sentinel.rs +0 -0
  133. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/support/util.rs +0 -0
  134. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/test_acl.rs +0 -0
  135. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/test_async.rs +0 -0
  136. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/test_async_cluster_connections_logic.rs +0 -0
  137. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/test_basic.rs +0 -0
  138. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/test_bignum.rs +0 -0
  139. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/test_cluster.rs +0 -0
  140. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/test_cluster_async.rs +0 -0
  141. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/test_cluster_scan.rs +0 -0
  142. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/test_geospatial.rs +0 -0
  143. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/test_module_json.rs +0 -0
  144. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/test_pipeline.rs +0 -0
  145. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/test_sentinel.rs +0 -0
  146. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/test_streams.rs +0 -0
  147. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/redis/tests/test_types.rs +0 -0
  148. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/telemetrylib/src/lib.rs +0 -0
  149. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/telemetrylib/src/open_telemetry.rs +0 -0
  150. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/local_dependencies/telemetrylib/src/open_telemetry_exporter_file.rs +0 -0
  151. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/pytest.ini +0 -0
  152. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/__init__.py +0 -0
  153. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/async_commands/__init__.py +0 -0
  154. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/async_commands/bitmap.py +0 -0
  155. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/async_commands/command_args.py +0 -0
  156. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/async_commands/server_modules/ft.py +0 -0
  157. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/async_commands/server_modules/ft_options/ft_aggregate_options.py +0 -0
  158. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/async_commands/server_modules/ft_options/ft_constants.py +0 -0
  159. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/async_commands/server_modules/ft_options/ft_create_options.py +0 -0
  160. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/async_commands/server_modules/ft_options/ft_profile_options.py +0 -0
  161. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/async_commands/server_modules/ft_options/ft_search_options.py +0 -0
  162. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/async_commands/server_modules/glide_json.py +0 -0
  163. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/async_commands/server_modules/json_batch.py +0 -0
  164. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/async_commands/sorted_set.py +0 -0
  165. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/async_commands/stream.py +0 -0
  166. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/config.py +0 -0
  167. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/constants.py +0 -0
  168. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/exceptions.py +0 -0
  169. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/glide.pyi +0 -0
  170. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/logger.py +0 -0
  171. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/protobuf_codec.py +0 -0
  172. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/python/glide/py.typed +0 -0
  173. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/src/lib.rs +3 -3
  174. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/tests/__init__.py +0 -0
  175. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/tests/test_config.py +0 -0
  176. {valkey_glide-2.0.0rc5 → valkey_glide-2.0.0rc6}/tests/utils/cluster.py +0 -0
@@ -157,3 +157,4 @@ cython_debug/
157
157
  # protobuf autogenerated files
158
158
  *_pb2.py
159
159
  *_pb2.pyi
160
+ protoc-*.zip
@@ -168,9 +168,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
168
168
 
169
169
  [[package]]
170
170
  name = "bitflags"
171
- version = "2.9.0"
171
+ version = "2.9.1"
172
172
  source = "registry+https://github.com/rust-lang/crates.io-index"
173
- checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
173
+ checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
174
174
 
175
175
  [[package]]
176
176
  name = "bumpalo"
@@ -2366,7 +2366,7 @@ dependencies = [
2366
2366
 
2367
2367
  [[package]]
2368
2368
  name = "valkey-glide"
2369
- version = "2.0.0-rc5"
2369
+ version = "2.0.0-rc6"
2370
2370
  dependencies = [
2371
2371
  "bytes",
2372
2372
  "glide-core",
@@ -1,7 +1,7 @@
1
1
  [package]
2
2
  name = "valkey-glide"
3
- version = "2.0.0-rc5"
4
- edition = "2021"
3
+ version = "2.0.0-rc6"
4
+ edition = "2024"
5
5
  license = "Apache-2.0"
6
6
  authors = ["Valkey GLIDE Maintainers"]
7
7
 
@@ -155,7 +155,17 @@ If needed, you can invoke `pytest` directly from the root `python/` directory fo
155
155
  ### Run all tests manually
156
156
  ```bash
157
157
  source .env/bin/activate
158
- pytest -v --asyncio-mode=auto
158
+ pytest -v
159
+ ```
160
+
161
+ ### Running with different async backends
162
+
163
+ Python GLIDE supports both trio and asyncio. Pass the `--async-backend` flag to `pytest` with either `trio`, `asyncio` or `uvloop` to run tests on the specified async backend. You can pass multiple async backends to run tests on all of them.
164
+
165
+ Example:
166
+ ```bash
167
+ source .env/bin/activate
168
+ pytest -v --async-backend=trio --async-backend=asyncio
159
169
  ```
160
170
 
161
171
  # Protobuf
@@ -457,3 +467,7 @@ Example: `` `SORT <https://valkey.io/commands/sort/>`_ ``
457
467
  - [Black Formatter](https://marketplace.visualstudio.com/items?itemName=ms-python.black-formatter)
458
468
  - [Flake8](https://marketplace.visualstudio.com/items?itemName=ms-python.flake8)
459
469
  - [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer)
470
+
471
+ # Community Support and Feedback
472
+
473
+ We encourage you to join our community to support, share feedback, and ask questions. You can approach us for anything on our Valkey Slack: [Join Valkey Slack](https://join.slack.com/t/valkey-oss-developer/shared_invite/zt-2nxs51chx-EB9hu9Qdch3GMfRcztTSkQ).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: valkey-glide
3
- Version: 2.0.0rc5
3
+ Version: 2.0.0rc6
4
4
  Classifier: Topic :: Database
5
5
  Classifier: Topic :: Utilities
6
6
  Classifier: License :: OSI Approved :: Apache Software License
@@ -9,7 +9,7 @@ Classifier: Topic :: Software Development
9
9
  Classifier: Programming Language :: Rust
10
10
  Classifier: Programming Language :: Python :: Implementation :: CPython
11
11
  Classifier: Programming Language :: Python :: Implementation :: PyPy
12
- Requires-Dist: async-timeout>=4.0.2; python_version < '3.11'
12
+ Requires-Dist: anyio>=4.9.0
13
13
  Requires-Dist: typing-extensions>=4.8.0; python_version < '3.11'
14
14
  Requires-Dist: protobuf>=3.20
15
15
  Summary: An open source Valkey client library that supports Valkey and Redis open source 6.2, 7.0, 7.2 and 8.0.
@@ -18,9 +18,19 @@ License: Apache-2.0
18
18
  Requires-Python: >=3.9
19
19
  Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
20
20
 
21
- # Valkey GLIDE
21
+ # Welcome to Valkey GLIDE!
22
22
 
23
- Valkey General Language Independent Driver for the Enterprise (GLIDE), is an open-source Valkey client library. Valkey GLIDE is one of the official client libraries for Valkey, and it supports all Valkey commands. Valkey GLIDE supports Valkey 7.2 and above, and Redis open-source 6.2, 7.0 and 7.2. Application programmers use Valkey GLIDE to safely and reliably connect their applications to Valkey- and Redis OSS- compatible services. Valkey GLIDE is designed for reliability, optimized performance, and high-availability, for Valkey and Redis OSS based applications. It is sponsored and supported by AWS, and is pre-configured with best practices learned from over a decade of operating Redis OSS-compatible services used by hundreds of thousands of customers. To help ensure consistency in application development and operations, Valkey GLIDE is implemented using a core driver framework, written in Rust, with language specific extensions. This design ensures consistency in features across languages and reduces overall complexity.
23
+ Valkey General Language Independent Driver for the Enterprise (GLIDE) is the official open-source Valkey client library, proudly part of the Valkey organization. Our mission is to make your experience with Valkey and Redis OSS seamless and enjoyable. Whether you're a seasoned developer or just starting out, Valkey GLIDE is here to support you every step of the way.
24
+
25
+ # Why Choose Valkey GLIDE?
26
+
27
+ - **Community and Open Source**: Join our vibrant community and contribute to the project. We are always here to respond, and the client is for the community.
28
+ - **Reliability**: Built with best practices learned from over a decade of operating Redis OSS-compatible services.
29
+ - **Performance**: Optimized for high performance and low latency.
30
+ - **High Availability**: Designed to ensure your applications are always up and running.
31
+ - **Cross-Language Support**: Implemented using a core driver framework written in Rust, with language-specific extensions to ensure consistency and reduce complexity.
32
+ - **Stability and Fault Tolerance**: We brought our years of experience to create a bulletproof client.
33
+ - **Backed and Supported by AWS and GCP**: Ensuring robust support and continuous improvement of the project.
24
34
 
25
35
  ## Documentation
26
36
 
@@ -47,6 +57,7 @@ Linux:
47
57
  macOS:
48
58
 
49
59
  - macOS 14.7 (Apple silicon/aarch_64)
60
+ - macOS 13.7 (x86_64/amd64)
50
61
 
51
62
  ## Python Supported Versions
52
63
 
@@ -58,6 +69,8 @@ macOS:
58
69
  | 3.12 |
59
70
  | 3.13 |
60
71
 
72
+ Valkey GLIDE transparently supports both the `asyncio` and `trio` concurrency frameworks.
73
+
61
74
  ## Installation and Setup
62
75
 
63
76
  ### Installing via Package Manager (pip)
@@ -125,3 +138,7 @@ For complete examples with error handling, please refer to the [cluster example]
125
138
 
126
139
  Development instructions for local building & testing the package are in the [DEVELOPER.md](https://github.com/valkey-io/valkey-glide/blob/main/python/DEVELOPER.md#build-from-source) file.
127
140
 
141
+ ## Community and Feedback
142
+
143
+ We encourage you to join our community to support, share feedback, and ask questions. You can approach us for anything on our Valkey Slack: [Join Valkey Slack](https://join.slack.com/t/valkey-oss-developer/shared_invite/zt-2nxs51chx-EB9hu9Qdch3GMfRcztTSkQ).
144
+
@@ -1,6 +1,16 @@
1
- # Valkey GLIDE
1
+ # Welcome to Valkey GLIDE!
2
2
 
3
- Valkey General Language Independent Driver for the Enterprise (GLIDE), is an open-source Valkey client library. Valkey GLIDE is one of the official client libraries for Valkey, and it supports all Valkey commands. Valkey GLIDE supports Valkey 7.2 and above, and Redis open-source 6.2, 7.0 and 7.2. Application programmers use Valkey GLIDE to safely and reliably connect their applications to Valkey- and Redis OSS- compatible services. Valkey GLIDE is designed for reliability, optimized performance, and high-availability, for Valkey and Redis OSS based applications. It is sponsored and supported by AWS, and is pre-configured with best practices learned from over a decade of operating Redis OSS-compatible services used by hundreds of thousands of customers. To help ensure consistency in application development and operations, Valkey GLIDE is implemented using a core driver framework, written in Rust, with language specific extensions. This design ensures consistency in features across languages and reduces overall complexity.
3
+ Valkey General Language Independent Driver for the Enterprise (GLIDE) is the official open-source Valkey client library, proudly part of the Valkey organization. Our mission is to make your experience with Valkey and Redis OSS seamless and enjoyable. Whether you're a seasoned developer or just starting out, Valkey GLIDE is here to support you every step of the way.
4
+
5
+ # Why Choose Valkey GLIDE?
6
+
7
+ - **Community and Open Source**: Join our vibrant community and contribute to the project. We are always here to respond, and the client is for the community.
8
+ - **Reliability**: Built with best practices learned from over a decade of operating Redis OSS-compatible services.
9
+ - **Performance**: Optimized for high performance and low latency.
10
+ - **High Availability**: Designed to ensure your applications are always up and running.
11
+ - **Cross-Language Support**: Implemented using a core driver framework written in Rust, with language-specific extensions to ensure consistency and reduce complexity.
12
+ - **Stability and Fault Tolerance**: We brought our years of experience to create a bulletproof client.
13
+ - **Backed and Supported by AWS and GCP**: Ensuring robust support and continuous improvement of the project.
4
14
 
5
15
  ## Documentation
6
16
 
@@ -27,6 +37,7 @@ Linux:
27
37
  macOS:
28
38
 
29
39
  - macOS 14.7 (Apple silicon/aarch_64)
40
+ - macOS 13.7 (x86_64/amd64)
30
41
 
31
42
  ## Python Supported Versions
32
43
 
@@ -38,6 +49,8 @@ macOS:
38
49
  | 3.12 |
39
50
  | 3.13 |
40
51
 
52
+ Valkey GLIDE transparently supports both the `asyncio` and `trio` concurrency frameworks.
53
+
41
54
  ## Installation and Setup
42
55
 
43
56
  ### Installing via Package Manager (pip)
@@ -104,3 +117,7 @@ For complete examples with error handling, please refer to the [cluster example]
104
117
  ### Building & Testing
105
118
 
106
119
  Development instructions for local building & testing the package are in the [DEVELOPER.md](https://github.com/valkey-io/valkey-glide/blob/main/python/DEVELOPER.md#build-from-source) file.
120
+
121
+ ## Community and Feedback
122
+
123
+ We encourage you to join our community to support, share feedback, and ask questions. You can approach us for anything on our Valkey Slack: [Join Valkey Slack](https://join.slack.com/t/valkey-oss-developer/shared_invite/zt-2nxs51chx-EB9hu9Qdch3GMfRcztTSkQ).
@@ -2615,7 +2615,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2615
2615
 
2616
2616
  ----
2617
2617
 
2618
- Package: bitflags:2.9.0
2618
+ Package: bitflags:2.9.1
2619
2619
 
2620
2620
  The following copyrights and licenses were found in the source code of this package:
2621
2621
 
@@ -49943,7 +49943,63 @@ authorization of the copyright holder.
49943
49943
 
49944
49944
  ----
49945
49945
 
49946
- Package: async-timeout:5.0.1
49946
+ Package: anyio:4.9.0
49947
+
49948
+ The following copyrights and licenses were found in the source code of this package:
49949
+
49950
+ Permission is hereby granted, free of charge, to any person obtaining
49951
+ a copy of this software and associated documentation files (the
49952
+ "Software"), to deal in the Software without restriction, including
49953
+ without limitation the rights to use, copy, modify, merge, publish,
49954
+ distribute, sublicense, and/or sell copies of the Software, and to
49955
+ permit persons to whom the Software is furnished to do so, subject to
49956
+ the following conditions:
49957
+
49958
+ The above copyright notice and this permission notice shall be
49959
+ included in all copies or substantial portions of the Software.
49960
+
49961
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
49962
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
49963
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
49964
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
49965
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
49966
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
49967
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
49968
+
49969
+ ----
49970
+
49971
+ Package: protobuf:6.31.0
49972
+
49973
+ The following copyrights and licenses were found in the source code of this package:
49974
+
49975
+ Redistribution and use in source and binary forms, with or without modification,
49976
+ are permitted provided that the following conditions are met:
49977
+
49978
+ Redistributions of source code must retain the above copyright notice, this list
49979
+ of conditions and the following disclaimer.
49980
+
49981
+ Redistributions in binary form must reproduce the above copyright notice, this
49982
+ list of conditions and the following disclaimer in the documentation and/or
49983
+ other materials provided with the distribution.
49984
+
49985
+ Neither the name of the ORGANIZATION nor the names of its contributors may be
49986
+ used to endorse or promote products derived from this software without specific
49987
+ prior written permission.
49988
+
49989
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
49990
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
49991
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
49992
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
49993
+ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
49994
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
49995
+ GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
49996
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49997
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
49998
+ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
49999
+
50000
+ ----
50001
+
50002
+ Package: sniffio:1.3.1
49947
50003
 
49948
50004
  The following copyrights and licenses were found in the source code of this package:
49949
50005
 
@@ -50149,34 +50205,24 @@ The following copyrights and licenses were found in the source code of this pack
50149
50205
  See the License for the specific language governing permissions and
50150
50206
  limitations under the License.
50151
50207
 
50152
- ----
50153
-
50154
- Package: protobuf:6.30.2
50155
-
50156
- The following copyrights and licenses were found in the source code of this package:
50157
-
50158
- Redistribution and use in source and binary forms, with or without modification,
50159
- are permitted provided that the following conditions are met:
50160
-
50161
- Redistributions of source code must retain the above copyright notice, this list
50162
- of conditions and the following disclaimer.
50208
+ --
50163
50209
 
50164
- Redistributions in binary form must reproduce the above copyright notice, this
50165
- list of conditions and the following disclaimer in the documentation and/or
50166
- other materials provided with the distribution.
50210
+ Permission is hereby granted, free of charge, to any person obtaining
50211
+ a copy of this software and associated documentation files (the
50212
+ "Software"), to deal in the Software without restriction, including
50213
+ without limitation the rights to use, copy, modify, merge, publish,
50214
+ distribute, sublicense, and/or sell copies of the Software, and to
50215
+ permit persons to whom the Software is furnished to do so, subject to
50216
+ the following conditions:
50167
50217
 
50168
- Neither the name of the ORGANIZATION nor the names of its contributors may be
50169
- used to endorse or promote products derived from this software without specific
50170
- prior written permission.
50218
+ The above copyright notice and this permission notice shall be
50219
+ included in all copies or substantial portions of the Software.
50171
50220
 
50172
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
50173
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
50174
- THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
50175
- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
50176
- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
50177
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
50178
- GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
50179
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
50180
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
50181
- THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
50221
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
50222
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
50223
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
50224
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
50225
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
50226
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
50227
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
50182
50228
 
@@ -205,7 +205,7 @@ def run_tests(extra_args: Optional[List[str]] = None) -> None:
205
205
  print("[INFO] Running test suite...")
206
206
  env = get_venv_env()
207
207
 
208
- cmd = ["pytest", "-v", "--asyncio-mode=auto"]
208
+ cmd = ["pytest", "-v"]
209
209
  if extra_args:
210
210
  cmd += extra_args
211
211
 
@@ -1,6 +1,7 @@
1
1
  maturin==0.14.17 # higher version break the needs structure changes, the name of the project is not the same as the package name, and the naming both glide create a circular dependency - TODO: fix this
2
+ anyio[trio]>=4.9.0
3
+ uvloop
2
4
  pytest
3
- pytest-asyncio
4
5
  pytest-html
5
6
  black >= 24.3.0
6
7
  flake8 == 5.0
@@ -11,5 +12,3 @@ types-protobuf ~= 5.29.1
11
12
  packaging >= 22.0
12
13
  sphinx >= 7.4.7
13
14
  sphinx-rtd-theme
14
- deprecated
15
- types-Deprecated
@@ -39,6 +39,8 @@ autodoc_default_options = {
39
39
  "ignore-module-all": True, # Prevents duplicate warnings with methods in parent module and its submodules
40
40
  }
41
41
 
42
+ suppress_warnings = ["autodoc"]
43
+
42
44
 
43
45
  def avoid_duplicate(app, what, name, obj, skip, options):
44
46
  # We skip some special refs and PubSub duplicate warning messages that
@@ -1,7 +1,7 @@
1
1
  [package]
2
2
  name = "glide-core"
3
3
  version = "0.1.0"
4
- edition = "2021"
4
+ edition = "2024"
5
5
  license = "Apache-2.0"
6
6
  authors = ["Valkey GLIDE Maintainers"]
7
7
 
@@ -25,7 +25,7 @@ logger_core = { path = "../logger_core" }
25
25
  dispose = "0.5.0"
26
26
  tokio-util = { version = "^0.7", features = ["rt"], optional = true }
27
27
  num_cpus = { version = "^1.15", optional = true }
28
- tokio-retry2 = {version = "0.5", features = ["jitter"]}
28
+ tokio-retry2 = { version = "0.5", features = ["jitter"] }
29
29
 
30
30
  protobuf = { version = "3", features = [
31
31
  "bytes",
@@ -2850,7 +2850,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2850
2850
 
2851
2851
  ----
2852
2852
 
2853
- Package: bitflags:2.9.0
2853
+ Package: bitflags:2.9.1
2854
2854
 
2855
2855
  The following copyrights and licenses were found in the source code of this package:
2856
2856
 
@@ -1,13 +1,13 @@
1
1
  // Copyright Valkey GLIDE Project Contributors - SPDX Identifier: Apache-2.0
2
2
 
3
- use criterion::{criterion_group, criterion_main, Criterion};
3
+ use criterion::{Criterion, criterion_group, criterion_main};
4
4
  use futures::future::join_all;
5
5
  use redis::{
6
+ AsyncCommands, ConnectionAddr, ConnectionInfo, GlideConnectionOptions, RedisConnectionInfo,
7
+ RedisResult, Value,
6
8
  aio::{ConnectionLike, ConnectionManager, MultiplexedConnection},
7
9
  cluster::ClusterClientBuilder,
8
10
  cluster_async::ClusterConnection,
9
- AsyncCommands, ConnectionAddr, ConnectionInfo, GlideConnectionOptions, RedisConnectionInfo,
10
- RedisResult, Value,
11
11
  };
12
12
  use std::env;
13
13
  use tokio::runtime::{Builder, Runtime};
@@ -5,7 +5,7 @@ use glide_core::{
5
5
  connection_request::{ConnectionRequest, NodeAddress, TlsMode},
6
6
  };
7
7
  use iai_callgrind::{black_box, library_benchmark, library_benchmark_group, main};
8
- use redis::{cmd, Value};
8
+ use redis::{Value, cmd};
9
9
  use tokio::runtime::Builder;
10
10
 
11
11
  fn create_connection_request() -> ConnectionRequest {
@@ -3,15 +3,15 @@
3
3
  use std::{io::Write, ptr::from_mut};
4
4
 
5
5
  use bytes::BufMut;
6
- use criterion::{black_box, criterion_group, criterion_main, Criterion};
6
+ use criterion::{Criterion, black_box, criterion_group, criterion_main};
7
7
  use glide_core::{
8
- command_request::{command, command_request},
9
8
  command_request::{Command, CommandRequest, RequestType},
9
+ command_request::{command, command_request},
10
10
  rotating_buffer::RotatingBuffer,
11
11
  };
12
12
  use integer_encoding::VarInt;
13
13
  use protobuf::Message;
14
- use rand::{distributions::Alphanumeric, Rng};
14
+ use rand::{Rng, distributions::Alphanumeric};
15
15
 
16
16
  fn benchmark(
17
17
  c: &mut Criterion,
@@ -6,6 +6,7 @@ use crate::cluster_scan_container::insert_cluster_scan_cursor;
6
6
  use crate::scripts_container::get_script;
7
7
  use futures::FutureExt;
8
8
  use logger_core::{log_error, log_info, log_warn};
9
+ use once_cell::sync::OnceCell;
9
10
  use redis::aio::ConnectionLike;
10
11
  use redis::cluster_async::ClusterConnection;
11
12
  use redis::cluster_routing::{
@@ -19,9 +20,12 @@ use redis::{
19
20
  pub use standalone_client::StandaloneClient;
20
21
  use std::io;
21
22
  use std::str::FromStr;
22
- use std::sync::atomic::{AtomicIsize, Ordering};
23
23
  use std::sync::Arc;
24
+ use std::sync::atomic::{AtomicIsize, Ordering};
25
+ use std::thread;
26
+ use std::thread::JoinHandle;
24
27
  use std::time::Duration;
28
+ use tokio::runtime::{Builder, Handle};
25
29
  pub use types::*;
26
30
 
27
31
  use self::value_conversion::{convert_to_expected_type, expected_type_for_cmd, get_value_type};
@@ -30,7 +34,7 @@ mod standalone_client;
30
34
  mod value_conversion;
31
35
  use redis::InfoDict;
32
36
  use telemetrylib::*;
33
- use tokio::sync::mpsc;
37
+ use tokio::sync::{Notify, mpsc, oneshot};
34
38
  use versions::Versioning;
35
39
 
36
40
  pub const HEARTBEAT_SLEEP_DURATION: Duration = Duration::from_secs(1);
@@ -59,6 +63,67 @@ pub const DEFAULT_MAX_INFLIGHT_REQUESTS: u32 = 1000;
59
63
  /// and performance overhead.
60
64
  pub const CONNECTION_CHECKS_INTERVAL: Duration = Duration::from_secs(3);
61
65
 
66
+ /// A static Glide runtime instance
67
+ static RUNTIME: OnceCell<GlideRt> = OnceCell::new();
68
+
69
+ pub struct GlideRt {
70
+ pub runtime: Handle,
71
+ pub(crate) thread: Option<JoinHandle<()>>,
72
+ shutdown_notifier: Arc<Notify>,
73
+ }
74
+
75
+ /// Initializes a single-threaded Tokio runtime in a dedicated thread (if not already initialized)
76
+ /// and returns a static reference to the `GlideRt` wrapper, which holds the runtime handle and a shutdown notifier.
77
+ /// The runtime remains active indefinitely until a shutdown is triggered via the notifier, allowing tasks to be spawned
78
+ /// throughout the lifetime of the application.
79
+ pub fn get_or_init_runtime() -> Result<&'static GlideRt, String> {
80
+ RUNTIME.get_or_try_init(|| {
81
+ let notify = Arc::new(Notify::new());
82
+ let notify_thread = notify.clone();
83
+
84
+ let (tx, rx) = oneshot::channel();
85
+
86
+ let thread_handle = thread::Builder::new()
87
+ .name("glide-runtime-thread".into())
88
+ .spawn(move || {
89
+ match Builder::new_current_thread().enable_all().build() {
90
+ Ok(runtime) => {
91
+ let _ = tx.send(Ok(runtime.handle().clone()));
92
+ // Keep runtime alive until shutdown is signaled
93
+ runtime.block_on(notify_thread.notified());
94
+ }
95
+ Err(err) => {
96
+ let _ = tx.send(Err(format!("Failed to create runtime: {err}")));
97
+ }
98
+ }
99
+ })
100
+ .map_err(|_| "Failed to spawn runtime thread".to_string())?;
101
+
102
+ let runtime_handle = rx
103
+ .blocking_recv()
104
+ .map_err(|err| format!("Failed to receive runtime handle: {err:?}"))??;
105
+
106
+ Ok(GlideRt {
107
+ runtime: runtime_handle,
108
+ thread: Some(thread_handle),
109
+ shutdown_notifier: notify,
110
+ })
111
+ })
112
+ }
113
+
114
+ impl Drop for GlideRt {
115
+ fn drop(&mut self) {
116
+ if let Some(rt) = RUNTIME.get() {
117
+ rt.shutdown_notifier.notify_one();
118
+ }
119
+
120
+ // Move the JoinHandle out of the Option and join it
121
+ if let Some(handle) = self.thread.take() {
122
+ handle.join().expect("GlideRt thread panicked");
123
+ }
124
+ }
125
+ }
126
+
62
127
  pub(super) fn get_port(address: &NodeAddress) -> u16 {
63
128
  const DEFAULT_PORT: u16 = 6379;
64
129
  if address.port == 0 {
@@ -795,14 +860,14 @@ async fn create_cluster_client(
795
860
  return Err(RedisError::from((
796
861
  ErrorKind::ResponseError,
797
862
  "Failed to parse engine version",
798
- )))
863
+ )));
799
864
  }
800
865
  },
801
866
  _ => {
802
867
  return Err(RedisError::from((
803
868
  ErrorKind::ResponseError,
804
869
  "Could not determine engine version from INFO result",
805
- )))
870
+ )));
806
871
  }
807
872
  }
808
873
  }
@@ -1041,7 +1106,7 @@ mod tests {
1041
1106
  use redis::Cmd;
1042
1107
 
1043
1108
  use crate::client::{
1044
- get_request_timeout, RequestTimeoutOption, TimeUnit, BLOCKING_CMD_TIMEOUT_EXTENSION,
1109
+ BLOCKING_CMD_TIMEOUT_EXTENSION, RequestTimeoutOption, TimeUnit, get_request_timeout,
1045
1110
  };
1046
1111
 
1047
1112
  use super::get_timeout_from_cmd_arg;
@@ -9,18 +9,18 @@ use redis::{
9
9
  GlideConnectionOptions, PushInfo, RedisConnectionInfo, RedisError, RedisResult, RetryStrategy,
10
10
  };
11
11
  use std::fmt;
12
- use std::sync::atomic::{AtomicBool, Ordering};
13
12
  use std::sync::Arc;
14
13
  use std::sync::Mutex;
14
+ use std::sync::atomic::{AtomicBool, Ordering};
15
15
  use std::sync::{RwLock, RwLockReadGuard};
16
16
  use std::time::Duration;
17
17
  use telemetrylib::Telemetry;
18
- use tokio::sync::{mpsc, Notify};
18
+ use tokio::sync::{Notify, mpsc};
19
19
  use tokio::task;
20
20
  use tokio::time::timeout;
21
21
  use tokio_retry2::{Retry, RetryError};
22
22
 
23
- use super::{run_with_timeout, DEFAULT_CONNECTION_TIMEOUT};
23
+ use super::{DEFAULT_CONNECTION_TIMEOUT, run_with_timeout};
24
24
 
25
25
  const WRITE_LOCK_ERR: &str = "Failed to acquire the write lock";
26
26
  const READ_LOCK_ERR: &str = "Failed to acquire the read lock";
@@ -2,19 +2,19 @@
2
2
 
3
3
  use super::get_redis_connection_info;
4
4
  use super::reconnecting_connection::{ReconnectReason, ReconnectingConnection};
5
- use super::{to_duration, DEFAULT_CONNECTION_TIMEOUT};
6
5
  use super::{ConnectionRequest, NodeAddress, TlsMode};
6
+ use super::{DEFAULT_CONNECTION_TIMEOUT, to_duration};
7
7
  use crate::client::types::ReadFrom as ClientReadFrom;
8
- use futures::{future, stream, StreamExt};
8
+ use futures::{StreamExt, future, stream};
9
9
  use logger_core::log_debug;
10
10
  use logger_core::log_warn;
11
11
  use rand::Rng;
12
12
  use redis::aio::ConnectionLike;
13
- use redis::cluster_routing::{self, is_readonly_cmd, ResponsePolicy, Routable, RoutingInfo};
13
+ use redis::cluster_routing::{self, ResponsePolicy, Routable, RoutingInfo, is_readonly_cmd};
14
14
  use redis::{PushInfo, RedisError, RedisResult, RetryStrategy, Value};
15
+ use std::sync::Arc;
15
16
  use std::sync::atomic::AtomicUsize;
16
17
  use std::sync::atomic::Ordering;
17
- use std::sync::Arc;
18
18
  use std::time::Duration;
19
19
  use telemetrylib::Telemetry;
20
20
  use tokio::sync::mpsc;
@@ -93,11 +93,7 @@ fn chars_to_string_option(chars: &::protobuf::Chars) -> Option<String> {
93
93
 
94
94
  #[cfg(feature = "proto")]
95
95
  pub(crate) fn none_if_zero(value: u32) -> Option<u32> {
96
- if value == 0 {
97
- None
98
- } else {
99
- Some(value)
100
- }
96
+ if value == 0 { None } else { Some(value) }
101
97
  }
102
98
 
103
99
  #[cfg(feature = "proto")]