redis 7.0.0b3__py3-none-any.whl → 7.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
redis/exceptions.py CHANGED
@@ -245,3 +245,11 @@ class InvalidPipelineStack(RedisClusterException):
245
245
  """
246
246
 
247
247
  pass
248
+
249
+
250
+ class ExternalAuthProviderError(ConnectionError):
251
+ """
252
+ Raised when an external authentication provider returns an error.
253
+ """
254
+
255
+ pass
@@ -32,9 +32,8 @@ class EndpointType(enum.Enum):
32
32
 
33
33
  if TYPE_CHECKING:
34
34
  from redis.connection import (
35
- BlockingConnectionPool,
36
- ConnectionInterface,
37
- ConnectionPool,
35
+ MaintNotificationsAbstractConnection,
36
+ MaintNotificationsAbstractConnectionPool,
38
37
  )
39
38
 
40
39
 
@@ -501,7 +500,7 @@ class MaintNotificationsConfig:
501
500
  return self.relaxed_timeout != -1
502
501
 
503
502
  def get_endpoint_type(
504
- self, host: str, connection: "ConnectionInterface"
503
+ self, host: str, connection: "MaintNotificationsAbstractConnection"
505
504
  ) -> EndpointType:
506
505
  """
507
506
  Determine the appropriate endpoint type for CLIENT MAINT_NOTIFICATIONS command.
@@ -558,7 +557,7 @@ class MaintNotificationsConfig:
558
557
  class MaintNotificationsPoolHandler:
559
558
  def __init__(
560
559
  self,
561
- pool: Union["ConnectionPool", "BlockingConnectionPool"],
560
+ pool: "MaintNotificationsAbstractConnectionPool",
562
561
  config: MaintNotificationsConfig,
563
562
  ) -> None:
564
563
  self.pool = pool
@@ -567,9 +566,19 @@ class MaintNotificationsPoolHandler:
567
566
  self._lock = threading.RLock()
568
567
  self.connection = None
569
568
 
570
- def set_connection(self, connection: "ConnectionInterface"):
569
+ def set_connection(self, connection: "MaintNotificationsAbstractConnection"):
571
570
  self.connection = connection
572
571
 
572
+ def get_handler_for_connection(self):
573
+ # Copy all data that should be shared between connections
574
+ # but each connection should have its own pool handler
575
+ # since each connection can be in a different state
576
+ copy = MaintNotificationsPoolHandler(self.pool, self.config)
577
+ copy._processed_notifications = self._processed_notifications
578
+ copy._lock = self._lock
579
+ copy.connection = None
580
+ return copy
581
+
573
582
  def remove_expired_notifications(self):
574
583
  with self._lock:
575
584
  for notification in tuple(self._processed_notifications):
@@ -751,7 +760,9 @@ class MaintNotificationsConnectionHandler:
751
760
  }
752
761
 
753
762
  def __init__(
754
- self, connection: "ConnectionInterface", config: MaintNotificationsConfig
763
+ self,
764
+ connection: "MaintNotificationsAbstractConnection",
765
+ config: MaintNotificationsConfig,
755
766
  ) -> None:
756
767
  self.connection = connection
757
768
  self.config = config
redis/multidb/client.py CHANGED
@@ -15,10 +15,12 @@ from redis.multidb.database import Database, Databases, SyncDatabase
15
15
  from redis.multidb.exception import NoValidDatabaseException, UnhealthyDatabaseException
16
16
  from redis.multidb.failure_detector import FailureDetector
17
17
  from redis.multidb.healthcheck import HealthCheck, HealthCheckPolicy
18
+ from redis.utils import experimental
18
19
 
19
20
  logger = logging.getLogger(__name__)
20
21
 
21
22
 
23
+ @experimental
22
24
  class MultiDBClient(RedisModuleCommands, CoreCommands):
