coredis 5.2.0__cp314-cp314-macosx_11_0_arm64.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.

Files changed (100) hide show
  1. 22fe76227e35f92ab5c3__mypyc.cpython-314-darwin.so +0 -0
  2. coredis/__init__.py +42 -0
  3. coredis/_enum.py +42 -0
  4. coredis/_json.py +11 -0
  5. coredis/_packer.cpython-314-darwin.so +0 -0
  6. coredis/_packer.py +71 -0
  7. coredis/_protocols.py +50 -0
  8. coredis/_py_311_typing.py +20 -0
  9. coredis/_py_312_typing.py +17 -0
  10. coredis/_sidecar.py +114 -0
  11. coredis/_utils.cpython-314-darwin.so +0 -0
  12. coredis/_utils.py +440 -0
  13. coredis/_version.py +34 -0
  14. coredis/_version.pyi +1 -0
  15. coredis/cache.py +801 -0
  16. coredis/client/__init__.py +6 -0
  17. coredis/client/basic.py +1238 -0
  18. coredis/client/cluster.py +1264 -0
  19. coredis/commands/__init__.py +64 -0
  20. coredis/commands/_key_spec.py +517 -0
  21. coredis/commands/_utils.py +108 -0
  22. coredis/commands/_validators.py +159 -0
  23. coredis/commands/_wrappers.py +175 -0
  24. coredis/commands/bitfield.py +110 -0
  25. coredis/commands/constants.py +662 -0
  26. coredis/commands/core.py +8484 -0
  27. coredis/commands/function.py +408 -0
  28. coredis/commands/monitor.py +168 -0
  29. coredis/commands/pubsub.py +905 -0
  30. coredis/commands/request.py +108 -0
  31. coredis/commands/script.py +296 -0
  32. coredis/commands/sentinel.py +246 -0
  33. coredis/config.py +50 -0
  34. coredis/connection.py +906 -0
  35. coredis/constants.cpython-314-darwin.so +0 -0
  36. coredis/constants.py +37 -0
  37. coredis/credentials.py +45 -0
  38. coredis/exceptions.py +360 -0
  39. coredis/experimental/__init__.py +1 -0
  40. coredis/globals.py +23 -0
  41. coredis/modules/__init__.py +117 -0
  42. coredis/modules/autocomplete.py +138 -0
  43. coredis/modules/base.py +262 -0
  44. coredis/modules/filters.py +1319 -0
  45. coredis/modules/graph.py +362 -0
  46. coredis/modules/json.py +691 -0
  47. coredis/modules/response/__init__.py +0 -0
  48. coredis/modules/response/_callbacks/__init__.py +0 -0
  49. coredis/modules/response/_callbacks/autocomplete.py +42 -0
  50. coredis/modules/response/_callbacks/graph.py +237 -0
  51. coredis/modules/response/_callbacks/json.py +21 -0
  52. coredis/modules/response/_callbacks/search.py +221 -0
  53. coredis/modules/response/_callbacks/timeseries.py +158 -0
  54. coredis/modules/response/types.py +179 -0
  55. coredis/modules/search.py +1089 -0
  56. coredis/modules/timeseries.py +1139 -0
  57. coredis/parser.cpython-314-darwin.so +0 -0
  58. coredis/parser.py +344 -0
  59. coredis/pipeline.py +1225 -0
  60. coredis/pool/__init__.py +11 -0
  61. coredis/pool/basic.py +453 -0
  62. coredis/pool/cluster.py +517 -0
  63. coredis/pool/nodemanager.py +340 -0
  64. coredis/py.typed +0 -0
  65. coredis/recipes/__init__.py +0 -0
  66. coredis/recipes/credentials/__init__.py +5 -0
  67. coredis/recipes/credentials/iam_provider.py +63 -0
  68. coredis/recipes/locks/__init__.py +5 -0
  69. coredis/recipes/locks/extend.lua +17 -0
  70. coredis/recipes/locks/lua_lock.py +281 -0
  71. coredis/recipes/locks/release.lua +10 -0
  72. coredis/response/__init__.py +5 -0
  73. coredis/response/_callbacks/__init__.py +538 -0
  74. coredis/response/_callbacks/acl.py +32 -0
  75. coredis/response/_callbacks/cluster.py +183 -0
  76. coredis/response/_callbacks/command.py +86 -0
  77. coredis/response/_callbacks/connection.py +31 -0
  78. coredis/response/_callbacks/geo.py +58 -0
  79. coredis/response/_callbacks/hash.py +85 -0
  80. coredis/response/_callbacks/keys.py +59 -0
  81. coredis/response/_callbacks/module.py +33 -0
  82. coredis/response/_callbacks/script.py +85 -0
  83. coredis/response/_callbacks/sentinel.py +179 -0
  84. coredis/response/_callbacks/server.py +241 -0
  85. coredis/response/_callbacks/sets.py +44 -0
  86. coredis/response/_callbacks/sorted_set.py +204 -0
  87. coredis/response/_callbacks/streams.py +185 -0
  88. coredis/response/_callbacks/strings.py +70 -0
  89. coredis/response/_callbacks/vector_sets.py +159 -0
  90. coredis/response/_utils.py +33 -0
  91. coredis/response/types.py +416 -0
  92. coredis/retry.py +233 -0
  93. coredis/sentinel.py +477 -0
  94. coredis/stream.py +369 -0
  95. coredis/tokens.py +2286 -0
  96. coredis/typing.py +580 -0
  97. coredis-5.2.0.dist-info/METADATA +211 -0
  98. coredis-5.2.0.dist-info/RECORD +100 -0
  99. coredis-5.2.0.dist-info/WHEEL +6 -0
  100. coredis-5.2.0.dist-info/licenses/LICENSE +23 -0
