valkey-glide 2.0.1__cp312-cp312-macosx_11_0_arm64.whl → 2.1.0rc1__cp312-cp312-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.

Files changed (43) hide show
  1. glide/__init__.py +95 -119
  2. glide/async_commands/cluster_commands.py +11 -11
  3. glide/async_commands/core.py +537 -414
  4. glide/async_commands/{server_modules/ft.py → ft.py} +8 -7
  5. glide/async_commands/{server_modules/glide_json.py → glide_json.py} +15 -92
  6. glide/async_commands/standalone_commands.py +9 -11
  7. glide/glide.cpython-312-darwin.so +0 -0
  8. glide/glide.pyi +1 -1
  9. glide/glide_client.py +39 -46
  10. glide/logger.py +3 -3
  11. glide/opentelemetry.py +8 -4
  12. glide_shared/__init__.py +326 -0
  13. {glide/async_commands → glide_shared/commands}/batch.py +396 -10
  14. {glide/async_commands → glide_shared/commands}/batch_options.py +1 -1
  15. glide_shared/commands/core_options.py +407 -0
  16. {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_aggregate_options.py +3 -3
  17. {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_create_options.py +4 -2
  18. {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_profile_options.py +4 -4
  19. {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_search_options.py +4 -2
  20. {glide/async_commands → glide_shared/commands}/server_modules/json_batch.py +4 -4
  21. glide_shared/commands/server_modules/json_options.py +93 -0
  22. {glide/async_commands → glide_shared/commands}/sorted_set.py +2 -2
  23. {glide/async_commands → glide_shared/commands}/stream.py +1 -1
  24. {glide → glide_shared}/config.py +28 -21
  25. {glide → glide_shared}/constants.py +3 -3
  26. {glide → glide_shared}/exceptions.py +27 -1
  27. glide_shared/protobuf/command_request_pb2.py +54 -0
  28. {glide → glide_shared}/routes.py +29 -15
  29. {valkey_glide-2.0.1.dist-info → valkey_glide-2.1.0rc1.dist-info}/METADATA +119 -58
  30. valkey_glide-2.1.0rc1.dist-info/RECORD +39 -0
  31. glide/protobuf/command_request_pb2.py +0 -54
  32. glide/protobuf/command_request_pb2.pyi +0 -1193
  33. glide/protobuf/connection_request_pb2.pyi +0 -299
  34. glide/protobuf/response_pb2.pyi +0 -106
  35. valkey_glide-2.0.1.dist-info/RECORD +0 -39
  36. /glide/py.typed → /glide_shared/commands/__init__.py +0 -0
  37. {glide/async_commands → glide_shared/commands}/bitmap.py +0 -0
  38. {glide/async_commands → glide_shared/commands}/command_args.py +0 -0
  39. {glide/async_commands → glide_shared/commands}/server_modules/ft_options/ft_constants.py +0 -0
  40. {glide → glide_shared}/protobuf/connection_request_pb2.py +0 -0
  41. {glide → glide_shared}/protobuf/response_pb2.py +0 -0
  42. {glide → glide_shared}/protobuf_codec.py +0 -0
  43. {valkey_glide-2.0.1.dist-info → valkey_glide-2.1.0rc1.dist-info}/WHEEL +0 -0
@@ -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 glide.async_commands.core import CoreCommands
10
- from glide.exceptions import ConfigurationError
11
- from glide.protobuf.connection_request_pb2 import ConnectionRequest
12
- from glide.protobuf.connection_request_pb2 import ProtocolVersion as SentProtocolVersion
13
- from glide.protobuf.connection_request_pb2 import ReadFrom as ProtobufReadFrom
14
- from glide.protobuf.connection_request_pb2 import TlsMode
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 `rand(...)` applies a jitter of up to `jitter_percent`% to introduce randomness and reduce retry storms.
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
- {address:sample-address-0001.use1.cache.amazonaws.com, port:6379},
227
- {address: sample-address-0002.use2.cache.amazonaws.com, port:6379}
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.
@@ -373,7 +380,7 @@ class BaseClientConfiguration:
373
380
 
374
381
  def _get_pubsub_callback_and_context(
375
382
  self,
376
- ) -> Tuple[Optional[Callable[[CoreCommands.PubSubMsg, Any], None]], Any]:
383
+ ) -> Tuple[Optional[Callable[[PubSubMsg, Any], None]], Any]:
377
384
  return None, None
378
385
 
379
386
 
@@ -397,12 +404,12 @@ class GlideClientConfiguration(BaseClientConfiguration):
397
404
 
398
405
  Attributes:
399
406
  addresses (List[NodeAddress]): DNS Addresses and ports of known nodes in the cluster.
400
- Only nodes whose addresses were provided will be used by the client.
407
+ Only nodes whose addresses were provided will be used by the client.
401
408
  For example::
402
409
 
403
410
  [
404
- {address:sample-address-0001.use1.cache.amazonaws.com, port:6379},
405
- {address: sample-address-0002.use2.cache.amazonaws.com, port:6379}
411
+ NodeAddress("sample-address-0001.use1.cache.amazonaws.com", 6379),
412
+ NodeAddress("sample-address-0002.use1.cache.amazonaws.com", 6379)
406
413
  ]
407
414
 
408
415
  use_tls (bool): True if communication with the cluster should use Transport Level Security.
@@ -457,7 +464,7 @@ class GlideClientConfiguration(BaseClientConfiguration):
457
464
  Attributes:
458
465
  channels_and_patterns (Dict[GlideClientConfiguration.PubSubChannelModes, Set[str]]):
459
466
  Channels and patterns by modes.
460
- callback (Optional[Callable[[CoreCommands.PubSubMsg, Any], None]]):
467
+ callback (Optional[Callable[[PubSubMsg, Any], None]]):
461
468
  Optional callback to accept the incomming messages.
462
469
  context (Any):
463
470
  Arbitrary context to pass to the callback.
@@ -466,7 +473,7 @@ class GlideClientConfiguration(BaseClientConfiguration):
466
473
  channels_and_patterns: Dict[
467
474
  GlideClientConfiguration.PubSubChannelModes, Set[str]
468
475
  ]
469
- callback: Optional[Callable[[CoreCommands.PubSubMsg, Any], None]]
476
+ callback: Optional[Callable[[PubSubMsg, Any], None]]
470
477
  context: Any
471
478
 
472
479
  def __init__(
@@ -540,7 +547,7 @@ class GlideClientConfiguration(BaseClientConfiguration):
540
547
 
541
548
  def _get_pubsub_callback_and_context(
542
549
  self,
543
- ) -> Tuple[Optional[Callable[[CoreCommands.PubSubMsg, Any], None]], Any]:
550
+ ) -> Tuple[Optional[Callable[[PubSubMsg, Any], None]], Any]:
544
551
  if self.pubsub_subscriptions:
545
552
  return self.pubsub_subscriptions.callback, self.pubsub_subscriptions.context
546
553
  return None, None
@@ -569,7 +576,7 @@ class GlideClusterClientConfiguration(BaseClientConfiguration):
569
576
  For example::
570
577
 
571
578
  [
572
- {address:configuration-endpoint.use1.cache.amazonaws.com, port:6379}
579
+ NodeAddress("sample-address-0001.use1.cache.amazonaws.com", 6379),
573
580
  ]
574
581
 
575
582
  use_tls (bool): True if communication with the cluster should use Transport Level Security.
@@ -634,7 +641,7 @@ class GlideClusterClientConfiguration(BaseClientConfiguration):
634
641
  Attributes:
635
642
  channels_and_patterns (Dict[GlideClusterClientConfiguration.PubSubChannelModes, Set[str]]):
636
643
  Channels and patterns by modes.
637
- callback (Optional[Callable[[CoreCommands.PubSubMsg, Any], None]]):
644
+ callback (Optional[Callable[[PubSubMsg, Any], None]]):
638
645
  Optional callback to accept the incoming messages.
639
646
  context (Any):
640
647
  Arbitrary context to pass to the callback.
@@ -643,7 +650,7 @@ class GlideClusterClientConfiguration(BaseClientConfiguration):
643
650
  channels_and_patterns: Dict[
644
651
  GlideClusterClientConfiguration.PubSubChannelModes, Set[str]
645
652
  ]
646
- callback: Optional[Callable[[CoreCommands.PubSubMsg, Any], None]]
653
+ callback: Optional[Callable[[PubSubMsg, Any], None]]
647
654
  context: Any
648
655
 
649
656
  def __init__(
@@ -725,7 +732,7 @@ class GlideClusterClientConfiguration(BaseClientConfiguration):
725
732
 
726
733
  def _get_pubsub_callback_and_context(
727
734
  self,
728
- ) -> Tuple[Optional[Callable[[CoreCommands.PubSubMsg, Any], None]], Any]:
735
+ ) -> Tuple[Optional[Callable[[PubSubMsg, Any], None]], Any]:
729
736
  if self.pubsub_subscriptions:
730
737
  return self.pubsub_subscriptions.callback, self.pubsub_subscriptions.context
731
738
  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 glide.protobuf.command_request_pb2 import CommandRequest
6
- from glide.protobuf.connection_request_pb2 import ConnectionRequest
7
- from glide.routes import ByAddressRoute, RandomNode, SlotIdRoute, SlotKeyRoute
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)
@@ -3,9 +3,13 @@
3
3
  from enum import Enum
4
4
  from typing import Optional
5
5
 
6
- from glide.exceptions import RequestError
7
- from glide.protobuf.command_request_pb2 import CommandRequest, SimpleRoutes
8
- from glide.protobuf.command_request_pb2 import SlotTypes as ProtoSlotTypes
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 set_protobuf_route(request: CommandRequest, route: Optional[Route]) -> None:
132
+ def build_protobuf_route(route: Optional[Route]) -> Optional[Routes]:
129
133
  if route is None:
130
- return
131
- elif isinstance(route, AllNodes):
132
- request.route.simple_routes = SimpleRoutes.AllNodes
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
- request.route.simple_routes = SimpleRoutes.AllPrimaries
140
+ protobuf_route.simple_routes = SimpleRoutes.AllPrimaries
135
141
  elif isinstance(route, RandomNode):
136
- request.route.simple_routes = SimpleRoutes.Random
142
+ protobuf_route.simple_routes = SimpleRoutes.Random
137
143
  elif isinstance(route, SlotKeyRoute):
138
- request.route.slot_key_route.slot_type = to_protobuf_slot_type(route.slot_type)
139
- request.route.slot_key_route.slot_key = route.slot_key
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
- request.route.slot_id_route.slot_type = to_protobuf_slot_type(route.slot_type)
142
- request.route.slot_id_route.slot_id = route.slot_id
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
- request.route.by_address_route.host = route.host
145
- request.route.by_address_route.port = route.port
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)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: valkey-glide
3
- Version: 2.0.1
3
+ Version: 2.1.0rc1
4
4
  Classifier: Topic :: Database
5
5
  Classifier: Topic :: Utilities
6
6
  Classifier: License :: OSI Approved :: Apache Software License
@@ -9,13 +9,10 @@ Classifier: Topic :: Software Development
9
9
  Classifier: Programming Language :: Rust
10
10
  Classifier: Programming Language :: Python :: Implementation :: CPython
11
11
  Classifier: Programming Language :: Python :: Implementation :: PyPy
12
- Classifier: Framework :: AsyncIO
13
- Classifier: Framework :: Trio
14
- Classifier: Framework :: AnyIO
15
12
  Requires-Dist: anyio>=4.9.0
13
+ Requires-Dist: protobuf>=6.20
16
14
  Requires-Dist: typing-extensions>=4.8.0; python_version < '3.11'
17
- Requires-Dist: protobuf>=3.20
18
- Summary: An open source Valkey client library that supports Valkey and Redis open source 6.2, 7.0, 7.2 and 8.0.
15
+ Summary: Valkey GLIDE Async client. Supports Valkey and Redis OSS.
19
16
  Author: Valkey GLIDE Maintainers
20
17
  License: Apache-2.0
21
18
  Requires-Python: >=3.9
@@ -76,67 +73,131 @@ Valkey GLIDE transparently supports both the `asyncio` and `trio` concurrency fr
76
73
 
77
74
  ## Installation and Setup
78
75
 
79
- ### Installing via Package Manager (pip)
76
+ ### Async Client
80
77
 
81
- To install Valkey GLIDE using `pip`, follow these steps:
78
+ To install the async version:
82
79
 
83
- 1. Open your terminal.
84
- 2. Execute the command below:
85
- ```bash
86
- $ pip install valkey-glide
87
- ```
88
- 3. After installation, confirm the client is accessible by running:
89
- ```bash
90
- $ python3
91
- >>> import glide
92
- ```
80
+ ```bash
81
+ pip install valkey-glide
82
+ ```
83
+
84
+ Verify installation:
85
+
86
+ ```bash
87
+ python3
88
+ >>> import glide
89
+ ```
90
+
91
+ ### ✅ Sync Client
92
+
93
+ To install the sync version:
94
+
95
+ ```bash
96
+ pip install valkey-glide-sync
97
+ ```
98
+
99
+ Verify installation:
100
+
101
+ ```bash
102
+ python3
103
+ >>> import glide_sync
104
+ ```
105
+
106
+ ---
93
107
 
94
108
  ## Basic Examples
95
109
 
96
- #### Cluster Mode:
97
-
98
- ```python:
99
- >>> import asyncio
100
- >>> from glide import GlideClusterClientConfiguration, NodeAddress, GlideClusterClient
101
- >>> async def test_cluster_client():
102
- ... addresses = [NodeAddress("address.example.com", 6379)]
103
- ... # It is recommended to set a timeout for your specific use case
104
- ... config = GlideClusterClientConfiguration(addresses, request_timeout=500) # 500ms timeout
105
- ... client = await GlideClusterClient.create(config)
106
- ... set_result = await client.set("foo", "bar")
107
- ... print(f"Set response is {set_result}")
108
- ... get_result = await client.get("foo")
109
- ... print(f"Get response is {get_result}")
110
- ...
111
- >>> asyncio.run(test_cluster_client())
112
- Set response is OK
113
- Get response is bar
110
+ ### 🔁 Async Client
111
+
112
+ ### ✅ Async Cluster Mode
113
+
114
+ ```python
115
+ import asyncio
116
+ from glide import GlideClusterClientConfiguration, NodeAddress, GlideClusterClient
117
+
118
+ async def test_cluster_client():
119
+ addresses = [NodeAddress("address.example.com", 6379)]
120
+ # It is recommended to set a timeout for your specific use case
121
+ config = GlideClusterClientConfiguration(addresses, request_timeout=500) # 500ms timeout
122
+ client = await GlideClusterClient.create(config)
123
+ set_result = await client.set("foo", "bar")
124
+ print(f"Set response is {set_result}")
125
+ get_result = await client.get("foo")
126
+ print(f"Get response is {get_result}")
127
+
128
+ asyncio.run(test_cluster_client())
114
129
  ```
115
130
 
116
- #### Standalone Mode:
117
-
118
- ```python:
119
- >>> import asyncio
120
- >>> from glide import GlideClientConfiguration, NodeAddress, GlideClient
121
- >>> async def test_standalone_client():
122
- ... addresses = [
123
- ... NodeAddress("server_primary.example.com", 6379),
124
- ... NodeAddress("server_replica.example.com", 6379)
125
- ... ]
126
- ... # It is recommended to set a timeout for your specific use case
127
- ... config = GlideClientConfiguration(addresses, request_timeout=500) # 500ms timeout
128
- ... client = await GlideClient.create(config)
129
- ... set_result = await client.set("foo", "bar")
130
- ... print(f"Set response is {set_result}")
131
- ... get_result = await client.get("foo")
132
- ... print(f"Get response is {get_result}")
133
- ...
134
- >>> asyncio.run(test_standalone_client())
135
- Set response is OK
136
- Get response is bar
131
+ #### ✅ Async Standalone Mode
132
+
133
+ ```python
134
+ import asyncio
135
+ from glide import GlideClientConfiguration, NodeAddress, GlideClient
136
+
137
+ async def test_standalone_client():
138
+ addresses = [
139
+ NodeAddress("server_primary.example.com", 6379),
140
+ NodeAddress("server_replica.example.com", 6379)
141
+ ]
142
+ # It is recommended to set a timeout for your specific use case
143
+ config = GlideClientConfiguration(addresses, request_timeout=500) # 500ms timeout
144
+ client = await GlideClient.create(config)
145
+ set_result = await client.set("foo", "bar")
146
+ print(f"Set response is {set_result}")
147
+ get_result = await client.get("foo")
148
+ print(f"Get response is {get_result}")
149
+
150
+ asyncio.run(test_standalone_client())
137
151
  ```
138
152
 
139
- For complete examples with error handling, please refer to the [cluster example](https://github.com/valkey-io/valkey-glide/blob/main/examples/python/cluster_example.py) and the [standalone example](https://github.com/valkey-io/valkey-glide/blob/main/examples/python/standalone_example.py).
153
+ ---
154
+
155
+ ### 🔂 Sync Client
156
+
157
+ #### ✅ Sync Cluster Mode
158
+
159
+ ```python
160
+ from glide_sync import GlideClusterClientConfiguration, NodeAddress, GlideClusterClient
161
+
162
+ def test_cluster_client():
163
+ addresses = [NodeAddress("address.example.com", 6379)]
164
+ # It is recommended to set a timeout for your specific use case
165
+ config = GlideClusterClientConfiguration(addresses, request_timeout=500) # 500ms timeout
166
+ client = GlideClusterClient.create(config)
167
+ set_result = client.set("foo", "bar")
168
+ print(f"Set response is {set_result}")
169
+ get_result = client.get("foo")
170
+ print(f"Get response is {get_result}")
171
+
172
+ test_cluster_client()
173
+ ```
174
+
175
+ #### ✅ Sync Standalone Mode
176
+
177
+ ```python
178
+ from glide_sync import GlideClientConfiguration, NodeAddress, GlideClient
179
+
180
+ def test_standalone_client():
181
+ addresses = [
182
+ NodeAddress("server_primary.example.com", 6379),
183
+ NodeAddress("server_replica.example.com", 6379)
184
+ ]
185
+ # It is recommended to set a timeout for your specific use case
186
+ config = GlideClientConfiguration(addresses, request_timeout=500) # 500ms timeout
187
+ client = GlideClient.create(config)
188
+ set_result = client.set("foo", "bar")
189
+ print(f"Set response is {set_result}")
190
+ get_result = client.get("foo")
191
+ print(f"Get response is {get_result}")
192
+
193
+ test_standalone_client()
194
+ ```
195
+
196
+ ---
197
+
198
+ For complete examples with error handling, please refer to:
199
+ - [Async Cluster Example](https://github.com/valkey-io/valkey-glide/blob/main/examples/python/cluster_example.py)
200
+ - [Async Standalone Example](https://github.com/valkey-io/valkey-glide/blob/main/examples/python/standalone_example.py)
140
201
 
141
202
 
142
203
  ### Building & Testing
@@ -0,0 +1,39 @@
1
+ valkey_glide-2.1.0rc1.dist-info/METADATA,sha256=v7AgJh9V4StYLicWgwcc-iXu88rs7lgWMF_eAGVwHlQ,6978
2
+ valkey_glide-2.1.0rc1.dist-info/WHEEL,sha256=IJlM2Xh3vRQbalygYiwksbDWr8IZ2NUICKQxwJgJ2EQ,106
3
+ glide/async_commands/glide_json.py,sha256=H5dnB4vJkGPpNXJZhhVyPQoTSbkN_chq5Xw6tkP0wMQ,60410
4
+ glide/async_commands/ft.py,sha256=1v96sBCgiXtPbj85ZurY3ruLCmok3cPoaIXSiJBEv9Y,16849
5
+ glide/async_commands/__init__.py,sha256=_tbTAFATlzp4L2qe-H77PpAQK-16VsV-y7uKNUKLC_o,136
6
+ glide/async_commands/core.py,sha256=RdfOTxpvgY4sQsSL3PqHi-05CV_AmDhsZad-ALg4EHU,328057
7
+ glide/async_commands/standalone_commands.py,sha256=y6hH6iE4ngAJlB9JTa1y_ZHRmM1MDMvWQKOHghyN73E,39450
8
+ glide/async_commands/cluster_commands.py,sha256=Lji6eo2LaoXwy4Ha3e6bcGOHyMQHdDBiSQLt1kf9gGo,60129
9
+ glide/__init__.py,sha256=r0VyTcuIdVzXTTZW6TmWwCsTCIg54ciyba1iDM8PFVQ,7055
10
+ glide/glide.pyi,sha256=6JIpAeADQ-1fU1Mp99pyh7aJORDxAAdtQebV5aByIVI,2093
11
+ glide/opentelemetry.py,sha256=vg9fTYXj7_rni7hVBkZBJ1ZN4-RSGde5fOH4DsnVx_4,7476
12
+ glide/glide_client.py,sha256=4RKpPvaci7XmlFgoI5s__P3dATk8sM2QcpUBFnFVq78,32405
13
+ glide/logger.py,sha256=5-bAhfH_6hYEXdcgBR9R_wdeffSLHqEN-aQeIyMHnYY,4103
14
+ glide_shared/__init__.py,sha256=Jgl61tWsX5n1F1a5_rxPvWBuMkBYtJ7gCLFRDPwGV8o,7141
15
+ glide_shared/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
+ glide_shared/commands/batch.py,sha256=HxvswR5epj2A9nx-i69xzlO0L3jRWQNAfOg9pmmg3dE,246833
17
+ glide_shared/commands/batch_options.py,sha256=i2lDCLhMzUvpArb2bxX16xu7X-im0hLPaLXALkxWeQ8,11130
18
+ glide_shared/commands/bitmap.py,sha256=ZHGLcKBP7RADtANqIR7PWdIW_gfDBFgpkIsQ-T4QFBQ,10125
19
+ glide_shared/commands/command_args.py,sha256=55vpSxeQr8wFU7olkFTEecl66wPk1g6vWxVYj16UvXs,2529
20
+ glide_shared/commands/core_options.py,sha256=Y_1dFbW50hIHl16xkF4gnJnX_o2_f8neyXNjmc8KCKA,12607
21
+ glide_shared/commands/server_modules/ft_options/ft_aggregate_options.py,sha256=8b3sfsASS3Dr4eSNeRtn28gx8PjrRPOhoXZyoOmVF18,9928
22
+ glide_shared/commands/server_modules/ft_options/ft_constants.py,sha256=r9uLAExg2qThjwOBC8LxqXBITF0fwa5xfnD7EXnyPrw,1704
23
+ glide_shared/commands/server_modules/ft_options/ft_create_options.py,sha256=ll8AQPRe0_v10BdQXfCdN03bml3TEYbTWdaV3L5J_QU,13738
24
+ glide_shared/commands/server_modules/ft_options/ft_profile_options.py,sha256=yIapUTI_f7EI75BcVff9GpAZTT_GD1HS7QVhqjnyV6k,4283
25
+ glide_shared/commands/server_modules/ft_options/ft_search_options.py,sha256=imrnNhBaVsYjlknQpqitXDePoF8sXYdqQS4Ek_DXf7w,4872
26
+ glide_shared/commands/server_modules/json_batch.py,sha256=uqkLXPCOkzp53GfffnII1xA9ga0DefLYPnQ8ta899HE,36651
27
+ glide_shared/commands/server_modules/json_options.py,sha256=0dFk3EEtcERpmkNoO8930MqfEHLVaQRBRcg3CpL7nmE,3042
28
+ glide_shared/commands/sorted_set.py,sha256=hnXud0Ewn1uBdM6T2xzfCneZWfTeP-2U0XfEDGNCqlI,11466
29
+ glide_shared/commands/stream.py,sha256=MlllDP3teVX8BOB4ANb0JFC4RkUp8SQLCGlGMSPU_s4,15589
30
+ glide_shared/config.py,sha256=UvbRFMSVC8rVux895RG9mLsiIC_8waavc3OfM5bnUQs,33108
31
+ glide_shared/constants.py,sha256=pS7Xbjvq_qG3mlolVf51cCAGzXRhGdhvGIs2QK3R_b4,4375
32
+ glide_shared/exceptions.py,sha256=Z_szeAE-m1gsoBr5bPQymF6W6wiaunoHvBrt1dHbiYw,1852
33
+ glide_shared/protobuf/command_request_pb2.py,sha256=AHS04ukttbfhXQtEsW5_wAPUS6TzGMd5uqcrSt7lWJo,19320
34
+ glide_shared/protobuf/connection_request_pb2.py,sha256=b3jDmMetSHUrZGmQd8b5DooZZQ_eIbcWvbu1nFgVW7Y,5365
35
+ glide_shared/protobuf/response_pb2.py,sha256=oT2GHUwjrxvBVdINRKCvb3_BFN0Fq2wqwHbTj7KAX2E,2110
36
+ glide_shared/protobuf_codec.py,sha256=xwt4-D4WbvNIY_vjOd-00c73HOyNjWq7nN-Z718PBVA,3667
37
+ glide_shared/routes.py,sha256=HFccxCzXQXSi6Y1HFsRUm9ZcbJgCrar6y6uOWpGJWe0,4746
38
+ glide/glide.cpython-312-darwin.so,sha256=DdBG-35KgEBoM0MIvDrss5Ejg_W2UhACFf2MD9BuFzo,9941248
39
+ valkey_glide-2.1.0rc1.dist-info/RECORD,,