Commit 13a2c279 authored by Fred Drake's avatar Fred Drake

Untabify to pass the -tt test.

parent 857c4c36
...@@ -44,27 +44,27 @@ HTTPS_PORT = 443 ...@@ -44,27 +44,27 @@ HTTPS_PORT = 443
class FakeSocket: class FakeSocket:
def __init__(self, sock, ssl): def __init__(self, sock, ssl):
self.__sock = sock self.__sock = sock
self.__ssl = ssl self.__ssl = ssl
return return
def makefile(self, mode): # hopefully, never have to write def makefile(self, mode): # hopefully, never have to write
msgbuf = "" msgbuf = ""
while 1: while 1:
try: try:
msgbuf = msgbuf + self.__ssl.read() msgbuf = msgbuf + self.__ssl.read()
except socket.sslerror, msg: except socket.sslerror, msg:
break break
return StringIO(msgbuf) return StringIO(msgbuf)
def send(self, stuff, flags = 0): def send(self, stuff, flags = 0):
return self.__ssl.write(stuff) return self.__ssl.write(stuff)
def recv(self, len = 1024, flags = 0): def recv(self, len = 1024, flags = 0):
return self.__ssl.read(len) return self.__ssl.read(len)
def __getattr__(self, attr): def __getattr__(self, attr):
return getattr(self.__sock, attr) return getattr(self.__sock, attr)
class HTTP: class HTTP:
"""This class manages a connection to an HTTP server.""" """This class manages a connection to an HTTP server."""
......
This diff is collapsed.
...@@ -30,8 +30,8 @@ import urllib ...@@ -30,8 +30,8 @@ import urllib
knownfiles = [ knownfiles = [
"/usr/local/etc/httpd/conf/mime.types", "/usr/local/etc/httpd/conf/mime.types",
"/usr/local/lib/netscape/mime.types", "/usr/local/lib/netscape/mime.types",
"/usr/local/etc/httpd/conf/mime.types", # Apache 1.2 "/usr/local/etc/httpd/conf/mime.types", # Apache 1.2
"/usr/local/etc/mime.types", # Apache 1.3 "/usr/local/etc/mime.types", # Apache 1.3
] ]
inited = 0 inited = 0
...@@ -56,24 +56,24 @@ def guess_type(url): ...@@ -56,24 +56,24 @@ def guess_type(url):
init() init()
scheme, url = urllib.splittype(url) scheme, url = urllib.splittype(url)
if scheme == 'data': if scheme == 'data':
# syntax of data URLs: # syntax of data URLs:
# dataurl := "data:" [ mediatype ] [ ";base64" ] "," data # dataurl := "data:" [ mediatype ] [ ";base64" ] "," data
# mediatype := [ type "/" subtype ] *( ";" parameter ) # mediatype := [ type "/" subtype ] *( ";" parameter )
# data := *urlchar # data := *urlchar
# parameter := attribute "=" value # parameter := attribute "=" value
# type/subtype defaults to "text/plain" # type/subtype defaults to "text/plain"
comma = string.find(url, ',') comma = string.find(url, ',')
if comma < 0: if comma < 0:
# bad data URL # bad data URL
return None, None return None, None
semi = string.find(url, ';', 0, comma) semi = string.find(url, ';', 0, comma)
if semi >= 0: if semi >= 0:
type = url[:semi] type = url[:semi]
else: else:
type = url[:comma] type = url[:comma]
if '=' in type or '/' not in type: if '=' in type or '/' not in type:
type = 'text/plain' type = 'text/plain'
return type, None # never compressed, so encoding is None return type, None # never compressed, so encoding is None
base, ext = posixpath.splitext(url) base, ext = posixpath.splitext(url)
while suffix_map.has_key(ext): while suffix_map.has_key(ext):
base, ext = posixpath.splitext(base + suffix_map[ext]) base, ext = posixpath.splitext(base + suffix_map[ext])
......
...@@ -332,11 +332,11 @@ class Message: ...@@ -332,11 +332,11 @@ class Message:
""" """
raw = [] raw = []
for h in self.getallmatchingheaders(name): for h in self.getallmatchingheaders(name):
if h[0] in ' \t': if h[0] in ' \t':
raw.append(h) raw.append(h)
else: else:
if raw: if raw:
raw.append(', ') raw.append(', ')
i = string.find(h, ':') i = string.find(h, ':')
if i > 0: if i > 0:
addr = h[i+1:] addr = h[i+1:]
...@@ -786,7 +786,7 @@ def dump_address_pair(pair): ...@@ -786,7 +786,7 @@ def dump_address_pair(pair):
_monthnames = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', _monthnames = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul',
'aug', 'sep', 'oct', 'nov', 'dec', 'aug', 'sep', 'oct', 'nov', 'dec',
'january', 'february', 'march', 'april', 'may', 'june', 'july', 'january', 'february', 'march', 'april', 'may', 'june', 'july',
'august', 'september', 'october', 'november', 'december'] 'august', 'september', 'october', 'november', 'december']
_daynames = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'] _daynames = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']
...@@ -837,16 +837,16 @@ def parsedate_tz(data): ...@@ -837,16 +837,16 @@ def parsedate_tz(data):
mm = _monthnames.index(mm)+1 mm = _monthnames.index(mm)+1
if mm > 12: mm = mm - 12 if mm > 12: mm = mm - 12
if dd[-1] == ',': if dd[-1] == ',':
dd = dd[:-1] dd = dd[:-1]
i = string.find(yy, ':') i = string.find(yy, ':')
if i > 0: if i > 0:
yy, tm = tm, yy yy, tm = tm, yy
if yy[-1] == ',': if yy[-1] == ',':
yy = yy[:-1] yy = yy[:-1]
if yy[0] not in string.digits: if yy[0] not in string.digits:
yy, tz = tz, yy yy, tz = tz, yy
if tm[-1] == ',': if tm[-1] == ',':
tm = tm[:-1] tm = tm[:-1]
tm = string.splitfields(tm, ':') tm = string.splitfields(tm, ':')
if len(tm) == 2: if len(tm) == 2:
[thh, tmm] = tm [thh, tmm] = tm
......
...@@ -10,19 +10,19 @@ are ordinary strings. ...@@ -10,19 +10,19 @@ are ordinary strings.
To summarize the interface (key is a string, data is an arbitrary To summarize the interface (key is a string, data is an arbitrary
object): object):
import shelve import shelve
d = shelve.open(filename) # open, with (g)dbm filename -- no suffix d = shelve.open(filename) # open, with (g)dbm filename -- no suffix
d[key] = data # store data at key (overwrites old data if d[key] = data # store data at key (overwrites old data if
# using an existing key) # using an existing key)
data = d[key] # retrieve data at key (raise KeyError if no data = d[key] # retrieve data at key (raise KeyError if no
# such key) # such key)
del d[key] # delete data stored at key (raises KeyError del d[key] # delete data stored at key (raises KeyError
# if no such key) # if no such key)
flag = d.has_key(key) # true if the key exists flag = d.has_key(key) # true if the key exists
list = d.keys() # a list of all existing keys (slow!) list = d.keys() # a list of all existing keys (slow!)
d.close() # close it d.close() # close it
Dependent on the implementation, closing a persistent dictionary may Dependent on the implementation, closing a persistent dictionary may
or may not be necessary to flush changes to disk. or may not be necessary to flush changes to disk.
...@@ -31,127 +31,127 @@ or may not be necessary to flush changes to disk. ...@@ -31,127 +31,127 @@ or may not be necessary to flush changes to disk.
# Try using cPickle and cStringIO if available. # Try using cPickle and cStringIO if available.
try: try:
from cPickle import Pickler, Unpickler from cPickle import Pickler, Unpickler
except ImportError: except ImportError:
from pickle import Pickler, Unpickler from pickle import Pickler, Unpickler
try: try:
from cStringIO import StringIO from cStringIO import StringIO
except ImportError: except ImportError:
from StringIO import StringIO from StringIO import StringIO
class Shelf: class Shelf:
"""Base class for shelf implementations. """Base class for shelf implementations.
This is initialized with a dictionary-like object. This is initialized with a dictionary-like object.
See the module's __doc__ string for an overview of the interface. See the module's __doc__ string for an overview of the interface.
""" """
def __init__(self, dict): def __init__(self, dict):
self.dict = dict self.dict = dict
def keys(self): def keys(self):
return self.dict.keys() return self.dict.keys()
def __len__(self): def __len__(self):
return len(self.dict) return len(self.dict)
def has_key(self, key): def has_key(self, key):
return self.dict.has_key(key) return self.dict.has_key(key)
def get(self, key, default=None): def get(self, key, default=None):
if self.dict.has_key(key): if self.dict.has_key(key):
return self[key] return self[key]
return default return default
def __getitem__(self, key): def __getitem__(self, key):
f = StringIO(self.dict[key]) f = StringIO(self.dict[key])
return Unpickler(f).load() return Unpickler(f).load()
def __setitem__(self, key, value): def __setitem__(self, key, value):
f = StringIO() f = StringIO()
p = Pickler(f) p = Pickler(f)
p.dump(value) p.dump(value)
self.dict[key] = f.getvalue() self.dict[key] = f.getvalue()
def __delitem__(self, key): def __delitem__(self, key):
del self.dict[key] del self.dict[key]
def close(self): def close(self):
try: try:
self.dict.close() self.dict.close()
except: except:
pass pass
self.dict = 0 self.dict = 0
def __del__(self): def __del__(self):
self.close() self.close()
def sync(self): def sync(self):
if hasattr(self.dict, 'sync'): if hasattr(self.dict, 'sync'):
self.dict.sync() self.dict.sync()
class BsdDbShelf(Shelf): class BsdDbShelf(Shelf):
"""Shelf implementation using the "BSD" db interface. """Shelf implementation using the "BSD" db interface.
This adds methods first(), next(), previous(), last() and This adds methods first(), next(), previous(), last() and
set_location() that have no counterpart in [g]dbm databases. set_location() that have no counterpart in [g]dbm databases.
The actual database must be opened using one of the "bsddb" The actual database must be opened using one of the "bsddb"
modules "open" routines (i.e. bsddb.hashopen, bsddb.btopen or modules "open" routines (i.e. bsddb.hashopen, bsddb.btopen or
bsddb.rnopen) and passed to the constructor. bsddb.rnopen) and passed to the constructor.
See the module's __doc__ string for an overview of the interface. See the module's __doc__ string for an overview of the interface.
""" """
def __init__(self, dict): def __init__(self, dict):
Shelf.__init__(self, dict) Shelf.__init__(self, dict)
def set_location(self, key): def set_location(self, key):
(key, value) = self.dict.set_location(key) (key, value) = self.dict.set_location(key)
f = StringIO(value) f = StringIO(value)
return (key, Unpickler(f).load()) return (key, Unpickler(f).load())
def next(self): def next(self):
(key, value) = self.dict.next() (key, value) = self.dict.next()
f = StringIO(value) f = StringIO(value)
return (key, Unpickler(f).load()) return (key, Unpickler(f).load())
def previous(self): def previous(self):
(key, value) = self.dict.previous() (key, value) = self.dict.previous()
f = StringIO(value) f = StringIO(value)
return (key, Unpickler(f).load()) return (key, Unpickler(f).load())
def first(self): def first(self):
(key, value) = self.dict.first() (key, value) = self.dict.first()
f = StringIO(value) f = StringIO(value)
return (key, Unpickler(f).load()) return (key, Unpickler(f).load())
def last(self): def last(self):
(key, value) = self.dict.last() (key, value) = self.dict.last()
f = StringIO(value) f = StringIO(value)
return (key, Unpickler(f).load()) return (key, Unpickler(f).load())
class DbfilenameShelf(Shelf): class DbfilenameShelf(Shelf):
"""Shelf implementation using the "anydbm" generic dbm interface. """Shelf implementation using the "anydbm" generic dbm interface.
This is initialized with the filename for the dbm database. This is initialized with the filename for the dbm database.
See the module's __doc__ string for an overview of the interface. See the module's __doc__ string for an overview of the interface.
""" """
def __init__(self, filename, flag='c'): def __init__(self, filename, flag='c'):
import anydbm import anydbm
Shelf.__init__(self, anydbm.open(filename, flag)) Shelf.__init__(self, anydbm.open(filename, flag))
def open(filename, flag='c'): def open(filename, flag='c'):
"""Open a persistent dictionary for reading and writing. """Open a persistent dictionary for reading and writing.
Argument is the filename for the dbm database. Argument is the filename for the dbm database.
See the module's __doc__ string for an overview of the interface. See the module's __doc__ string for an overview of the interface.
""" """
return DbfilenameShelf(filename, flag) return DbfilenameShelf(filename, flag)
...@@ -199,10 +199,10 @@ def atof(s): ...@@ -199,10 +199,10 @@ def atof(s):
""" """
if type(s) == _StringType: if type(s) == _StringType:
return _float(s) return _float(s)
else: else:
raise TypeError('argument 1: expected string, %s found' % raise TypeError('argument 1: expected string, %s found' %
type(s).__name__) type(s).__name__)
# Convert string to integer # Convert string to integer
def atoi(*args): def atoi(*args):
...@@ -217,18 +217,18 @@ def atoi(*args): ...@@ -217,18 +217,18 @@ def atoi(*args):
""" """
try: try:
s = args[0] s = args[0]
except IndexError: except IndexError:
raise TypeError('function requires at least 1 argument: %d given' % raise TypeError('function requires at least 1 argument: %d given' %
len(args)) len(args))
# Don't catch type error resulting from too many arguments to int(). The # Don't catch type error resulting from too many arguments to int(). The
# error message isn't compatible but the error type is, and this function # error message isn't compatible but the error type is, and this function
# is complicated enough already. # is complicated enough already.
if type(s) == _StringType: if type(s) == _StringType:
return _apply(_int, args) return _apply(_int, args)
else: else:
raise TypeError('argument 1: expected string, %s found' % raise TypeError('argument 1: expected string, %s found' %
type(s).__name__) type(s).__name__)
# Convert string to long integer # Convert string to long integer
...@@ -245,18 +245,18 @@ def atol(*args): ...@@ -245,18 +245,18 @@ def atol(*args):
""" """
try: try:
s = args[0] s = args[0]
except IndexError: except IndexError:
raise TypeError('function requires at least 1 argument: %d given' % raise TypeError('function requires at least 1 argument: %d given' %
len(args)) len(args))
# Don't catch type error resulting from too many arguments to long(). The # Don't catch type error resulting from too many arguments to long(). The
# error message isn't compatible but the error type is, and this function # error message isn't compatible but the error type is, and this function
# is complicated enough already. # is complicated enough already.
if type(s) == _StringType: if type(s) == _StringType:
return _apply(_long, args) return _apply(_long, args)
else: else:
raise TypeError('argument 1: expected string, %s found' % raise TypeError('argument 1: expected string, %s found' %
type(s).__name__) type(s).__name__)
# Left-justify a string # Left-justify a string
...@@ -298,8 +298,8 @@ def center(s, width): ...@@ -298,8 +298,8 @@ def center(s, width):
if n <= 0: return s if n <= 0: return s
half = n/2 half = n/2
if n%2 and width%2: if n%2 and width%2:
# This ensures that center(center(s, i), j) = center(s, j) # This ensures that center(center(s, i), j) = center(s, j)
half = half+1 half = half+1
return ' '*half + s + ' '*(n-half) return ' '*half + s + ' '*(n-half)
# Zero-fill a number, e.g., (12, 3) --> '012' and (-3, 3) --> '-03' # Zero-fill a number, e.g., (12, 3) --> '012' and (-3, 3) --> '-03'
...@@ -318,7 +318,7 @@ def zfill(x, width): ...@@ -318,7 +318,7 @@ def zfill(x, width):
if n >= width: return s if n >= width: return s
sign = '' sign = ''
if s[0] in ('-', '+'): if s[0] in ('-', '+'):
sign, s = s[0], s[1:] sign, s = s[0], s[1:]
return sign + '0'*(width-n) + s return sign + '0'*(width-n) + s
# Expand tabs in a string. # Expand tabs in a string.
...@@ -333,12 +333,12 @@ def expandtabs(s, tabsize=8): ...@@ -333,12 +333,12 @@ def expandtabs(s, tabsize=8):
""" """
res = line = '' res = line = ''
for c in s: for c in s:
if c == '\t': if c == '\t':
c = ' '*(tabsize - len(line) % tabsize) c = ' '*(tabsize - len(line) % tabsize)
line = line + c line = line + c
if c == '\n': if c == '\n':
res = res + line res = res + line
line = '' line = ''
return res + line return res + line
# Character translation through look-up table. # Character translation through look-up table.
...@@ -387,14 +387,14 @@ def maketrans(fromstr, tostr): ...@@ -387,14 +387,14 @@ def maketrans(fromstr, tostr):
""" """
if len(fromstr) != len(tostr): if len(fromstr) != len(tostr):
raise ValueError, "maketrans arguments must have same length" raise ValueError, "maketrans arguments must have same length"
global _idmapL global _idmapL
if not _idmapL: if not _idmapL:
_idmapL = map(None, _idmap) _idmapL = map(None, _idmap)
L = _idmapL[:] L = _idmapL[:]
fromstr = map(ord, fromstr) fromstr = map(ord, fromstr)
for i in range(len(fromstr)): for i in range(len(fromstr)):
L[fromstr[i]] = tostr[i] L[fromstr[i]] = tostr[i]
return joinfields(L, "") return joinfields(L, "")
# Substring replacement (global) # Substring replacement (global)
...@@ -428,4 +428,4 @@ try: ...@@ -428,4 +428,4 @@ try:
from strop import maketrans, lowercase, uppercase, whitespace from strop import maketrans, lowercase, uppercase, whitespace
letters = lowercase + uppercase letters = lowercase + uppercase
except ImportError: except ImportError:
pass # Use the original versions pass # Use the original versions
This diff is collapsed.
...@@ -56,7 +56,7 @@ def whichdb(filename): ...@@ -56,7 +56,7 @@ def whichdb(filename):
# BSD hash v2 has a 12-byte NULL pad in front of the file type # BSD hash v2 has a 12-byte NULL pad in front of the file type
try: try:
(magic,) = struct.unpack("=l", s16[-4:]) (magic,) = struct.unpack("=l", s16[-4:])
except struct.error: except struct.error:
return "" return ""
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment