Mercurial > hg > mercurial-source
changeset 24042:828dc8db5515
revlog: add __contains__ for fast membership test
Because revlog implements __iter__, "rev in revlog" works but does silly O(n)
lookup unexpectedly. So it seems good to add fast version of __contains__.
This allows "rev in repo.changelog" in the next patch.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Wed, 04 Feb 2015 21:25:57 +0900 |
parents | e1dbe0b215ae |
children | fe1abb5d92f6 |
files | mercurial/changelog.py mercurial/revlog.py |
diffstat | 2 files changed, 7 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/changelog.py +++ b/mercurial/changelog.py @@ -143,6 +143,11 @@ if i not in self.filteredrevs: return self.node(i) + def __contains__(self, rev): + """filtered version of revlog.__contains__""" + return (revlog.revlog.__contains__(self, rev) + and rev not in self.filteredrevs) + def __iter__(self): """filtered version of revlog.__iter__""" if len(self.filteredrevs) == 0: