Author: raymond.hettinger Date: Wed Jan 30 03:55:10 2008 New Revision: 60434
Modified: python/branches/py3k/Lib/bsddb/dbtables.py python/branches/py3k/Lib/bsddb/test/test_compare.py python/branches/py3k/Lib/ctypes/util.py python/branches/py3k/Lib/idlelib/MultiCall.py python/branches/py3k/Lib/idlelib/TreeWidget.py python/branches/py3k/Lib/pyclbr.py python/branches/py3k/Lib/pydoc.py python/branches/py3k/Lib/tarfile.py python/branches/py3k/Lib/unittest.py python/branches/py3k/Tools/pynche/ColorDB.py python/branches/py3k/Tools/scripts/finddiv.py python/branches/py3k/Tools/unicode/makeunicodedata.py Log: Convert some custom sort comparison functions to equivalent key functions. Modified: python/branches/py3k/Lib/bsddb/dbtables.py ============================================================================== --- python/branches/py3k/Lib/bsddb/dbtables.py (original) +++ python/branches/py3k/Lib/bsddb/dbtables.py Wed Jan 30 03:55:10 2008 @@ -88,6 +88,15 @@ def __call__(self, s): return self.re.match(s.decode(self.encoding)) +def CmpToKey(mycmp): + 'Convert a cmp= function into a key= function' + class K(object): + def __init__(self, obj, *args): + self.obj = obj + def __lt__(self, other): + return mycmp(self.obj, other.obj) == -1 + return K + # # keys used to store database metadata # @@ -587,7 +596,7 @@ return 0 conditionlist = list(conditions.items()) - conditionlist.sort(cmp_conditions) + conditionlist.sort(key=CmpToKey(cmp_conditions)) # Apply conditions to column data to find what we want cur = self.db.cursor() Modified: python/branches/py3k/Lib/bsddb/test/test_compare.py ============================================================================== --- python/branches/py3k/Lib/bsddb/test/test_compare.py (original) +++ python/branches/py3k/Lib/bsddb/test/test_compare.py Wed Jan 30 03:55:10 2008 @@ -32,10 +32,20 @@ _expected_lowercase_test_data = [s.encode('ascii') for s in ('', 'a', 'aaa', 'b', 'c', 'CC', 'cccce', 'ccccf', 'CCCP')] + +def CmpToKey(mycmp): + 'Convert a cmp= function into a key= function' + class K(object): + def __init__(self, obj, *args): + self.obj = obj + def __lt__(self, other): + return mycmp(self.obj, other.obj) == -1 + return K + class ComparatorTests (unittest.TestCase): def comparator_test_helper (self, comparator, expected_data): data = expected_data[:] - data.sort (comparator) + data.sort (key=CmpToKey(comparator)) self.failUnless (data == expected_data, "comparator `%s' is not right: %s vs. %s" % (comparator, expected_data, data)) Modified: python/branches/py3k/Lib/ctypes/util.py ============================================================================== --- python/branches/py3k/Lib/ctypes/util.py (original) +++ python/branches/py3k/Lib/ctypes/util.py Wed Jan 30 03:55:10 2008 @@ -123,7 +123,7 @@ res = re.findall(expr, data) if not res: return _get_soname(_findLib_gcc(name)) - res.sort(cmp= lambda x,y: cmp(_num_version(x), _num_version(y))) + res.sort(key=_num_version) return res[-1] else: Modified: python/branches/py3k/Lib/idlelib/MultiCall.py ============================================================================== --- python/branches/py3k/Lib/idlelib/MultiCall.py (original) +++ python/branches/py3k/Lib/idlelib/MultiCall.py Wed Jan 30 03:55:10 2008 @@ -125,7 +125,7 @@ statelist = [] for state in states: substates = list(set(state & x for x in states)) - substates.sort(lambda a,b: nbits(b) - nbits(a)) + substates.sort(key=nbits, reverse=True) statelist.append(substates) return statelist Modified: python/branches/py3k/Lib/idlelib/TreeWidget.py ============================================================================== --- python/branches/py3k/Lib/idlelib/TreeWidget.py (original) +++ python/branches/py3k/Lib/idlelib/TreeWidget.py Wed Jan 30 03:55:10 2008 @@ -398,7 +398,7 @@ names = os.listdir(self.path) except os.error: return [] - names.sort(lambda a, b: cmp(os.path.normcase(a), os.path.normcase(b))) + names.sort(key = os.path.normcase) sublist = [] for name in names: item = FileTreeItem(os.path.join(self.path, name)) Modified: python/branches/py3k/Lib/pyclbr.py ============================================================================== --- python/branches/py3k/Lib/pyclbr.py (original) +++ python/branches/py3k/Lib/pyclbr.py Wed Jan 30 03:55:10 2008 @@ -324,8 +324,7 @@ path = [] dict = readmodule_ex(mod, path) objs = dict.values() - objs.sort(lambda a, b: cmp(getattr(a, 'lineno', 0), - getattr(b, 'lineno', 0))) + objs.sort(key=lambda a: getattr(a, 'lineno', 0)) for obj in objs: if isinstance(obj, Class): print("class", obj.name, obj.super, obj.lineno) Modified: python/branches/py3k/Lib/pydoc.py ============================================================================== --- python/branches/py3k/Lib/pydoc.py (original) +++ python/branches/py3k/Lib/pydoc.py Wed Jan 30 03:55:10 2008 @@ -797,10 +797,7 @@ tag += ':<br>\n' # Sort attrs by name. - try: - attrs.sort(key=lambda t: t[0]) - except TypeError: - attrs.sort(lambda t1, t2: cmp(t1[0], t2[0])) # 2.3 compat + attrs.sort(key=lambda t: t[0]) # Pump out the attrs, segregated by kind. attrs = spill('Methods %s' % tag, attrs, Modified: python/branches/py3k/Lib/tarfile.py ============================================================================== --- python/branches/py3k/Lib/tarfile.py (original) +++ python/branches/py3k/Lib/tarfile.py Wed Jan 30 03:55:10 2008 @@ -2016,7 +2016,7 @@ self.extract(tarinfo, path) # Reverse sort directories. - directories.sort(lambda a, b: cmp(a.name, b.name)) + directories.sort(key=lambda a: a.name) directories.reverse() # Set correct owner, mtime and filemode on directories. Modified: python/branches/py3k/Lib/unittest.py ============================================================================== --- python/branches/py3k/Lib/unittest.py (original) +++ python/branches/py3k/Lib/unittest.py Wed Jan 30 03:55:10 2008 @@ -504,6 +504,15 @@ # Locating and loading tests ############################################################################## +def CmpToKey(mycmp): + 'Convert a cmp= function into a key= function' + class K(object): + def __init__(self, obj, *args): + self.obj = obj + def __lt__(self, other): + return mycmp(self.obj, other.obj) == -1 + return K + class TestLoader: """This class is responsible for loading tests according to various criteria and returning them wrapped in a TestSuite @@ -598,7 +607,7 @@ and hasattr(getattr(testCaseClass, attrname), '__call__') testFnNames = list(filter(isTestMethod, dir(testCaseClass))) if self.sortTestMethodsUsing: - testFnNames.sort(self.sortTestMethodsUsing) + testFnNames.sort(key=CmpToKey(self.sortTestMethodsUsing)) return testFnNames Modified: python/branches/py3k/Tools/pynche/ColorDB.py ============================================================================== --- python/branches/py3k/Tools/pynche/ColorDB.py (original) +++ python/branches/py3k/Tools/pynche/ColorDB.py Wed Jan 30 03:55:10 2008 @@ -122,10 +122,7 @@ self.__allnames = [] for name, aliases in self.__byrgb.values(): self.__allnames.append(name) - # sort irregardless of case - def nocase_cmp(n1, n2): - return cmp(n1.lower(), n2.lower()) - self.__allnames.sort(nocase_cmp) + self.__allnames.sort(key=unicode.lower) return self.__allnames def aliases_of(self, red, green, blue): Modified: python/branches/py3k/Tools/scripts/finddiv.py ============================================================================== --- python/branches/py3k/Tools/scripts/finddiv.py (original) +++ python/branches/py3k/Tools/scripts/finddiv.py Wed Jan 30 03:55:10 2008 @@ -78,7 +78,7 @@ fn = os.path.join(dir, name) if os.path.normcase(fn).endswith(".py") or os.path.isdir(fn): files.append(fn) - files.sort(lambda a, b: cmp(os.path.normcase(a), os.path.normcase(b))) + files.sort(key=os.path.normcase) exit = None for fn in files: x = process(fn, listnames) Modified: python/branches/py3k/Tools/unicode/makeunicodedata.py ============================================================================== --- python/branches/py3k/Tools/unicode/makeunicodedata.py (original) +++ python/branches/py3k/Tools/unicode/makeunicodedata.py Wed Jan 30 03:55:10 2008 @@ -441,6 +441,15 @@ # -------------------------------------------------------------------- # unicode name database +def CmpToKey(mycmp): + 'Convert a cmp= function into a key= function' + class K(object): + def __init__(self, obj, *args): + self.obj = obj + def __lt__(self, other): + return mycmp(self.obj, other.obj) == -1 + return K + def makeunicodename(unicode, trace): FILE = "Modules/unicodename_db.h" @@ -490,7 +499,7 @@ if r: return r return cmp(aword, bword) - wordlist.sort(cmpwords) + wordlist.sort(key=CmpToKey(cmpwords)) # figure out how many phrasebook escapes we need escapes = 0 @@ -514,7 +523,7 @@ # length (to maximize overlap) wordlist, wordtail = wordlist[:short], wordlist[short:] - wordtail.sort(lambda a, b: len(b[0])-len(a[0])) + wordtail.sort(key=lambda a: a[0], reverse=True) wordlist.extend(wordtail) # generate lexicon from words _______________________________________________ Python-3000-checkins mailing list Python-3000-checkins@python.org http://mail.python.org/mailman/listinfo/python-3000-checkins