23
25
  """
24
26
  Client that operates on multiple logical Redis databases.
redis/multidb/config.py CHANGED
@@ -32,9 +32,9 @@ from redis.multidb.healthcheck import (
32
32
  DEFAULT_HEALTH_CHECK_INTERVAL,
33
33
  DEFAULT_HEALTH_CHECK_POLICY,
34
34
  DEFAULT_HEALTH_CHECK_PROBES,
35
- EchoHealthCheck,
36
35
  HealthCheck,
37
36
  HealthCheckPolicies,
37
+ PingHealthCheck,
38
38
  )
39
39
  from redis.retry import Retry
40
40
 
@@ -200,7 +200,7 @@ class MultiDbConfig:
200
200
 
201
201
  def default_health_checks(self) -> List[HealthCheck]:
202
202
  return [
203
- EchoHealthCheck(),
203
+ PingHealthCheck(),
204
204
  ]
205
205
 
206
206
  def default_failover_strategy(self) -> FailoverStrategy:
@@ -169,26 +169,19 @@ class HealthCheckPolicies(Enum):
169
169
  DEFAULT_HEALTH_CHECK_POLICY: HealthCheckPolicies = HealthCheckPolicies.HEALTHY_ALL
170
170
 
171
171
 
172
- class EchoHealthCheck(HealthCheck):
172
+ class PingHealthCheck(HealthCheck):
173
173
  """
174
- Health check based on ECHO command.
174
+ Health check based on PING command.
175
175
  """
176
176
 
177
177
  def check_health(self, database) -> bool:
178
- expected_message = ["healthcheck", b"healthcheck"]
179
-
180
178
  if isinstance(database.client, Redis):
181
- actual_message = database.client.execute_command("ECHO", "healthcheck")
182
- return actual_message in expected_message
179
+ return database.client.execute_command("PING")
183
180
  else:
184
181
  # For a cluster checks if all nodes are healthy.
185
182
  all_nodes = database.client.get_nodes()
186
183
  for node in all_nodes:
187
- actual_message = node.redis_connection.execute_command(
188
- "ECHO", "healthcheck"
189
- )
190
-
191
- if actual_message not in expected_message:
184
+ if not node.redis_connection.execute_command("PING"):
192
185
  return False
193
186
 
194
187
  return True
redis/utils.py CHANGED
@@ -1,6 +1,7 @@
1
1
  import datetime
2
2
  import logging
3
3
  import textwrap
4
+ import warnings
4
5
  from collections.abc import Callable
5
6
  from contextlib import contextmanager
6
7
  from functools import wraps
@@ -326,3 +327,22 @@ async def dummy_fail_async():
326
327
  Async fake function for a Retry object if you don't need to handle each failure.
327
328
  """
328
329
  pass
330
+
331
+
332
+ def experimental(cls):
333
+ """
334
+ Decorator to mark a class as experimental.
335
+ """
336
+ original_init = cls.__init__
337
+
338
+ @wraps(original_init)
339
+ def new_init(self, *args, **kwargs):
340
+ warnings.warn(
341
+ f"{cls.__name__} is an experimental and may change or be removed in future versions.",
342
+ category=UserWarning,
343
+ stacklevel=2,
344
+ )
345
+ original_init(self, *args, **kwargs)
346
+
347
+ cls.__init__ = new_init
348
+ return cls
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: redis
3
- Version: 7.0.0b3
3
+ Version: 7.0.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
@@ -55,8 +55,9 @@ The Python interface to the Redis key-value store.
55
55
 
56
56
  ---------------------------------------------
57
57
 
