@@ -90,8 +90,6 @@ def __init__(self, fp, seekable = 1):
9090 fp .tell ()
9191 except (AttributeError , IOError ):
9292 seekable = 0
93- else :
94- seekable = 1
9593 self .fp = fp
9694 self .seekable = seekable
9795 self .startofheaders = None
@@ -134,7 +132,7 @@ def readheaders(self):
134132 """
135133 self .dict = {}
136134 self .unixfrom = ''
137- self .headers = list = []
135+ self .headers = lst = []
138136 self .status = ''
139137 headerseen = ""
140138 firstline = 1
@@ -161,7 +159,7 @@ def readheaders(self):
161159 firstline = 0
162160 if headerseen and line [0 ] in ' \t ' :
163161 # It's a continuation line.
164- list .append (line )
162+ lst .append (line )
165163 x = (self .dict [headerseen ] + "\n " + line .strip ())
166164 self .dict [headerseen ] = x .strip ()
167165 continue
@@ -174,7 +172,7 @@ def readheaders(self):
174172 headerseen = self .isheader (line )
175173 if headerseen :
176174 # It's a legal header line, save it.
177- list .append (line )
175+ lst .append (line )
178176 self .dict [headerseen ] = line [len (headerseen )+ 1 :].strip ()
179177 continue
180178 else :
@@ -202,8 +200,7 @@ def isheader(self, line):
202200 i = line .find (':' )
203201 if i > 0 :
204202 return line [:i ].lower ()
205- else :
206- return None
203+ return None
207204
208205 def islast (self , line ):
209206 """Determine whether a line is a legal end of RFC 2822 headers.
@@ -235,16 +232,16 @@ def getallmatchingheaders(self, name):
235232 """
236233 name = name .lower () + ':'
237234 n = len (name )
238- list = []
235+ lst = []
239236 hit = 0
240237 for line in self .headers :
241238 if line [:n ].lower () == name :
242239 hit = 1
243240 elif not line [:1 ].isspace ():
244241 hit = 0
245242 if hit :
246- list .append (line )
247- return list
243+ lst .append (line )
244+ return lst
248245
249246 def getfirstmatchingheader (self , name ):
250247 """Get the first header line matching name.
@@ -254,7 +251,7 @@ def getfirstmatchingheader(self, name):
254251 """
255252 name = name .lower () + ':'
256253 n = len (name )
257- list = []
254+ lst = []
258255 hit = 0
259256 for line in self .headers :
260257 if hit :
@@ -263,8 +260,8 @@ def getfirstmatchingheader(self, name):
263260 elif line [:n ].lower () == name :
264261 hit = 1
265262 if hit :
266- list .append (line )
267- return list
263+ lst .append (line )
264+ return lst
268265
269266 def getrawheader (self , name ):
270267 """A higher-level interface to getfirstmatchingheader().
@@ -275,11 +272,11 @@ def getrawheader(self, name):
275272 occur.
276273 """
277274
278- list = self .getfirstmatchingheader (name )
279- if not list :
275+ lst = self .getfirstmatchingheader (name )
276+ if not lst :
280277 return None
281- list [0 ] = list [0 ][len (name ) + 1 :]
282- return '' .join (list )
278+ lst [0 ] = lst [0 ][len (name ) + 1 :]
279+ return '' .join (lst )
283280
284281 def getheader (self , name , default = None ):
285282 """Get the header value for a name.
@@ -288,10 +285,7 @@ def getheader(self, name, default=None):
288285 header value for a given header name, or None if it doesn't exist.
289286 This uses the dictionary version which finds the *last* such header.
290287 """
291- try :
292- return self .dict [name .lower ()]
293- except KeyError :
294- return default
288+ return self .dict .get (name .lower (), default )
295289 get = getheader
296290
297291 def getheaders (self , name ):
@@ -399,9 +393,8 @@ def __setitem__(self, name, value):
399393 del self [name ] # Won't fail if it doesn't exist
400394 self .dict [name .lower ()] = value
401395 text = name + ": " + value
402- lines = text .split ("\n " )
403- for line in lines :
404- self .headers .append (line + "\n " )
396+ self .headers .extend (text .splitlines (True ))
397+ self .headers .append ('\n ' )
405398
406399 def __delitem__ (self , name ):
407400 """Delete all occurrences of a specific header, if it is present."""
@@ -411,7 +404,7 @@ def __delitem__(self, name):
411404 del self .dict [name ]
412405 name = name + ':'
413406 n = len (name )
414- list = []
407+ lst = []
415408 hit = 0
416409 for i in range (len (self .headers )):
417410 line = self .headers [i ]
@@ -420,8 +413,8 @@ def __delitem__(self, name):
420413 elif not line [:1 ].isspace ():
421414 hit = 0
422415 if hit :
423- list .append (i )
424- for i in reversed (list ):
416+ lst .append (i )
417+ for i in reversed (lst ):
425418 del self .headers [i ]
426419
427420 def setdefault (self , name , default = "" ):
@@ -430,9 +423,8 @@ def setdefault(self, name, default=""):
430423 return self .dict [lowername ]
431424 else :
432425 text = name + ": " + default
433- lines = text .split ("\n " )
434- for line in lines :
435- self .headers .append (line + "\n " )
426+ self .headers .extend (text .splitlines (True ))
427+ self .headers .append ('\n ' )
436428 self .dict [lowername ] = default
437429 return default
438430
@@ -473,29 +465,28 @@ def __str__(self):
473465# XXX The inverses of the parse functions may also be useful.
474466
475467
476- def unquote (str ):
468+ def unquote (s ):
477469 """Remove quotes from a string."""
478- if len (str ) > 1 :
479- if str .startswith ('"' ) and str .endswith ('"' ):
480- return str [1 :- 1 ].replace ('\\ \\ ' , '\\ ' ).replace ('\\ "' , '"' )
481- if str .startswith ('<' ) and str .endswith ('>' ):
482- return str [1 :- 1 ]
483- return str
470+ if len (s ) > 1 :
471+ if s .startswith ('"' ) and s .endswith ('"' ):
472+ return s [1 :- 1 ].replace ('\\ \\ ' , '\\ ' ).replace ('\\ "' , '"' )
473+ if s .startswith ('<' ) and s .endswith ('>' ):
474+ return s [1 :- 1 ]
475+ return s
484476
485477
486- def quote (str ):
478+ def quote (s ):
487479 """Add quotes around a string."""
488- return str .replace ('\\ ' , '\\ \\ ' ).replace ('"' , '\\ "' )
480+ return s .replace ('\\ ' , '\\ \\ ' ).replace ('"' , '\\ "' )
489481
490482
491483def parseaddr (address ):
492484 """Parse an address into a (realname, mailaddr) tuple."""
493485 a = AddressList (address )
494- list = a .addresslist
495- if not list :
486+ lst = a .addresslist
487+ if not lst :
496488 return (None , None )
497- else :
498- return list [0 ]
489+ return lst [0 ]
499490
500491
501492class AddrlistClass :
@@ -543,12 +534,10 @@ def getaddrlist(self):
543534 Returns a list containing all of the addresses.
544535 """
545536 result = []
546- while 1 :
537+ ad = self .getaddress ()
538+ while ad :
539+ result += ad
547540 ad = self .getaddress ()
548- if ad :
549- result += ad
550- else :
551- break
552541 return result
553542
554543 def getaddress (self ):
@@ -581,11 +570,11 @@ def getaddress(self):
581570 returnlist = []
582571
583572 fieldlen = len (self .field )
584- self .pos = self . pos + 1
573+ self .pos += 1
585574 while self .pos < len (self .field ):
586575 self .gotonext ()
587576 if self .pos < fieldlen and self .field [self .pos ] == ';' :
588- self .pos = self . pos + 1
577+ self .pos += 1
589578 break
590579 returnlist = returnlist + self .getaddress ()
591580
@@ -602,11 +591,11 @@ def getaddress(self):
602591 if plist :
603592 returnlist = [(' ' .join (self .commentlist ), plist [0 ])]
604593 elif self .field [self .pos ] in self .specials :
605- self .pos = self . pos + 1
594+ self .pos += 1
606595
607596 self .gotonext ()
608597 if self .pos < len (self .field ) and self .field [self .pos ] == ',' :
609- self .pos = self . pos + 1
598+ self .pos += 1
610599 return returnlist
611600
612601 def getrouteaddr (self ):
@@ -618,24 +607,24 @@ def getrouteaddr(self):
618607 return
619608
620609 expectroute = 0
621- self .pos = self . pos + 1
610+ self .pos += 1
622611 self .gotonext ()
623612 adlist = ""
624613 while self .pos < len (self .field ):
625614 if expectroute :
626615 self .getdomain ()
627616 expectroute = 0
628617 elif self .field [self .pos ] == '>' :
629- self .pos = self . pos + 1
618+ self .pos += 1
630619 break
631620 elif self .field [self .pos ] == '@' :
632- self .pos = self . pos + 1
621+ self .pos += 1
633622 expectroute = 1
634623 elif self .field [self .pos ] == ':' :
635- self .pos = self . pos + 1
624+ self .pos += 1
636625 else :
637626 adlist = self .getaddrspec ()
638- self .pos = self . pos + 1
627+ self .pos += 1
639628 break
640629 self .gotonext ()
641630
@@ -649,7 +638,7 @@ def getaddrspec(self):
649638 while self .pos < len (self .field ):
650639 if self .field [self .pos ] == '.' :
651640 aslist .append ('.' )
652- self .pos = self . pos + 1
641+ self .pos += 1
653642 elif self .field [self .pos ] == '"' :
654643 aslist .append ('"%s"' % self .getquote ())
655644 elif self .field [self .pos ] in self .atomends :
@@ -661,7 +650,7 @@ def getaddrspec(self):
661650 return '' .join (aslist )
662651
663652 aslist .append ('@' )
664- self .pos = self . pos + 1
653+ self .pos += 1
665654 self .gotonext ()
666655 return '' .join (aslist ) + self .getdomain ()
667656
@@ -670,13 +659,13 @@ def getdomain(self):
670659 sdlist = []
671660 while self .pos < len (self .field ):
672661 if self .field [self .pos ] in self .LWS :
673- self .pos = self . pos + 1
662+ self .pos += 1
674663 elif self .field [self .pos ] == '(' :
675664 self .commentlist .append (self .getcomment ())
676665 elif self .field [self .pos ] == '[' :
677666 sdlist .append (self .getdomainliteral ())
678667 elif self .field [self .pos ] == '.' :
679- self .pos = self . pos + 1
668+ self .pos += 1
680669 sdlist .append ('.' )
681670 elif self .field [self .pos ] in self .atomends :
682671 break
@@ -701,21 +690,21 @@ def getdelimited(self, beginchar, endchars, allowcomments = 1):
701690
702691 slist = ['' ]
703692 quote = 0
704- self .pos = self . pos + 1
693+ self .pos += 1
705694 while self .pos < len (self .field ):
706695 if quote == 1 :
707696 slist .append (self .field [self .pos ])
708697 quote = 0
709698 elif self .field [self .pos ] in endchars :
710- self .pos = self . pos + 1
699+ self .pos += 1
711700 break
712701 elif allowcomments and self .field [self .pos ] == '(' :
713702 slist .append (self .getcomment ())
714703 elif self .field [self .pos ] == '\\ ' :
715704 quote = 1
716705 else :
717706 slist .append (self .field [self .pos ])
718- self .pos = self . pos + 1
707+ self .pos += 1
719708
720709 return '' .join (slist )
721710
@@ -746,7 +735,7 @@ def getatom(self, atomends=None):
746735 if self .field [self .pos ] in atomends :
747736 break
748737 else : atomlist .append (self .field [self .pos ])
749- self .pos = self . pos + 1
738+ self .pos += 1
750739
751740 return '' .join (atomlist )
752741
@@ -761,7 +750,7 @@ def getphraselist(self):
761750
762751 while self .pos < len (self .field ):
763752 if self .field [self .pos ] in self .LWS :
764- self .pos = self . pos + 1
753+ self .pos += 1
765754 elif self .field [self .pos ] == '"' :
766755 plist .append (self .getquote ())
767756 elif self .field [self .pos ] == '(' :
@@ -930,16 +919,15 @@ def parsedate_tz(data):
930919 else :
931920 tzsign = 1
932921 tzoffset = tzsign * ( (tzoffset // 100 )* 3600 + (tzoffset % 100 )* 60 )
933- tuple = (yy , mm , dd , thh , tmm , tss , 0 , 1 , 0 , tzoffset )
934- return tuple
922+ return (yy , mm , dd , thh , tmm , tss , 0 , 1 , 0 , tzoffset )
935923
936924
937925def parsedate (data ):
938926 """Convert a time string to a time tuple."""
939927 t = parsedate_tz (data )
940- if type ( t ) == type ( () ) :
941- return t [: 9 ]
942- else : return t
928+ if t is None :
929+ return t
930+ return t [: 9 ]
943931
944932
945933def mktime_tz (data ):
@@ -965,10 +953,10 @@ def formatdate(timeval=None):
965953 timeval = time .time ()
966954 timeval = time .gmtime (timeval )
967955 return "%s, %02d %s %04d %02d:%02d:%02d GMT" % (
968- [ "Mon" , "Tue" , "Wed" , "Thu" , "Fri" , "Sat" , "Sun" ] [timeval [6 ]],
956+ ( "Mon" , "Tue" , "Wed" , "Thu" , "Fri" , "Sat" , "Sun" ) [timeval [6 ]],
969957 timeval [2 ],
970- [ "Jan" , "Feb" , "Mar" , "Apr" , "May" , "Jun" ,
971- "Jul" , "Aug" , "Sep" , "Oct" , "Nov" , "Dec" ] [timeval [1 ]- 1 ],
958+ ( "Jan" , "Feb" , "Mar" , "Apr" , "May" , "Jun" ,
959+ "Jul" , "Aug" , "Sep" , "Oct" , "Nov" , "Dec" ) [timeval [1 ]- 1 ],
972960 timeval [0 ], timeval [3 ], timeval [4 ], timeval [5 ])
973961
974962
@@ -1002,7 +990,7 @@ def formatdate(timeval=None):
1002990 m .rewindbody ()
1003991 n = 0
1004992 while f .readline ():
1005- n = n + 1
993+ n += 1
1006994 print 'Lines:' , n
1007995 print '-' * 70
1008996 print 'len =' , len (m )
0 commit comments