45
45
46
46
"""
47
47
48
- from __future__ import print_function
49
48
50
49
import binascii
51
50
from datetime import timedelta
57
56
import time
58
57
import zlib
59
58
60
- import six
61
-
62
59
import pickle
63
60
64
61
@@ -211,7 +208,7 @@ def __init__(self, servers, debug=0, pickleProtocol=0,
211
208
be expected to take one parameter (the key) and return a new encoded
212
209
key as a result.
213
210
"""
214
- super (Client , self ).__init__ ()
211
+ super ().__init__ ()
215
212
self .debug = debug
216
213
self .dead_retry = dead_retry
217
214
self .socket_timeout = socket_timeout
@@ -251,9 +248,9 @@ def key_encoder(key):
251
248
252
249
def _encode_key (self , key ):
253
250
if isinstance (key , tuple ):
254
- if isinstance (key [1 ], six . text_type ):
251
+ if isinstance (key [1 ], str ):
255
252
return (key [0 ], key [1 ].encode ('utf8' ))
256
- elif isinstance (key , six . text_type ):
253
+ elif isinstance (key , str ):
257
254
return key .encode ('utf8' )
258
255
return key
259
256
@@ -318,11 +315,11 @@ def get_stats(self, stat_args=None):
318
315
if not s .connect ():
319
316
continue
320
317
if s .family == socket .AF_INET :
321
- name = '%s:%s (%s)' % (s .ip , s .port , s .weight )
318
+ name = '{}:{} ({})' . format (s .ip , s .port , s .weight )
322
319
elif s .family == socket .AF_INET6 :
323
- name = '[%s]:%s (%s)' % (s .ip , s .port , s .weight )
320
+ name = '[{}]:{} ({})' . format (s .ip , s .port , s .weight )
324
321
else :
325
- name = 'unix:%s (%s)' % (s .address , s .weight )
322
+ name = 'unix:{} ({})' . format (s .address , s .weight )
326
323
if not stat_args :
327
324
s .send_cmd ('stats' )
328
325
else :
@@ -347,11 +344,11 @@ def get_slab_stats(self):
347
344
if not s .connect ():
348
345
continue
349
346
if s .family == socket .AF_INET :
350
- name = '%s:%s (%s)' % (s .ip , s .port , s .weight )
347
+ name = '{}:{} ({})' . format (s .ip , s .port , s .weight )
351
348
elif s .family == socket .AF_INET6 :
352
- name = '[%s]:%s (%s)' % (s .ip , s .port , s .weight )
349
+ name = '[{}]:{} ({})' . format (s .ip , s .port , s .weight )
353
350
else :
354
- name = 'unix:%s (%s)' % (s .address , s .weight )
351
+ name = 'unix:{} ({})' . format (s .address , s .weight )
355
352
serverData = {}
356
353
data .append ((name , serverData ))
357
354
s .send_cmd ('stats slabs' )
@@ -385,11 +382,11 @@ def get_slabs(self):
385
382
if not s .connect ():
386
383
continue
387
384
if s .family == socket .AF_INET :
388
- name = '%s:%s (%s)' % (s .ip , s .port , s .weight )
385
+ name = '{}:{} ({})' . format (s .ip , s .port , s .weight )
389
386
elif s .family == socket .AF_INET6 :
390
- name = '[%s]:%s (%s)' % (s .ip , s .port , s .weight )
387
+ name = '[{}]:{} ({})' . format (s .ip , s .port , s .weight )
391
388
else :
392
- name = 'unix:%s (%s)' % (s .address , s .weight )
389
+ name = 'unix:{} ({})' . format (s .address , s .weight )
393
390
serverData = {}
394
391
data .append ((name , serverData ))
395
392
s .send_cmd ('stats items' )
@@ -450,7 +447,7 @@ def _get_server(self, key):
450
447
# print("(using server %s)" % server,)
451
448
return server , key
452
449
serverhash = str (serverhash ) + str (i )
453
- if isinstance (serverhash , six . text_type ):
450
+ if isinstance (serverhash , str ):
454
451
serverhash = serverhash .encode ('ascii' )
455
452
serverhash = serverHashFunction (serverhash )
456
453
return None , None
@@ -495,7 +492,7 @@ def delete_multi(self, keys, time=None, key_prefix='', noreply=False):
495
492
dead_servers = []
496
493
497
494
rc = 1
498
- for server in six . iterkeys ( server_keys ):
495
+ for server in server_keys . keys ( ):
499
496
bigcmd = []
500
497
write = bigcmd .append
501
498
if time is not None :
@@ -507,7 +504,7 @@ def delete_multi(self, keys, time=None, key_prefix='', noreply=False):
507
504
write (cmd )
508
505
try :
509
506
server .send_cmds (b'' .join (bigcmd ))
510
- except socket . error as msg :
507
+ except OSError as msg :
511
508
rc = 0
512
509
if isinstance (msg , tuple ):
513
510
msg = msg [1 ]
@@ -522,11 +519,11 @@ def delete_multi(self, keys, time=None, key_prefix='', noreply=False):
522
519
for server in dead_servers :
523
520
del server_keys [server ]
524
521
525
- for server , keys in six . iteritems ( server_keys ):
522
+ for server , keys in server_keys . items ( ):
526
523
try :
527
524
for key in keys :
528
525
server .expect (b"DELETED" )
529
- except socket . error as msg :
526
+ except OSError as msg :
530
527
if isinstance (msg , tuple ):
531
528
msg = msg [1 ]
532
529
server .mark_dead (msg )
@@ -557,8 +554,8 @@ def delete(self, key, noreply=False):
557
554
line = server .readline ()
558
555
if line and line .strip () in [b'DELETED' , b'NOT_FOUND' ]:
559
556
return 1
560
- self .debuglog ('delete expected DELETED or NOT_FOUND, got: %r' % (line , ))
561
- except socket . error as msg :
557
+ self .debuglog ('delete expected DELETED or NOT_FOUND, got: {!r}' . format (line ))
558
+ except OSError as msg :
562
559
if isinstance (msg , tuple ):
563
560
msg = msg [1 ]
564
561
server .mark_dead (msg )
@@ -593,8 +590,8 @@ def touch(self, key, time=0, noreply=False):
593
590
line = server .readline ()
594
591
if line and line .strip () in [b'TOUCHED' ]:
595
592
return 1
596
- self .debuglog ('touch expected TOUCHED, got: %r' % (line , ))
597
- except socket . error as msg :
593
+ self .debuglog ('touch expected TOUCHED, got: {!r}' . format (line ))
594
+ except OSError as msg :
598
595
if isinstance (msg , tuple ):
599
596
msg = msg [1 ]
600
597
server .mark_dead (msg )
@@ -668,7 +665,7 @@ def _incrdecr(self, cmd, key, delta, noreply=False):
668
665
if line is None or line .strip () == b'NOT_FOUND' :
669
666
return None
670
667
return int (line )
671
- except socket . error as msg :
668
+ except OSError as msg :
672
669
if isinstance (msg , tuple ):
673
670
msg = msg [1 ]
674
671
server .mark_dead (msg )
@@ -817,7 +814,7 @@ def _map_and_prefix_keys(self, key_iterable, key_prefix):
817
814
serverhash , key = orig_key
818
815
819
816
key = self ._encode_key (self .key_encoder (key ))
820
- if not isinstance (key , six . binary_type ):
817
+ if not isinstance (key , bytes ):
821
818
# set_multi supports int / long keys.
822
819
key = str (key ).encode ('utf8' )
823
820
bytes_orig_key = key
@@ -828,7 +825,7 @@ def _map_and_prefix_keys(self, key_iterable, key_prefix):
828
825
(serverhash , key_prefix + key ))
829
826
else :
830
827
key = self ._encode_key (self .key_encoder (orig_key ))
831
- if not isinstance (key , six . binary_type ):
828
+ if not isinstance (key , bytes ):
832
829
# set_multi supports int / long keys.
833
830
key = str (key ).encode ('utf8' )
834
831
bytes_orig_key = key
@@ -915,13 +912,13 @@ def set_multi(self, mapping, time=0, key_prefix='', min_compress_len=0,
915
912
self ._statlog ('set_multi' )
916
913
917
914
server_keys , prefixed_to_orig_key = self ._map_and_prefix_keys (
918
- six . iterkeys ( mapping ), key_prefix )
915
+ mapping . keys ( ), key_prefix )
919
916
920
917
# send out all requests on each server before reading anything
921
918
dead_servers = []
922
919
notstored = [] # original keys.
923
920
924
- for server in six . iterkeys ( server_keys ):
921
+ for server in server_keys . keys ( ):
925
922
bigcmd = []
926
923
write = bigcmd .append
927
924
try :
@@ -939,7 +936,7 @@ def set_multi(self, mapping, time=0, key_prefix='', min_compress_len=0,
939
936
else :
940
937
notstored .append (prefixed_to_orig_key [key ])
941
938
server .send_cmds (b'' .join (bigcmd ))
942
- except socket . error as msg :
939
+ except OSError as msg :
943
940
if isinstance (msg , tuple ):
944
941
msg = msg [1 ]
945
942
server .mark_dead (msg )
@@ -957,15 +954,15 @@ def set_multi(self, mapping, time=0, key_prefix='', min_compress_len=0,
957
954
if not server_keys :
958
955
return list (mapping .keys ())
959
956
960
- for server , keys in six . iteritems ( server_keys ):
957
+ for server , keys in server_keys . items ( ):
961
958
try :
962
959
for key in keys :
963
960
if server .readline () == b'STORED' :
964
961
continue
965
962
else :
966
963
# un-mangle.
967
964
notstored .append (prefixed_to_orig_key [key ])
968
- except (_Error , socket . error ) as msg :
965
+ except (_Error , OSError ) as msg :
969
966
if isinstance (msg , tuple ):
970
967
msg = msg [1 ]
971
968
server .mark_dead (msg )
@@ -982,9 +979,9 @@ def _val_to_store_info(self, val, min_compress_len):
982
979
# subclasses of native types (such as markup-safe strings) are pickled
983
980
# and restored as instances of the correct class.
984
981
val_type = type (val )
985
- if val_type == six . binary_type :
982
+ if val_type == bytes :
986
983
pass
987
- elif val_type == six . text_type :
984
+ elif val_type == str :
988
985
flags |= Client ._FLAG_TEXT
989
986
val = val .encode ('utf-8' )
990
987
elif val_type == int :
@@ -1054,7 +1051,7 @@ def _unsafe_set():
1054
1051
if noreply :
1055
1052
return True
1056
1053
return server .expect (b"STORED" , raise_exception = True ) == b"STORED"
1057
- except socket . error as msg :
1054
+ except OSError as msg :
1058
1055
if isinstance (msg , tuple ):
1059
1056
msg = msg [1 ]
1060
1057
server .mark_dead (msg )
@@ -1067,7 +1064,7 @@ def _unsafe_set():
1067
1064
try :
1068
1065
if server ._get_socket ():
1069
1066
return _unsafe_set ()
1070
- except (_ConnectionDeadError , socket . error ) as msg :
1067
+ except (_ConnectionDeadError , OSError ) as msg :
1071
1068
server .mark_dead (msg )
1072
1069
return 0
1073
1070
@@ -1105,7 +1102,7 @@ def _unsafe_get():
1105
1102
value = self ._recv_value (server , flags , rlen )
1106
1103
finally :
1107
1104
server .expect (b"END" , raise_exception = True )
1108
- except (_Error , socket . error ) as msg :
1105
+ except (_Error , OSError ) as msg :
1109
1106
if isinstance (msg , tuple ):
1110
1107
msg = msg [1 ]
1111
1108
server .mark_dead (msg )
@@ -1121,7 +1118,7 @@ def _unsafe_get():
1121
1118
if server .connect ():
1122
1119
return _unsafe_get ()
1123
1120
return None
1124
- except (_ConnectionDeadError , socket . error ) as msg :
1121
+ except (_ConnectionDeadError , OSError ) as msg :
1125
1122
server .mark_dead (msg )
1126
1123
return None
1127
1124
@@ -1201,11 +1198,11 @@ def get_multi(self, keys, key_prefix=''):
1201
1198
1202
1199
# send out all requests on each server before reading anything
1203
1200
dead_servers = []
1204
- for server in six . iterkeys ( server_keys ):
1201
+ for server in server_keys . keys ( ):
1205
1202
try :
1206
1203
fullcmd = b"get " + b" " .join (server_keys [server ])
1207
1204
server .send_cmd (fullcmd )
1208
- except socket . error as msg :
1205
+ except OSError as msg :
1209
1206
if isinstance (msg , tuple ):
1210
1207
msg = msg [1 ]
1211
1208
server .mark_dead (msg )
@@ -1216,7 +1213,7 @@ def get_multi(self, keys, key_prefix=''):
1216
1213
del server_keys [server ]
1217
1214
1218
1215
retvals = {}
1219
- for server in six . iterkeys ( server_keys ):
1216
+ for server in server_keys . keys ( ):
1220
1217
try :
1221
1218
line = server .readline ()
1222
1219
while line and line != b'END' :
@@ -1227,7 +1224,7 @@ def get_multi(self, keys, key_prefix=''):
1227
1224
# un-prefix returned key.
1228
1225
retvals [prefixed_to_orig_key [rkey ]] = val
1229
1226
line = server .readline ()
1230
- except (_Error , socket . error ) as msg :
1227
+ except (_Error , OSError ) as msg :
1231
1228
if isinstance (msg , tuple ):
1232
1229
msg = msg [1 ]
1233
1230
server .mark_dead (msg )
@@ -1316,7 +1313,7 @@ def check_key(self, key, key_extra_len=0):
1316
1313
# key is empty but there is some other component to key
1317
1314
return
1318
1315
1319
- if not isinstance (key , six . binary_type ):
1316
+ if not isinstance (key , bytes ):
1320
1317
raise Client .MemcachedKeyTypeError ("Key must be a binary string" )
1321
1318
1322
1319
if (self .server_max_key_length != 0 and len (key ) + key_extra_len > self .server_max_key_length ):
@@ -1328,7 +1325,7 @@ def check_key(self, key, key_extra_len=0):
1328
1325
"Control/space characters not allowed (key=%r)" % key )
1329
1326
1330
1327
1331
- class _Host ( object ) :
1328
+ class _Host :
1332
1329
1333
1330
def __init__ (self , host , debug = 0 , dead_retry = _DEAD_RETRY ,
1334
1331
socket_timeout = _SOCKET_TIMEOUT , flush_on_reconnect = 0 ):
@@ -1391,7 +1388,7 @@ def connect(self):
1391
1388
return 0
1392
1389
1393
1390
def mark_dead (self , reason ):
1394
- self .debuglog ("MemCache: %s: %s . Marking dead." % (self , reason ))
1391
+ self .debuglog ("MemCache: {}: {} . Marking dead." . format (self , reason ))
1395
1392
self .deaduntil = time .time () + self .dead_retry
1396
1393
if self .flush_on_reconnect :
1397
1394
self .flush_on_next_connect = 1
@@ -1410,7 +1407,7 @@ def _get_socket(self):
1410
1407
except socket .timeout as msg :
1411
1408
self .mark_dead ("connect: %s" % msg )
1412
1409
return None
1413
- except socket . error as msg :
1410
+ except OSError as msg :
1414
1411
if isinstance (msg , tuple ):
1415
1412
msg = msg [1 ]
1416
1413
self .mark_dead ("connect: %s" % msg )
@@ -1428,13 +1425,13 @@ def close_socket(self):
1428
1425
self .socket = None
1429
1426
1430
1427
def send_cmd (self , cmd ):
1431
- if isinstance (cmd , six . text_type ):
1428
+ if isinstance (cmd , str ):
1432
1429
cmd = cmd .encode ('utf8' )
1433
1430
self .socket .sendall (cmd + b'\r \n ' )
1434
1431
1435
1432
def send_cmds (self , cmds ):
1436
1433
"""cmds already has trailing \r \n 's applied."""
1437
- if isinstance (cmds , six . text_type ):
1434
+ if isinstance (cmds , str ):
1438
1435
cmds = cmds .encode ('utf8' )
1439
1436
self .socket .sendall (cmds )
1440
1437
@@ -1519,7 +1516,7 @@ def __str__(self):
1519
1516
elif self .family == socket .AF_INET6 :
1520
1517
return "inet6:[%s]:%d%s" % (self .address [0 ], self .address [1 ], d )
1521
1518
else :
1522
- return "unix:%s%s" % (self .address , d )
1519
+ return "unix:{}{}" . format (self .address , d )
1523
1520
1524
1521
1525
1522
def _doctest ():
@@ -1530,7 +1527,7 @@ def _doctest():
1530
1527
globs = {"mc" : mc }
1531
1528
results = doctest .testmod (memcache , globs = globs )
1532
1529
mc .disconnect_all ()
1533
- print ("Doctests: %s" % (results , ))
1530
+ print ("Doctests: {}" . format (results ))
1534
1531
if results .failed :
1535
1532
sys .exit (1 )
1536
1533
0 commit comments