Index: Lib/wave.py =================================================================== --- Lib/wave.py (revision 77309) +++ Lib/wave.py (working copy) @@ -384,7 +384,8 @@ def getcompname(self): return self._compname - def setparams(self, (nchannels, sampwidth, framerate, nframes, comptype, compname)): + def setparams(self, params): + nchannels, sampwidth, framerate, nframes, comptype, compname = params if self._datawritten: raise Error, 'cannot change parameters after starting to write' self.setnchannels(nchannels) Index: Lib/sunau.py =================================================================== --- Lib/sunau.py (revision 77309) +++ Lib/sunau.py (working copy) @@ -364,7 +364,8 @@ else: return 'not compressed' - def setparams(self, (nchannels, sampwidth, framerate, nframes, comptype, compname)): + def setparams(self, params): + nchannels, sampwidth, framerate, nframes, comptype, compname = params self.setnchannels(nchannels) self.setsampwidth(sampwidth) self.setframerate(framerate) Index: Lib/formatter.py =================================================================== --- Lib/formatter.py (revision 77309) +++ Lib/formatter.py (working copy) @@ -228,7 +228,8 @@ self.align = None self.writer.new_alignment(None) - def push_font(self, (size, i, b, tt)): + def push_font(self, font): + size, i, b, tt = font if self.softspace: self.hard_break = self.para_end = self.softspace = 0 self.nospace = 1 Index: Lib/webbrowser.py =================================================================== --- Lib/webbrowser.py (revision 77309) +++ Lib/webbrowser.py (working copy) @@ -650,7 +650,7 @@ for o, a in opts: if o == '-n': new_win = 1 elif o == '-t': new_win = 2 - if len(args) <> 1: + if len(args) != 1: print >>sys.stderr, usage sys.exit(1) Index: Lib/pstats.py =================================================================== --- Lib/pstats.py (revision 77309) +++ Lib/pstats.py (working copy) @@ -442,12 +442,12 @@ if nc == 0: print >> self.stream, ' '*8, else: - print >> self.stream, f8(tt/nc), + print >> self.stream, f8(float(tt)/nc), print >> self.stream, f8(ct), if cc == 0: print >> self.stream, ' '*8, else: - print >> self.stream, f8(ct/cc), + print >> self.stream, f8(float(ct)/cc), print >> self.stream, func_std_string(func) class TupleComp: Index: Lib/mailbox.py =================================================================== --- Lib/mailbox.py (revision 77309) +++ Lib/mailbox.py (working copy) @@ -18,7 +18,6 @@ import email import email.message import email.generator -import rfc822 import StringIO try: if sys.platform == 'os2emx': @@ -28,6 +27,13 @@ except ImportError: fcntl = None +import warnings +with warnings.catch_warnings(): + if sys.py3kwarning: + warnings.filterwarnings("ignore", ".*rfc822 has been removed", + DeprecationWarning) + import rfc822 + __all__ = [ 'Mailbox', 'Maildir', 'mbox', 'MH', 'Babyl', 'MMDF', 'Message', 'MaildirMessage', 'mboxMessage', 'MHMessage', 'BabylMessage', 'MMDFMessage', 'UnixMailbox', Index: Lib/pprint.py =================================================================== --- Lib/pprint.py (revision 77309) +++ Lib/pprint.py (working copy) @@ -35,6 +35,7 @@ """ import sys as _sys +import warnings from cStringIO import StringIO as _StringIO @@ -70,6 +71,13 @@ """Determine if object requires a recursive representation.""" return _safe_repr(object, {}, None, 0)[2] +def _sorted(iterable): + with warnings.catch_warnings(): + if _sys.py3kwarning: + warnings.filterwarnings("ignore", "comparing unequal types " + "not supported", DeprecationWarning) + return sorted(iterable) + class PrettyPrinter: def __init__(self, indent=1, width=80, depth=None, stream=None): """Handle pretty printing operations onto a stream using a set of @@ -144,8 +152,7 @@ if length: context[objid] = 1 indent = indent + self._indent_per_level - items = object.items() - items.sort() + items = _sorted(object.items()) key, ent = items[0] rep = self._repr(key, context, level) write(rep) @@ -181,7 +188,7 @@ return write('set([') endchar = '])' - object = sorted(object) + object = _sorted(object) indent += 4 elif issubclass(typ, frozenset): if not length: @@ -189,7 +196,7 @@ return write('frozenset([') endchar = '])' - object = sorted(object) + object = _sorted(object) indent += 10 else: write('(') @@ -274,7 +281,7 @@ append = components.append level += 1 saferepr = _safe_repr - for k, v in sorted(object.items()): + for k, v in _sorted(object.items()): krepr, kreadable, krecur = saferepr(k, context, maxlevels, level) vrepr, vreadable, vrecur = saferepr(v, context, maxlevels, level) append("%s: %s" % (krepr, vrepr)) Index: Lib/sets.py =================================================================== --- Lib/sets.py (revision 77309) +++ Lib/sets.py (working copy) @@ -54,29 +54,7 @@ # - Raymond Hettinger added a number of speedups and other # improvements. -from __future__ import generators -try: - from itertools import ifilter, ifilterfalse -except ImportError: - # Code to make the module run under Py2.2 - def ifilter(predicate, iterable): - if predicate is None: - def predicate(x): - return x - for x in iterable: - if predicate(x): - yield x - def ifilterfalse(predicate, iterable): - if predicate is None: - def predicate(x): - return x - for x in iterable: - if not predicate(x): - yield x - try: - True, False - except NameError: - True, False = (0==0, 0!=0) +from itertools import ifilter, ifilterfalse __all__ = ['BaseSet', 'Set', 'ImmutableSet'] @@ -235,7 +213,7 @@ little, big = self, other else: little, big = other, self - common = ifilter(big._data.has_key, little) + common = ifilter(big._data.__contains__, little) return self.__class__(common) def __xor__(self, other): @@ -260,9 +238,9 @@ otherdata = other._data except AttributeError: otherdata = Set(other)._data - for elt in ifilterfalse(otherdata.has_key, selfdata): + for elt in ifilterfalse(otherdata.__contains__, selfdata): data[elt] = value - for elt in ifilterfalse(selfdata.has_key, otherdata): + for elt in ifilterfalse(selfdata.__contains__, otherdata): data[elt] = value return result @@ -287,7 +265,7 @@ except AttributeError: otherdata = Set(other)._data value = True - for elt in ifilterfalse(otherdata.has_key, self): + for elt in ifilterfalse(otherdata.__contains__, self): data[elt] = value return result @@ -313,7 +291,7 @@ self._binary_sanity_check(other) if len(self) > len(other): # Fast check for obvious cases return False - for elt in ifilterfalse(other._data.has_key, self): + for elt in ifilterfalse(other._data.__contains__, self): return False return True @@ -322,7 +300,7 @@ self._binary_sanity_check(other) if len(self) < len(other): # Fast check for obvious cases return False - for elt in ifilterfalse(self._data.has_key, other): + for elt in ifilterfalse(self._data.__contains__, other): return False return True @@ -338,6 +316,9 @@ self._binary_sanity_check(other) return len(self) > len(other) and self.issuperset(other) + # We inherit object.__hash__, so we must deny this explicitly + __hash__ = None + # Assorted helpers def _binary_sanity_check(self, other): @@ -439,9 +420,6 @@ def __setstate__(self, data): self._data, = data - # We inherit object.__hash__, so we must deny this explicitly - __hash__ = None - # In-place union, intersection, differences. # Subtle: The xyz_update() functions deliberately return None, # as do all mutating operations on built-in container types. @@ -503,7 +481,7 @@ other = Set(other) if self is other: self.clear() - for elt in ifilter(data.has_key, other): + for elt in ifilter(data.__contains__, other): del data[elt] # Python dict-like mass mutations: update, clear Index: Lib/dbhash.py =================================================================== --- Lib/dbhash.py (revision 77309) +++ Lib/dbhash.py (working copy) @@ -3,7 +3,7 @@ import sys if sys.py3kwarning: import warnings - warnings.warnpy3k("in 3.x, dbhash has been removed", DeprecationWarning, 2) + warnings.warnpy3k("in 3.x, the dbhash module has been removed", DeprecationWarning, 2) try: import bsddb except ImportError: Index: Lib/binhex.py =================================================================== --- Lib/binhex.py (revision 77309) +++ Lib/binhex.py (working copy) @@ -170,7 +170,8 @@ del self.ofp class BinHex: - def __init__(self, (name, finfo, dlen, rlen), ofp): + def __init__(self, name_finfo_dlen_rlen, ofp): + name, finfo, dlen, rlen = name_finfo_dlen_rlen if type(ofp) == type(''): ofname = ofp ofp = open(ofname, 'w') Index: Lib/imputil.py =================================================================== --- Lib/imputil.py (revision 77309) +++ Lib/imputil.py (working copy) @@ -281,7 +281,8 @@ setattr(parent, modname, module) return module - def _process_result(self, (ispkg, code, values), fqname): + def _process_result(self, result, fqname): + ispkg, code, values = result # did get_code() return an actual module? (rather than a code object) is_module = isinstance(code, _ModuleType) Index: Lib/bsddb/__init__.py =================================================================== --- Lib/bsddb/__init__.py (revision 77309) +++ Lib/bsddb/__init__.py (working copy) @@ -44,7 +44,7 @@ if sys.py3kwarning: import warnings - warnings.warnpy3k("in 3.x, bsddb has been removed; " + warnings.warnpy3k("in 3.x, the bsddb module has been removed; " "please use the pybsddb project instead", DeprecationWarning, 2) Index: Lib/lib2to3/pgen2/tokenize.py =================================================================== --- Lib/lib2to3/pgen2/tokenize.py (revision 77309) +++ Lib/lib2to3/pgen2/tokenize.py (working copy) @@ -144,7 +144,9 @@ class StopTokenizing(Exception): pass -def printtoken(type, token, (srow, scol), (erow, ecol), line): # for testing +def printtoken(type, token, start, end, line): # for testing + (srow, scol) = start + (erow, ecol) = end print "%d,%d-%d,%d:\t%s\t%s" % \ (srow, scol, erow, ecol, tok_name[type], repr(token)) Index: Lib/unittest/case.py =================================================================== --- Lib/unittest/case.py (revision 77309) +++ Lib/unittest/case.py (working copy) @@ -746,9 +746,15 @@ # not hashable. expected = list(expected_seq) actual = list(actual_seq) - expected.sort() - actual.sort() - missing, unexpected = util.sorted_list_difference(expected, actual) + with warnings.catch_warnings(): + if sys.py3kwarning: + # Silence Py3k warning + warnings.filterwarnings("ignore", + "dict inequality comparisons " + "not supported", DeprecationWarning) + expected.sort() + actual.sort() + missing, unexpected = util.sorted_list_difference(expected, actual) errors = [] if missing: errors.append('Expected, but missing:\n %r' % missing)