@@ -379,14 +379,9 @@ async def on_connect(self, connection: Connection) -> None:
379379 if  str_if_bytes (await  connection .read_response_without_lock ()) !=  "OK" :
380380 raise  ConnectionError ("READONLY command failed" )
381381
382-  def  get_node (
383-  self ,
384-  host : Optional [str ] =  None ,
385-  port : Optional [int ] =  None ,
386-  node_name : Optional [str ] =  None ,
387-  ) ->  Optional ["ClusterNode" ]:
388-  """Get node by (host, port) or node_name.""" 
389-  return  self .nodes_manager .get_node (host , port , node_name )
382+  def  get_nodes (self ) ->  List ["ClusterNode" ]:
383+  """Get all nodes of the cluster.""" 
384+  return  list (self .nodes_manager .nodes_cache .values ())
390385
391386 def  get_primaries (self ) ->  List ["ClusterNode" ]:
392387 """Get the primary nodes of the cluster.""" 
@@ -400,9 +395,29 @@ def get_random_node(self) -> "ClusterNode":
400395 """Get a random node of the cluster.""" 
401396 return  random .choice (list (self .nodes_manager .nodes_cache .values ()))
402397
403-  def  get_nodes (self ) ->  List ["ClusterNode" ]:
404-  """Get all nodes of the cluster.""" 
405-  return  list (self .nodes_manager .nodes_cache .values ())
398+  def  get_default_node (self ) ->  "ClusterNode" :
399+  """Get the default node of the client.""" 
400+  return  self .nodes_manager .default_node 
401+ 
402+  def  set_default_node (self , node : "ClusterNode" ) ->  None :
403+  """ 
404+  Set the default node of the client. 
405+ 
406+  :raises DataError: if None is passed or node does not exist in cluster. 
407+  """ 
408+  if  not  node  or  not  self .get_node (node_name = node .name ):
409+  raise  DataError ("The requested node does not exist in the cluster." )
410+ 
411+  self .nodes_manager .default_node  =  node 
412+ 
413+  def  get_node (
414+  self ,
415+  host : Optional [str ] =  None ,
416+  port : Optional [int ] =  None ,
417+  node_name : Optional [str ] =  None ,
418+  ) ->  Optional ["ClusterNode" ]:
419+  """Get node by (host, port) or node_name.""" 
420+  return  self .nodes_manager .get_node (host , port , node_name )
406421
407422 def  get_node_from_key (
408423 self , key : str , replica : bool  =  False 
@@ -413,6 +428,7 @@ def get_node_from_key(
413428 :param key: 
414429 :param replica: 
415430 | Indicates if a replica should be returned 
431+  | 
416432 None will returned if no replica holds this key 
417433
418434 :raises SlotNotCoveredError: if the key is not covered by any slot. 
@@ -431,24 +447,13 @@ def get_node_from_key(
431447
432448 return  slot_cache [node_idx ]
433449
434-  def  get_default_node (self ) ->  "ClusterNode" :
435-  """Get the default node of the client.""" 
436-  return  self .nodes_manager .default_node 
437- 
438-  def  set_default_node (self , node : "ClusterNode" ) ->  None :
450+  def  keyslot (self , key : EncodableT ) ->  int :
439451 """ 
440-  Set  the default node of the client . 
452+  Find  the keyslot for a given key . 
441453
442-  :raises DataError: if None is passed or node does not exist in cluster.  
454+  See: https://redis.io/docs/manual/scaling/#redis-cluster-data-sharding  
443455 """ 
444-  if  not  node  or  not  self .get_node (node_name = node .name ):
445-  raise  DataError ("The requested node does not exist in the cluster." )
446- 
447-  self .nodes_manager .default_node  =  node 
448- 
449-  def  set_response_callback (self , command : str , callback : ResponseCallbackT ) ->  None :
450-  """Set a custom response callback.""" 
451-  self .response_callbacks [command ] =  callback 
456+  return  key_slot (self .encoder .encode (key ))
452457
453458 def  get_encoder (self ) ->  Encoder :
454459 """Get the encoder object of the client.""" 
@@ -458,14 +463,9 @@ def get_connection_kwargs(self) -> Dict[str, Optional[Any]]:
458463 """Get the kwargs passed to :class:`~redis.asyncio.connection.Connection`.""" 
459464 return  self .connection_kwargs 
460465
461-  def  keyslot (self , key : EncodableT ) ->  int :
462-  """ 
463-  Find the keyslot for a given key. 
464- 
465-  See: https://redis.io/docs/manual/scaling/#redis-cluster-data-sharding 
466-  """ 
467-  k  =  self .encoder .encode (key )
468-  return  key_slot (k )
466+  def  set_response_callback (self , command : str , callback : ResponseCallbackT ) ->  None :
467+  """Set a custom response callback.""" 
468+  self .response_callbacks [command ] =  callback 
469469
470470 async  def  _determine_nodes (
471471 self , command : str , * args : Any , node_flag : Optional [str ] =  None 
@@ -776,7 +776,6 @@ def __init__(
776776 server_type : Optional [str ] =  None ,
777777 max_connections : int  =  2 ** 31 ,
778778 connection_class : Type [Connection ] =  Connection ,
779-  response_callbacks : Dict [str , Any ] =  RedisCluster .RESPONSE_CALLBACKS ,
780779 ** connection_kwargs : Any ,
781780 ) ->  None :
782781 if  host  ==  "localhost" :
@@ -792,7 +791,9 @@ def __init__(
792791 self .max_connections  =  max_connections 
793792 self .connection_class  =  connection_class 
794793 self .connection_kwargs  =  connection_kwargs 
795-  self .response_callbacks  =  response_callbacks 
794+  self .response_callbacks  =  connection_kwargs .pop (
795+  "response_callbacks" , RedisCluster .RESPONSE_CALLBACKS 
796+  )
796797
797798 self ._connections : List [Connection ] =  []
798799 self ._free : Deque [Connection ] =  collections .deque (maxlen = self .max_connections )
0 commit comments