@@ -0,0 +1,64 @@
1
+ """
2
+ coredis.commands
3
+ ----------------
4
+ Implementation of core redis commands and abstractions over high level
5
+ core concepts such as pubsub, scripting and functions.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from abc import ABC, abstractmethod
11
+
12
+ from coredis.response._callbacks import NoopCallback
13
+ from coredis.typing import (
14
+ AnyStr,
15
+ Awaitable,
16
+ Callable,
17
+ ExecutionParameters,
18
+ Generic,
19
+ R,
20
+ RedisCommandP,
21
+ Unpack,
22
+ ValueT,
23
+ )
24
+
25
+ # Command wrappers
26
+ from .bitfield import BitFieldOperation
27
+ from .function import Function, Library
28
+ from .monitor import Monitor
29
+ from .pubsub import ClusterPubSub, PubSub, ShardedPubSub
30
+ from .request import CommandRequest, CommandResponseT
31
+ from .script import Script
32
+
33
+
34
+ class CommandMixin(Generic[AnyStr], ABC):
35
+ @abstractmethod
36
+ def execute_command(
37
+ self,
38
+ command: RedisCommandP,
39
+ callback: Callable[..., R] = NoopCallback(),
40
+ **options: Unpack[ExecutionParameters],
41
+ ) -> Awaitable[R]: ...
42
+
43
+ @abstractmethod
44
+ def create_request(
45
+ self,
46
+ name: bytes,
47
+ *arguments: ValueT,
48
+ callback: Callable[..., R],
49
+ execution_parameters: ExecutionParameters | None = None,
50
+ ) -> CommandRequest[R]: ...
51
+
52
+
53
+ __all__ = [
54
+ "CommandRequest",
55
+ "CommandResponseT",
56
+ "BitFieldOperation",
57
+ "ClusterPubSub",
58
+ "Function",
59
+ "Library",
60
+ "Monitor",
61
+ "PubSub",
62
+ "Script",
63
+ "ShardedPubSub",
64
+ ]
@@ -0,0 +1,517 @@
1
+ from __future__ import annotations
2
+
3
+ from coredis._utils import b
4
+ from coredis.typing import Callable, ClassVar, RedisValueT
5
+
6
+
7
+ class KeySpec:
8
+ READONLY: ClassVar[
9
+ dict[bytes, Callable[[tuple[RedisValueT, ...]], tuple[RedisValueT, ...]]]
10
+ ] = {
11
+ b"BITCOUNT": lambda args: ((args[1],)),
12
+ b"BITFIELD_RO": lambda args: ((args[1],)),
13
+ b"BITOP": lambda args: (args[3 : (len(args))]),
14
+ b"BITPOS": lambda args: ((args[1],)),
15
+ b"COPY": lambda args: ((args[1],)),
16
+ b"DUMP": lambda args: ((args[1],)),
17
+ b"EVALSHA_RO": lambda args: (args[3 : 3 + int(args[2])]),
18
+ b"EVAL_RO": lambda args: (args[3 : 3 + int(args[2])]),
19
+ b"EXISTS": lambda args: (args[1 : (len(args))]),
20
+ b"EXPIRETIME": lambda args: ((args[1],)),
21
+ b"FCALL_RO": lambda args: (args[3 : 3 + int(args[2])]),
22
+ b"GEODIST": lambda args: ((args[1],)),
23
+ b"GEOHASH": lambda args: ((args[1],)),
24
+ b"GEOPOS": lambda args: ((args[1],)),
25
+ b"GEORADIUS": lambda args: ((args[1],)),
26
+ b"GEORADIUSBYMEMBER": lambda args: ((args[1],)),
27
+ b"GEORADIUSBYMEMBER_RO": lambda args: ((args[1],)),
28
+ b"GEORADIUS_RO": lambda args: ((args[1],)),
29
+ b"GEOSEARCH": lambda args: ((args[1],)),
30
+ b"GEOSEARCHSTORE": lambda args: ((args[2],)),
31
+ b"GET": lambda args: ((args[1],)),
32
+ b"GETBIT": lambda args: ((args[1],)),
33
+ b"GETRANGE": lambda args: ((args[1],)),
34
+ b"HEXISTS": lambda args: ((args[1],)),
35
+ b"HEXPIRETIME": lambda args: ((args[1],)),
36
+ b"HGET": lambda args: ((args[1],)),
37
+ b"HGETALL": lambda args: ((args[1],)),
38
+ b"HKEYS": lambda args: ((args[1],)),
39
+ b"HLEN": lambda args: ((args[1],)),
40
+ b"HMGET": lambda args: ((args[1],)),
41
+ b"HPEXPIRETIME": lambda args: ((args[1],)),
42
+ b"HPTTL": lambda args: ((args[1],)),
43
+ b"HRANDFIELD": lambda args: ((args[1],)),
44
+ b"HSCAN": lambda args: ((args[1],)),
45
+ b"HSTRLEN": lambda args: ((args[1],)),
46
+ b"HTTL": lambda args: ((args[1],)),
47
+ b"HVALS": lambda args: ((args[1],)),
48
+ b"LCS": lambda args: (args[1:2]),
49
+ b"LINDEX": lambda args: ((args[1],)),
50
+ b"LLEN": lambda args: ((args[1],)),
51
+ b"LPOS": lambda args: ((args[1],)),
52
+ b"LRANGE": lambda args: ((args[1],)),
53
+ b"MEMORY USAGE": lambda args: ((args[1],)),
54
+ b"MGET": lambda args: (args[1 : (len(args))]),
55
+ b"OBJECT ENCODING": lambda args: ((args[1],)),
56
+ b"OBJECT FREQ": lambda args: ((args[1],)),
57
+ b"OBJECT IDLETIME": lambda args: ((args[1],)),
58
+ b"OBJECT REFCOUNT": lambda args: ((args[1],)),
59
+ b"PEXPIRETIME": lambda args: ((args[1],)),
60
+ b"PFMERGE": lambda args: (args[2 : (len(args))]),
61
+ b"PTTL": lambda args: ((args[1],)),
62
+ b"SCARD": lambda args: ((args[1],)),
63
+ b"SDIFF": lambda args: (args[1 : (len(args))]),
64
+ b"SDIFFSTORE": lambda args: (args[2 : (len(args))]),
65
+ b"SINTER": lambda args: (args[1 : (len(args))]),
66
+ b"SINTERCARD": lambda args: (args[2 : 2 + int(args[1])]),
67
+ b"SINTERSTORE": lambda args: (args[2 : (len(args))]),
68
+ b"SISMEMBER": lambda args: ((args[1],)),
69
+ b"SMEMBERS": lambda args: ((args[1],)),
70
+ b"SMISMEMBER": lambda args: ((args[1],)),
71
+ b"SORT": lambda args: ((args[1],)),
72
+ b"SORT_RO": lambda args: ((args[1],)),
73
+ b"SRANDMEMBER": lambda args: ((args[1],)),
74
+ b"SSCAN": lambda args: ((args[1],)),
75
+ b"STRLEN": lambda args: ((args[1],)),
76
+ b"SUBSTR": lambda args: ((args[1],)),
77
+ b"SUNION": lambda args: (args[1 : (len(args))]),
78
+ b"SUNIONSTORE": lambda args: (args[2 : (len(args))]),
79
+ b"TOUCH": lambda args: (args[1 : (len(args))]),
80
+ b"TTL": lambda args: ((args[1],)),
81
+ b"TYPE": lambda args: ((args[1],)),
82
+ b"WATCH": lambda args: (args[1 : (len(args))]),
83
+ b"XINFO CONSUMERS": lambda args: ((args[1],)),
84
+ b"XINFO GROUPS": lambda args: ((args[1],)),
85
+ b"XINFO STREAM": lambda args: ((args[1],)),
86
+ b"XLEN": lambda args: ((args[1],)),
87
+ b"XPENDING": lambda args: ((args[1],)),
88
+ b"XRANGE": lambda args: ((args[1],)),
89
+ b"XREAD": lambda args: (
90
+ (lambda kwpos: tuple(args[1 + kwpos : len(args) - (len(args) - (kwpos + 1)) // 2]))(
91
+ args.index(b"STREAMS", 1)
92
+ )
93
+ if b"STREAMS" in args
94
+ else ()
95
+ ),
96
+ b"XREADGROUP": lambda args: (
97
+ (lambda kwpos: tuple(args[1 + kwpos : len(args) - (len(args) - (kwpos + 1)) // 2]))(
98
+ args.index(b"STREAMS", 4)
99
+ )
100
+ if b"STREAMS" in args
101
+ else ()
102
+ ),
103
+ b"XREVRANGE": lambda args: ((args[1],)),
104
+ b"ZCARD": lambda args: ((args[1],)),
105
+ b"ZCOUNT": lambda args: ((args[1],)),
106
+ b"ZDIFF": lambda args: (args[2 : 2 + int(args[1])]),
107
+ b"ZDIFFSTORE": lambda args: (args[3 : 3 + int(args[2])]),
108
+ b"ZINTER": lambda args: (args[2 : 2 + int(args[1])]),
109
+ b"ZINTERCARD": lambda args: (args[2 : 2 + int(args[1])]),
110
+ b"ZINTERSTORE": lambda args: (args[3 : 3 + int(args[2])]),
111
+ b"ZLEXCOUNT": lambda args: ((args[1],)),
112
+ b"ZMSCORE": lambda args: ((args[1],)),
113
+ b"ZRANDMEMBER": lambda args: ((args[1],)),
114
+ b"ZRANGE": lambda args: ((args[1],)),
115
+ b"ZRANGEBYLEX": lambda args: ((args[1],)),
116
+ b"ZRANGEBYSCORE": lambda args: ((args[1],)),
117
+ b"ZRANGESTORE": lambda args: ((args[2],)),
118
+ b"ZRANK": lambda args: ((args[1],)),
119
+ b"ZREVRANGE": lambda args: ((args[1],)),
120
+ b"ZREVRANGEBYLEX": lambda args: ((args[1],)),
121
+ b"ZREVRANGEBYSCORE": lambda args: ((args[1],)),
122
+ b"ZREVRANK": lambda args: ((args[1],)),
123
+ b"ZSCAN": lambda args: ((args[1],)),
124
+ b"ZSCORE": lambda args: ((args[1],)),
125
+ b"ZUNION": lambda args: (args[2 : 2 + int(args[1])]),
126
+ b"ZUNIONSTORE": lambda args: (args[3 : 3 + int(args[2])]),
127
+ }
128
+ ALL: ClassVar[dict[bytes, Callable[[tuple[RedisValueT, ...]], tuple[RedisValueT, ...]]]] = {
129
+ b"OBJECT": lambda args: ((args[2],)),
130
+ b"DEBUG OBJECT": lambda args: ((args[1],)),
131
+ b"APPEND": lambda args: ((args[1],)),
132
+ b"BITFIELD": lambda args: ((args[1],)),
133
+ b"BLMOVE": lambda args: ((args[1],) + (args[2],)),
134
+ b"BLMPOP": lambda args: (args[3 : 3 + int(args[2])]),
135
+ b"BLPOP": lambda args: (args[1 : (len(args) - 1)]),
136
+ b"BRPOP": lambda args: (args[1 : (len(args) - 1)]),
137
+ b"BRPOPLPUSH": lambda args: ((args[1],) + (args[2],)),
138
+ b"BZMPOP": lambda args: (args[3 : 3 + int(args[2])]),
139
+ b"BZPOPMAX": lambda args: (args[1 : (len(args) - 1)]),
140
+ b"BZPOPMIN": lambda args: (args[1 : (len(args) - 1)]),
141
+ b"DECR": lambda args: ((args[1],)),
142
+ b"DECRBY": lambda args: ((args[1],)),
143
+ b"EVAL": lambda args: (args[3 : 3 + int(args[2])]),
144
+ b"EVALSHA": lambda args: (args[3 : 3 + int(args[2])]),
145
+ b"EXPIRE": lambda args: ((args[1],)),
146
+ b"EXPIREAT": lambda args: ((args[1],)),
147
+ b"FCALL": lambda args: (args[3 : 3 + int(args[2])]),
148
+ b"GEOADD": lambda args: ((args[1],)),
149
+ b"GETDEL": lambda args: ((args[1],)),
150
+ b"GETEX": lambda args: ((args[1],)),
151
+ b"GETSET": lambda args: ((args[1],)),
152
+ b"HDEL": lambda args: ((args[1],)),
153
+ b"HEXPIRE": lambda args: ((args[1],)),
154
+ b"HEXPIREAT": lambda args: ((args[1],)),
155
+ b"HGETDEL": lambda args: ((args[1],)),
156
+ b"HGETEX": lambda args: ((args[1],)),
157
+ b"HINCRBY": lambda args: ((args[1],)),
158
+ b"HINCRBYFLOAT": lambda args: ((args[1],)),
159
+ b"HMSET": lambda args: ((args[1],)),
160
+ b"HPERSIST": lambda args: ((args[1],)),
161
+ b"HPEXPIRE": lambda args: ((args[1],)),
162
+ b"HPEXPIREAT": lambda args: ((args[1],)),
163
+ b"HSET": lambda args: ((args[1],)),
164
+ b"HSETEX": lambda args: ((args[1],)),
165
+ b"HSETNX": lambda args: ((args[1],)),
166
+ b"INCR": lambda args: ((args[1],)),
167
+ b"INCRBY": lambda args: ((args[1],)),
168
+ b"INCRBYFLOAT": lambda args: ((args[1],)),
169
+ b"LINSERT": lambda args: ((args[1],)),
170
+ b"LMOVE": lambda args: ((args[1],) + (args[2],)),
171
+ b"LMPOP": lambda args: (args[2 : 2 + int(args[1])]),
172
+ b"LPOP": lambda args: ((args[1],)),
173
+ b"LPUSH": lambda args: ((args[1],)),
174
+ b"LPUSHX": lambda args: ((args[1],)),
175
+ b"LREM": lambda args: ((args[1],)),
176
+ b"LSET": lambda args: ((args[1],)),
177
+ b"LTRIM": lambda args: ((args[1],)),
178
+ b"MIGRATE": lambda args: (
179
+ (args[3],)
180
+ + (
181
+ (lambda kwpos: tuple(args[1 + kwpos : len(args)]))(
182
+ len(args) - list(reversed(args)).index(b"KEYS", 1) - 1
183
+ )
184
+ if b"KEYS" in args
185
+ else ()
186
+ )
187
+ ),
188
+ b"MOVE": lambda args: ((args[1],)),
189
+ b"PERSIST": lambda args: ((args[1],)),
190
+ b"PEXPIRE": lambda args: ((args[1],)),
191
+ b"PEXPIREAT": lambda args: ((args[1],)),
192
+ b"PFADD": lambda args: ((args[1],)),
193
+ b"PFCOUNT": lambda args: (args[1 : (len(args))]),
194
+ b"PFDEBUG": lambda args: ((args[2],)),
195
+ b"PFMERGE": lambda args: ((args[1],) + args[2 : (len(args))]),
196
+ b"RENAME": lambda args: ((args[1],) + (args[2],)),
197
+ b"RENAMENX": lambda args: ((args[1],) + (args[2],)),
198
+ b"RPOP": lambda args: ((args[1],)),
199
+ b"RPOPLPUSH": lambda args: ((args[1],) + (args[2],)),
200
+ b"RPUSH": lambda args: ((args[1],)),
201
+ b"RPUSHX": lambda args: ((args[1],)),
202
+ b"SADD": lambda args: ((args[1],)),
203
+ b"SET": lambda args: ((args[1],)),
204
+ b"SETBIT": lambda args: ((args[1],)),
205
+ b"SETRANGE": lambda args: ((args[1],)),
206
+ b"SMOVE": lambda args: ((args[1],) + (args[2],)),
207
+ b"SPOP": lambda args: ((args[1],)),
208
+ b"SREM": lambda args: ((args[1],)),
209
+ b"XACK": lambda args: ((args[1],)),
210
+ b"XACKDEL": lambda args: ((args[1],)),
211
+ b"XADD": lambda args: ((args[1],)),
212
+ b"XAUTOCLAIM": lambda args: ((args[1],)),
213
+ b"XCLAIM": lambda args: ((args[1],)),
214
+ b"XDEL": lambda args: ((args[1],)),
215
+ b"XDELEX": lambda args: ((args[1],)),
216
+ b"XGROUP CREATE": lambda args: ((args[1],)),
217
+ b"XGROUP CREATECONSUMER": lambda args: ((args[1],)),
218
+ b"XGROUP DELCONSUMER": lambda args: ((args[1],)),
219
+ b"XGROUP DESTROY": lambda args: ((args[1],)),
220
+ b"XGROUP SETID": lambda args: ((args[1],)),
221
+ b"XSETID": lambda args: ((args[1],)),
222
+ b"XTRIM": lambda args: ((args[1],)),
223
+ b"ZADD": lambda args: ((args[1],)),
224
+ b"ZINCRBY": lambda args: ((args[1],)),
225
+ b"ZMPOP": lambda args: (args[2 : 2 + int(args[1])]),
226
+ b"ZPOPMAX": lambda args: ((args[1],)),
227
+ b"ZPOPMIN": lambda args: ((args[1],)),
228
+ b"ZREM": lambda args: ((args[1],)),
229
+ b"ZREMRANGEBYLEX": lambda args: ((args[1],)),
230
+ b"ZREMRANGEBYRANK": lambda args: ((args[1],)),
231
+ b"ZREMRANGEBYSCORE": lambda args: ((args[1],)),
232
+ b"BITCOUNT": lambda args: ((args[1],)),
233
+ b"BITFIELD_RO": lambda args: ((args[1],)),
234
+ b"BITOP": lambda args: (args[3 : (len(args))] + (args[2],)),
235
+ b"BITPOS": lambda args: ((args[1],)),
236
+ b"COPY": lambda args: ((args[1],) + (args[2],)),
237
+ b"DUMP": lambda args: ((args[1],)),
238
+ b"EVALSHA_RO": lambda args: (args[3 : 3 + int(args[2])]),
239
+ b"EVAL_RO": lambda args: (args[3 : 3 + int(args[2])]),
240
+ b"EXISTS": lambda args: (args[1 : (len(args))]),
241
+ b"EXPIRETIME": lambda args: ((args[1],)),
242
+ b"FCALL_RO": lambda args: (args[3 : 3 + int(args[2])]),
243
+ b"GEODIST": lambda args: ((args[1],)),
244
+ b"GEOHASH": lambda args: ((args[1],)),
245
+ b"GEOPOS": lambda args: ((args[1],)),
246
+ b"GEORADIUS": lambda args: (
247
+ (args[1],)
248
+ + (
249
+ (lambda kwpos: tuple((args[kwpos + 1],)))(args.index(b"STORE", 6))
250
+ if b"STORE" in args
251
+ else ()
252
+ )
253
+ + (
254
+ (lambda kwpos: tuple((args[kwpos + 1],)))(args.index(b"STOREDIST", 6))
255
+ if b"STOREDIST" in args
256
+ else ()
257
+ )
258
+ ),
259
+ b"GEORADIUSBYMEMBER": lambda args: (
260
+ (args[1],)
261
+ + (
262
+ (lambda kwpos: tuple((args[kwpos + 1],)))(args.index(b"STORE", 5))
263
+ if b"STORE" in args
264
+ else ()
265
+ )
266
+ + (
267
+ (lambda kwpos: tuple((args[kwpos + 1],)))(args.index(b"STOREDIST", 5))
268
+ if b"STOREDIST" in args
269
+ else ()
270
+ )
271
+ ),
272
+ b"GEORADIUSBYMEMBER_RO": lambda args: ((args[1],)),
273
+ b"GEORADIUS_RO": lambda args: ((args[1],)),
274
+ b"GEOSEARCH": lambda args: ((args[1],)),
275
+ b"GEOSEARCHSTORE": lambda args: ((args[2],) + (args[1],)),
276
+ b"GET": lambda args: ((args[1],)),
277
+ b"GETBIT": lambda args: ((args[1],)),
278
+ b"GETRANGE": lambda args: ((args[1],)),
279
+ b"HEXISTS": lambda args: ((args[1],)),
280
+ b"HEXPIRETIME": lambda args: ((args[1],)),
281
+ b"HGET": lambda args: ((args[1],)),
282
+ b"HGETALL": lambda args: ((args[1],)),
283
+ b"HKEYS": lambda args: ((args[1],)),
284
+ b"HLEN": lambda args: ((args[1],)),
285
+ b"HMGET": lambda args: ((args[1],)),
286
+ b"HPEXPIRETIME": lambda args: ((args[1],)),
287
+ b"HPTTL": lambda args: ((args[1],)),
288
+ b"HRANDFIELD": lambda args: ((args[1],)),
289
+ b"HSCAN": lambda args: ((args[1],)),
290
+ b"HSTRLEN": lambda args: ((args[1],)),
291
+ b"HTTL": lambda args: ((args[1],)),
292
+ b"HVALS": lambda args: ((args[1],)),
293
+ b"LCS": lambda args: (args[1:2]),
294
+ b"LINDEX": lambda args: ((args[1],)),
295
+ b"LLEN": lambda args: ((args[1],)),
296
+ b"LPOS": lambda args: ((args[1],)),
297
+ b"LRANGE": lambda args: ((args[1],)),
298
+ b"MEMORY USAGE": lambda args: ((args[1],)),
299
+ b"MGET": lambda args: (args[1 : (len(args))]),
300
+ b"OBJECT ENCODING": lambda args: ((args[1],)),
301
+ b"OBJECT FREQ": lambda args: ((args[1],)),
302
+ b"OBJECT IDLETIME": lambda args: ((args[1],)),
303
+ b"OBJECT REFCOUNT": lambda args: ((args[1],)),
304
+ b"PEXPIRETIME": lambda args: ((args[1],)),
305
+ b"PTTL": lambda args: ((args[1],)),
306
+ b"SCARD": lambda args: ((args[1],)),
307
+ b"SDIFF": lambda args: (args[1 : (len(args))]),
308
+ b"SDIFFSTORE": lambda args: (args[2 : (len(args))] + (args[1],)),
309
+ b"SINTER": lambda args: (args[1 : (len(args))]),
310
+ b"SINTERCARD": lambda args: (args[2 : 2 + int(args[1])]),
311
+ b"SINTERSTORE": lambda args: (args[2 : (len(args))] + (args[1],)),
312
+ b"SISMEMBER": lambda args: ((args[1],)),
313
+ b"SMEMBERS": lambda args: ((args[1],)),
314
+ b"SMISMEMBER": lambda args: ((args[1],)),
315
+ b"SORT": lambda args: ((args[1],)),
316
+ b"SORT_RO": lambda args: ((args[1],)),
317
+ b"SRANDMEMBER": lambda args: ((args[1],)),
318
+ b"SSCAN": lambda args: ((args[1],)),
319
+ b"STRLEN": lambda args: ((args[1],)),
320
+ b"SUBSTR": lambda args: ((args[1],)),
321
+ b"SUNION": lambda args: (args[1 : (len(args))]),
322
+ b"SUNIONSTORE": lambda args: (args[2 : (len(args))] + (args[1],)),
323
+ b"TOUCH": lambda args: (args[1 : (len(args))]),
324
+ b"TTL": lambda args: ((args[1],)),
325
+ b"TYPE": lambda args: ((args[1],)),
326
+ b"WATCH": lambda args: (args[1 : (len(args))]),
327
+ b"XINFO CONSUMERS": lambda args: ((args[1],)),
328
+ b"XINFO GROUPS": lambda args: ((args[1],)),
329
+ b"XINFO STREAM": lambda args: ((args[1],)),
330
+ b"XLEN": lambda args: ((args[1],)),
331
+ b"XPENDING": lambda args: ((args[1],)),
332
+ b"XRANGE": lambda args: ((args[1],)),
333
+ b"XREAD": lambda args: (
334
+ (lambda kwpos: tuple(args[1 + kwpos : len(args) - (len(args) - (kwpos + 1)) // 2]))(
335
+ args.index(b"STREAMS", 1)
336
+ )
337
+ if b"STREAMS" in args
338
+ else ()
339
+ ),
340
+ b"XREADGROUP": lambda args: (
341
+ (lambda kwpos: tuple(args[1 + kwpos : len(args) - (len(args) - (kwpos + 1)) // 2]))(
342
+ args.index(b"STREAMS", 4)
343
+ )
344
+ if b"STREAMS" in args
345
+ else ()
346
+ ),
347
+ b"XREVRANGE": lambda args: ((args[1],)),
348
+ b"ZCARD": lambda args: ((args[1],)),
349
+ b"ZCOUNT": lambda args: ((args[1],)),
350
+ b"ZDIFF": lambda args: (args[2 : 2 + int(args[1])]),
351
+ b"ZDIFFSTORE": lambda args: (args[3 : 3 + int(args[2])] + (args[1],)),
352
+ b"ZINTER": lambda args: (args[2 : 2 + int(args[1])]),
353
+ b"ZINTERCARD": lambda args: (args[2 : 2 + int(args[1])]),
354
+ b"ZINTERSTORE": lambda args: (args[3 : 3 + int(args[2])] + (args[1],)),
355
+ b"ZLEXCOUNT": lambda args: ((args[1],)),
356
+ b"ZMSCORE": lambda args: ((args[1],)),
357
+ b"ZRANDMEMBER": lambda args: ((args[1],)),
358
+ b"ZRANGE": lambda args: ((args[1],)),
359
+ b"ZRANGEBYLEX": lambda args: ((args[1],)),
360
+ b"ZRANGEBYSCORE": lambda args: ((args[1],)),
361
+ b"ZRANGESTORE": lambda args: ((args[2],) + (args[1],)),
362
+ b"ZRANK": lambda args: ((args[1],)),
363
+ b"ZREVRANGE": lambda args: ((args[1],)),
364
+ b"ZREVRANGEBYLEX": lambda args: ((args[1],)),
365
+ b"ZREVRANGEBYSCORE": lambda args: ((args[1],)),
366
+ b"ZREVRANK": lambda args: ((args[1],)),
367
+ b"ZSCAN": lambda args: ((args[1],)),
368
+ b"ZSCORE": lambda args: ((args[1],)),
369
+ b"ZUNION": lambda args: (args[2 : 2 + int(args[1])]),
370
+ b"ZUNIONSTORE": lambda args: (args[3 : 3 + int(args[2])] + (args[1],)),
371
+ b"MSET": lambda args: (args[1 : (len(args)) : 2]),
372
+ b"MSETNX": lambda args: (args[1 : (len(args)) : 2]),
373
+ b"PSETEX": lambda args: ((args[1],)),
374
+ b"RESTORE": lambda args: ((args[1],)),
375
+ b"RESTORE-ASKING": lambda args: ((args[1],)),
376
+ b"SETEX": lambda args: ((args[1],)),
377
+ b"SETNX": lambda args: ((args[1],)),
378
+ b"DEL": lambda args: (args[1 : (len(args))]),
379
+ b"SPUBLISH": lambda args: ((args[1],)),
380
+ b"SSUBSCRIBE": lambda args: (args[1 : (len(args))]),
381
+ b"SUNSUBSCRIBE": lambda args: (args[1 : (len(args))]),
382
+ b"UNLINK": lambda args: (args[1 : (len(args))]),
383
+ b"JSON.DEBUG MEMORY": lambda args: (args[1],),
384
+ b"JSON.DEL": lambda args: (args[1],),
385
+ b"JSON.FORGET": lambda args: (args[1],),
386
+ b"JSON.GET": lambda args: (args[1],),
387
+ b"JSON.SET": lambda args: (args[1],),
388
+ b"JSON.NUMINCRBY": lambda args: (args[1],),
389
+ b"JSON.STRAPPEND": lambda args: (args[1],),
390
+ b"JSON.STRLEN": lambda args: (args[1],),
391
+ b"JSON.ARRAPPEND": lambda args: (args[1],),
392
+ b"JSON.ARRINDEX": lambda args: (args[1],),
393
+ b"JSON.ARRINSERT": lambda args: (args[1],),
394
+ b"JSON.ARRLEN": lambda args: (args[1],),
395
+ b"JSON.ARRPOP": lambda args: (args[1],),
396
+ b"JSON.ARRTRIM": lambda args: (args[1],),
397
+ b"JSON.OBJKEYS": lambda args: (args[1],),
398
+ b"JSON.OBJLEN": lambda args: (args[1],),
399
+ b"JSON.TYPE": lambda args: (args[1],),
400
+ b"JSON.RESP": lambda args: (args[1],),
401
+ b"JSON.TOGGLE": lambda args: (args[1],),
402
+ b"JSON.CLEAR": lambda args: (args[1],),
403
+ b"JSON.NUMMULTBY": lambda args: (args[1],),
404
+ b"JSON.MERGE": lambda args: (args[1],),
405
+ b"JSON.MSET": lambda args: (args[1::3]),
406
+ b"BF.RESERVE": lambda args: (args[1],),
407
+ b"BF.ADD": lambda args: (args[1],),
408
+ b"BF.MADD": lambda args: (args[1],),
409
+ b"BF.INSERT": lambda args: (args[1],),
410
+ b"BF.EXISTS": lambda args: (args[1],),
411
+ b"BF.MEXISTS": lambda args: (args[1],),
412
+ b"BF.SCANDUMP": lambda args: (args[1],),
413
+ b"BF.LOADCHUNK": lambda args: (args[1],),
414
+ b"BF.INFO": lambda args: (args[1],),
415
+ b"BF.CARD": lambda args: (args[1],),
416
+ b"CF.RESERVE": lambda args: (args[1],),
417
+ b"CF.ADD": lambda args: (args[1],),
418
+ b"CF.ADDNX": lambda args: (args[1],),
419
+ b"CF.INSERT": lambda args: (args[1],),
420
+ b"CF.INSERTNX": lambda args: (args[1],),
421
+ b"CF.EXISTS": lambda args: (args[1],),
422
+ b"CF.MEXISTS": lambda args: (args[1],),
423
+ b"CF.DEL": lambda args: (args[1],),
424
+ b"CF.COUNT": lambda args: (args[1],),
425
+ b"CF.SCANDUMP": lambda args: (args[1],),
426
+ b"CF.LOADCHUNK": lambda args: (args[1],),
427
+ b"CF.INFO": lambda args: (args[1],),
428
+ b"CMS.INITBYDIM": lambda args: (args[1],),
429
+ b"CMS.INITBYPROB": lambda args: (args[1],),
430
+ b"CMS.INCRBY": lambda args: (args[1],),
431
+ b"CMS.QUERY": lambda args: (args[1],),
432
+ b"CMS.INFO": lambda args: (args[1],),
433
+ b"CMS.MERGE": lambda args: ((args[1],) + args[3 : 3 + int(args[2])]),
434
+ b"TOPK.RESERVE": lambda args: (args[1],),
435
+ b"TOPK.ADD": lambda args: (args[1],),
436
+ b"TOPK.INCRBY": lambda args: (args[1],),
437
+ b"TOPK.QUERY": lambda args: (args[1],),
438
+ b"TOPK.LIST": lambda args: (args[1],),
439
+ b"TOPK.INFO": lambda args: (args[1],),
440
+ b"TOPK.COUNT": lambda args: (args[1],),
441
+ b"TDIGEST.CREATE": lambda args: (args[1],),
442
+ b"TDIGEST.RESET": lambda args: (args[1],),
443
+ b"TDIGEST.ADD": lambda args: (args[1],),
444
+ b"TDIGEST.MERGE": lambda args: ((args[1],) + args[3 : 3 + int(args[2])]),
445
+ b"TDIGEST.MIN": lambda args: (args[1],),
446
+ b"TDIGEST.MAX": lambda args: (args[1],),
447
+ b"TDIGEST.QUANTILE": lambda args: (args[1],),
448
+ b"TDIGEST.CDF": lambda args: (args[1],),
449
+ b"TDIGEST.TRIMMED_MEAN": lambda args: (args[1],),
450
+ b"TDIGEST.RANK": lambda args: (args[1],),
451
+ b"TDIGEST.REVRANK": lambda args: (args[1],),
452
+ b"TDIGEST.BYRANK": lambda args: (args[1],),
453
+ b"TDIGEST.BYREVRANK": lambda args: (args[1],),
454
+ b"TDIGEST.INFO": lambda args: (args[1],),
455
+ b"TS.CREATE": lambda args: (args[1],),
456
+ b"TS.CREATERULE": lambda args: (args[1:3]),
457
+ b"TS.ALTER": lambda args: (args[1],),
458
+ b"TS.ADD": lambda args: (args[1],),
459
+ b"TS.MADD": lambda args: (args[1:-1:3]),
460
+ b"TS.INCRBY": lambda args: (args[1],),
461
+ b"TS.DECRBY": lambda args: (args[1],),
462
+ b"TS.DELETERULE": lambda args: (args[1:3]),
463
+ b"TS.GET": lambda args: (args[1],),
464
+ b"TS.INFO": lambda args: (args[1],),
465
+ b"TS.REVRANGE": lambda args: (args[1],),
466
+ b"TS.RANGE": lambda args: (args[1],),
467
+ b"TS.DEL": lambda args: (args[1],),
468
+ b"FT.CREATE": lambda args: (args[1],),
469
+ b"FT.INFO": lambda args: (args[1],),
470
+ b"FT.ALTER": lambda args: (args[1],),
471
+ b"FT.ALIASADD": lambda args: (args[1],),
472
+ b"FT.ALIASUPDATE": lambda args: (args[1],),
473
+ b"FT.ALIASDEL": lambda args: (args[1],),
474
+ b"FT.TAGVALS": lambda args: (args[1],),
475
+ b"FT.CONFIG GET": lambda args: (args[1],),
476
+ b"FT.CONFIG SET": lambda args: (args[1],),
477
+ b"FT.SEARCH": lambda args: (args[1],),
478
+ b"FT.AGGREGATE": lambda args: (args[1],),
479
+ b"FT.CURSOR GET": lambda args: (args[1],),
480
+ b"FT.CURSOR DEL": lambda args: (args[1],),
481
+ b"FT.SYNUPDATE": lambda args: (args[1],),
482
+ b"FT.SYNDUMP": lambda args: (args[1],),
483
+ b"FT.SPELLCHECK": lambda args: (args[1],),
484
+ b"FT.DICTADD": lambda args: (args[1],),
485
+ b"FT.DICTDEL": lambda args: (args[1],),
486
+ b"FT.DICTDUMP": lambda args: (args[1],),
487
+ b"FT.DROPINDEX": lambda args: (args[1],),
488
+ b"FT.SUGADD": lambda args: (args[1],),
489
+ b"FT.SUGDEL": lambda args: (args[1],),
490
+ b"FT.SUGGET": lambda args: (args[1],),
491
+ b"FT.SUGLEN": lambda args: (args[1],),
492
+ b"GRAPH.QUERY": lambda args: (args[1],),
493
+ b"GRAPH.DELETE": lambda args: (args[1],),
494
+ b"GRAPH.EXPLAIN": lambda args: (args[1],),
495
+ b"GRAPH.PROFILE": lambda args: (args[1],),
496
+ b"GRAPH.SLOWLOG": lambda args: (args[1],),
497
+ b"GRAPH.CONSTRAINT CREATE": lambda args: (args[1],),
498
+ b"GRAPH.CONSTRAINT DROP": lambda args: (args[1],),
499
+ b"GRAPH.RO_QUERY": lambda args: (args[1],),
500
+ }
501
+
502
+ @classmethod
503
+ def extract_keys(
504
+ cls, *arguments: RedisValueT, readonly_command: bool = False
505
+ ) -> tuple[RedisValueT, ...]:
506
+ if len(arguments) <= 1:
507
+ return ()
508
+
509
+ command = b(arguments[0])
510
+
511
+ try:
512
+ if readonly_command and command in cls.READONLY:
513
+ return cls.READONLY[command](arguments)
514
+ else:
515
+ return cls.ALL[command](arguments)
516
+ except KeyError:
517
+ return ()