58
- **Note:** redis-py 5.0 will be the last version of redis-py to support Python 3.7, as it has reached [end of life](https://devguide.python.org/versions/). redis-py 5.1 will support Python 3.8+.
59
- **Note:** redis-py 6.1.0 will be the last version of redis-py to support Python 3.8, as it has reached [end of life](https://devguide.python.org/versions/). redis-py 6.2.0 will support Python 3.9+.
58
+ **Note:** redis-py 5.0 is the last version of redis-py that supports Python 3.7, as it has reached [end of life](https://devguide.python.org/versions/). redis-py 5.1 supports Python 3.8+.<br>
59
+ **Note:** redis-py 6.1.0 is the last version of redis-py that supports Python 3.8, as it has reached [end of life](https://devguide.python.org/versions/). redis-py 6.2.0 supports Python 3.9+.
60
+
60
61
  ---------------------------------------------
61
62
 
62
63
  ## How do I Redis?
@@ -101,7 +102,7 @@ Looking for a high-level library to handle object mapping? See [redis-om-python]
101
102
 
102
103
  ## Supported Redis Versions
103
104
 
104
- The most recent version of this library supports Redis version [7.2](https://github.com/redis/redis/blob/7.2/00-RELEASENOTES), [7.4](https://github.com/redis/redis/blob/7.4/00-RELEASENOTES) and [8.0](https://github.com/redis/redis/blob/8.0/00-RELEASENOTES).
105
+ The most recent version of this library supports Redis version [7.2](https://github.com/redis/redis/blob/7.2/00-RELEASENOTES), [7.4](https://github.com/redis/redis/blob/7.4/00-RELEASENOTES), [8.0](https://github.com/redis/redis/blob/8.0/00-RELEASENOTES) and [8.2](https://github.com/redis/redis/blob/8.2/00-RELEASENOTES).
105
106
 
106
107
  The table below highlights version compatibility of the most-recent library versions and redis versions.
107
108
 
@@ -235,6 +236,16 @@ By default, the client now overrides the server-side dialect with version 2, aut
235
236
 
236
237
  You can find further details in the [query dialect documentation](https://redis.io/docs/latest/develop/interact/search-and-query/advanced-concepts/dialects/).
237
238
 
239
+ ### Multi-database client (Active-Active)
240
+
241
+ The multi-database client allows your application to connect to multiple Redis databases, which are typically replicas of each other. It is designed to work with Redis Software and Redis Cloud Active-Active setups. The client continuously monitors database health, detects failures, and automatically fails over to the next healthy database using a configurable strategy. When the original database becomes healthy again, the client can automatically switch back to it.<br>
242
+ This is useful when:
243
+
244
+ 1. You have more than one Redis deployment. This might include two independent Redis servers or two or more Redis databases replicated across multiple [active-active Redis Enterprise](https://redis.io/docs/latest/operate/rs/databases/active-active/) clusters.
245
+ 2. You want your application to connect to one deployment at a time and to fail over to the next available deployment if the first deployment becomes unavailable.
246
+
247
+ For the complete failover configuration options and examples, see the [Multi-database client docs](https://redis.readthedocs.io/en/latest/multi_database.html).
248
+
238
249
  ---------------------------------------------
239
250
 
240
251
  ### Author
@@ -1,28 +1,28 @@
1
- redis/__init__.py,sha256=aJ2W7n9Z0hrpeVXAMUfAfICF981xuTMJQJ6wqaRvzl0,2050
1
+ redis/__init__.py,sha256=eq5gTrj1McuOdwkto3_KucClbaNQqiFiYkuwW3ZPWYY,2048
2
2
  redis/background.py,sha256=Mm2yTCTW2yugDMKx8JCvyIKgiIhAh5WLdl4P-Hdd7_Q,5927
3
3
  redis/backoff.py,sha256=tQM6Lh2g2FjMH8iXg94br2sU9eri4mEW9FbOrMt0azs,5285
4
4
  redis/cache.py,sha256=d5zyX_DfXnrDIjFGs1nFMOLEl8pIvLF2kHcZchFAPGU,9569
5
- redis/client.py,sha256=JhG8Xdxg6M8ZGIp49nQj3tqcKEEg7WPT6FDzAVj_QRE,65107
6
- redis/cluster.py,sha256=77GDeWPZO4RIUXET8hNkKaWLtS_DQUj6XWTzNKZnjJs,124292
7
- redis/connection.py,sha256=yEY6-UdSob7b-vsVjNVSEZPTXeXeJqZ9Eegcqq64ws0,99048
5
+ redis/client.py,sha256=JzyOFcf_fdU5To0S9S2bCT7BX0KuYZ143Fk-NrYZvVg,65451
6
+ redis/cluster.py,sha256=IwXWDqPvUbDX9hgbw6JqWZN8G4u3667egquFk7RPMeY,124565
7
+ redis/connection.py,sha256=ACAu1YJcW9gkn3Iuh0dN3teTw_ixZCBbe8q9wpVNzxQ,111157
8
8
  redis/crc.py,sha256=Z3kXFtkY2LdgefnQMud1xr4vG5UYvA9LCMqNMX1ywu4,729
9
9
  redis/credentials.py,sha256=GOnO3-LSW34efHaIrUbS742Mw8l70mRzF6UrKiKZsMY,1828
10
10
  redis/data_structure.py,sha256=qTZq3s7gEmZVwyFBNfKnkKnm9q3-HHxnZfMH9sBIyD4,2527
11
11
  redis/event.py,sha256=P4UkD_8gn25w3iO8_3oNnj4ZtgbARQaFCtuMH_JUbZ8,14140
12
- redis/exceptions.py,sha256=b3OO87gncNCRUnx1d7O57N2kkjP-feXn70fPkXHaLmQ,5789
12
+ redis/exceptions.py,sha256=-VYXehEhnng4muOw1ys00MkR9sF5GOsdN4vCeM2KqX0,5937
13
13
  redis/lock.py,sha256=GrvPSxaOqKo7iAL2oi5ZUEPsOkxAXHVE_Tp1ejgO2fY,12760
14
- redis/maint_notifications.py,sha256=8gfa_qJOM0AuU3z816fQ1UYvqvEiV6JiPNqEONm9tYY,29320
14
+ redis/maint_notifications.py,sha256=PV72lwQ2MKVQ6-7DjejuLu0Fh6gZUVOjCwQsQdP8NQ4,29846
15
15
  redis/ocsp.py,sha256=teYSmKnCtk6B3jJLdNYbZN4OE0mxgspt2zUPbkIQzio,11452
16
16
  redis/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  redis/retry.py,sha256=jPpy1bZteOtfScsiXT9DBjxPSdtxdQQNZsuPfWClDFA,3611
18
18
  redis/sentinel.py,sha256=DP1XtO1HRemZMamC1TFHg_hBJRv9eoQgTMlZfPYRUo8,15013
19
19
  redis/typing.py,sha256=z5JQjGkNzejEzb2y7TXct7tS5yzAfLQod9o37Mh1_Ug,1953
20
- redis/utils.py,sha256=mKno9i4Qas3AnC-QyQ5-r1K_3NFiQ0fcHi8pOBhCnsU,8761
20
+ redis/utils.py,sha256=pQRIgPrfNU3za2A5sBYtkW8CrMv9Q-eZclavmX0D5q8,9247
21
21
  redis/_parsers/__init__.py,sha256=gyf5dp918NuJAkWFl8sX1Z-qAvbX_40-_7YCTM6Rvjc,693
22
- redis/_parsers/base.py,sha256=5QAMeGIqKA7n-dIgyN1321r5-k0SyXo_VVwhWTWoFzM,16161
22
+ redis/_parsers/base.py,sha256=dQfNEvP-8P12juBwDMo7Ro8-Z3kbyz2FsSOXR7IBI90,16332
23
23
  redis/_parsers/commands.py,sha256=pmR4hl4u93UvCmeDgePHFc6pWDr4slrKEvCsdMmtj_M,11052
24
24
  redis/_parsers/encoders.py,sha256=X0jvTp-E4TZUlZxV5LJJ88TuVrF1vly5tuC0xjxGaSc,1734
25
- redis/_parsers/helpers.py,sha256=Y6n14fE0eCYbF3TBuJxhycnJ1yHKiYoAJrOCUaiWolg,29223
25
+ redis/_parsers/helpers.py,sha256=oTkQMuBh7QF4ZoPKV1LHcJtud771jnZQroGYjiVzNiE,31098
26
26
  redis/_parsers/hiredis.py,sha256=4UP0CCwG3QAgFQrvR0D2q7WFM5Fbr6y7gU_2KwjbZcA,11031
27
27
  redis/_parsers/resp2.py,sha256=f22kH-_ZP2iNtOn6xOe65MSy_fJpu8OEn1u_hgeeojI,4813
28
28
  redis/_parsers/resp3.py,sha256=xI_eswa5LdoR9gZzLhOP_B5Xp-bIJuvcE7ycA3XFrhk,10034
@@ -30,7 +30,7 @@ redis/_parsers/socket.py,sha256=CKD8QW_wFSNlIZzxlbNduaGpiv0I8wBcsGuAIojDfJg,5403
30
30
  redis/asyncio/__init__.py,sha256=uoDD8XYVi0Kj6mcufYwLDUTQXmBRx7a0bhKF9stZr7I,1489
31
31
  redis/asyncio/client.py,sha256=_-04JvnKtH3JFlj5wE3-XFEkqF4okJDFiu_j4NtTKqQ,64385
32
32
  redis/asyncio/cluster.py,sha256=5FfCQzAvMlkF3jgeXFEwpY5hvb9cHaQqJFxb9LbEK1c,92351
33
- redis/asyncio/connection.py,sha256=eRDdGJOAWkoC5_tsq-sNfKXfCzxejIYphGvS8HTfqs4,51480
33
+ redis/asyncio/connection.py,sha256=QBqR-doqZhfMbFQOZDY0iS6n6F7_lu0MJk9kTrmDGnQ,51482
34
34
  redis/asyncio/lock.py,sha256=GxgV6EsyKpMjh74KtaOPxh4fNPuwApz6Th46qhvrAws,12801
35
35
  redis/asyncio/retry.py,sha256=Ikm0rsvnFItracA89DdPcejLqb_Sr4QBz73Ow_LUmwU,1880
36
36
  redis/asyncio/sentinel.py,sha256=Ppk-jlTubcHpa0lvinZ1pPTtQ5rFHXZkkaCZ7G_TCQs,14868
@@ -38,14 +38,14 @@ redis/asyncio/utils.py,sha256=31xFzXczDgSRyf6hSjiwue1eDQ_XlP_OJdp5dKxW_aE,718
38
38
  redis/asyncio/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
39
  redis/asyncio/http/http_client.py,sha256=wftF-Yl4LAcBNkxy62HM2x5OSmpfEz6qxBFM-zft9rU,7947
40
40
  redis/asyncio/multidb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- redis/asyncio/multidb/client.py,sha256=BFB9tNeGrwEYTWMtv21VT1ZoxJe1mRBl0mVL45RRIAA,18479
41
+ redis/asyncio/multidb/client.py,sha256=V0emN-BKrOjlDL7VGybWP2Ygkw2cG1iYcAyjnsMMmpg,18530
42
42
  redis/asyncio/multidb/command_executor.py,sha256=c1H43SisdIAUB1gxcd8hkBZPB77kkbehr4924rKWw-8,11886
43
- redis/asyncio/multidb/config.py,sha256=LZAi4RkkL9rLqVqrszUwOMvsd1rVOONnO4HVEBInTlw,8732
43
+ redis/asyncio/multidb/config.py,sha256=jPCUYU1Mvz3w-7fO4O_rCys5kULxEVSkaeEqE_d2_E8,8732
44
44
  redis/asyncio/multidb/database.py,sha256=aytyHEhHMJ1BUquMd-Ry1YTer3eEnsIlM02e5hs2tso,1835
45
45
  redis/asyncio/multidb/event.py,sha256=76GS22NwkeMVwtjr13UMeYD0pAB9KoPDvKWUin4DwHs,2788
46
46
  redis/asyncio/multidb/failover.py,sha256=SEhlG2rA50Mz-Rk-W5l_wOREHmKQMDyxSRiSAt1NmMI,3635
47
47
  redis/asyncio/multidb/failure_detector.py,sha256=1nipBfcjtLH8XprTQvOBE9y0kRC_YsPszEPzLKbiSU8,1263
48
- redis/asyncio/multidb/healthcheck.py,sha256=Wjqjj3FiPmjbaIjS5qQSkVlMvLyADU5LjZyE-I4BIQ4,10556
48
+ redis/asyncio/multidb/healthcheck.py,sha256=Ku_npw6pcbPpVBL7joUTBTsywUofdUyZDwlKcaMrBmg,10320
49
49
  redis/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
50
  redis/auth/err.py,sha256=WYkbuDIzwp1S-eAvsya6QMlO6g9QIXbzMITOsTWX0xk,694
51
51
  redis/auth/idp.py,sha256=IMDIIb9q72vbIwtFN8vPdaAKZVTdh0HuC5uj5ufqmw4,631
@@ -53,7 +53,7 @@ redis/auth/token.py,sha256=qYwAgxFW3S93QDUqp1BTsj7Pj9ZohnixGeOX0s7AsjY,3317
53
53
  redis/auth/token_manager.py,sha256=ShBsYXiBZBJBOMB_Y-pXfLwEOAmc9s1okaCECinNZ7g,12018
54
54
  redis/commands/__init__.py,sha256=cTUH-MGvaLYS0WuoytyqtN1wniw2A1KbkUXcpvOSY3I,576
55
55
  redis/commands/cluster.py,sha256=vdWdpl4mP51oqfYBZHg5CUXt6jPaNp7aCLHyTieDrt8,31248
56
- redis/commands/core.py,sha256=R2hhotu50mvKCxYskN9kvV74MLHQiOGJlD3MHYzZuXc,241741
56
+ redis/commands/core.py,sha256=hBDWjmgtzX9qTRNTl6lkofXuSZd90bRn2CEDYWK878g,242489
57
57
  redis/commands/helpers.py,sha256=lon89DLjTGCJZJoV-5CfN_-NiUItG9R8CstZ8Ei8PzI,2579
58
58
  redis/commands/redismodules.py,sha256=-kLM4RBklDhNh-MXCra81ZTSstIQ-ulRab6v0dYUTdA,2573
59
59
  redis/commands/sentinel.py,sha256=Q1Xuw7qXA0YRZXGlIKsuOtah8UfF0QnkLywOTRvjiMY,5299
@@ -62,19 +62,19 @@ redis/commands/bf/commands.py,sha256=xeKt8E7G8HB-l922J0DLg07CEIZTVNGx_2Lfyw1gIck
62
62
  redis/commands/bf/info.py,sha256=_OB2v_hAPI9mdVNiBx8jUtH2MhMoct9ZRm-e8In6wQo,3355
63
63
  redis/commands/json/__init__.py,sha256=bznXhLYR652rfLfLp8cz0ZN0Yr8IRx4FgON_tq9_2Io,4845
64
64
  redis/commands/json/_util.py,sha256=hIBQ1TLCTgUifcLsg0x8kJlecxmXhA9I0zMnHlQk0Ho,137
65
- redis/commands/json/commands.py,sha256=ih8upnxeOpjPZXNfqeFBYxiCN2Cmyv8UGu3AlQnT6JQ,15723
65
+ redis/commands/json/commands.py,sha256=oeVUhjSAoKEXqKV_JDYHp5xLND073U3HQfyZdaNTzqc,15711
66
66
  redis/commands/json/decoders.py,sha256=a_IoMV_wgeJyUifD4P6HTcM9s6FhricwmzQcZRmc-Gw,1411
67
67
  redis/commands/json/path.py,sha256=0zaO6_q_FVMk1Bkhkb7Wcr8AF2Tfr69VhkKy1IBVhpA,393
68
- redis/commands/search/__init__.py,sha256=happQFVF0j7P87p7LQsUK5AK0kuem9cA-xvVRdQWpos,5744
68
+ redis/commands/search/__init__.py,sha256=SBN4kDgS8cUW9b8xvAycrKtsfzx3oMbHnYMmARW37e8,5774
69
69
  redis/commands/search/_util.py,sha256=9Mp72OO5Ib5UbfN7uXb-iB7hQCm1jQLV90ms2P9XSGU,219
70
- redis/commands/search/aggregation.py,sha256=R2ul26mH10dQxUdQNKqH-Os1thOz88m4taTK08khiZc,11564
71
- redis/commands/search/commands.py,sha256=4lnL7MXsp9XqMyUgPxJ9S6p8BRnsIrjXuwvSTL9qo3E,38436
70
+ redis/commands/search/aggregation.py,sha256=fPIpcUj_z1u6rsulGgFpgMDA0EhWUVjIJW0j466GH6I,11578
71
+ redis/commands/search/commands.py,sha256=5pBc5efqD0_O0A83zOhfoHAfLDgWvmNprWdAy6wCqG4,38532
72
72
  redis/commands/search/dialect.py,sha256=-7M6kkr33x0FkMtKmUsbeRAE6qxLUbqdJCqIo0UKIXo,105
73
73
  redis/commands/search/document.py,sha256=g2R-PRgq-jN33_GLXzavvse4cpIHBMfjPfPK7tnE9Gc,413
74
- redis/commands/search/field.py,sha256=g9I1LHrVJKO1KtiUwotxrQvpg89e-sx26oClHuaKTn8,5935
74
+ redis/commands/search/field.py,sha256=KQFKCGVaABn9vDYnAcB0jaMwGxJqiZ8fEJHP_VieBR8,5935
75
75
  redis/commands/search/index_definition.py,sha256=VL2CMzjxN0HEIaTn88evnHX1fCEmytbik4vAmiiYSC8,2489
76
76
  redis/commands/search/profile_information.py,sha256=w9SbMiHbcZ1TpsZMe8cMIyO1hGkm5GhnZ_Gqg1feLtc,249
77
- redis/commands/search/query.py,sha256=0h-5nn6FlROdPQ1KJ1cqa8ZW4igm3-sk05oxAP-mC3M,12204
77
+ redis/commands/search/query.py,sha256=9-CCxjakf53BowKLRgLdAhZIZXlWZRjT3bfVyudkGFw,12361
78
78
  redis/commands/search/querystring.py,sha256=dE577kOqkCErNgO-IXI4xFVHI8kQE-JiH5ZRI_CKjHE,7597
79
79
  redis/commands/search/reducers.py,sha256=Scceylx8BjyqS-TJOdhNW63n6tecL9ojt4U5Sqho5UY,4220
80
80
  redis/commands/search/result.py,sha256=iuqmwOeCNo_7N4a_YxxDzVdOTpbwfF1T2uuq5sTqzMo,2624
@@ -90,16 +90,16 @@ redis/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
90
  redis/http/http_client.py,sha256=7pjty24rIlrnSfedHx4X89JTL6xZtOHjDCvLjUkNq4Q,15179
91
91
  redis/multidb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
92
  redis/multidb/circuit.py,sha256=M3VHfRfIzIIDrrYURi-qy4d-IgK44mBq8E03aWhTXtM,3856
93
- redis/multidb/client.py,sha256=Z_l_Q_8djtqTruUk6fLior44YfLms4mJoGq_5Auu2cU,18219
93
+ redis/multidb/client.py,sha256=zyBmrqTfKstiAdgdNLjObR9fL-svDsSFF-qCDTT1mOI,18270
94
94
  redis/multidb/command_executor.py,sha256=PBD4jyeHaaXuNhqTGmPX4r-Hew8GuOFhXylZUXEuop8,11840
95
- redis/multidb/config.py,sha256=ah3Xej6g4N-Fn73kZhedCxbv-0tjCZ_R-VCZigc7IUg,8634
95
+ redis/multidb/config.py,sha256=OiLj0ypmRhe7U2U7kB9_Zw2VSEhxUMYTQSlC7f5hHco,8634
96
96
  redis/multidb/database.py,sha256=QIVvGtUy4j1_Ruq5iLl1tCEF1EnA4InlyZVcvBh3yQY,3569
97
97
  redis/multidb/event.py,sha256=91-8eBGXM5vD_YpQg4lqVHQBf4ZnPnHj-xdZmxft5LI,2978
98
98
  redis/multidb/exception.py,sha256=7HeVb1S_guotBW2CXEhCP_dBa6ETAnOVrbMEy0EQ6NE,513
99
99
  redis/multidb/failover.py,sha256=gpbfojRrUiHEedyeJpfruU3qTS01PUSqrVx8ACCDduU,3575
100
100
  redis/multidb/failure_detector.py,sha256=rhssP3V9ptn0fuhM-HwNguKcMYABEHex9LRueoDIIok,3818
101
- redis/multidb/healthcheck.py,sha256=QR3ziEjMdzFGN-z1yl3_UGuRVwnYPQqM6GLTx_CORNU,10286
102
- redis-7.0.0b3.dist-info/METADATA,sha256=bBExU99I12a7YVJfCrLQNTtR5VbzBTFcArSIADaIUYE,10878
103
- redis-7.0.0b3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
104
- redis-7.0.0b3.dist-info/licenses/LICENSE,sha256=pXslClvwPXr-VbdAYzE_Ktt7ANVGwKsUmok5gzP-PMg,1074
105
- redis-7.0.0b3.dist-info/RECORD,,
101
+ redis/multidb/healthcheck.py,sha256=WskDIR-iJNk5GW2jL4ppOr0lnIP_GAzB5jk9iKn232k,10025
102
+ redis-7.0.1.dist-info/METADATA,sha256=ZOL_QJvzypyTVOlShWq14UMi8LTxHGn_Out_sWbAEic,12057
103
+ redis-7.0.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
104
+ redis-7.0.1.dist-info/licenses/LICENSE,sha256=pXslClvwPXr-VbdAYzE_Ktt7ANVGwKsUmok5gzP-PMg,1074
105
+ redis-7.0.1.dist-info/RECORD,,
File without changes