Mercurial > hg
changeset 9032:1fa80c5428b8
compat: use 'key' argument instead of 'cmp' when sorting a list
author | Alejandro Santos <alejolp@alejolp.com> |
---|---|
date | Sun, 05 Jul 2009 11:02:00 +0200 |
parents | 3b76321aa0de |
children | 98a5652bfed9 |
files | hgext/churn.py hgext/convert/cvsps.py hgext/mq.py mercurial/localrepo.py mercurial/lsprof.py mercurial/patch.py |
diffstat | 6 files changed, 18 insertions(+), 31 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/churn.py Sun Jul 05 11:01:30 2009 +0200 +++ b/hgext/churn.py Sun Jul 05 11:02:00 2009 +0200 @@ -143,8 +143,8 @@ if not rate: return - sortfn = ((not opts.get('sort')) and (lambda a, b: cmp(b[1], a[1])) or None) - rate.sort(sortfn) + sortkey = ((not opts.get('sort')) and (lambda x: -x[1]) or None) + rate.sort(key=sortkey) maxcount = float(max([v for k, v in rate])) maxname = max([len(k) for k, v in rate])
--- a/hgext/convert/cvsps.py Sun Jul 05 11:01:30 2009 +0200 +++ b/hgext/convert/cvsps.py Sun Jul 05 11:02:00 2009 +0200 @@ -12,13 +12,6 @@ from mercurial import util from mercurial.i18n import _ -def listsort(list, key): - "helper to sort by key in Python 2.3" - try: - list.sort(key=key) - except TypeError: - list.sort(lambda l, r: cmp(key(l), key(r))) - class logentry(object): '''Class logentry has the following attributes: .author - author name as CVS knows it @@ -419,7 +412,7 @@ if len(log) % 100 == 0: ui.status(util.ellipsis('%d %s' % (len(log), e.file), 80)+'\n') - listsort(log, key=lambda x:(x.rcs, x.revision)) + log.sort(key=lambda x: (x.rcs, x.revision)) # find parent revisions of individual files versions = {} @@ -435,7 +428,7 @@ if cache: if log: # join up the old and new logs - listsort(log, key=lambda x:x.date) + log.sort(key=lambda x: x.date) if oldlog and oldlog[-1].date >= log[0].date: raise logerror('Log cache overlaps with new log entries,' @@ -484,7 +477,7 @@ # Merge changesets - listsort(log, key=lambda x:(x.comment, x.author, x.branch, x.date)) + log.sort(key=lambda x: (x.comment, x.author, x.branch, x.date)) changesets = [] files = set()
--- a/hgext/mq.py Sun Jul 05 11:01:30 2009 +0200 +++ b/hgext/mq.py Sun Jul 05 11:02:00 2009 +0200 @@ -1541,7 +1541,7 @@ raise util.Abort(_('option "-r" not valid when importing ' 'files')) rev = cmdutil.revrange(repo, rev) - rev.sort(lambda x, y: cmp(y, x)) + rev.sort(reverse=True) if (len(files) > 1 or len(rev) > 1) and patchname: raise util.Abort(_('option "-n" not valid when importing multiple ' 'patches')) @@ -2334,7 +2334,7 @@ if ui.verbose: guards['NONE'] = noguards guards = guards.items() - guards.sort(lambda a, b: cmp(a[0][1:], b[0][1:])) + guards.sort(key=lambda x: x[0][1:]) if guards: ui.note(_('guards in series file:\n')) for guard, count in guards:
--- a/mercurial/localrepo.py Sun Jul 05 11:01:30 2009 +0200 +++ b/mercurial/localrepo.py Sun Jul 05 11:02:00 2009 +0200 @@ -1709,14 +1709,14 @@ # A function generating function. Sets up an environment for the # inner function. - def cmp_by_rev_func(revlog): - # Compare two nodes by their revision number in the environment's + def revkey(revlog): + # Key to sort a node by it's revision number in the environment's # revision history. Since the revision number both represents the # most efficient order to read the nodes in, and represents a # topological sorting of the nodes, this function is often useful. - def cmp_by_rev(a, b): - return cmp(revlog.rev(a), revlog.rev(b)) - return cmp_by_rev + def revlog_sort_key(x): + return revlog.rev(x) + return revlog_sort_key # If we determine that a particular file or manifest node must be a # node that the recipient of the changegroup will already have, we can @@ -1724,7 +1724,7 @@ # prunes them from the set of missing nodes. def prune_parents(revlog, hasset, msngset): haslst = list(hasset) - haslst.sort(cmp_by_rev_func(revlog)) + haslst.sort(key=revkey(revlog)) for node in haslst: parentlst = [p for p in revlog.parents(node) if p != nullid] while parentlst: @@ -1874,7 +1874,7 @@ add_extra_nodes(1, msng_mnfst_set) msng_mnfst_lst = msng_mnfst_set.keys() # Sort the manifestnodes by revision number. - msng_mnfst_lst.sort(cmp_by_rev_func(mnfst)) + msng_mnfst_lst.sort(key=revkey(mnfst)) # Create a generator for the manifestnodes that calls our lookup # and data collection functions back. group = mnfst.group(msng_mnfst_lst, lookup_manifest_link, @@ -1912,7 +1912,7 @@ yield changegroup.chunkheader(len(fname)) yield fname # Sort the filenodes by their revision # - msng_filenode_lst.sort(cmp_by_rev_func(filerevlog)) + msng_filenode_lst.sort(key=revkey(filerevlog)) # Create a group generator and only pass in a changenode # lookup function as we need to collect no information # from filenodes.
--- a/mercurial/lsprof.py Sun Jul 05 11:01:30 2009 +0200 +++ b/mercurial/lsprof.py Sun Jul 05 11:02:00 2009 +0200 @@ -26,12 +26,10 @@ """XXX docstring""" if crit not in profiler_entry.__dict__: raise ValueError("Can't sort by %s" % crit) - self.data.sort(lambda b, a: cmp(getattr(a, crit), - getattr(b, crit))) + self.data.sort(key=lambda x: getattr(x, crit), reverse=True) for e in self.data: if e.calls: - e.calls.sort(lambda b, a: cmp(getattr(a, crit), - getattr(b, crit))) + e.calls.sort(key=lambda x: getattr(x, crit), reverse=True) def pprint(self, top=None, file=None, limit=None, climit=None): """XXX docstring"""
--- a/mercurial/patch.py Sun Jul 05 11:01:30 2009 +0200 +++ b/mercurial/patch.py Sun Jul 05 11:02:00 2009 +0200 @@ -325,10 +325,6 @@ # looks through the hash and finds candidate lines. The # result is a list of line numbers sorted based on distance # from linenum - def sorter(a, b): - vala = abs(a - linenum) - valb = abs(b - linenum) - return cmp(vala, valb) try: cand = self.hash[l] @@ -337,7 +333,7 @@ if len(cand) > 1: # resort our list of potentials forward then back. - cand.sort(sorter) + cand.sort(key=lambda x: abs(x - linenum)) return cand def hashlines(self):