mercurial/manifest.py
changeset 24298 49cd847fd69a
parent 24297 0178f500d61e
child 24322 f263814c72ac
--- a/mercurial/manifest.py	Thu Mar 12 18:53:44 2015 -0700
+++ b/mercurial/manifest.py	Thu Mar 12 18:18:29 2015 -0700
@@ -44,11 +44,14 @@
         dict.__setitem__(self, k, (node, flag))
 
     def __iter__(self):
-        return ((f, e[0], e[1]) for f, e in sorted(self.iteritems()))
+        return iter(sorted(dict.keys(self)))
 
     def iterkeys(self):
         return iter(sorted(dict.keys(self)))
 
+    def iterentries(self):
+        return ((f, e[0], e[1]) for f, e in sorted(self.iteritems()))
+
     def copy(self):
         c = _lazymanifest('')
         c.update(self)
@@ -76,14 +79,14 @@
 
     def filtercopy(self, filterfn):
         c = _lazymanifest('')
-        for f, n, fl in self:
+        for f, n, fl in self.iterentries():
             if filterfn(f):
                 c[f] = n, fl
         return c
 
     def text(self):
         """Get the full data of this manifest as a bytestring."""
-        fl = sorted(self)
+        fl = sorted(self.iterentries())
 
         _hex = revlog.hex
         # if this is changed to support newlines in filenames,
@@ -119,7 +122,7 @@
         del self._lm[key]
 
     def __iter__(self):
-        return self._lm.iterkeys()
+        return self._lm.__iter__()
 
     def iterkeys(self):
         return self._lm.iterkeys()
@@ -140,8 +143,8 @@
 
     def filesnotin(self, m2):
         '''Set of files in this manifest that are not in the other'''
-        files = set(self.iterkeys())
-        files.difference_update(m2.iterkeys())
+        files = set(self)
+        files.difference_update(m2)
         return files
 
     def matches(self, match):
@@ -196,7 +199,7 @@
         return c
 
     def iteritems(self):
-        return (x[:2] for x in self._lm)
+        return (x[:2] for x in self._lm.iterentries())
 
     def text(self):
         return self._lm.text()