redis 6.1.0__tar.gz → 6.1.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 (152) hide show
  1. {redis-6.1.0 → redis-6.1.1}/PKG-INFO +1 -1
  2. {redis-6.1.0 → redis-6.1.1}/redis/__init__.py +1 -1
  3. {redis-6.1.0 → redis-6.1.1}/redis/asyncio/connection.py +1 -1
  4. {redis-6.1.0 → redis-6.1.1}/redis/client.py +5 -0
  5. {redis-6.1.0 → redis-6.1.1}/redis/cluster.py +3 -3
  6. {redis-6.1.0 → redis-6.1.1}/redis/connection.py +11 -3
  7. {redis-6.1.0 → redis-6.1.1}/.gitignore +0 -0
  8. {redis-6.1.0 → redis-6.1.1}/LICENSE +0 -0
  9. {redis-6.1.0 → redis-6.1.1}/README.md +0 -0
  10. {redis-6.1.0 → redis-6.1.1}/dev_requirements.txt +0 -0
  11. {redis-6.1.0 → redis-6.1.1}/pyproject.toml +0 -0
  12. {redis-6.1.0 → redis-6.1.1}/redis/_parsers/__init__.py +0 -0
  13. {redis-6.1.0 → redis-6.1.1}/redis/_parsers/base.py +0 -0
  14. {redis-6.1.0 → redis-6.1.1}/redis/_parsers/commands.py +0 -0
  15. {redis-6.1.0 → redis-6.1.1}/redis/_parsers/encoders.py +0 -0
  16. {redis-6.1.0 → redis-6.1.1}/redis/_parsers/helpers.py +0 -0
  17. {redis-6.1.0 → redis-6.1.1}/redis/_parsers/hiredis.py +0 -0
  18. {redis-6.1.0 → redis-6.1.1}/redis/_parsers/resp2.py +0 -0
  19. {redis-6.1.0 → redis-6.1.1}/redis/_parsers/resp3.py +0 -0
  20. {redis-6.1.0 → redis-6.1.1}/redis/_parsers/socket.py +0 -0
  21. {redis-6.1.0 → redis-6.1.1}/redis/asyncio/__init__.py +0 -0
  22. {redis-6.1.0 → redis-6.1.1}/redis/asyncio/client.py +0 -0
  23. {redis-6.1.0 → redis-6.1.1}/redis/asyncio/cluster.py +0 -0
  24. {redis-6.1.0 → redis-6.1.1}/redis/asyncio/lock.py +0 -0
  25. {redis-6.1.0 → redis-6.1.1}/redis/asyncio/retry.py +0 -0
  26. {redis-6.1.0 → redis-6.1.1}/redis/asyncio/sentinel.py +0 -0
  27. {redis-6.1.0 → redis-6.1.1}/redis/asyncio/utils.py +0 -0
  28. {redis-6.1.0 → redis-6.1.1}/redis/auth/__init__.py +0 -0
  29. {redis-6.1.0 → redis-6.1.1}/redis/auth/err.py +0 -0
  30. {redis-6.1.0 → redis-6.1.1}/redis/auth/idp.py +0 -0
  31. {redis-6.1.0 → redis-6.1.1}/redis/auth/token.py +0 -0
  32. {redis-6.1.0 → redis-6.1.1}/redis/auth/token_manager.py +0 -0
  33. {redis-6.1.0 → redis-6.1.1}/redis/backoff.py +0 -0
  34. {redis-6.1.0 → redis-6.1.1}/redis/cache.py +0 -0
  35. {redis-6.1.0 → redis-6.1.1}/redis/commands/__init__.py +0 -0
  36. {redis-6.1.0 → redis-6.1.1}/redis/commands/bf/__init__.py +0 -0
  37. {redis-6.1.0 → redis-6.1.1}/redis/commands/bf/commands.py +0 -0
  38. {redis-6.1.0 → redis-6.1.1}/redis/commands/bf/info.py +0 -0
  39. {redis-6.1.0 → redis-6.1.1}/redis/commands/cluster.py +0 -0
  40. {redis-6.1.0 → redis-6.1.1}/redis/commands/core.py +0 -0
  41. {redis-6.1.0 → redis-6.1.1}/redis/commands/helpers.py +0 -0
  42. {redis-6.1.0 → redis-6.1.1}/redis/commands/json/__init__.py +0 -0
  43. {redis-6.1.0 → redis-6.1.1}/redis/commands/json/_util.py +0 -0
  44. {redis-6.1.0 → redis-6.1.1}/redis/commands/json/commands.py +0 -0
  45. {redis-6.1.0 → redis-6.1.1}/redis/commands/json/decoders.py +0 -0
  46. {redis-6.1.0 → redis-6.1.1}/redis/commands/json/path.py +0 -0
  47. {redis-6.1.0 → redis-6.1.1}/redis/commands/redismodules.py +0 -0
  48. {redis-6.1.0 → redis-6.1.1}/redis/commands/search/__init__.py +0 -0
  49. {redis-6.1.0 → redis-6.1.1}/redis/commands/search/_util.py +0 -0
  50. {redis-6.1.0 → redis-6.1.1}/redis/commands/search/aggregation.py +0 -0
  51. {redis-6.1.0 → redis-6.1.1}/redis/commands/search/commands.py +0 -0
  52. {redis-6.1.0 → redis-6.1.1}/redis/commands/search/dialect.py +0 -0
  53. {redis-6.1.0 → redis-6.1.1}/redis/commands/search/document.py +0 -0
  54. {redis-6.1.0 → redis-6.1.1}/redis/commands/search/field.py +0 -0
  55. {redis-6.1.0 → redis-6.1.1}/redis/commands/search/index_definition.py +0 -0
  56. {redis-6.1.0 → redis-6.1.1}/redis/commands/search/profile_information.py +0 -0
  57. {redis-6.1.0 → redis-6.1.1}/redis/commands/search/query.py +0 -0
  58. {redis-6.1.0 → redis-6.1.1}/redis/commands/search/querystring.py +0 -0
  59. {redis-6.1.0 → redis-6.1.1}/redis/commands/search/reducers.py +0 -0
  60. {redis-6.1.0 → redis-6.1.1}/redis/commands/search/result.py +0 -0
  61. {redis-6.1.0 → redis-6.1.1}/redis/commands/search/suggestion.py +0 -0
  62. {redis-6.1.0 → redis-6.1.1}/redis/commands/sentinel.py +0 -0
  63. {redis-6.1.0 → redis-6.1.1}/redis/commands/timeseries/__init__.py +0 -0
  64. {redis-6.1.0 → redis-6.1.1}/redis/commands/timeseries/commands.py +0 -0
  65. {redis-6.1.0 → redis-6.1.1}/redis/commands/timeseries/info.py +0 -0
  66. {redis-6.1.0 → redis-6.1.1}/redis/commands/timeseries/utils.py +0 -0
  67. {redis-6.1.0 → redis-6.1.1}/redis/commands/vectorset/__init__.py +0 -0
  68. {redis-6.1.0 → redis-6.1.1}/redis/commands/vectorset/commands.py +0 -0
  69. {redis-6.1.0 → redis-6.1.1}/redis/commands/vectorset/utils.py +0 -0
  70. {redis-6.1.0 → redis-6.1.1}/redis/crc.py +0 -0
  71. {redis-6.1.0 → redis-6.1.1}/redis/credentials.py +0 -0
  72. {redis-6.1.0 → redis-6.1.1}/redis/event.py +0 -0
  73. {redis-6.1.0 → redis-6.1.1}/redis/exceptions.py +0 -0
  74. {redis-6.1.0 → redis-6.1.1}/redis/lock.py +0 -0
  75. {redis-6.1.0 → redis-6.1.1}/redis/ocsp.py +0 -0
  76. {redis-6.1.0 → redis-6.1.1}/redis/py.typed +0 -0
  77. {redis-6.1.0 → redis-6.1.1}/redis/retry.py +0 -0
  78. {redis-6.1.0 → redis-6.1.1}/redis/sentinel.py +0 -0
  79. {redis-6.1.0 → redis-6.1.1}/redis/typing.py +0 -0
  80. {redis-6.1.0 → redis-6.1.1}/redis/utils.py +0 -0
  81. {redis-6.1.0 → redis-6.1.1}/tests/__init__.py +0 -0
  82. {redis-6.1.0 → redis-6.1.1}/tests/conftest.py +0 -0
  83. {redis-6.1.0 → redis-6.1.1}/tests/entraid_utils.py +0 -0
  84. {redis-6.1.0 → redis-6.1.1}/tests/mocks.py +0 -0
  85. {redis-6.1.0 → redis-6.1.1}/tests/ssl_utils.py +0 -0
  86. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/__init__.py +0 -0
  87. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/compat.py +0 -0
  88. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/conftest.py +0 -0
  89. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/mocks.py +0 -0
  90. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_bloom.py +0 -0
  91. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_cluster.py +0 -0
  92. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_commands.py +0 -0
  93. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_connect.py +0 -0
  94. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_connection.py +0 -0
  95. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_connection_pool.py +0 -0
  96. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_credentials.py +0 -0
  97. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_cwe_404.py +0 -0
  98. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_encoding.py +0 -0
  99. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_hash.py +0 -0
  100. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_json.py +0 -0
  101. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_lock.py +0 -0
  102. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_monitor.py +0 -0
  103. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_pipeline.py +0 -0
  104. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_pubsub.py +0 -0
  105. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_retry.py +0 -0
  106. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_scripting.py +0 -0
  107. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_search.py +0 -0
  108. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_sentinel.py +0 -0
  109. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_sentinel_managed_connection.py +0 -0
  110. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_ssl.py +0 -0
  111. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_timeseries.py +0 -0
  112. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_utils.py +0 -0
  113. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_vsets.py +0 -0
  114. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/testdata/jsontestdata.py +0 -0
  115. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/testdata/titles.csv +0 -0
  116. {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/testdata/will_play_text.csv.bz2 +0 -0
  117. {redis-6.1.0 → redis-6.1.1}/tests/test_auth/__init__.py +0 -0
  118. {redis-6.1.0 → redis-6.1.1}/tests/test_auth/test_token.py +0 -0
  119. {redis-6.1.0 → redis-6.1.1}/tests/test_auth/test_token_manager.py +0 -0
  120. {redis-6.1.0 → redis-6.1.1}/tests/test_backoff.py +0 -0
  121. {redis-6.1.0 → redis-6.1.1}/tests/test_bloom.py +0 -0
  122. {redis-6.1.0 → redis-6.1.1}/tests/test_cache.py +0 -0
  123. {redis-6.1.0 → redis-6.1.1}/tests/test_cluster.py +0 -0
  124. {redis-6.1.0 → redis-6.1.1}/tests/test_cluster_transaction.py +0 -0
  125. {redis-6.1.0 → redis-6.1.1}/tests/test_command_parser.py +0 -0
  126. {redis-6.1.0 → redis-6.1.1}/tests/test_commands.py +0 -0
  127. {redis-6.1.0 → redis-6.1.1}/tests/test_connect.py +0 -0
  128. {redis-6.1.0 → redis-6.1.1}/tests/test_connection.py +0 -0
  129. {redis-6.1.0 → redis-6.1.1}/tests/test_connection_pool.py +0 -0
  130. {redis-6.1.0 → redis-6.1.1}/tests/test_credentials.py +0 -0
  131. {redis-6.1.0 → redis-6.1.1}/tests/test_encoding.py +0 -0
  132. {redis-6.1.0 → redis-6.1.1}/tests/test_function.py +0 -0
  133. {redis-6.1.0 → redis-6.1.1}/tests/test_hash.py +0 -0
  134. {redis-6.1.0 → redis-6.1.1}/tests/test_helpers.py +0 -0
  135. {redis-6.1.0 → redis-6.1.1}/tests/test_json.py +0 -0
  136. {redis-6.1.0 → redis-6.1.1}/tests/test_lock.py +0 -0
  137. {redis-6.1.0 → redis-6.1.1}/tests/test_monitor.py +0 -0
  138. {redis-6.1.0 → redis-6.1.1}/tests/test_multiprocessing.py +0 -0
  139. {redis-6.1.0 → redis-6.1.1}/tests/test_parsers/test_helpers.py +0 -0
  140. {redis-6.1.0 → redis-6.1.1}/tests/test_pipeline.py +0 -0
  141. {redis-6.1.0 → redis-6.1.1}/tests/test_pubsub.py +0 -0
  142. {redis-6.1.0 → redis-6.1.1}/tests/test_retry.py +0 -0
  143. {redis-6.1.0 → redis-6.1.1}/tests/test_scripting.py +0 -0
  144. {redis-6.1.0 → redis-6.1.1}/tests/test_search.py +0 -0
  145. {redis-6.1.0 → redis-6.1.1}/tests/test_sentinel.py +0 -0
  146. {redis-6.1.0 → redis-6.1.1}/tests/test_ssl.py +0 -0
  147. {redis-6.1.0 → redis-6.1.1}/tests/test_timeseries.py +0 -0
  148. {redis-6.1.0 → redis-6.1.1}/tests/test_utils.py +0 -0
  149. {redis-6.1.0 → redis-6.1.1}/tests/test_vsets.py +0 -0
  150. {redis-6.1.0 → redis-6.1.1}/tests/testdata/jsontestdata.py +0 -0
  151. {redis-6.1.0 → redis-6.1.1}/tests/testdata/titles.csv +0 -0
  152. {redis-6.1.0 → redis-6.1.1}/tests/testdata/will_play_text.csv.bz2 +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: redis
3
- Version: 6.1.0
3
+ Version: 6.1.1
4
4
  Summary: Python client for Redis database and key-value store
5
5
  Project-URL: Changes, https://github.com/redis/redis-py/releases
6
6
  Project-URL: Code, https://github.com/redis/redis-py
@@ -47,7 +47,7 @@ def int_or_str(value):
47
47
 
48
48
  # This is the version of redis-py that is being used
49
49
  # for building and installing the lib.
50
- __version__ = "6.1.0"
50
+ __version__ = "6.1.1"
51
51
  VERSION = tuple(map(int_or_str, __version__.split(".")))
52
52
 
53
53
 
@@ -868,7 +868,7 @@ class RedisSSLContext:
868
868
  cert_reqs: Optional[Union[str, ssl.VerifyMode]] = None,
869
869
  ca_certs: Optional[str] = None,
870
870
  ca_data: Optional[str] = None,
871
- check_hostname: bool = True,
871
+ check_hostname: bool = False,
872
872
  min_version: Optional[TLSVersion] = None,
873
873
  ciphers: Optional[str] = None,
874
874
  ):
@@ -369,6 +369,8 @@ class Redis(RedisModuleCommands, CoreCommands, SentinelCommands):
369
369
  ]:
370
370
  raise RedisError("Client caching is only supported with RESP version 3")
371
371
 
372
+ # TODO: To avoid breaking changes during the bug fix, we have to keep non-reentrant lock.
373
+ # TODO: Remove this before next major version (7.0.0)
372
374
  self.single_connection_lock = threading.Lock()
373
375
  self.connection = None
374
376
  self._single_connection_client = single_connection_client
@@ -774,6 +776,9 @@ class PubSub:
774
776
  self._event_dispatcher = EventDispatcher()
775
777
  else:
776
778
  self._event_dispatcher = event_dispatcher
779
+
780
+ # TODO: To avoid breaking changes during the bug fix, we have to keep non-reentrant lock.
781
+ # TODO: Remove this before next major version (7.0.0)
777
782
  self._lock = threading.Lock()
778
783
  if self.encoder is None:
779
784
  self.encoder = self.connection_pool.get_encoder()
@@ -710,7 +710,7 @@ class RedisCluster(AbstractRedisCluster, RedisClusterCommands):
710
710
  self.result_callbacks = CaseInsensitiveDict(self.__class__.RESULT_CALLBACKS)
711
711
 
