py3: use list comprehensions instead of filter where we need to eagerly filter
authorAugie Fackler <augie@google.com>
Wed, 21 Feb 2018 10:10:02 -0500
changeset 36346 f62369667a7c
parent 36345 f85e32a5e5c8
child 36347 f6ddbcff5d7b
py3: use list comprehensions instead of filter where we need to eagerly filter These two uses of filter() are then checked for truthiness, but on Python 3: >>> bool(filter(None, [])) True So we need to stop depending on that. Fortunately it's easy to replace the filter with an equivalent list comprehension. Differential Revision: https://phab.mercurial-scm.org/D2364
mercurial/cmdutil.py
mercurial/copies.py
--- a/mercurial/cmdutil.py	Wed Feb 21 10:08:35 2018 -0500
+++ b/mercurial/cmdutil.py	Wed Feb 21 10:10:02 2018 -0500
@@ -1831,7 +1831,7 @@
                 else:
                     self.revs.discard(value)
                     ctx = change(value)
-                    matches = filter(match, ctx.files())
+                    matches = [f for f in ctx.files() if match(f)]
                     if matches:
                         fncache[value] = matches
                         self.set.add(value)
--- a/mercurial/copies.py	Wed Feb 21 10:08:35 2018 -0500
+++ b/mercurial/copies.py	Wed Feb 21 10:10:02 2018 -0500
@@ -685,8 +685,8 @@
     # the base and present in the source.
     # Presence in the base is important to exclude added files, presence in the
     # source is important to exclude removed files.
-    missingfiles = filter(lambda f: f not in m1 and f in base and f in c2,
-                          changedfiles)
+    filt = lambda f: f not in m1 and f in base and f in c2
+    missingfiles = [f for f in changedfiles if filt(f)]
 
     if missingfiles:
         basenametofilename = collections.defaultdict(list)