[PATCH 02 of 10] py3: replace None with -1 to sort an integer array

Pulkit Goyal 7895pulkit at gmail.com
Wed May 31 17:46:58 EDT 2017


# HG changeset patch
# User Pulkit Goyal <7895pulkit at gmail.com>
# Date 1496254732 -19800
#      Wed May 31 23:48:52 2017 +0530
# Node ID 93f5b615c900ec9b74b141aaeb162041f59d5737
# Parent  111485d5d5a7d2c06a7010b53e111235d5d215fd
py3: replace None with -1 to sort an integer array

In Python 2:

>>> ls = [4, 2, None]
>>> sorted(ls)
[None, 2, 4]

In Python 3:

>>> ls = [4, 2, None]
>>> sorted(ls)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: NoneType() < int()

Therefore we replaced None with -1, and the safe part is that, None and -1 are
only the keys which are used for sorting so we don't need to convert the -1's
back to None.

diff --git a/mercurial/merge.py b/mercurial/merge.py
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -801,7 +801,7 @@
 
     # manifests fetched in order are going to be faster, so prime the caches
     [x.manifest() for x in
-     sorted(wctx.parents() + [p2, pa], key=lambda x: x.rev())]
+     sorted(wctx.parents() + [p2, pa], key=lambda x: x.rev() or -1)]
 
     if followcopies:
         ret = copies.mergecopies(repo, wctx, p2, pa)


More information about the Mercurial-devel mailing list