712
712
  self.commands_parser = CommandsParser(self)
713
- self._lock = threading.Lock()
713
+ self._lock = threading.RLock()
714
714
 
715
715
  def __enter__(self):
716
716
  return self
@@ -1474,7 +1474,7 @@ class NodesManager:
1474
1474
  self.connection_kwargs = kwargs
1475
1475
  self.read_load_balancer = LoadBalancer()
1476
1476
  if lock is None:
1477
- lock = threading.Lock()
1477
+ lock = threading.RLock()
1478
1478
  self._lock = lock
1479
1479
  if event_dispatcher is None:
1480
1480
  self._event_dispatcher = EventDispatcher()
@@ -2178,7 +2178,7 @@ class ClusterPipeline(RedisCluster):
2178
2178
  kwargs.get("decode_responses", False),
2179
2179
  )
2180
2180
  if lock is None:
2181
- lock = threading.Lock()
2181
+ lock = threading.RLock()
2182
2182
  self._lock = lock
2183
2183
  self.parent_execute_command = super().execute_command
2184
2184
  self._execution_strategy: ExecutionStrategy = (
@@ -820,7 +820,7 @@ class CacheProxyConnection(ConnectionInterface):
820
820
  self.credential_provider = conn.credential_provider
821
821
  self._pool_lock = pool_lock
822
822
  self._cache = cache
823
- self._cache_lock = threading.Lock()
823
+ self._cache_lock = threading.RLock()
824
824
  self._current_command_cache_key = None
825
825
  self._current_options = None
826
826
  self.register_connect_callback(self._enable_tracking_callback)
@@ -1420,8 +1420,16 @@ class ConnectionPool:
1420
1420
  # object of this pool. subsequent threads acquiring this lock
1421
1421
  # will notice the first thread already did the work and simply
1422
1422
  # release the lock.
1423
- self._fork_lock = threading.Lock()
1424
- self._lock = threading.Lock()
1423
+
1424
+ self._fork_lock = threading.RLock()
1425
+
1426
+ if self.cache is None:
1427
+ self._lock = threading.RLock()
1428
+ else:
1429
+ # TODO: To avoid breaking changes during the bug fix, we have to keep non-reentrant lock.
1430
+ # TODO: Remove this before next major version (7.0.0)
1431
+ self._lock = threading.Lock()
1432
+
1425
1433
  self.reset()
1426
1434
 
1427
1435
  def __repr__(self) -> (str, str):
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes