[Python-checkins] python/dist/src/Lib rfc822.py,1.78,1.79

rhettinger at users.sourceforge.net rhettinger at users.sourceforge.net
Tue Feb 8 09:05:16 CET 2005


Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4108
Modified Files:
	rfc822.py 
Log Message:
Wholistic code cleanup / modernization:
* Use +=
* Replace loop logic with str.splitlines equivalent
* Don't use variable names that shadow tuple, list, and str
* Use dict.get instead of equivalent try/except
* Minor loop logic simplications
Index: rfc822.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/rfc822.py,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -d -r1.78 -r1.79
--- rfc822.py	22 Sep 2004 17:17:31 -0000	1.78
+++ rfc822.py	8 Feb 2005 08:05:13 -0000	1.79
@@ -90,8 +90,6 @@
 fp.tell()
 except (AttributeError, IOError):
 seekable = 0
- else:
- seekable = 1
 self.fp = fp
 self.seekable = seekable
 self.startofheaders = None
@@ -134,7 +132,7 @@
 """
 self.dict = {}
 self.unixfrom = ''
- self.headers = list = []
+ self.headers = lst = []
 self.status = ''
 headerseen = ""
 firstline = 1
@@ -161,7 +159,7 @@
 firstline = 0
 if headerseen and line[0] in ' \t':
 # It's a continuation line.
- list.append(line)
+ lst.append(line)
 x = (self.dict[headerseen] + "\n " + line.strip())
 self.dict[headerseen] = x.strip()
 continue
@@ -174,7 +172,7 @@
 headerseen = self.isheader(line)
 if headerseen:
 # It's a legal header line, save it.
- list.append(line)
+ lst.append(line)
 self.dict[headerseen] = line[len(headerseen)+1:].strip()
 continue
 else:
@@ -202,8 +200,7 @@
 i = line.find(':')
 if i > 0:
 return line[:i].lower()
- else:
- return None
+ return None
 
 def islast(self, line):
 """Determine whether a line is a legal end of RFC 2822 headers.
@@ -235,7 +232,7 @@
 """
 name = name.lower() + ':'
 n = len(name)
- list = []
+ lst = []
 hit = 0
 for line in self.headers:
 if line[:n].lower() == name:
@@ -243,8 +240,8 @@
 elif not line[:1].isspace():
 hit = 0
 if hit:
- list.append(line)
- return list
+ lst.append(line)
+ return lst
 
 def getfirstmatchingheader(self, name):
 """Get the first header line matching name.
@@ -254,7 +251,7 @@
 """
 name = name.lower() + ':'
 n = len(name)
- list = []
+ lst = []
 hit = 0
 for line in self.headers:
 if hit:
@@ -263,8 +260,8 @@
 elif line[:n].lower() == name:
 hit = 1
 if hit:
- list.append(line)
- return list
+ lst.append(line)
+ return lst
 
 def getrawheader(self, name):
 """A higher-level interface to getfirstmatchingheader().
@@ -275,11 +272,11 @@
 occur.
 """
 
- list = self.getfirstmatchingheader(name)
- if not list:
+ lst = self.getfirstmatchingheader(name)
+ if not lst:
 return None
- list[0] = list[0][len(name) + 1:]
- return ''.join(list)
+ lst[0] = lst[0][len(name) + 1:]
+ return ''.join(lst)
 
 def getheader(self, name, default=None):
 """Get the header value for a name.
@@ -288,10 +285,7 @@
 header value for a given header name, or None if it doesn't exist.
 This uses the dictionary version which finds the *last* such header.
 """
- try:
- return self.dict[name.lower()]
- except KeyError:
- return default
+ return self.dict.get(name.lower(), default)
 get = getheader
 
 def getheaders(self, name):
@@ -399,9 +393,8 @@
 del self[name] # Won't fail if it doesn't exist
 self.dict[name.lower()] = value
 text = name + ": " + value
- lines = text.split("\n")
- for line in lines:
- self.headers.append(line + "\n")
+ self.headers.extend(text.splitlines(True))
+ self.headers.append('\n')
 
 def __delitem__(self, name):
 """Delete all occurrences of a specific header, if it is present."""
@@ -411,7 +404,7 @@
 del self.dict[name]
 name = name + ':'
 n = len(name)
- list = []
+ lst = []
 hit = 0
 for i in range(len(self.headers)):
 line = self.headers[i]
@@ -420,8 +413,8 @@
 elif not line[:1].isspace():
 hit = 0
 if hit:
- list.append(i)
- for i in reversed(list):
+ lst.append(i)
+ for i in reversed(lst):
 del self.headers[i]
 
 def setdefault(self, name, default=""):
@@ -430,9 +423,8 @@
 return self.dict[lowername]
 else:
 text = name + ": " + default
- lines = text.split("\n")
- for line in lines:
- self.headers.append(line + "\n")
+ self.headers.extend(text.splitlines(True))
+ self.headers.append('\n')
 self.dict[lowername] = default
 return default
 
@@ -473,29 +465,28 @@
 # XXX The inverses of the parse functions may also be useful.
 
 
-def unquote(str):
+def unquote(s):
 """Remove quotes from a string."""
- if len(str) > 1:
- if str.startswith('"') and str.endswith('"'):
- return str[1:-1].replace('\\\\', '\\').replace('\\"', '"')
- if str.startswith('<') and str.endswith('>'):
- return str[1:-1]
- return str
+ if len(s) > 1:
+ if s.startswith('"') and s.endswith('"'):
+ return s[1:-1].replace('\\\\', '\\').replace('\\"', '"')
+ if s.startswith('<') and s.endswith('>'):
+ return s[1:-1]
+ return s
 
 
-def quote(str):
+def quote(s):
 """Add quotes around a string."""
- return str.replace('\\', '\\\\').replace('"', '\\"')
+ return s.replace('\\', '\\\\').replace('"', '\\"')
 
 
 def parseaddr(address):
 """Parse an address into a (realname, mailaddr) tuple."""
 a = AddressList(address)
- list = a.addresslist
- if not list:
+ lst = a.addresslist
+ if not lst:
 return (None, None)
- else:
- return list[0]
+ return lst[0]
 
 
 class AddrlistClass:
@@ -543,12 +534,10 @@
 Returns a list containing all of the addresses.
 """
 result = []
- while 1:
+ ad = self.getaddress()
+ while ad:
+ result += ad
 ad = self.getaddress()
- if ad:
- result += ad
- else:
- break
 return result
 
 def getaddress(self):
@@ -581,11 +570,11 @@
 returnlist = []
 
 fieldlen = len(self.field)
- self.pos = self.pos + 1
+ self.pos += 1
 while self.pos < len(self.field):
 self.gotonext()
 if self.pos < fieldlen and self.field[self.pos] == ';':
- self.pos = self.pos + 1
+ self.pos += 1
 break
 returnlist = returnlist + self.getaddress()
 
@@ -602,11 +591,11 @@
 if plist:
 returnlist = [(' '.join(self.commentlist), plist[0])]
 elif self.field[self.pos] in self.specials:
- self.pos = self.pos + 1
+ self.pos += 1
 
 self.gotonext()
 if self.pos < len(self.field) and self.field[self.pos] == ',':
- self.pos = self.pos + 1
+ self.pos += 1
 return returnlist
 
 def getrouteaddr(self):
@@ -618,7 +607,7 @@
 return
 
 expectroute = 0
- self.pos = self.pos + 1
+ self.pos += 1
 self.gotonext()
 adlist = ""
 while self.pos < len(self.field):
@@ -626,16 +615,16 @@
 self.getdomain()
 expectroute = 0
 elif self.field[self.pos] == '>':
- self.pos = self.pos + 1
+ self.pos += 1
 break
 elif self.field[self.pos] == '@':
- self.pos = self.pos + 1
+ self.pos += 1
 expectroute = 1
 elif self.field[self.pos] == ':':
- self.pos = self.pos + 1
+ self.pos += 1
 else:
 adlist = self.getaddrspec()
- self.pos = self.pos + 1
+ self.pos += 1
 break
 self.gotonext()
 
@@ -649,7 +638,7 @@
 while self.pos < len(self.field):
 if self.field[self.pos] == '.':
 aslist.append('.')
- self.pos = self.pos + 1
+ self.pos += 1
 elif self.field[self.pos] == '"':
 aslist.append('"%s"' % self.getquote())
 elif self.field[self.pos] in self.atomends:
@@ -661,7 +650,7 @@
 return ''.join(aslist)
 
 aslist.append('@')
- self.pos = self.pos + 1
+ self.pos += 1
 self.gotonext()
 return ''.join(aslist) + self.getdomain()
 
@@ -670,13 +659,13 @@
 sdlist = []
 while self.pos < len(self.field):
 if self.field[self.pos] in self.LWS:
- self.pos = self.pos + 1
+ self.pos += 1
 elif self.field[self.pos] == '(':
 self.commentlist.append(self.getcomment())
 elif self.field[self.pos] == '[':
 sdlist.append(self.getdomainliteral())
 elif self.field[self.pos] == '.':
- self.pos = self.pos + 1
+ self.pos += 1
 sdlist.append('.')
 elif self.field[self.pos] in self.atomends:
 break
@@ -701,13 +690,13 @@
 
 slist = ['']
 quote = 0
- self.pos = self.pos + 1
+ self.pos += 1
 while self.pos < len(self.field):
 if quote == 1:
 slist.append(self.field[self.pos])
 quote = 0
 elif self.field[self.pos] in endchars:
- self.pos = self.pos + 1
+ self.pos += 1
 break
 elif allowcomments and self.field[self.pos] == '(':
 slist.append(self.getcomment())
@@ -715,7 +704,7 @@
 quote = 1
 else:
 slist.append(self.field[self.pos])
- self.pos = self.pos + 1
+ self.pos += 1
 
 return ''.join(slist)
 
@@ -746,7 +735,7 @@
 if self.field[self.pos] in atomends:
 break
 else: atomlist.append(self.field[self.pos])
- self.pos = self.pos + 1
+ self.pos += 1
 
 return ''.join(atomlist)
 
@@ -761,7 +750,7 @@
 
 while self.pos < len(self.field):
 if self.field[self.pos] in self.LWS:
- self.pos = self.pos + 1
+ self.pos += 1
 elif self.field[self.pos] == '"':
 plist.append(self.getquote())
 elif self.field[self.pos] == '(':
@@ -930,16 +919,15 @@
 else:
 tzsign = 1
 tzoffset = tzsign * ( (tzoffset//100)*3600 + (tzoffset % 100)*60)
- tuple = (yy, mm, dd, thh, tmm, tss, 0, 1, 0, tzoffset)
- return tuple
+ return (yy, mm, dd, thh, tmm, tss, 0, 1, 0, tzoffset)
 
 
 def parsedate(data):
 """Convert a time string to a time tuple."""
 t = parsedate_tz(data)
- if type(t) == type( () ):
- return t[:9]
- else: return t
+ if t is None:
+ return t
+ return t[:9]
 
 
 def mktime_tz(data):
@@ -965,10 +953,10 @@
 timeval = time.time()
 timeval = time.gmtime(timeval)
 return "%s, %02d %s %04d %02d:%02d:%02d GMT" % (
- ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"][timeval[6]],
+ ("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")[timeval[6]],
 timeval[2],
- ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
- "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][timeval[1]-1],
+ ("Jan", "Feb", "Mar", "Apr", "May", "Jun",
+ "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")[timeval[1]-1],
 timeval[0], timeval[3], timeval[4], timeval[5])
 
 
@@ -1002,7 +990,7 @@
 m.rewindbody()
 n = 0
 while f.readline():
- n = n + 1
+ n += 1
 print 'Lines:', n
 print '-'*70
 print 'len =', len(m)


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /