coredis 5.0.0__py3-none-any.whl → 5.0.0rc2__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.

Potentially problematic release.


This version of coredis might be problematic. Click here for more details.

coredis/_protocols.py CHANGED
@@ -10,10 +10,14 @@ from coredis.typing import (
10
10
  Awaitable,
11
11
  Callable,
12
12
  ExecutionParameters,
13
+ KeyT,
14
+ Parameters,
13
15
  Protocol,
14
16
  R,
15
17
  RedisCommandP,
18
+ RedisValueT,
16
19
  ResponseType,
20
+ StringT,
17
21
  TypeVar,
18
22
  Unpack,
19
23
  ValueT,
@@ -43,6 +47,25 @@ class AbstractExecutor(Protocol):
43
47
  ) -> CommandRequest[R]: ...
44
48
 
45
49
 
50
+ @runtime_checkable
51
+ class SupportsScript(Protocol[T_co]): # noqa
52
+ def evalsha(
53
+ self,
54
+ sha1: StringT,
55
+ keys: Parameters[KeyT] | None = ...,
56
+ args: Parameters[RedisValueT] | None = ...,
57
+ ) -> CommandRequest[ResponseType]: ...
58
+
59
+ def evalsha_ro(
60
+ self,
61
+ sha1: StringT,
62
+ keys: Parameters[KeyT] | None = ...,
63
+ args: Parameters[RedisValueT] | None = ...,
64
+ ) -> CommandRequest[ResponseType]: ...
65
+
66
+ def script_load(self, script: StringT) -> CommandRequest[T_co]: ...
67
+
68
+
46
69
  @runtime_checkable
47
70
  class ConnectionP(Protocol):
48
71
  decode_responses: bool
coredis/_utils.py CHANGED
@@ -120,6 +120,10 @@ def b(x: ResponseType, encoding: str | None = None) -> bytes:
120
120
  return _v.encode(encoding) if encoding else _v.encode()
121
121
 
122
122
 
123
+ def defaultvalue(value: U | None, default: T) -> U | T:
124
+ return default if value is None else value
125
+
126
+
123
127
  def nativestr(x: ResponseType, encoding: str = "utf-8") -> str:
124
128
  if isinstance(x, (str, bytes)):
125
129
  return x if isinstance(x, str) else x.decode(encoding, "replace")
coredis/_version.py CHANGED
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-07-16T17:47:22-0700",
11
+ "date": "2025-07-10T16:37:52-0700",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "ac290229e2b463e1643d9829542cb1a59083b600",
15
- "version": "5.0.0"
14
+ "full-revisionid": "500ec3f7c2c644928da3459bf3242872e672728c",
15
+ "version": "5.0.0rc2"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
coredis/commands/core.py CHANGED
@@ -7,7 +7,7 @@ from typing import overload
7
7
  from deprecated.sphinx import versionadded
8
8
 
9
9
  from coredis._json import json
10
- from coredis._utils import dict_to_flat_list, tuples_to_flat_list
10
+ from coredis._utils import defaultvalue, dict_to_flat_list, tuples_to_flat_list
11
11
  from coredis.commands import CommandMixin
12
12
  from coredis.commands._utils import (
13
13
  normalized_milliseconds,
@@ -5269,8 +5269,8 @@ class CoreCommands(CommandMixin[AnyStr]):
5269
5269
  """
5270
5270
 
5271
5271
  command_arguments: CommandArgList = [
5272
- start if start is not None else "-",
5273
- end if end is not None else "+",
5272
+ defaultvalue(start, "-"),
5273
+ defaultvalue(end, "+"),
5274
5274
  ]
5275
5275
 
5276
5276
  if count is not None:
@@ -5298,8 +5298,8 @@ class CoreCommands(CommandMixin[AnyStr]):
5298
5298
  IDs interval, in reverse order (from greater to smaller IDs) compared to XRANGE
5299
5299
  """
5300
5300
  command_arguments: CommandArgList = [
5301
- end if end is not None else "+",
5302
- start if start is not None else "-",
5301
+ defaultvalue(end, "+"),
5302
+ defaultvalue(start, "-"),
5303
5303
  ]
5304
5304
 
5305
5305
  if count is not None:
@@ -8110,37 +8110,6 @@ class CoreCommands(CommandMixin[AnyStr]):
8110
8110
  filter_ef: int | None = ...,
8111
8111
  truth: bool | None = ...,
8112
8112
  ) -> CommandRequest[dict[AnyStr, float]]: ...
