22
33from itertools import chain
44
5- from .compat import (byte_type , decode_from_bytes , encode_to_bytes , shsplit ,
6- text_type )
5+ from .compat import byte_type , decode_from_bytes , encode_to_bytes , shsplit , text_type
76from .mocket import Mocket , MocketEntry
87
98
@@ -21,38 +20,45 @@ class Redisizer(byte_type):
2120 @staticmethod
2221 def tokens (iterable ):
2322 iterable = [encode_to_bytes (x ) for x in iterable ]
24- return [
25- '*{0}' .format (len (iterable )).encode ('utf-8' )
26- ] + list (
27- chain (* zip (['${0}' .format (len (x )).encode ('utf-8' ) for x in iterable ], iterable ))
23+ return ["*{0}" .format (len (iterable )).encode ("utf-8" )] + list (
24+ chain (
25+ * zip (
26+ ["${0}" .format (len (x )).encode ("utf-8" ) for x in iterable ], iterable
27+ )
28+ )
2829 )
2930
3031 @staticmethod
3132 def redisize (data ):
3233 def get_conversion (t ):
3334 return {
34- dict : lambda x : b'\r \n ' .join (Redisizer .tokens (list (chain (* tuple (x .items ()))))),
35- int : lambda x : ':{0}' .format (x ).encode ('utf-8' ),
36- text_type : lambda x : '${0}\r \n {1}' .format (len (x .encode ('utf-8' )), x ).encode ('utf-8' ),
37- list : lambda x : b'\r \n ' .join (Redisizer .tokens (x )),
35+ dict : lambda x : b"\r \n " .join (
36+ Redisizer .tokens (list (chain (* tuple (x .items ()))))
37+ ),
38+ int : lambda x : ":{0}" .format (x ).encode ("utf-8" ),
39+ text_type : lambda x : "${0}\r \n {1}" .format (
40+ len (x .encode ("utf-8" )), x
41+ ).encode ("utf-8" ),
42+ list : lambda x : b"\r \n " .join (Redisizer .tokens (x )),
3843 }[t ]
44+
3945 if isinstance (data , Redisizer ):
4046 return data
4147 if isinstance (data , byte_type ):
4248 data = decode_from_bytes (data )
43- return Redisizer (get_conversion (data .__class__ )(data ) + b' \r \n ' )
49+ return Redisizer (get_conversion (data .__class__ )(data ) + b" \r \n " )
4450
4551 @staticmethod
46- def command (description , _type = '+' ):
47- return Redisizer (' {0}{1}{2}' .format (_type , description , ' \r \n ' ).encode (' utf-8' ))
52+ def command (description , _type = "+" ):
53+ return Redisizer (" {0}{1}{2}" .format (_type , description , " \r \n " ).encode (" utf-8" ))
4854
4955 @staticmethod
5056 def error (description ):
51- return Redisizer .command (description , _type = '-' )
57+ return Redisizer .command (description , _type = "-" )
5258
5359
54- OK = Redisizer .command ('OK' )
55- QUEUED = Redisizer .command (' QUEUED' )
60+ OK = Redisizer .command ("OK" )
61+ QUEUED = Redisizer .command (" QUEUED" )
5662ERROR = Redisizer .error
5763
5864
@@ -61,7 +67,7 @@ class Entry(MocketEntry):
6167 response_cls = Response
6268
6369 def __init__ (self , addr , command , responses ):
64- super (Entry , self ).__init__ (addr or (' localhost' , 6379 ), responses )
70+ super (Entry , self ).__init__ (addr or (" localhost" , 6379 ), responses )
6571 d = shsplit (command )
6672 d [0 ] = d [0 ].upper ()
6773 self .command = Redisizer .tokens (d )
@@ -71,7 +77,10 @@ def can_handle(self, data):
7177
7278 @classmethod
7379 def register (cls , addr , command , * responses ):
74- responses = [cls .response_cls (r ) for r in responses ]
80+ responses = [
81+ r if isinstance (r , BaseException ) else cls .response_cls (r )
82+ for r in responses
83+ ]
7584 Mocket .register (cls (addr , command , responses ))
7685
7786 @classmethod
0 commit comments