valkey-glide 2.0.1__cp310-cp310-macosx_11_0_arm64.whl → 2.1.0__cp310-cp310-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 valkey-glide might be problematic. Click here for more details.
- glide/__init__.py +95 -119
- glide/async_commands/cluster_commands.py +11 -11
- glide/async_commands/core.py +537 -414
- glide/async_commands/{server_modules/ft.py → ft.py} +8 -7
- glide/async_commands/{server_modules/glide_json.py → glide_json.py} +15 -92
- glide/async_commands/standalone_commands.py +31 -11
- glide/glide.cpython-310-darwin.so +0 -0
- glide/glide.pyi +1 -1
- glide/glide_client.py +39 -46
- glide/logger.py +3 -3
- glide/opentelemetry.py +8 -4
- glide_shared/__init__.py +326 -0
- {glide/async_commands → glide_shared/commands}/batch.py +396 -10
- {glide/async_commands → glide_shared/commands}/batch_options.py +1 -1
- glide_shared/commands/core_options.py +407 -0
- {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_aggregate_options.py +3 -3
- {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_create_options.py +4 -2
- {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_profile_options.py +4 -4
- {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_search_options.py +4 -2
- {glide/async_commands → glide_shared/commands}/server_modules/json_batch.py +4 -4
- glide_shared/commands/server_modules/json_options.py +93 -0
- {glide/async_commands → glide_shared/commands}/sorted_set.py +2 -2
- {glide/async_commands → glide_shared/commands}/stream.py +1 -1
- {glide → glide_shared}/config.py +83 -48
- {glide → glide_shared}/constants.py +3 -3
- {glide → glide_shared}/exceptions.py +27 -1
- glide_shared/protobuf/command_request_pb2.py +54 -0
- {glide → glide_shared}/routes.py +29 -15
- {valkey_glide-2.0.1.dist-info → valkey_glide-2.1.0.dist-info}/METADATA +119 -58
- valkey_glide-2.1.0.dist-info/RECORD +39 -0
- glide/protobuf/command_request_pb2.py +0 -54
- glide/protobuf/command_request_pb2.pyi +0 -1193
- glide/protobuf/connection_request_pb2.pyi +0 -299
- glide/protobuf/response_pb2.pyi +0 -106
- valkey_glide-2.0.1.dist-info/RECORD +0 -39
- /glide/py.typed → /glide_shared/commands/__init__.py +0 -0
- {glide/async_commands → glide_shared/commands}/bitmap.py +0 -0
- {glide/async_commands → glide_shared/commands}/command_args.py +0 -0
- {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_constants.py +0 -0
- {glide → glide_shared}/protobuf/connection_request_pb2.py +0 -0
- {glide → glide_shared}/protobuf/response_pb2.py +0 -0
- {glide → glide_shared}/protobuf_codec.py +0 -0
- {valkey_glide-2.0.1.dist-info → valkey_glide-2.1.0.dist-info}/WHEEL +0 -0
{glide → glide_shared}/config.py
RENAMED
|
@@ -6,12 +6,18 @@ from dataclasses import dataclass
|
|
|
6
6
|
from enum import Enum, IntEnum
|
|
7
7
|
from typing import Any, Callable, Dict, List, Optional, Set, Tuple, Union
|
|
8
8
|
|
|
9
|
-
from
|
|
10
|
-
from
|
|
11
|
-
from
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
from
|
|
9
|
+
from glide_shared.commands.core_options import PubSubMsg
|
|
10
|
+
from glide_shared.exceptions import ConfigurationError
|
|
11
|
+
from glide_shared.protobuf.connection_request_pb2 import (
|
|
12
|
+
ConnectionRequest,
|
|
13
|
+
)
|
|
14
|
+
from glide_shared.protobuf.connection_request_pb2 import (
|
|
15
|
+
ProtocolVersion as SentProtocolVersion,
|
|
16
|
+
)
|
|
17
|
+
from glide_shared.protobuf.connection_request_pb2 import ReadFrom as ProtobufReadFrom
|
|
18
|
+
from glide_shared.protobuf.connection_request_pb2 import (
|
|
19
|
+
TlsMode,
|
|
20
|
+
)
|
|
15
21
|
|
|
16
22
|
|
|
17
23
|
class NodeAddress:
|
|
@@ -73,7 +79,7 @@ class BackoffStrategy:
|
|
|
73
79
|
"""
|
|
74
80
|
Represents the strategy used to determine how and when to reconnect, in case of connection failures.
|
|
75
81
|
The time between attempts grows exponentially, to the formula rand(0 .. factor * (exponentBase ^ N)), where N
|
|
76
|
-
is the number of failed attempts, and
|
|
82
|
+
is the number of failed attempts, and rand(...) applies a jitter of up to jitter_percent% to introduce randomness and reduce retry storms.
|
|
77
83
|
Once the maximum value is reached, that will remain the time between retry attempts until a reconnect attempt is
|
|
78
84
|
successful.
|
|
79
85
|
The client will attempt to reconnect indefinitely.
|
|
@@ -83,6 +89,7 @@ class BackoffStrategy:
|
|
|
83
89
|
where the time between retries increases. Once the retries have reached the maximum value, the time between
|
|
84
90
|
retries will remain constant until a reconnect attempt is succesful.
|
|
85
91
|
factor (int): The multiplier that will be applied to the waiting time between each retry.
|
|
92
|
+
This value is specified in milliseconds.
|
|
86
93
|
exponent_base (int): The exponent base configured for the strategy.
|
|
87
94
|
jitter_percent (Optional[int]): The Jitter percent on the calculated duration. If not set, a default value will be used.
|
|
88
95
|
"""
|
|
@@ -223,9 +230,9 @@ class BaseClientConfiguration:
|
|
|
223
230
|
For example::
|
|
224
231
|
|
|
225
232
|
[
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
]
|
|
233
|
+
NodeAddress("sample-address-0001.use1.cache.amazonaws.com", 6379),
|
|
234
|
+
NodeAddress("sample-address-0002.use1.cache.amazonaws.com", 6379)
|
|
235
|
+
]
|
|
229
236
|
|
|
230
237
|
use_tls (bool): True if communication with the cluster should use Transport Level Security.
|
|
231
238
|
Should match the TLS configuration of the server/cluster, otherwise the connection attempt will fail.
|
|
@@ -242,6 +249,8 @@ class BaseClientConfiguration:
|
|
|
242
249
|
reconnect_strategy (Optional[BackoffStrategy]): Strategy used to determine how and when to reconnect, in case of
|
|
243
250
|
connection failures.
|
|
244
251
|
If not set, a default backoff strategy will be used.
|
|
252
|
+
database_id (Optional[int]): Index of the logical database to connect to.
|
|
253
|
+
Must be a non-negative integer.If not set, the client will connect to database 0.
|
|
245
254
|
client_name (Optional[str]): Client name to be used for the client. Will be used with CLIENT SETNAME command
|
|
246
255
|
during connection establishment.
|
|
247
256
|
protocol (ProtocolVersion): Serialization protocol to be used. If not set, `RESP3` will be used.
|
|
@@ -285,6 +294,7 @@ class BaseClientConfiguration:
|
|
|
285
294
|
read_from: ReadFrom = ReadFrom.PRIMARY,
|
|
286
295
|
request_timeout: Optional[int] = None,
|
|
287
296
|
reconnect_strategy: Optional[BackoffStrategy] = None,
|
|
297
|
+
database_id: Optional[int] = None,
|
|
288
298
|
client_name: Optional[str] = None,
|
|
289
299
|
protocol: ProtocolVersion = ProtocolVersion.RESP3,
|
|
290
300
|
inflight_requests_limit: Optional[int] = None,
|
|
@@ -298,6 +308,7 @@ class BaseClientConfiguration:
|
|
|
298
308
|
self.read_from = read_from
|
|
299
309
|
self.request_timeout = request_timeout
|
|
300
310
|
self.reconnect_strategy = reconnect_strategy
|
|
311
|
+
self.database_id = database_id
|
|
301
312
|
self.client_name = client_name
|
|
302
313
|
self.protocol = protocol
|
|
303
314
|
self.inflight_requests_limit = inflight_requests_limit
|
|
@@ -315,6 +326,39 @@ class BaseClientConfiguration:
|
|
|
315
326
|
"client_az must be set when read_from is set to AZ_AFFINITY_REPLICAS_AND_PRIMARY"
|
|
316
327
|
)
|
|
317
328
|
|
|
329
|
+
def _set_addresses_in_request(self, request: ConnectionRequest) -> None:
|
|
330
|
+
"""Set addresses in the protobuf request."""
|
|
331
|
+
for address in self.addresses:
|
|
332
|
+
address_info = request.addresses.add()
|
|
333
|
+
address_info.host = address.host
|
|
334
|
+
address_info.port = address.port
|
|
335
|
+
|
|
336
|
+
def _set_reconnect_strategy_in_request(self, request: ConnectionRequest) -> None:
|
|
337
|
+
"""Set reconnect strategy in the protobuf request."""
|
|
338
|
+
if not self.reconnect_strategy:
|
|
339
|
+
return
|
|
340
|
+
|
|
341
|
+
request.connection_retry_strategy.number_of_retries = (
|
|
342
|
+
self.reconnect_strategy.num_of_retries
|
|
343
|
+
)
|
|
344
|
+
request.connection_retry_strategy.factor = self.reconnect_strategy.factor
|
|
345
|
+
request.connection_retry_strategy.exponent_base = (
|
|
346
|
+
self.reconnect_strategy.exponent_base
|
|
347
|
+
)
|
|
348
|
+
if self.reconnect_strategy.jitter_percent is not None:
|
|
349
|
+
request.connection_retry_strategy.jitter_percent = (
|
|
350
|
+
self.reconnect_strategy.jitter_percent
|
|
351
|
+
)
|
|
352
|
+
|
|
353
|
+
def _set_credentials_in_request(self, request: ConnectionRequest) -> None:
|
|
354
|
+
"""Set credentials in the protobuf request."""
|
|
355
|
+
if not self.credentials:
|
|
356
|
+
return
|
|
357
|
+
|
|
358
|
+
if self.credentials.username:
|
|
359
|
+
request.authentication_info.username = self.credentials.username
|
|
360
|
+
request.authentication_info.password = self.credentials.password
|
|
361
|
+
|
|
318
362
|
def _create_a_protobuf_conn_request(
|
|
319
363
|
self, cluster_mode: bool = False
|
|
320
364
|
) -> ConnectionRequest:
|
|
@@ -328,44 +372,34 @@ class BaseClientConfiguration:
|
|
|
328
372
|
ConnectionRequest: Protobuf ConnectionRequest.
|
|
329
373
|
"""
|
|
330
374
|
request = ConnectionRequest()
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
address_info.port = address.port
|
|
375
|
+
|
|
376
|
+
# Set basic configuration
|
|
377
|
+
self._set_addresses_in_request(request)
|
|
335
378
|
request.tls_mode = TlsMode.SecureTls if self.use_tls else TlsMode.NoTls
|
|
336
379
|
request.read_from = self.read_from.value
|
|
380
|
+
request.cluster_mode_enabled = cluster_mode
|
|
381
|
+
request.protocol = self.protocol.value
|
|
382
|
+
|
|
383
|
+
# Set optional configuration
|
|
337
384
|
if self.request_timeout:
|
|
338
385
|
request.request_timeout = self.request_timeout
|
|
339
|
-
if self.reconnect_strategy:
|
|
340
|
-
request.connection_retry_strategy.number_of_retries = (
|
|
341
|
-
self.reconnect_strategy.num_of_retries
|
|
342
|
-
)
|
|
343
|
-
request.connection_retry_strategy.factor = self.reconnect_strategy.factor
|
|
344
|
-
request.connection_retry_strategy.exponent_base = (
|
|
345
|
-
self.reconnect_strategy.exponent_base
|
|
346
|
-
)
|
|
347
|
-
if self.reconnect_strategy.jitter_percent is not None:
|
|
348
|
-
request.connection_retry_strategy.jitter_percent = (
|
|
349
|
-
self.reconnect_strategy.jitter_percent
|
|
350
|
-
)
|
|
351
386
|
|
|
352
|
-
request
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
request.authentication_info.username = self.credentials.username
|
|
356
|
-
request.authentication_info.password = self.credentials.password
|
|
387
|
+
self._set_reconnect_strategy_in_request(request)
|
|
388
|
+
self._set_credentials_in_request(request)
|
|
389
|
+
|
|
357
390
|
if self.client_name:
|
|
358
391
|
request.client_name = self.client_name
|
|
359
|
-
request.protocol = self.protocol.value
|
|
360
392
|
if self.inflight_requests_limit:
|
|
361
393
|
request.inflight_requests_limit = self.inflight_requests_limit
|
|
362
394
|
if self.client_az:
|
|
363
395
|
request.client_az = self.client_az
|
|
396
|
+
if self.database_id is not None:
|
|
397
|
+
request.database_id = self.database_id
|
|
364
398
|
if self.advanced_config:
|
|
365
399
|
self.advanced_config._create_a_protobuf_conn_request(request)
|
|
366
|
-
|
|
367
400
|
if self.lazy_connect is not None:
|
|
368
401
|
request.lazy_connect = self.lazy_connect
|
|
402
|
+
|
|
369
403
|
return request
|
|
370
404
|
|
|
371
405
|
def _is_pubsub_configured(self) -> bool:
|
|
@@ -373,7 +407,7 @@ class BaseClientConfiguration:
|
|
|
373
407
|
|
|
374
408
|
def _get_pubsub_callback_and_context(
|
|
375
409
|
self,
|
|
376
|
-
) -> Tuple[Optional[Callable[[
|
|
410
|
+
) -> Tuple[Optional[Callable[[PubSubMsg, Any], None]], Any]:
|
|
377
411
|
return None, None
|
|
378
412
|
|
|
379
413
|
|
|
@@ -397,12 +431,12 @@ class GlideClientConfiguration(BaseClientConfiguration):
|
|
|
397
431
|
|
|
398
432
|
Attributes:
|
|
399
433
|
addresses (List[NodeAddress]): DNS Addresses and ports of known nodes in the cluster.
|
|
400
|
-
|
|
434
|
+
Only nodes whose addresses were provided will be used by the client.
|
|
401
435
|
For example::
|
|
402
436
|
|
|
403
437
|
[
|
|
404
|
-
|
|
405
|
-
|
|
438
|
+
NodeAddress("sample-address-0001.use1.cache.amazonaws.com", 6379),
|
|
439
|
+
NodeAddress("sample-address-0002.use1.cache.amazonaws.com", 6379)
|
|
406
440
|
]
|
|
407
441
|
|
|
408
442
|
use_tls (bool): True if communication with the cluster should use Transport Level Security.
|
|
@@ -418,7 +452,7 @@ class GlideClientConfiguration(BaseClientConfiguration):
|
|
|
418
452
|
reconnect_strategy (Optional[BackoffStrategy]): Strategy used to determine how and when to reconnect, in case of
|
|
419
453
|
connection failures.
|
|
420
454
|
If not set, a default backoff strategy will be used.
|
|
421
|
-
database_id (Optional[int]):
|
|
455
|
+
database_id (Optional[int]): Index of the logical database to connect to.
|
|
422
456
|
client_name (Optional[str]): Client name to be used for the client. Will be used with CLIENT SETNAME command during
|
|
423
457
|
connection establishment.
|
|
424
458
|
protocol (ProtocolVersion): The version of the RESP protocol to communicate with the server.
|
|
@@ -457,7 +491,7 @@ class GlideClientConfiguration(BaseClientConfiguration):
|
|
|
457
491
|
Attributes:
|
|
458
492
|
channels_and_patterns (Dict[GlideClientConfiguration.PubSubChannelModes, Set[str]]):
|
|
459
493
|
Channels and patterns by modes.
|
|
460
|
-
callback (Optional[Callable[[
|
|
494
|
+
callback (Optional[Callable[[PubSubMsg, Any], None]]):
|
|
461
495
|
Optional callback to accept the incomming messages.
|
|
462
496
|
context (Any):
|
|
463
497
|
Arbitrary context to pass to the callback.
|
|
@@ -466,7 +500,7 @@ class GlideClientConfiguration(BaseClientConfiguration):
|
|
|
466
500
|
channels_and_patterns: Dict[
|
|
467
501
|
GlideClientConfiguration.PubSubChannelModes, Set[str]
|
|
468
502
|
]
|
|
469
|
-
callback: Optional[Callable[[
|
|
503
|
+
callback: Optional[Callable[[PubSubMsg, Any], None]]
|
|
470
504
|
context: Any
|
|
471
505
|
|
|
472
506
|
def __init__(
|
|
@@ -493,6 +527,7 @@ class GlideClientConfiguration(BaseClientConfiguration):
|
|
|
493
527
|
read_from=read_from,
|
|
494
528
|
request_timeout=request_timeout,
|
|
495
529
|
reconnect_strategy=reconnect_strategy,
|
|
530
|
+
database_id=database_id,
|
|
496
531
|
client_name=client_name,
|
|
497
532
|
protocol=protocol,
|
|
498
533
|
inflight_requests_limit=inflight_requests_limit,
|
|
@@ -500,7 +535,6 @@ class GlideClientConfiguration(BaseClientConfiguration):
|
|
|
500
535
|
advanced_config=advanced_config,
|
|
501
536
|
lazy_connect=lazy_connect,
|
|
502
537
|
)
|
|
503
|
-
self.database_id = database_id
|
|
504
538
|
self.pubsub_subscriptions = pubsub_subscriptions
|
|
505
539
|
|
|
506
540
|
def _create_a_protobuf_conn_request(
|
|
@@ -508,8 +542,6 @@ class GlideClientConfiguration(BaseClientConfiguration):
|
|
|
508
542
|
) -> ConnectionRequest:
|
|
509
543
|
assert cluster_mode is False
|
|
510
544
|
request = super()._create_a_protobuf_conn_request(cluster_mode)
|
|
511
|
-
if self.database_id:
|
|
512
|
-
request.database_id = self.database_id
|
|
513
545
|
|
|
514
546
|
if self.pubsub_subscriptions:
|
|
515
547
|
if self.protocol == ProtocolVersion.RESP2:
|
|
@@ -540,7 +572,7 @@ class GlideClientConfiguration(BaseClientConfiguration):
|
|
|
540
572
|
|
|
541
573
|
def _get_pubsub_callback_and_context(
|
|
542
574
|
self,
|
|
543
|
-
) -> Tuple[Optional[Callable[[
|
|
575
|
+
) -> Tuple[Optional[Callable[[PubSubMsg, Any], None]], Any]:
|
|
544
576
|
if self.pubsub_subscriptions:
|
|
545
577
|
return self.pubsub_subscriptions.callback, self.pubsub_subscriptions.context
|
|
546
578
|
return None, None
|
|
@@ -569,7 +601,7 @@ class GlideClusterClientConfiguration(BaseClientConfiguration):
|
|
|
569
601
|
For example::
|
|
570
602
|
|
|
571
603
|
[
|
|
572
|
-
|
|
604
|
+
NodeAddress("sample-address-0001.use1.cache.amazonaws.com", 6379),
|
|
573
605
|
]
|
|
574
606
|
|
|
575
607
|
use_tls (bool): True if communication with the cluster should use Transport Level Security.
|
|
@@ -585,6 +617,7 @@ class GlideClusterClientConfiguration(BaseClientConfiguration):
|
|
|
585
617
|
reconnect_strategy (Optional[BackoffStrategy]): Strategy used to determine how and when to reconnect, in case of
|
|
586
618
|
connection failures.
|
|
587
619
|
If not set, a default backoff strategy will be used.
|
|
620
|
+
database_id (Optional[int]): Index of the logical database to connect to.
|
|
588
621
|
client_name (Optional[str]): Client name to be used for the client. Will be used with CLIENT SETNAME command during
|
|
589
622
|
connection establishment.
|
|
590
623
|
protocol (ProtocolVersion): The version of the RESP protocol to communicate with the server.
|
|
@@ -634,7 +667,7 @@ class GlideClusterClientConfiguration(BaseClientConfiguration):
|
|
|
634
667
|
Attributes:
|
|
635
668
|
channels_and_patterns (Dict[GlideClusterClientConfiguration.PubSubChannelModes, Set[str]]):
|
|
636
669
|
Channels and patterns by modes.
|
|
637
|
-
callback (Optional[Callable[[
|
|
670
|
+
callback (Optional[Callable[[PubSubMsg, Any], None]]):
|
|
638
671
|
Optional callback to accept the incoming messages.
|
|
639
672
|
context (Any):
|
|
640
673
|
Arbitrary context to pass to the callback.
|
|
@@ -643,7 +676,7 @@ class GlideClusterClientConfiguration(BaseClientConfiguration):
|
|
|
643
676
|
channels_and_patterns: Dict[
|
|
644
677
|
GlideClusterClientConfiguration.PubSubChannelModes, Set[str]
|
|
645
678
|
]
|
|
646
|
-
callback: Optional[Callable[[
|
|
679
|
+
callback: Optional[Callable[[PubSubMsg, Any], None]]
|
|
647
680
|
context: Any
|
|
648
681
|
|
|
649
682
|
def __init__(
|
|
@@ -654,6 +687,7 @@ class GlideClusterClientConfiguration(BaseClientConfiguration):
|
|
|
654
687
|
read_from: ReadFrom = ReadFrom.PRIMARY,
|
|
655
688
|
request_timeout: Optional[int] = None,
|
|
656
689
|
reconnect_strategy: Optional[BackoffStrategy] = None,
|
|
690
|
+
database_id: Optional[int] = None,
|
|
657
691
|
client_name: Optional[str] = None,
|
|
658
692
|
protocol: ProtocolVersion = ProtocolVersion.RESP3,
|
|
659
693
|
periodic_checks: Union[
|
|
@@ -672,6 +706,7 @@ class GlideClusterClientConfiguration(BaseClientConfiguration):
|
|
|
672
706
|
read_from=read_from,
|
|
673
707
|
request_timeout=request_timeout,
|
|
674
708
|
reconnect_strategy=reconnect_strategy,
|
|
709
|
+
database_id=database_id,
|
|
675
710
|
client_name=client_name,
|
|
676
711
|
protocol=protocol,
|
|
677
712
|
inflight_requests_limit=inflight_requests_limit,
|
|
@@ -725,7 +760,7 @@ class GlideClusterClientConfiguration(BaseClientConfiguration):
|
|
|
725
760
|
|
|
726
761
|
def _get_pubsub_callback_and_context(
|
|
727
762
|
self,
|
|
728
|
-
) -> Tuple[Optional[Callable[[
|
|
763
|
+
) -> Tuple[Optional[Callable[[PubSubMsg, Any], None]], Any]:
|
|
729
764
|
if self.pubsub_subscriptions:
|
|
730
765
|
return self.pubsub_subscriptions.callback, self.pubsub_subscriptions.context
|
|
731
766
|
return None, None
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
from typing import Any, Dict, List, Literal, Mapping, Optional, Set, TypeVar, Union
|
|
4
4
|
|
|
5
|
-
from
|
|
6
|
-
from
|
|
7
|
-
from
|
|
5
|
+
from glide_shared.protobuf.command_request_pb2 import CommandRequest
|
|
6
|
+
from glide_shared.protobuf.connection_request_pb2 import ConnectionRequest
|
|
7
|
+
from glide_shared.routes import ByAddressRoute, RandomNode, SlotIdRoute, SlotKeyRoute
|
|
8
8
|
|
|
9
9
|
OK: str = "OK"
|
|
10
10
|
DEFAULT_READ_BYTES_SIZE: int = pow(2, 16)
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Copyright Valkey GLIDE Project Contributors - SPDX Identifier: Apache-2.0
|
|
2
2
|
|
|
3
|
-
from typing import Optional
|
|
3
|
+
from typing import Optional, Type
|
|
4
|
+
|
|
5
|
+
from glide_shared.protobuf.response_pb2 import RequestErrorType
|
|
4
6
|
|
|
5
7
|
|
|
6
8
|
class GlideError(Exception):
|
|
@@ -60,3 +62,27 @@ class ConfigurationError(RequestError):
|
|
|
60
62
|
"""
|
|
61
63
|
Errors that are thrown when a request cannot be completed in current configuration settings.
|
|
62
64
|
"""
|
|
65
|
+
|
|
66
|
+
pass
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
class LoggerError(GlideError):
|
|
70
|
+
"""
|
|
71
|
+
Errors that are thrown when the logger has an error initializing.
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
pass
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def get_request_error_class(
|
|
78
|
+
error_type: Optional[RequestErrorType.ValueType],
|
|
79
|
+
) -> Type[RequestError]:
|
|
80
|
+
if error_type == RequestErrorType.Disconnect:
|
|
81
|
+
return ConnectionError
|
|
82
|
+
if error_type == RequestErrorType.ExecAbort:
|
|
83
|
+
return ExecAbortError
|
|
84
|
+
if error_type == RequestErrorType.Timeout:
|
|
85
|
+
return TimeoutError
|
|
86
|
+
if error_type == RequestErrorType.Unspecified:
|
|
87
|
+
return RequestError
|
|
88
|
+
return RequestError
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# source: protobuf/command_request.proto
|
|
4
|
+
# Protobuf Python Version: 4.25.1
|
|
5
|
+
"""Generated protocol buffer code."""
|
|
6
|
+
from google.protobuf import descriptor as _descriptor
|
|
7
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
8
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
9
|
+
from google.protobuf.internal import builder as _builder
|
|
10
|
+
# @@protoc_insertion_point(imports)
|
|
11
|
+
|
|
12
|
+
_sym_db = _symbol_database.Default()
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1eprotobuf/command_request.proto\x12\x0f\x63ommand_request\"M\n\x0bSlotIdRoute\x12-\n\tslot_type\x18\x01 \x01(\x0e\x32\x1a.command_request.SlotTypes\x12\x0f\n\x07slot_id\x18\x02 \x01(\x05\"O\n\x0cSlotKeyRoute\x12-\n\tslot_type\x18\x01 \x01(\x0e\x32\x1a.command_request.SlotTypes\x12\x10\n\x08slot_key\x18\x02 \x01(\t\",\n\x0e\x42yAddressRoute\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\x05\"\xf6\x01\n\x06Routes\x12\x36\n\rsimple_routes\x18\x01 \x01(\x0e\x32\x1d.command_request.SimpleRoutesH\x00\x12\x37\n\x0eslot_key_route\x18\x02 \x01(\x0b\x32\x1d.command_request.SlotKeyRouteH\x00\x12\x35\n\rslot_id_route\x18\x03 \x01(\x0b\x32\x1c.command_request.SlotIdRouteH\x00\x12;\n\x10\x62y_address_route\x18\x04 \x01(\x0b\x32\x1f.command_request.ByAddressRouteH\x00\x42\x07\n\x05value\"\xb6\x01\n\x07\x43ommand\x12\x32\n\x0crequest_type\x18\x01 \x01(\x0e\x32\x1c.command_request.RequestType\x12\x38\n\nargs_array\x18\x02 \x01(\x0b\x32\".command_request.Command.ArgsArrayH\x00\x12\x1a\n\x10\x61rgs_vec_pointer\x18\x03 \x01(\x04H\x00\x1a\x19\n\tArgsArray\x12\x0c\n\x04\x61rgs\x18\x01 \x03(\x0c\x42\x06\n\x04\x61rgs\"\x80\x01\n\x18ScriptInvocationPointers\x12\x0c\n\x04hash\x18\x01 \x01(\t\x12\x19\n\x0ckeys_pointer\x18\x02 \x01(\x04H\x00\x88\x01\x01\x12\x19\n\x0c\x61rgs_pointer\x18\x03 \x01(\x04H\x01\x88\x01\x01\x42\x0f\n\r_keys_pointerB\x0f\n\r_args_pointer\"<\n\x10ScriptInvocation\x12\x0c\n\x04hash\x18\x01 \x01(\t\x12\x0c\n\x04keys\x18\x02 \x03(\x0c\x12\x0c\n\x04\x61rgs\x18\x03 \x03(\x0c\"\x90\x02\n\x05\x42\x61tch\x12\x11\n\tis_atomic\x18\x01 \x01(\x08\x12*\n\x08\x63ommands\x18\x02 \x03(\x0b\x32\x18.command_request.Command\x12\x1b\n\x0eraise_on_error\x18\x03 \x01(\x08H\x00\x88\x01\x01\x12\x14\n\x07timeout\x18\x04 \x01(\rH\x01\x88\x01\x01\x12\x1f\n\x12retry_server_error\x18\x05 \x01(\x08H\x02\x88\x01\x01\x12#\n\x16retry_connection_error\x18\x06 \x01(\x08H\x03\x88\x01\x01\x42\x11\n\x0f_raise_on_errorB\n\n\x08_timeoutB\x15\n\x13_retry_server_errorB\x19\n\x17_retry_connection_error\"\xb4\x01\n\x0b\x43lusterScan\x12\x0e\n\x06\x63ursor\x18\x01 \x01(\t\x12\x1a\n\rmatch_pattern\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\x03H\x01\x88\x01\x01\x12\x18\n\x0bobject_type\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x1f\n\x17\x61llow_non_covered_slots\x18\x05 \x01(\x08\x42\x10\n\x0e_match_patternB\x08\n\x06_countB\x0e\n\x0c_object_type\"V\n\x18UpdateConnectionPassword\x12\x15\n\x08password\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\x0eimmediate_auth\x18\x02 \x01(\x08\x42\x0b\n\t_password\"\xfc\x03\n\x0e\x43ommandRequest\x12\x14\n\x0c\x63\x61llback_idx\x18\x01 \x01(\r\x12\x32\n\x0esingle_command\x18\x02 \x01(\x0b\x32\x18.command_request.CommandH\x00\x12\'\n\x05\x62\x61tch\x18\x03 \x01(\x0b\x32\x16.command_request.BatchH\x00\x12>\n\x11script_invocation\x18\x04 \x01(\x0b\x32!.command_request.ScriptInvocationH\x00\x12O\n\x1ascript_invocation_pointers\x18\x05 \x01(\x0b\x32).command_request.ScriptInvocationPointersH\x00\x12\x34\n\x0c\x63luster_scan\x18\x06 \x01(\x0b\x32\x1c.command_request.ClusterScanH\x00\x12O\n\x1aupdate_connection_password\x18\x07 \x01(\x0b\x32).command_request.UpdateConnectionPasswordH\x00\x12&\n\x05route\x18\x08 \x01(\x0b\x32\x17.command_request.Routes\x12\x1a\n\rroot_span_ptr\x18\t \x01(\x04H\x01\x88\x01\x01\x42\t\n\x07\x63ommandB\x10\n\x0e_root_span_ptr*:\n\x0cSimpleRoutes\x12\x0c\n\x08\x41llNodes\x10\x00\x12\x10\n\x0c\x41llPrimaries\x10\x01\x12\n\n\x06Random\x10\x02*%\n\tSlotTypes\x12\x0b\n\x07Primary\x10\x00\x12\x0b\n\x07Replica\x10\x01*\xea\x30\n\x0bRequestType\x12\x12\n\x0eInvalidRequest\x10\x00\x12\x11\n\rCustomCommand\x10\x01\x12\x0c\n\x08\x42itCount\x10\x65\x12\x0c\n\x08\x42itField\x10\x66\x12\x14\n\x10\x42itFieldReadOnly\x10g\x12\t\n\x05\x42itOp\x10h\x12\n\n\x06\x42itPos\x10i\x12\n\n\x06GetBit\x10j\x12\n\n\x06SetBit\x10k\x12\x0b\n\x06\x41sking\x10\xc9\x01\x12\x14\n\x0f\x43lusterAddSlots\x10\xca\x01\x12\x19\n\x14\x43lusterAddSlotsRange\x10\xcb\x01\x12\x15\n\x10\x43lusterBumpEpoch\x10\xcc\x01\x12\x1f\n\x1a\x43lusterCountFailureReports\x10\xcd\x01\x12\x1b\n\x16\x43lusterCountKeysInSlot\x10\xce\x01\x12\x14\n\x0f\x43lusterDelSlots\x10\xcf\x01\x12\x19\n\x14\x43lusterDelSlotsRange\x10\xd0\x01\x12\x14\n\x0f\x43lusterFailover\x10\xd1\x01\x12\x16\n\x11\x43lusterFlushSlots\x10\xd2\x01\x12\x12\n\rClusterForget\x10\xd3\x01\x12\x19\n\x14\x43lusterGetKeysInSlot\x10\xd4\x01\x12\x10\n\x0b\x43lusterInfo\x10\xd5\x01\x12\x13\n\x0e\x43lusterKeySlot\x10\xd6\x01\x12\x11\n\x0c\x43lusterLinks\x10\xd7\x01\x12\x10\n\x0b\x43lusterMeet\x10\xd8\x01\x12\x10\n\x0b\x43lusterMyId\x10\xd9\x01\x12\x15\n\x10\x43lusterMyShardId\x10\xda\x01\x12\x11\n\x0c\x43lusterNodes\x10\xdb\x01\x12\x14\n\x0f\x43lusterReplicas\x10\xdc\x01\x12\x15\n\x10\x43lusterReplicate\x10\xdd\x01\x12\x11\n\x0c\x43lusterReset\x10\xde\x01\x12\x16\n\x11\x43lusterSaveConfig\x10\xdf\x01\x12\x1a\n\x15\x43lusterSetConfigEpoch\x10\xe0\x01\x12\x13\n\x0e\x43lusterSetslot\x10\xe1\x01\x12\x12\n\rClusterShards\x10\xe2\x01\x12\x12\n\rClusterSlaves\x10\xe3\x01\x12\x11\n\x0c\x43lusterSlots\x10\xe4\x01\x12\r\n\x08ReadOnly\x10\xe5\x01\x12\x0e\n\tReadWrite\x10\xe6\x01\x12\t\n\x04\x41uth\x10\xad\x02\x12\x12\n\rClientCaching\x10\xae\x02\x12\x12\n\rClientGetName\x10\xaf\x02\x12\x13\n\x0e\x43lientGetRedir\x10\xb0\x02\x12\r\n\x08\x43lientId\x10\xb1\x02\x12\x0f\n\nClientInfo\x10\xb2\x02\x12\x15\n\x10\x43lientKillSimple\x10\xb3\x02\x12\x0f\n\nClientKill\x10\xb4\x02\x12\x0f\n\nClientList\x10\xb5\x02\x12\x12\n\rClientNoEvict\x10\xb6\x02\x12\x12\n\rClientNoTouch\x10\xb7\x02\x12\x10\n\x0b\x43lientPause\x10\xb8\x02\x12\x10\n\x0b\x43lientReply\x10\xb9\x02\x12\x12\n\rClientSetInfo\x10\xba\x02\x12\x12\n\rClientSetName\x10\xbb\x02\x12\x13\n\x0e\x43lientTracking\x10\xbc\x02\x12\x17\n\x12\x43lientTrackingInfo\x10\xbd\x02\x12\x12\n\rClientUnblock\x10\xbe\x02\x12\x12\n\rClientUnpause\x10\xbf\x02\x12\t\n\x04\x45\x63ho\x10\xc0\x02\x12\n\n\x05Hello\x10\xc1\x02\x12\t\n\x04Ping\x10\xc2\x02\x12\t\n\x04Quit\x10\xc3\x02\x12\n\n\x05Reset\x10\xc4\x02\x12\x0b\n\x06Select\x10\xc5\x02\x12\t\n\x04\x43opy\x10\x91\x03\x12\x08\n\x03\x44\x65l\x10\x92\x03\x12\t\n\x04\x44ump\x10\x93\x03\x12\x0b\n\x06\x45xists\x10\x94\x03\x12\x0b\n\x06\x45xpire\x10\x95\x03\x12\r\n\x08\x45xpireAt\x10\x96\x03\x12\x0f\n\nExpireTime\x10\x97\x03\x12\t\n\x04Keys\x10\x98\x03\x12\x0c\n\x07Migrate\x10\x99\x03\x12\t\n\x04Move\x10\x9a\x03\x12\x13\n\x0eObjectEncoding\x10\x9b\x03\x12\x0f\n\nObjectFreq\x10\x9c\x03\x12\x13\n\x0eObjectIdleTime\x10\x9d\x03\x12\x13\n\x0eObjectRefCount\x10\x9e\x03\x12\x0c\n\x07Persist\x10\x9f\x03\x12\x0c\n\x07PExpire\x10\xa0\x03\x12\x0e\n\tPExpireAt\x10\xa1\x03\x12\x10\n\x0bPExpireTime\x10\xa2\x03\x12\t\n\x04PTTL\x10\xa3\x03\x12\x0e\n\tRandomKey\x10\xa4\x03\x12\x0b\n\x06Rename\x10\xa5\x03\x12\r\n\x08RenameNX\x10\xa6\x03\x12\x0c\n\x07Restore\x10\xa7\x03\x12\t\n\x04Scan\x10\xa8\x03\x12\t\n\x04Sort\x10\xa9\x03\x12\x11\n\x0cSortReadOnly\x10\xaa\x03\x12\n\n\x05Touch\x10\xab\x03\x12\x08\n\x03TTL\x10\xac\x03\x12\t\n\x04Type\x10\xad\x03\x12\x0b\n\x06Unlink\x10\xae\x03\x12\t\n\x04Wait\x10\xaf\x03\x12\x0c\n\x07WaitAof\x10\xb0\x03\x12\x0b\n\x06GeoAdd\x10\xf5\x03\x12\x0c\n\x07GeoDist\x10\xf6\x03\x12\x0c\n\x07GeoHash\x10\xf7\x03\x12\x0b\n\x06GeoPos\x10\xf8\x03\x12\x0e\n\tGeoRadius\x10\xf9\x03\x12\x16\n\x11GeoRadiusReadOnly\x10\xfa\x03\x12\x16\n\x11GeoRadiusByMember\x10\xfb\x03\x12\x1e\n\x19GeoRadiusByMemberReadOnly\x10\xfc\x03\x12\x0e\n\tGeoSearch\x10\xfd\x03\x12\x13\n\x0eGeoSearchStore\x10\xfe\x03\x12\t\n\x04HDel\x10\xd9\x04\x12\x0c\n\x07HExists\x10\xda\x04\x12\t\n\x04HGet\x10\xdb\x04\x12\x0c\n\x07HGetAll\x10\xdc\x04\x12\x0c\n\x07HIncrBy\x10\xdd\x04\x12\x11\n\x0cHIncrByFloat\x10\xde\x04\x12\n\n\x05HKeys\x10\xdf\x04\x12\t\n\x04HLen\x10\xe0\x04\x12\n\n\x05HMGet\x10\xe1\x04\x12\n\n\x05HMSet\x10\xe2\x04\x12\x0f\n\nHRandField\x10\xe3\x04\x12\n\n\x05HScan\x10\xe4\x04\x12\t\n\x04HSet\x10\xe5\x04\x12\x0b\n\x06HSetNX\x10\xe6\x04\x12\x0c\n\x07HStrlen\x10\xe7\x04\x12\n\n\x05HVals\x10\xe8\x04\x12\x0b\n\x06HSetEx\x10\xe9\x04\x12\x0b\n\x06HGetEx\x10\xea\x04\x12\x0c\n\x07HExpire\x10\xeb\x04\x12\x0e\n\tHExpireAt\x10\xec\x04\x12\r\n\x08HPExpire\x10\xed\x04\x12\x0f\n\nHPExpireAt\x10\xee\x04\x12\r\n\x08HPersist\x10\xef\x04\x12\t\n\x04HTtl\x10\xf0\x04\x12\n\n\x05HPTtl\x10\xf1\x04\x12\x10\n\x0bHExpireTime\x10\xf2\x04\x12\x11\n\x0cHPExpireTime\x10\xf3\x04\x12\n\n\x05PfAdd\x10\xbd\x05\x12\x0c\n\x07PfCount\x10\xbe\x05\x12\x0c\n\x07PfMerge\x10\xbf\x05\x12\x0b\n\x06\x42LMove\x10\xa1\x06\x12\x0b\n\x06\x42LMPop\x10\xa2\x06\x12\n\n\x05\x42LPop\x10\xa3\x06\x12\n\n\x05\x42RPop\x10\xa4\x06\x12\x0f\n\nBRPopLPush\x10\xa5\x06\x12\x0b\n\x06LIndex\x10\xa6\x06\x12\x0c\n\x07LInsert\x10\xa7\x06\x12\t\n\x04LLen\x10\xa8\x06\x12\n\n\x05LMove\x10\xa9\x06\x12\n\n\x05LMPop\x10\xaa\x06\x12\t\n\x04LPop\x10\xab\x06\x12\t\n\x04LPos\x10\xac\x06\x12\n\n\x05LPush\x10\xad\x06\x12\x0b\n\x06LPushX\x10\xae\x06\x12\x0b\n\x06LRange\x10\xaf\x06\x12\t\n\x04LRem\x10\xb0\x06\x12\t\n\x04LSet\x10\xb1\x06\x12\n\n\x05LTrim\x10\xb2\x06\x12\t\n\x04RPop\x10\xb3\x06\x12\x0e\n\tRPopLPush\x10\xb4\x06\x12\n\n\x05RPush\x10\xb5\x06\x12\x0b\n\x06RPushX\x10\xb6\x06\x12\x0f\n\nPSubscribe\x10\x85\x07\x12\x0c\n\x07Publish\x10\x86\x07\x12\x13\n\x0ePubSubChannels\x10\x87\x07\x12\x11\n\x0cPubSubNumPat\x10\x88\x07\x12\x11\n\x0cPubSubNumSub\x10\x89\x07\x12\x18\n\x13PubSubShardChannels\x10\x8a\x07\x12\x16\n\x11PubSubShardNumSub\x10\x8b\x07\x12\x11\n\x0cPUnsubscribe\x10\x8c\x07\x12\r\n\x08SPublish\x10\x8d\x07\x12\x0f\n\nSSubscribe\x10\x8e\x07\x12\x0e\n\tSubscribe\x10\x8f\x07\x12\x11\n\x0cSUnsubscribe\x10\x90\x07\x12\x10\n\x0bUnsubscribe\x10\x91\x07\x12\t\n\x04\x45val\x10\xe9\x07\x12\x11\n\x0c\x45valReadOnly\x10\xea\x07\x12\x0c\n\x07\x45valSha\x10\xeb\x07\x12\x14\n\x0f\x45valShaReadOnly\x10\xec\x07\x12\n\n\x05\x46\x43\x61ll\x10\xed\x07\x12\x12\n\rFCallReadOnly\x10\xee\x07\x12\x13\n\x0e\x46unctionDelete\x10\xef\x07\x12\x11\n\x0c\x46unctionDump\x10\xf0\x07\x12\x12\n\rFunctionFlush\x10\xf1\x07\x12\x11\n\x0c\x46unctionKill\x10\xf2\x07\x12\x11\n\x0c\x46unctionList\x10\xf3\x07\x12\x11\n\x0c\x46unctionLoad\x10\xf4\x07\x12\x14\n\x0f\x46unctionRestore\x10\xf5\x07\x12\x12\n\rFunctionStats\x10\xf6\x07\x12\x10\n\x0bScriptDebug\x10\xf7\x07\x12\x11\n\x0cScriptExists\x10\xf8\x07\x12\x10\n\x0bScriptFlush\x10\xf9\x07\x12\x0f\n\nScriptKill\x10\xfa\x07\x12\x0f\n\nScriptLoad\x10\xfb\x07\x12\x0f\n\nScriptShow\x10\xfc\x07\x12\x0b\n\x06\x41\x63lCat\x10\xcd\x08\x12\x0f\n\nAclDelUser\x10\xce\x08\x12\x0e\n\tAclDryRun\x10\xcf\x08\x12\x0f\n\nAclGenPass\x10\xd0\x08\x12\x0f\n\nAclGetUser\x10\xd1\x08\x12\x0c\n\x07\x41\x63lList\x10\xd2\x08\x12\x0c\n\x07\x41\x63lLoad\x10\xd3\x08\x12\x0b\n\x06\x41\x63lLog\x10\xd4\x08\x12\x0c\n\x07\x41\x63lSave\x10\xd5\x08\x12\x0f\n\nAclSetSser\x10\xd6\x08\x12\r\n\x08\x41\x63lUsers\x10\xd7\x08\x12\x0e\n\tAclWhoami\x10\xd8\x08\x12\x11\n\x0c\x42gRewriteAof\x10\xd9\x08\x12\x0b\n\x06\x42gSave\x10\xda\x08\x12\r\n\x08\x43ommand_\x10\xdb\x08\x12\x11\n\x0c\x43ommandCount\x10\xdc\x08\x12\x10\n\x0b\x43ommandDocs\x10\xdd\x08\x12\x13\n\x0e\x43ommandGetKeys\x10\xde\x08\x12\x1b\n\x16\x43ommandGetKeysAndFlags\x10\xdf\x08\x12\x10\n\x0b\x43ommandInfo\x10\xe0\x08\x12\x10\n\x0b\x43ommandList\x10\xe1\x08\x12\x0e\n\tConfigGet\x10\xe2\x08\x12\x14\n\x0f\x43onfigResetStat\x10\xe3\x08\x12\x12\n\rConfigRewrite\x10\xe4\x08\x12\x0e\n\tConfigSet\x10\xe5\x08\x12\x0b\n\x06\x44\x42Size\x10\xe6\x08\x12\r\n\x08\x46\x61ilOver\x10\xe7\x08\x12\r\n\x08\x46lushAll\x10\xe8\x08\x12\x0c\n\x07\x46lushDB\x10\xe9\x08\x12\t\n\x04Info\x10\xea\x08\x12\r\n\x08LastSave\x10\xeb\x08\x12\x12\n\rLatencyDoctor\x10\xec\x08\x12\x11\n\x0cLatencyGraph\x10\xed\x08\x12\x15\n\x10LatencyHistogram\x10\xee\x08\x12\x13\n\x0eLatencyHistory\x10\xef\x08\x12\x12\n\rLatencyLatest\x10\xf0\x08\x12\x11\n\x0cLatencyReset\x10\xf1\x08\x12\x0b\n\x06Lolwut\x10\xf2\x08\x12\x11\n\x0cMemoryDoctor\x10\xf3\x08\x12\x16\n\x11MemoryMallocStats\x10\xf4\x08\x12\x10\n\x0bMemoryPurge\x10\xf5\x08\x12\x10\n\x0bMemoryStats\x10\xf6\x08\x12\x10\n\x0bMemoryUsage\x10\xf7\x08\x12\x0f\n\nModuleList\x10\xf8\x08\x12\x0f\n\nModuleLoad\x10\xf9\x08\x12\x11\n\x0cModuleLoadEx\x10\xfa\x08\x12\x11\n\x0cModuleUnload\x10\xfb\x08\x12\x0c\n\x07Monitor\x10\xfc\x08\x12\n\n\x05PSync\x10\xfd\x08\x12\r\n\x08ReplConf\x10\xfe\x08\x12\x0e\n\tReplicaOf\x10\xff\x08\x12\x12\n\rRestoreAsking\x10\x80\t\x12\t\n\x04Role\x10\x81\t\x12\t\n\x04Save\x10\x82\t\x12\r\n\x08ShutDown\x10\x83\t\x12\x0c\n\x07SlaveOf\x10\x84\t\x12\x0f\n\nSlowLogGet\x10\x85\t\x12\x0f\n\nSlowLogLen\x10\x86\t\x12\x11\n\x0cSlowLogReset\x10\x87\t\x12\x0b\n\x06SwapDb\x10\x88\t\x12\t\n\x04Sync\x10\x89\t\x12\t\n\x04Time\x10\x8a\t\x12\t\n\x04SAdd\x10\xb1\t\x12\n\n\x05SCard\x10\xb2\t\x12\n\n\x05SDiff\x10\xb3\t\x12\x0f\n\nSDiffStore\x10\xb4\t\x12\x0b\n\x06SInter\x10\xb5\t\x12\x0f\n\nSInterCard\x10\xb6\t\x12\x10\n\x0bSInterStore\x10\xb7\t\x12\x0e\n\tSIsMember\x10\xb8\t\x12\r\n\x08SMembers\x10\xb9\t\x12\x0f\n\nSMIsMember\x10\xba\t\x12\n\n\x05SMove\x10\xbb\t\x12\t\n\x04SPop\x10\xbc\t\x12\x10\n\x0bSRandMember\x10\xbd\t\x12\t\n\x04SRem\x10\xbe\t\x12\n\n\x05SScan\x10\xbf\t\x12\x0b\n\x06SUnion\x10\xc0\t\x12\x10\n\x0bSUnionStore\x10\xc1\t\x12\x0b\n\x06\x42ZMPop\x10\x95\n\x12\r\n\x08\x42ZPopMax\x10\x96\n\x12\r\n\x08\x42ZPopMin\x10\x97\n\x12\t\n\x04ZAdd\x10\x98\n\x12\n\n\x05ZCard\x10\x99\n\x12\x0b\n\x06ZCount\x10\x9a\n\x12\n\n\x05ZDiff\x10\x9b\n\x12\x0f\n\nZDiffStore\x10\x9c\n\x12\x0c\n\x07ZIncrBy\x10\x9d\n\x12\x0b\n\x06ZInter\x10\x9e\n\x12\x0f\n\nZInterCard\x10\x9f\n\x12\x10\n\x0bZInterStore\x10\xa0\n\x12\x0e\n\tZLexCount\x10\xa1\n\x12\n\n\x05ZMPop\x10\xa2\n\x12\x0c\n\x07ZMScore\x10\xa3\n\x12\x0c\n\x07ZPopMax\x10\xa4\n\x12\x0c\n\x07ZPopMin\x10\xa5\n\x12\x10\n\x0bZRandMember\x10\xa6\n\x12\x0b\n\x06ZRange\x10\xa7\n\x12\x10\n\x0bZRangeByLex\x10\xa8\n\x12\x12\n\rZRangeByScore\x10\xa9\n\x12\x10\n\x0bZRangeStore\x10\xaa\n\x12\n\n\x05ZRank\x10\xab\n\x12\t\n\x04ZRem\x10\xac\n\x12\x13\n\x0eZRemRangeByLex\x10\xad\n\x12\x14\n\x0fZRemRangeByRank\x10\xae\n\x12\x15\n\x10ZRemRangeByScore\x10\xaf\n\x12\x0e\n\tZRevRange\x10\xb0\n\x12\x13\n\x0eZRevRangeByLex\x10\xb1\n\x12\x15\n\x10ZRevRangeByScore\x10\xb2\n\x12\r\n\x08ZRevRank\x10\xb3\n\x12\n\n\x05ZScan\x10\xb4\n\x12\x0b\n\x06ZScore\x10\xb5\n\x12\x0b\n\x06ZUnion\x10\xb6\n\x12\x10\n\x0bZUnionStore\x10\xb7\n\x12\t\n\x04XAck\x10\xf9\n\x12\t\n\x04XAdd\x10\xfa\n\x12\x0f\n\nXAutoClaim\x10\xfb\n\x12\x0b\n\x06XClaim\x10\xfc\n\x12\t\n\x04XDel\x10\xfd\n\x12\x11\n\x0cXGroupCreate\x10\xfe\n\x12\x19\n\x14XGroupCreateConsumer\x10\xff\n\x12\x16\n\x11XGroupDelConsumer\x10\x80\x0b\x12\x12\n\rXGroupDestroy\x10\x81\x0b\x12\x10\n\x0bXGroupSetId\x10\x82\x0b\x12\x13\n\x0eXInfoConsumers\x10\x83\x0b\x12\x10\n\x0bXInfoGroups\x10\x84\x0b\x12\x10\n\x0bXInfoStream\x10\x85\x0b\x12\t\n\x04XLen\x10\x86\x0b\x12\r\n\x08XPending\x10\x87\x0b\x12\x0b\n\x06XRange\x10\x88\x0b\x12\n\n\x05XRead\x10\x89\x0b\x12\x0f\n\nXReadGroup\x10\x8a\x0b\x12\x0e\n\tXRevRange\x10\x8b\x0b\x12\x0b\n\x06XSetId\x10\x8c\x0b\x12\n\n\x05XTrim\x10\x8d\x0b\x12\x0b\n\x06\x41ppend\x10\xdd\x0b\x12\t\n\x04\x44\x65\x63r\x10\xde\x0b\x12\x0b\n\x06\x44\x65\x63rBy\x10\xdf\x0b\x12\x08\n\x03Get\x10\xe0\x0b\x12\x0b\n\x06GetDel\x10\xe1\x0b\x12\n\n\x05GetEx\x10\xe2\x0b\x12\r\n\x08GetRange\x10\xe3\x0b\x12\x0b\n\x06GetSet\x10\xe4\x0b\x12\t\n\x04Incr\x10\xe5\x0b\x12\x0b\n\x06IncrBy\x10\xe6\x0b\x12\x10\n\x0bIncrByFloat\x10\xe7\x0b\x12\x08\n\x03LCS\x10\xe8\x0b\x12\t\n\x04MGet\x10\xe9\x0b\x12\t\n\x04MSet\x10\xea\x0b\x12\x0b\n\x06MSetNX\x10\xeb\x0b\x12\x0b\n\x06PSetEx\x10\xec\x0b\x12\x08\n\x03Set\x10\xed\x0b\x12\n\n\x05SetEx\x10\xee\x0b\x12\n\n\x05SetNX\x10\xef\x0b\x12\r\n\x08SetRange\x10\xf0\x0b\x12\x0b\n\x06Strlen\x10\xf1\x0b\x12\x0b\n\x06Substr\x10\xf2\x0b\x12\x0c\n\x07\x44iscard\x10\xc1\x0c\x12\t\n\x04\x45xec\x10\xc2\x0c\x12\n\n\x05Multi\x10\xc3\x0c\x12\x0c\n\x07UnWatch\x10\xc4\x0c\x12\n\n\x05Watch\x10\xc5\x0c\x12\x12\n\rJsonArrAppend\x10\xd1\x0f\x12\x11\n\x0cJsonArrIndex\x10\xd2\x0f\x12\x12\n\rJsonArrInsert\x10\xd3\x0f\x12\x0f\n\nJsonArrLen\x10\xd4\x0f\x12\x0f\n\nJsonArrPop\x10\xd5\x0f\x12\x10\n\x0bJsonArrTrim\x10\xd6\x0f\x12\x0e\n\tJsonClear\x10\xd7\x0f\x12\x0e\n\tJsonDebug\x10\xd8\x0f\x12\x0c\n\x07JsonDel\x10\xd9\x0f\x12\x0f\n\nJsonForget\x10\xda\x0f\x12\x0c\n\x07JsonGet\x10\xdb\x0f\x12\r\n\x08JsonMGet\x10\xdc\x0f\x12\x12\n\rJsonNumIncrBy\x10\xdd\x0f\x12\x12\n\rJsonNumMultBy\x10\xde\x0f\x12\x10\n\x0bJsonObjKeys\x10\xdf\x0f\x12\x0f\n\nJsonObjLen\x10\xe0\x0f\x12\r\n\x08JsonResp\x10\xe1\x0f\x12\x0c\n\x07JsonSet\x10\xe2\x0f\x12\x12\n\rJsonStrAppend\x10\xe3\x0f\x12\x0f\n\nJsonStrLen\x10\xe4\x0f\x12\x0f\n\nJsonToggle\x10\xe5\x0f\x12\r\n\x08JsonType\x10\xe6\x0f\x12\x0b\n\x06\x46tList\x10\xb5\x10\x12\x10\n\x0b\x46tAggregate\x10\xb6\x10\x12\x0f\n\nFtAliasAdd\x10\xb7\x10\x12\x0f\n\nFtAliasDel\x10\xb8\x10\x12\x10\n\x0b\x46tAliasList\x10\xb9\x10\x12\x12\n\rFtAliasUpdate\x10\xba\x10\x12\r\n\x08\x46tCreate\x10\xbb\x10\x12\x10\n\x0b\x46tDropIndex\x10\xbc\x10\x12\x0e\n\tFtExplain\x10\xbd\x10\x12\x11\n\x0c\x46tExplainCli\x10\xbe\x10\x12\x0b\n\x06\x46tInfo\x10\xbf\x10\x12\x0e\n\tFtProfile\x10\xc0\x10\x12\r\n\x08\x46tSearch\x10\xc1\x10\x62\x06proto3')
|
|
18
|
+
|
|
19
|
+
_globals = globals()
|
|
20
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
21
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'protobuf.command_request_pb2', _globals)
|
|
22
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
23
|
+
DESCRIPTOR._options = None
|
|
24
|
+
_globals['_SIMPLEROUTES']._serialized_start=1941
|
|
25
|
+
_globals['_SIMPLEROUTES']._serialized_end=1999
|
|
26
|
+
_globals['_SLOTTYPES']._serialized_start=2001
|
|
27
|
+
_globals['_SLOTTYPES']._serialized_end=2038
|
|
28
|
+
_globals['_REQUESTTYPE']._serialized_start=2041
|
|
29
|
+
_globals['_REQUESTTYPE']._serialized_end=8291
|
|
30
|
+
_globals['_SLOTIDROUTE']._serialized_start=51
|
|
31
|
+
_globals['_SLOTIDROUTE']._serialized_end=128
|
|
32
|
+
_globals['_SLOTKEYROUTE']._serialized_start=130
|
|
33
|
+
_globals['_SLOTKEYROUTE']._serialized_end=209
|
|
34
|
+
_globals['_BYADDRESSROUTE']._serialized_start=211
|
|
35
|
+
_globals['_BYADDRESSROUTE']._serialized_end=255
|
|
36
|
+
_globals['_ROUTES']._serialized_start=258
|
|
37
|
+
_globals['_ROUTES']._serialized_end=504
|
|
38
|
+
_globals['_COMMAND']._serialized_start=507
|
|
39
|
+
_globals['_COMMAND']._serialized_end=689
|
|
40
|
+
_globals['_COMMAND_ARGSARRAY']._serialized_start=656
|
|
41
|
+
_globals['_COMMAND_ARGSARRAY']._serialized_end=681
|
|
42
|
+
_globals['_SCRIPTINVOCATIONPOINTERS']._serialized_start=692
|
|
43
|
+
_globals['_SCRIPTINVOCATIONPOINTERS']._serialized_end=820
|
|
44
|
+
_globals['_SCRIPTINVOCATION']._serialized_start=822
|
|
45
|
+
_globals['_SCRIPTINVOCATION']._serialized_end=882
|
|
46
|
+
_globals['_BATCH']._serialized_start=885
|
|
47
|
+
_globals['_BATCH']._serialized_end=1157
|
|
48
|
+
_globals['_CLUSTERSCAN']._serialized_start=1160
|
|
49
|
+
_globals['_CLUSTERSCAN']._serialized_end=1340
|
|
50
|
+
_globals['_UPDATECONNECTIONPASSWORD']._serialized_start=1342
|
|
51
|
+
_globals['_UPDATECONNECTIONPASSWORD']._serialized_end=1428
|
|
52
|
+
_globals['_COMMANDREQUEST']._serialized_start=1431
|
|
53
|
+
_globals['_COMMANDREQUEST']._serialized_end=1939
|
|
54
|
+
# @@protoc_insertion_point(module_scope)
|
{glide → glide_shared}/routes.py
RENAMED
|
@@ -3,9 +3,13 @@
|
|
|
3
3
|
from enum import Enum
|
|
4
4
|
from typing import Optional
|
|
5
5
|
|
|
6
|
-
from
|
|
7
|
-
from
|
|
8
|
-
|
|
6
|
+
from glide_shared.exceptions import RequestError
|
|
7
|
+
from glide_shared.protobuf.command_request_pb2 import (
|
|
8
|
+
CommandRequest,
|
|
9
|
+
Routes,
|
|
10
|
+
SimpleRoutes,
|
|
11
|
+
)
|
|
12
|
+
from glide_shared.protobuf.command_request_pb2 import SlotTypes as ProtoSlotTypes
|
|
9
13
|
|
|
10
14
|
|
|
11
15
|
class SlotType(Enum):
|
|
@@ -125,23 +129,33 @@ def to_protobuf_slot_type(slot_type: SlotType) -> ProtoSlotTypes.ValueType:
|
|
|
125
129
|
)
|
|
126
130
|
|
|
127
131
|
|
|
128
|
-
def
|
|
132
|
+
def build_protobuf_route(route: Optional[Route]) -> Optional[Routes]:
|
|
129
133
|
if route is None:
|
|
130
|
-
return
|
|
131
|
-
|
|
132
|
-
|
|
134
|
+
return None
|
|
135
|
+
|
|
136
|
+
protobuf_route = Routes()
|
|
137
|
+
if isinstance(route, AllNodes):
|
|
138
|
+
protobuf_route.simple_routes = SimpleRoutes.AllNodes
|
|
133
139
|
elif isinstance(route, AllPrimaries):
|
|
134
|
-
|
|
140
|
+
protobuf_route.simple_routes = SimpleRoutes.AllPrimaries
|
|
135
141
|
elif isinstance(route, RandomNode):
|
|
136
|
-
|
|
142
|
+
protobuf_route.simple_routes = SimpleRoutes.Random
|
|
137
143
|
elif isinstance(route, SlotKeyRoute):
|
|
138
|
-
|
|
139
|
-
|
|
144
|
+
protobuf_route.slot_key_route.slot_type = to_protobuf_slot_type(route.slot_type)
|
|
145
|
+
protobuf_route.slot_key_route.slot_key = route.slot_key
|
|
140
146
|
elif isinstance(route, SlotIdRoute):
|
|
141
|
-
|
|
142
|
-
|
|
147
|
+
protobuf_route.slot_id_route.slot_type = to_protobuf_slot_type(route.slot_type)
|
|
148
|
+
protobuf_route.slot_id_route.slot_id = route.slot_id
|
|
143
149
|
elif isinstance(route, ByAddressRoute):
|
|
144
|
-
|
|
145
|
-
|
|
150
|
+
protobuf_route.by_address_route.host = route.host
|
|
151
|
+
protobuf_route.by_address_route.port = route.port
|
|
146
152
|
else:
|
|
147
153
|
raise RequestError(f"Received invalid route type: {type(route)}")
|
|
154
|
+
|
|
155
|
+
return protobuf_route
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
def set_protobuf_route(request: CommandRequest, route: Optional[Route]) -> None:
|
|
159
|
+
protobuf_route = build_protobuf_route(route)
|
|
160
|
+
if protobuf_route:
|
|
161
|
+
request.route.CopyFrom(protobuf_route)
|