8113
- @overload
8114
- def vsim(
8115
- self,
8116
- key: KeyT,
8117
- *,
8118
- element: StringT | None = ...,
8119
- values: Parameters[float] | bytes | None = ...,
8120
- withattribs: Literal[True],
8121
- count: int | None = ...,
8122
- epsilon: float | None = ...,
8123
- ef: int | None = ...,
8124
- filter: StringT | None = ...,
8125
- filter_ef: int | None = ...,
8126
- truth: bool | None = ...,
8127
- ) -> CommandRequest[dict[AnyStr, JsonType]]: ...
8128
- @overload
8129
- def vsim(
8130
- self,
8131
- key: KeyT,
8132
- *,
8133
- element: StringT | None = ...,
8134
- values: Parameters[float] | bytes | None = ...,
8135
- withscores: Literal[True],
8136
- withattribs: Literal[True],
8137
- count: int | None = ...,
8138
- epsilon: float | None = ...,
8139
- ef: int | None = ...,
8140
- filter: StringT | None = ...,
8141
- filter_ef: int | None = ...,
8142
- truth: bool | None = ...,
8143
- ) -> CommandRequest[dict[AnyStr, tuple[float, JsonType]]]: ...
8144
8113
 
8145
8114
  @versionadded(version="5.0.0")
8146
8115
  @mutually_exclusive_parameters("values", "element", required=True)
@@ -8148,7 +8117,6 @@ class CoreCommands(CommandMixin[AnyStr]):
8148
8117
  CommandName.VSIM,
8149
8118
  version_introduced="8.0.0",
8150
8119
  group=CommandGroup.VECTOR_SET,
8151
- arguments={"withattribs": {"version_introduced": "8.1.240"}},
8152
8120
  )
8153
8121
  def vsim(
8154
8122
  self,
@@ -8157,19 +8125,13 @@ class CoreCommands(CommandMixin[AnyStr]):
8157
8125
  element: StringT | None = None,
8158
8126
  values: Parameters[float] | bytes | None = None,
8159
8127
  withscores: bool | None = None,
8160
- withattribs: bool | None = None,
8161
8128
  count: int | None = None,
8162
8129
  epsilon: float | None = None,
8163
8130
  ef: int | None = None,
8164
8131
  filter: StringT | None = None,
8165
8132
  filter_ef: int | None = None,
8166
8133
  truth: bool | None = None,
8167
- ) -> CommandRequest[
8168
- tuple[AnyStr, ...]
8169
- | dict[AnyStr, float]
8170
- | dict[AnyStr, JsonType]
8171
- | dict[AnyStr, tuple[float, JsonType]]
8172
- ]:
8134
+ ) -> CommandRequest[tuple[AnyStr, ...] | dict[AnyStr, float]]:
8173
8135
  """
8174
8136
  Return elements similar to a given vector or element
8175
8137
 
@@ -8178,7 +8140,6 @@ class CoreCommands(CommandMixin[AnyStr]):
8178
8140
  :param values: either a byte representation of a 32-bit floating point (FP32) blob of values
8179
8141
  or a sequence of doubles representing the vector to use as the similarity reference.
8180
8142
  :param withscores: whether to return similarity scores for each result
8181
- :param withattribs: whether to include attributes for for each result
8182
8143
  :param count: number of results to limit to
8183
8144
  :param epsilon: distance threshold; results with distance greater than this are
8184
8145
  excluded.
@@ -8187,8 +8148,7 @@ class CoreCommands(CommandMixin[AnyStr]):
8187
8148
  :param filter_ef: limits the number of filtering attempts
8188
8149
  :param truth: forces an exact linear scan of all elements bypassing the HSNW graph
8189
8150
  :return: the matching elements or a mapping of the matching elements to their scores
8190
- if :paramref:`withscores` is ``True`` and/or their attributes if :paramref:`withattribs`
8191
- is ``True``
8151
+ if :paramref:`withscores` is ``True``
8192
8152
  """
