D7239: repoview: move changelog.__iter__() override to filteredchangelog

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Wed Nov 6 00:59:37 UTC 2019


martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D7239

AFFECTED FILES
  mercurial/changelog.py
  mercurial/repoview.py

CHANGE DETAILS

diff --git a/mercurial/repoview.py b/mercurial/repoview.py
--- a/mercurial/repoview.py
+++ b/mercurial/repoview.py
@@ -21,6 +21,7 @@
     obsolete,
     phases,
     pycompat,
+    revlog,
     tags as tagsmod,
     util,
 )
@@ -233,6 +234,18 @@
             """filtered version of revlog.__contains__"""
             return 0 <= rev < len(self) and rev not in self.filteredrevs
 
+        def __iter__(self):
+            """filtered version of revlog.__iter__"""
+            if len(self.filteredrevs) == 0:
+                return revlog.revlog.__iter__(self)
+
+            def filterediter():
+                for i in pycompat.xrange(len(self)):
+                    if i not in self.filteredrevs:
+                        yield i
+
+            return filterediter()
+
     cl.__class__ = filteredchangelog
 
     return cl
diff --git a/mercurial/changelog.py b/mercurial/changelog.py
--- a/mercurial/changelog.py
+++ b/mercurial/changelog.py
@@ -405,18 +405,6 @@
         self.filteredrevs = frozenset()
         self._copiesstorage = opener.options.get(b'copies-storage')
 
-    def __iter__(self):
-        """filtered version of revlog.__iter__"""
-        if len(self.filteredrevs) == 0:
-            return revlog.revlog.__iter__(self)
-
-        def filterediter():
-            for i in pycompat.xrange(len(self)):
-                if i not in self.filteredrevs:
-                    yield i
-
-        return filterediter()
-
     def revs(self, start=0, stop=None):
         """filtered version of revlog.revs"""
         for i in super(changelog, self).revs(start, stop):



To: martinvonz, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list