mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
upgrade to Jython 2.5.0
This commit is contained in:
+84
-87
@@ -90,8 +90,6 @@ class Message:
|
||||
fp.tell()
|
||||
except (AttributeError, IOError):
|
||||
seekable = 0
|
||||
else:
|
||||
seekable = 1
|
||||
self.fp = fp
|
||||
self.seekable = seekable
|
||||
self.startofheaders = None
|
||||
@@ -134,7 +132,7 @@ class Message:
|
||||
"""
|
||||
self.dict = {}
|
||||
self.unixfrom = ''
|
||||
self.headers = list = []
|
||||
self.headers = lst = []
|
||||
self.status = ''
|
||||
headerseen = ""
|
||||
firstline = 1
|
||||
@@ -161,7 +159,7 @@ class Message:
|
||||
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 @@ class Message:
|
||||
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 @@ class Message:
|
||||
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.
|
||||
@@ -222,7 +219,7 @@ class Message:
|
||||
data in RFC 2822-like formats that support embedded comments or
|
||||
free-text data.
|
||||
"""
|
||||
return None
|
||||
return False
|
||||
|
||||
def getallmatchingheaders(self, name):
|
||||
"""Find all header lines matching a given header name.
|
||||
@@ -235,7 +232,7 @@ class Message:
|
||||
"""
|
||||
name = name.lower() + ':'
|
||||
n = len(name)
|
||||
list = []
|
||||
lst = []
|
||||
hit = 0
|
||||
for line in self.headers:
|
||||
if line[:n].lower() == name:
|
||||
@@ -243,8 +240,8 @@ class Message:
|
||||
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 @@ class Message:
|
||||
"""
|
||||
name = name.lower() + ':'
|
||||
n = len(name)
|
||||
list = []
|
||||
lst = []
|
||||
hit = 0
|
||||
for line in self.headers:
|
||||
if hit:
|
||||
@@ -263,8 +260,8 @@ class Message:
|
||||
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 @@ class Message:
|
||||
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 @@ class Message:
|
||||
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):
|
||||
@@ -351,8 +345,8 @@ class Message:
|
||||
addr = h[i+1:]
|
||||
raw.append(addr)
|
||||
alladdrs = ''.join(raw)
|
||||
a = AddrlistClass(alladdrs)
|
||||
return a.getaddrlist()
|
||||
a = AddressList(alladdrs)
|
||||
return a.addresslist
|
||||
|
||||
def getdate(self, name):
|
||||
"""Retrieve a date field from a header.
|
||||
@@ -399,19 +393,18 @@ class Message:
|
||||
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:
|
||||
for line in text.split("\n"):
|
||||
self.headers.append(line + "\n")
|
||||
|
||||
def __delitem__(self, name):
|
||||
"""Delete all occurrences of a specific header, if it is present."""
|
||||
name = name.lower()
|
||||
if not self.dict.has_key(name):
|
||||
if not name in self.dict:
|
||||
return
|
||||
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,26 +413,31 @@ class Message:
|
||||
elif not line[:1].isspace():
|
||||
hit = 0
|
||||
if hit:
|
||||
list.append(i)
|
||||
list.reverse()
|
||||
for i in list:
|
||||
lst.append(i)
|
||||
for i in reversed(lst):
|
||||
del self.headers[i]
|
||||
|
||||
def setdefault(self, name, default=""):
|
||||
lowername = name.lower()
|
||||
if self.dict.has_key(lowername):
|
||||
if lowername in self.dict:
|
||||
return self.dict[lowername]
|
||||
else:
|
||||
text = name + ": " + default
|
||||
lines = text.split("\n")
|
||||
for line in lines:
|
||||
for line in text.split("\n"):
|
||||
self.headers.append(line + "\n")
|
||||
self.dict[lowername] = default
|
||||
return default
|
||||
|
||||
def has_key(self, name):
|
||||
"""Determine whether a message contains the named header."""
|
||||
return self.dict.has_key(name.lower())
|
||||
return name.lower() in self.dict
|
||||
|
||||
def __contains__(self, name):
|
||||
"""Determine whether a message contains the named header."""
|
||||
return name.lower() in self.dict
|
||||
|
||||
def __iter__(self):
|
||||
return iter(self.dict)
|
||||
|
||||
def keys(self):
|
||||
"""Get all of a message's header field names."""
|
||||
@@ -457,10 +455,7 @@ class Message:
|
||||
return self.dict.items()
|
||||
|
||||
def __str__(self):
|
||||
str = ''
|
||||
for hdr in self.headers:
|
||||
str = str + hdr
|
||||
return str
|
||||
return ''.join(self.headers)
|
||||
|
||||
|
||||
# Utility functions
|
||||
@@ -470,29 +465,28 @@ class Message:
|
||||
# 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[0] == '"' and str[-1:] == '"':
|
||||
return str[1:-1]
|
||||
if str[0] == '<' and str[-1:] == '>':
|
||||
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:
|
||||
@@ -540,12 +534,10 @@ class AddrlistClass:
|
||||
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):
|
||||
@@ -578,11 +570,11 @@ class AddrlistClass:
|
||||
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()
|
||||
|
||||
@@ -599,11 +591,11 @@ class AddrlistClass:
|
||||
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):
|
||||
@@ -615,7 +607,7 @@ class AddrlistClass:
|
||||
return
|
||||
|
||||
expectroute = 0
|
||||
self.pos = self.pos + 1
|
||||
self.pos += 1
|
||||
self.gotonext()
|
||||
adlist = ""
|
||||
while self.pos < len(self.field):
|
||||
@@ -623,16 +615,16 @@ class AddrlistClass:
|
||||
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()
|
||||
|
||||
@@ -646,7 +638,7 @@ class AddrlistClass:
|
||||
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:
|
||||
@@ -658,7 +650,7 @@ class AddrlistClass:
|
||||
return ''.join(aslist)
|
||||
|
||||
aslist.append('@')
|
||||
self.pos = self.pos + 1
|
||||
self.pos += 1
|
||||
self.gotonext()
|
||||
return ''.join(aslist) + self.getdomain()
|
||||
|
||||
@@ -667,13 +659,13 @@ class AddrlistClass:
|
||||
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
|
||||
@@ -698,21 +690,22 @@ class AddrlistClass:
|
||||
|
||||
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())
|
||||
continue # have already advanced pos from getcomment
|
||||
elif self.field[self.pos] == '\\':
|
||||
quote = 1
|
||||
else:
|
||||
slist.append(self.field[self.pos])
|
||||
self.pos = self.pos + 1
|
||||
self.pos += 1
|
||||
|
||||
return ''.join(slist)
|
||||
|
||||
@@ -743,7 +736,7 @@ class AddrlistClass:
|
||||
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)
|
||||
|
||||
@@ -758,7 +751,7 @@ class AddrlistClass:
|
||||
|
||||
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] == '(':
|
||||
@@ -861,6 +854,11 @@ def parsedate_tz(data):
|
||||
if data[0][-1] in (',', '.') or data[0].lower() in _daynames:
|
||||
# There's a dayname here. Skip it
|
||||
del data[0]
|
||||
else:
|
||||
# no space after the "weekday,"?
|
||||
i = data[0].rfind(',')
|
||||
if i >= 0:
|
||||
data[0] = data[0][i+1:]
|
||||
if len(data) == 3: # RFC 850 date, deprecated
|
||||
stuff = data[0].split('-')
|
||||
if len(stuff) == 3:
|
||||
@@ -912,7 +910,7 @@ def parsedate_tz(data):
|
||||
return None
|
||||
tzoffset = None
|
||||
tz = tz.upper()
|
||||
if _timezones.has_key(tz):
|
||||
if tz in _timezones:
|
||||
tzoffset = _timezones[tz]
|
||||
else:
|
||||
try:
|
||||
@@ -927,16 +925,15 @@ def parsedate_tz(data):
|
||||
else:
|
||||
tzsign = 1
|
||||
tzoffset = tzsign * ( (tzoffset//100)*3600 + (tzoffset % 100)*60)
|
||||
tuple = (yy, mm, dd, thh, tmm, tss, 0, 0, 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):
|
||||
@@ -962,10 +959,10 @@ def formatdate(timeval=None):
|
||||
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])
|
||||
|
||||
|
||||
@@ -999,12 +996,12 @@ if __name__ == '__main__':
|
||||
m.rewindbody()
|
||||
n = 0
|
||||
while f.readline():
|
||||
n = n + 1
|
||||
n += 1
|
||||
print 'Lines:', n
|
||||
print '-'*70
|
||||
print 'len =', len(m)
|
||||
if m.has_key('Date'): print 'Date =', m['Date']
|
||||
if m.has_key('X-Nonsense'): pass
|
||||
if 'Date' in m: print 'Date =', m['Date']
|
||||
if 'X-Nonsense' in m: pass
|
||||
print 'keys =', m.keys()
|
||||
print 'values =', m.values()
|
||||
print 'items =', m.items()
|
||||
|
||||
Reference in New Issue
Block a user