8193
8153
  command_arguments: CommandArgList = [key]
8194
8154
  if values is not None:
@@ -8202,8 +8162,6 @@ class CoreCommands(CommandMixin[AnyStr]):
8202
8162
 
8203
8163
  if withscores:
8204
8164
  command_arguments.append(PureToken.WITHSCORES)
8205
- if withattribs:
8206
- command_arguments.append(PureToken.WITHATTRIBS)
8207
8165
  if count is not None:
8208
8166
  command_arguments.extend([PrefixToken.COUNT, count])
8209
8167
  if ef is not None:
@@ -8219,7 +8177,7 @@ class CoreCommands(CommandMixin[AnyStr]):
8219
8177
  return self.create_request(
8220
8178
  CommandName.VSIM,
8221
8179
  *command_arguments,
8222
- callback=VSimCallback[AnyStr](withscores=withscores, withattribs=withattribs),
8180
+ callback=VSimCallback[AnyStr](withscores=withscores),
8223
8181
  )
8224
8182
 
8225
8183
  @versionadded(version="5.0.0")
@@ -8,7 +8,9 @@ from typing import TYPE_CHECKING, Any, cast
8
8
 
9
9
  from deprecated.sphinx import versionadded
10
10
 
11
+ from coredis._protocols import SupportsScript
11
12
  from coredis._utils import b
13
+ from coredis.commands import CommandRequest
12
14
  from coredis.exceptions import NoScriptError
13
15
  from coredis.retry import ConstantRetryPolicy, retryable
14
16
  from coredis.typing import (
@@ -23,7 +25,6 @@ from coredis.typing import (
23
25
  RedisValueT,
24
26
  ResponseType,
25
27
  StringT,
26
- ValueT,
27
28
  add_runtime_checks,
28
29
  safe_beartype,
29
30
  )
@@ -52,7 +53,7 @@ class Script(Generic[AnyStr]):
52
53
 
53
54
  def __init__(
54
55
  self,
55
- registered_client: coredis.client.Client[AnyStr] | None = None,
56
+ registered_client: SupportsScript[AnyStr] | None = None,
56
57
  script: StringT | None = None,
57
58
  readonly: bool = False,
58
59
  ):
@@ -65,7 +66,7 @@ class Script(Generic[AnyStr]):
65
66
  :param readonly: If ``True`` the script will be called with
66
67
  :meth:`coredis.Redis.evalsha_ro` instead of :meth:`coredis.Redis.evalsha`
67
68
  """
68
- self.registered_client: coredis.client.Client[AnyStr] | None = registered_client
69
+ self.registered_client: SupportsScript[AnyStr] | None = registered_client
69
70
  self.script: StringT
70
71
  if not script:
71
72
  raise RuntimeError("No script provided")
@@ -76,10 +77,10 @@ class Script(Generic[AnyStr]):
76
77
  def __call__(
77
78
  self,
78
79
  keys: Parameters[KeyT] | None = None,
79
- args: Parameters[ValueT] | None = None,
80
- client: coredis.client.Client[AnyStr] | None = None,
80
+ args: Parameters[RedisValueT] | None = None,
81
+ client: SupportsScript[AnyStr] | None = None,
81
82
  readonly: bool | None = None,
82
- ) -> Awaitable[ResponseType]:
83
+ ) -> CommandRequest[ResponseType]:
83
84
  """
84
85
  Executes the script registered in :paramref:`Script.script` using
85
86
  :meth:`coredis.Redis.evalsha`. Additionally, if the script was not yet
@@ -112,16 +113,19 @@ class Script(Generic[AnyStr]):
112
113
  cast(Pipeline[AnyStr], client).scripts.add(self)
113
114
  return method(self.sha, keys=keys, args=args)
114
115
  else:
115
- return retryable(
116
- ConstantRetryPolicy((NoScriptError,), 1, 0),
117
- failure_hook=lambda _: client.script_load(self.script),
118
- )(method)(self.sha, keys=keys, args=args)
116
+ return cast(
117
+ CommandRequest[ResponseType],
118
+ retryable(
119
+ ConstantRetryPolicy((NoScriptError,), 1, 0),
120
+ failure_hook=lambda _: client.script_load(self.script),
121
+ )(method)(self.sha, keys=keys, args=args),
122
+ )
119
123
 
120
124
  async def execute(
121
125
  self,
122
126
  keys: Parameters[KeyT] | None = None,
123
- args: Parameters[ValueT] | None = None,
124
- client: coredis.client.Client[AnyStr] | None = None,
127
+ args: Parameters[RedisValueT] | None = None,
128
+ client: SupportsScript[AnyStr] | None = None,
125
129
  readonly: bool | None = None,
126
130
  ) -> ResponseType:
127
131
  """
coredis/pipeline.py CHANGED
@@ -89,6 +89,8 @@ def wrap_pipeline_method(
89
89
  def wrapper(*args: P.args, **kwargs: P.kwargs) -> Awaitable[R]:
90
90
  return func(*args, **kwargs)
91
91
 
92
+ wrapper.__annotations__ = wrapper.__annotations__.copy()
93
+ wrapper.__annotations__["return"] = kls
92
94
  wrapper.__doc__ = textwrap.dedent(wrapper.__doc__ or "")
93
95
  wrapper.__doc__ = f"""
94
96
  .. note:: Pipeline variant of :meth:`coredis.Redis.{func.__name__}` that does not execute
@@ -163,12 +165,13 @@ class PipelineCommandRequest(CommandRequest[CommandResponseT]):
163
165
  if hasattr(self, "response"):
164
166
  return self.response.__await__()
165
167
  elif self.parent:
168
+ parent = self.parent
166
169
 
167
170
  async def _transformed() -> CommandResponseT:
168
- if (r := await self.parent) == self.client: # type: ignore
169
- return r # type: ignore
171
+ if hasattr(parent, "response"):
172
+ return self.callback(await parent.response)
170
173
  else:
171
- return self.callback(r)
174
+ return await parent # type: ignore[no-any-return]
172
175
 
173
176
  return _transformed().__await__()
174
177
  else:
@@ -538,8 +541,6 @@ class Pipeline(Client[AnyStr], metaclass=PipelineMeta):
538
541
  ) -> None:
539
542
  """
540
543
  Queue a command for execution on the next `execute()` call.
541
-
542
- :meta private:
543
544
  """
544
545
  self.command_stack.append(command)
545
546
 
@@ -1,69 +1,36 @@
1
1
  from __future__ import annotations
2
2
 
3
- from coredis._json import json
4
3
  from coredis._utils import nativestr
5
4
  from coredis.response._callbacks import ResponseCallback
6
5
  from coredis.response._utils import flat_pairs_to_dict
7
6
  from coredis.response.types import VectorData
8
- from coredis.typing import AnyStr, JsonType, ResponsePrimitive, StringT
7
+ from coredis.typing import AnyStr, ResponsePrimitive, StringT
9
8
 
10
9
 
11
10
  class VSimCallback(
12
11
  ResponseCallback[
13
12
  list[AnyStr],
14
- list[AnyStr] | dict[AnyStr, float | list[float | JsonType]],
15
- tuple[AnyStr, ...]
16
- | dict[AnyStr, float]
17
- | dict[AnyStr, JsonType]
18
- | dict[AnyStr, tuple[float, JsonType]],
13
+ list[AnyStr] | dict[AnyStr, float],
14
+ tuple[AnyStr, ...] | dict[AnyStr, float],
19
15
  ],
20
16
  ):
21
17
  def transform(
22
18
  self,
23
19
  response: list[AnyStr],
24
- ) -> (
25
- tuple[AnyStr, ...]
26
- | dict[AnyStr, float]
27
- | dict[AnyStr, JsonType]
28
- | dict[AnyStr, tuple[float, JsonType]]
29
- ):
30
- withscores, withattribs = self.options.get("withscores"), self.options.get("withattribs")
31
- if withscores or withattribs:
20
+ ) -> tuple[AnyStr, ...] | dict[AnyStr, float]:
21
+ if self.options.get("withscores"):
32
22
  it = iter(response)
33
- match withscores, withattribs:
34
- case True, None | False:
35
- return dict(list(zip(it, map(float, it))))
36
- case None | False, True:
37
- return dict(list(zip(it, map(json.loads, it))))
38
- case True, True:
39
- return dict(
40
- list(zip(it, map(lambda x: (float(x[0]), json.loads(x[1])), zip(it, it))))
41
- )
23
+ return dict(list(zip(it, map(float, it))))
42
24
  else:
43
- return self.transform_3(response)
25
+ return tuple(response)
44
26
 
45
27
  def transform_3(
46
28
  self,
47
- response: list[AnyStr]
48
- | dict[AnyStr, float]
49
- | dict[AnyStr, AnyStr]
50
- | dict[AnyStr, list[float | AnyStr]],
51
- ) -> (
52
- tuple[AnyStr, ...]
53
- | dict[AnyStr, float]
54
- | dict[AnyStr, JsonType]
55
- | dict[AnyStr, tuple[float, JsonType]]
56
- ):
57
- withscores, withattribs = self.options.get("withscores"), self.options.get("withattribs")
58
- if withscores or withattribs:
29
+ response: list[AnyStr] | dict[AnyStr, float],
30
+ ) -> tuple[AnyStr, ...] | dict[AnyStr, float]:
31
+ if self.options.get("withscores"):
59
32
  assert isinstance(response, dict)
60
- match withscores, withattribs:
61
- case None | False, True:
62
- return {k: json.loads(v) for k, v in response.items()}
63
- case True, True:
64
- return {k: (v[0], json.loads(v[1])) for k, v in response.items()}
65
- case _:
66
- return response
33
+ return response
67
34
  else:
68
35
  return tuple(response)
69
36
 
coredis/sentinel.py CHANGED
@@ -24,7 +24,6 @@ from coredis.typing import (
24
24
  Iterable,
25
25
  Literal,
26
26
  StringT,
27
- TypeAdapter,
28
27
  )
29
28
 
30
29
 
@@ -196,7 +195,6 @@ class Sentinel(Generic[AnyStr]):
196
195
  sentinel_kwargs: dict[str, Any] | None = ...,
197
196
  decode_responses: Literal[False] = ...,
198
197
  cache: AbstractCache | None = None,
199
- type_adapter: TypeAdapter | None = ...,
200
198
  **connection_kwargs: Any,
201
199
  ) -> None: ...
202
200
 
@@ -208,7 +206,6 @@ class Sentinel(Generic[AnyStr]):
208
206
  sentinel_kwargs: dict[str, Any] | None = ...,
209
207
  decode_responses: Literal[True] = ...,
210
208
  cache: AbstractCache | None = None,
211
- type_adapter: TypeAdapter | None = None,
212
209
  **connection_kwargs: Any,
213
210
  ) -> None: ...
214
211
 
@@ -219,7 +216,6 @@ class Sentinel(Generic[AnyStr]):
219
216
  sentinel_kwargs: dict[str, Any] | None = None,
220
217
  decode_responses: bool = False,
221
218
  cache: AbstractCache | None = None,
222
- type_adapter: TypeAdapter | None = None,
223
219
  **connection_kwargs: Any,
224
220
  ) -> None:
225
221
  """
@@ -240,9 +236,6 @@ class Sentinel(Generic[AnyStr]):
240
236
  and ``protocol_version`` options specified in :paramref:`connection_kwargs` will be used.
241
237
  :param cache: If provided the cache will be shared between both primaries and replicas
242
238
  returned by this sentinel.
243
- :param type_adapter: The adapter to use for serializing / deserializing customs types
244
- when interacting with redis commands. If provided this adapter will be used for both
245
- primaries and replicas returned by this sentinel.
246
239
  :param connection_kwargs: are keyword arguments that will be used when
247
240
  establishing a connection to a Redis server (i.e. are passed on to the
248
241
  constructor of :class:`Redis` for all primary and replicas).
@@ -267,7 +260,6 @@ class Sentinel(Generic[AnyStr]):
267
260
  self.min_other_sentinels = min_other_sentinels
268
261
  self.connection_kwargs = connection_kwargs
269
262
  self.__cache = cache
270
- self.__type_adapter = type_adapter
271
263
  self.connection_kwargs["decode_responses"] = self.sentinel_kwargs["decode_responses"] = (
272
264
  decode_responses
273
265
  )
@@ -414,7 +406,6 @@ class Sentinel(Generic[AnyStr]):
414
406
  **connection_kwargs,
415
407
  ),
416
408
  cache=self.__cache,
417
- type_adapter=self.__type_adapter,
418
409
  )
419
410
 
420
411
  @overload
@@ -470,5 +461,4 @@ class Sentinel(Generic[AnyStr]):
470
461
  **connection_kwargs,
471
462
  ),
472
463
  cache=self.__cache,
473
- type_adapter=self.__type_adapter,
474
464
  )
coredis/tokens.py CHANGED
@@ -771,11 +771,6 @@ class PureToken(CaseAndEncodingInsensitiveEnum):
771
771
  #: - ``VSIM``
772
772
  TRUTH = b"TRUTH"
773
773
 
774
- #: Used by:
775
- #:
776
- #: - ``VSIM``
777
- WITHATTRIBS = b"WITHATTRIBS"
778
-
779
774
  #: Used by:
780
775
  #:
781
776
  #: - ``VEMB``
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: coredis
3
- Version: 5.0.0
3
+ Version: 5.0.0rc2
4
4
  Summary: Python async client for Redis key-value store
5
5
  Home-page: https://github.com/alisaifee/coredis
6
6
  Author: Ali-Akber Saifee
@@ -14,6 +14,7 @@ Project-URL: Documentation, https://coredis.readthedocs.org
14
14
  Keywords: Redis,key-value store,asyncio
15
15
  Classifier: Development Status :: 5 - Production/Stable
16
16
  Classifier: Intended Audience :: Developers
17
+ Classifier: License :: OSI Approved :: MIT License
17
18
  Classifier: Operating System :: OS Independent
18
19
  Classifier: Programming Language :: Python
19
20
  Classifier: Programming Language :: Python :: 3.10
@@ -1,12 +1,12 @@
1
1
  coredis/__init__.py,sha256=SMfOaj8prRC4xyBZycECI-uHL8pP6keNZiqqboh6_ik,951
2
2
  coredis/_json.py,sha256=XjrTlG6Up6BjzfIxk-KSU7IhYeD0fLvXdOPpsMZ6Ff8,186
3
3
  coredis/_packer.py,sha256=iXaIKyVJiPiNtB5Hryz4nkjhjLeB-xUWqZdyM7oDpk0,2726
4
- coredis/_protocols.py,sha256=dzn0W-RCxMGQ4xBDop4FV5Ez4dF6i0QDmmDRRazwJNQ,1059
4
+ coredis/_protocols.py,sha256=wGuMfnhQuHJvL1fL6NyRmgOgRs1iNhPJS6hZ8Mgpy80,1647
5
5
  coredis/_py_311_typing.py,sha256=QTh0tPRnwd7E39FXlh0RrWqloFWTeidOkfr4mRnp4K8,557
6
6
  coredis/_py_312_typing.py,sha256=zB6scCVDNdSu3YBujf3Hq3rn-i-i8DcsbwbmcT-HrcQ,517
7
7
  coredis/_sidecar.py,sha256=ci3hx7RojTdodMqe_zf07HL-E6DlqSliscENTa3dbzI,4404
8
- coredis/_utils.py,sha256=OaNDLvx3e0fJEjoQ0K0WtDeR_C0-lX5_LLCuKx15LeI,9893
9
- coredis/_version.py,sha256=1tHMhPKU_6DNtlytLO75x1j4rCNcXaU7QBydkfJmWGU,497
8
+ coredis/_utils.py,sha256=CWb5T-CUPFX9bozunBCrJIgrTErXydpU2G9uoteiB2E,9998
9
+ coredis/_version.py,sha256=7ORGNLLIu2e3-6EMSQUt-XYu27_4LuyRHrRAMu2lGkU,500
10
10
  coredis/cache.py,sha256=entnV__Bpv4DjqK9BmejuyEgknLBWQnz-Sp8p1CwjQw,26308
11
11
  coredis/config.py,sha256=Ni2uXMNzdfSRDEJl0KxrS78shLszfYM-ZbE7GK_O7Pk,1368
12
12
  coredis/connection.py,sha256=0GbYjcBZizz-1fscoXG3fQRHOvh6c4Flc3yDrMNzJV8,30899
@@ -15,13 +15,13 @@ coredis/credentials.py,sha256=iVSZEyMfd6nEePpVRrx3Ora-EuCCwJ9G9NshEI5Qs2A,1102
15
15
  coredis/exceptions.py,sha256=8P3npdmixnUso9GdcKit6FzXywSWFJhj6EEyiGja8As,8709
16
16
  coredis/globals.py,sha256=R0Ys_wd3v29cMiojSwlyyflA3GK2lFNCjnVL4PMANag,678
17
17
  coredis/parser.py,sha256=9pzxtIOqyj1O91DwKGCMCWf807qsJThDBtD5qslBwkY,11754
18
- coredis/pipeline.py,sha256=_cCyBHTjFHq1K5MOJAlAxBNSiobiKua7H2v1DXjLosA,43613
18
+ coredis/pipeline.py,sha256=Fh4xvkRUatJ_UHXZKdll0vRI1LrRaeMv2UBFICSeL1E,43745
19
19
  coredis/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  coredis/retry.py,sha256=Ia-dajjrUK8OcSALL7RBz4rinJKuaG5lc0zfOuUa4aE,8204
21
- coredis/sentinel.py,sha256=Qx0mavNc2F_NV8oBEPK7x8FcsSC05WqCUbStMBrRf8Y,16838
21
+ coredis/sentinel.py,sha256=AE0jzHaaDziroxzR-_x9tmCw954Ui3QJ8Jl8c0GL4m8,16293
22
22
  coredis/speedups.pyi,sha256=cUYJLKVGVgyGisMNUExWnnoLTYleCuH2v3XwTXOwnFM,109
23
23
  coredis/stream.py,sha256=tQStAfamoGr3OTkWLTqxyEV60epVRPBxwaGwPVW6tzc,14935
24
- coredis/tokens.py,sha256=LDJbgl2UnrTAF6Iy9xW4OvD4UAMpPaISaJYQ368xVS0,36662
24
+ coredis/tokens.py,sha256=t8a3Rosho77jMD6rUO15A0qw3WoWOJe-CW-z_DunPpA,36586
25
25
  coredis/typing.py,sha256=0oEm8aP4QkH6z_m3WVf6rhTTCJ6Rby7U2XspZuW4Awk,20627
26
26
  coredis/client/__init__.py,sha256=J4r1pi5r68EwodMV8-eHvzM83tkz2mTlWayKy-JScrg,150
27
27
  coredis/client/basic.py,sha256=kg9k0pMfIuzVCIhnL_wjJxixzh0NW0sEreJi9N_ycSA,46241
@@ -33,12 +33,12 @@ coredis/commands/_validators.py,sha256=yo0I81uMpy7FMvPxMheqdMPved-ujkpaWUs0WpuOP
33
33
  coredis/commands/_wrappers.py,sha256=rw-HF3XxsImRRB0ptK1zrgOyMlRXLyz6wbfViblK5e8,5653
34
34
  coredis/commands/bitfield.py,sha256=aB-m4KoUbGpI4zxzNU0VCfmPt7HGhB5kt4g8KX5CoRo,3405
35
35
  coredis/commands/constants.py,sha256=KZs05uSnn7cg3K723UrqEOGDcClWNAc29EbDPyPk4gQ,30312
36
- coredis/commands/core.py,sha256=Fx2BiCK1EOAng6W9VIOnaLlCwpMYLmlNtQlxaUwnGQE,280022
36
+ coredis/commands/core.py,sha256=UJr6mDLVPM__HPXHTLhOsOpTFoGuLEAS0hUZSZDHVA4,278545
37
37
  coredis/commands/function.py,sha256=mznJds0S09qAAjII8Jw1TjkS8maljAc65QzEtWDhrgk,16301
38
38
  coredis/commands/monitor.py,sha256=Zu_PmUggLkRke5XFTE3cb5-5ocCxhfrKjlm_e00-kvI,5766
39
39
  coredis/commands/pubsub.py,sha256=_svI6BK5F9MIF7DHKmpW1ob7ypN13O9BFDpwSrLBYKs,34371
40
40
  coredis/commands/request.py,sha256=9tMw5q6KdF4y6SyHfcguRe6P7mjArqE8Djk9FSvxKts,3663
41
- coredis/commands/script.py,sha256=6cb_JhaM49-Kjb6iuSTAU0boOFw9CuHIMa5HRnGosJs,12135
41
+ coredis/commands/script.py,sha256=gu7IONB4rJNTnq4v8ZSfSgcZoweIOVb0A7gBjFpo6iI,12295
42
42
  coredis/commands/sentinel.py,sha256=9giNW1QyhRD5SaAkPSgiBFEnm9XnGa2QM6vBQDZEwp0,7789
43
43
  coredis/experimental/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
44
44
  coredis/modules/__init__.py,sha256=eqWwEYNI-B7Lc19R23n6NQaQoKHmpj8mrtkYBcQ2fCA,2917
@@ -87,9 +87,9 @@ coredis/response/_callbacks/sets.py,sha256=aaGh3BF0TkW_jGnpFENipAzWA-R9TgnioKudf
87
87
  coredis/response/_callbacks/sorted_set.py,sha256=LrqHBMPluR2MufkCoE8y_FRO4_WrfGq5wsdri4Sxkqo,6335
88
88
  coredis/response/_callbacks/streams.py,sha256=vq4C8sidFam32n7rlfUrt1XzkOdmeTtFv0tl0mLRcYA,6241
89
89
  coredis/response/_callbacks/strings.py,sha256=sjHY2JwxHl4ndIl9WhHD48VKuGn39FArE8XnRUparu4,1955
90
- coredis/response/_callbacks/vector_sets.py,sha256=z1fUPaGjui9f4hVDIPLu6iA3R2EIG-np6hS8ZmCaGOQ,5334
91
- coredis-5.0.0.dist-info/licenses/LICENSE,sha256=pTSTkaH3iX2r6C88El9edMoi6r_Og6Wf4b6Zgq-LSOQ,1107
92
- coredis-5.0.0.dist-info/METADATA,sha256=EV1zEGAWHTfJOmznkM4AZv2S9-g3hhgkroiyr6qMxs8,8768
93
- coredis-5.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
94
- coredis-5.0.0.dist-info/top_level.txt,sha256=PWp3SlvenceLQUL9VJ1_rKwKoi-U9g3KDJS5ws8tOG8,8
95
- coredis-5.0.0.dist-info/RECORD,,
90
+ coredis/response/_callbacks/vector_sets.py,sha256=nErA6NvtwObdE8NVirCNeB3nDNw3EkNnQkNdAO72Uq8,3993
91
+ coredis-5.0.0rc2.dist-info/licenses/LICENSE,sha256=pTSTkaH3iX2r6C88El9edMoi6r_Og6Wf4b6Zgq-LSOQ,1107
92
+ coredis-5.0.0rc2.dist-info/METADATA,sha256=1n-dSvKJO4_EgIm3N5NE8jL9gJDS3MP4X9PLsBmoDzg,8822
93
+ coredis-5.0.0rc2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
94
+ coredis-5.0.0rc2.dist-info/top_level.txt,sha256=PWp3SlvenceLQUL9VJ1_rKwKoi-U9g3KDJS5ws8tOG8,8
95
+ coredis-5.0.0rc2.dist-info/RECORD,,