Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revset.py @ 22795:c21342159fad
generatorset: drop the leading underscore in the class name
This is a real smart set now.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Fri, 03 Oct 2014 20:12:02 -0700 |
parents | 4aa1bfb54f43 |
children | 43f664bf2e1e |
comparison
equal
deleted
inserted
replaced
22794:4aa1bfb54f43 | 22795:c21342159fad |
---|---|
44 yield current | 44 yield current |
45 for parent in cl.parentrevs(current)[:cut]: | 45 for parent in cl.parentrevs(current)[:cut]: |
46 if parent != node.nullrev: | 46 if parent != node.nullrev: |
47 heapq.heappush(h, -parent) | 47 heapq.heappush(h, -parent) |
48 | 48 |
49 return _generatorset(iterate(), iterasc=False) | 49 return generatorset(iterate(), iterasc=False) |
50 | 50 |
51 def _revdescendants(repo, revs, followfirst): | 51 def _revdescendants(repo, revs, followfirst): |
52 """Like revlog.descendants() but supports followfirst.""" | 52 """Like revlog.descendants() but supports followfirst.""" |
53 cut = followfirst and 1 or None | 53 cut = followfirst and 1 or None |
54 | 54 |
68 if x != nullrev and x in seen: | 68 if x != nullrev and x in seen: |
69 seen.add(i) | 69 seen.add(i) |
70 yield i | 70 yield i |
71 break | 71 break |
72 | 72 |
73 return _generatorset(iterate(), iterasc=True) | 73 return generatorset(iterate(), iterasc=True) |
74 | 74 |
75 def _revsbetween(repo, roots, heads): | 75 def _revsbetween(repo, roots, heads): |
76 """Return all paths between roots and heads, inclusive of both endpoint | 76 """Return all paths between roots and heads, inclusive of both endpoint |
77 sets.""" | 77 sets.""" |
78 if not roots: | 78 if not roots: |
2511 gen = gen() | 2511 gen = gen() |
2512 else: | 2512 else: |
2513 iter1 = iter(self._r1) | 2513 iter1 = iter(self._r1) |
2514 iter2 = iter(self._r2) | 2514 iter2 = iter(self._r2) |
2515 gen = self._iterordered(self._ascending, iter1, iter2) | 2515 gen = self._iterordered(self._ascending, iter1, iter2) |
2516 self._iter = _generatorset(gen) | 2516 self._iter = generatorset(gen) |
2517 return self._iter | 2517 return self._iter |
2518 | 2518 |
2519 def __iter__(self): | 2519 def __iter__(self): |
2520 if self._genlist: | 2520 if self._genlist: |
2521 return iter(self._genlist) | 2521 return iter(self._genlist) |
2606 def reverse(self): | 2606 def reverse(self): |
2607 self._list.reverse() | 2607 self._list.reverse() |
2608 if self._ascending is not None: | 2608 if self._ascending is not None: |
2609 self._ascending = not self._ascending | 2609 self._ascending = not self._ascending |
2610 | 2610 |
2611 class _generatorset(abstractsmartset): | 2611 class generatorset(abstractsmartset): |
2612 """Wrap a generator for lazy iteration | 2612 """Wrap a generator for lazy iteration |
2613 | 2613 |
2614 Wrapper structure for generators that provides lazy membership and can | 2614 Wrapper structure for generators that provides lazy membership and can |
2615 be iterated more than once. | 2615 be iterated more than once. |
2616 When asked for membership it generates values until either it finds the | 2616 When asked for membership it generates values until either it finds the |
2849 # | 2849 # |
2850 # `other` was used with "&", let's assume this is a set like | 2850 # `other` was used with "&", let's assume this is a set like |
2851 # object. | 2851 # object. |
2852 other = baseset(other - self._hiddenrevs) | 2852 other = baseset(other - self._hiddenrevs) |
2853 elif not util.safehasattr(other, 'ascending'): | 2853 elif not util.safehasattr(other, 'ascending'): |
2854 # "other" is _generatorset not a real smart set | 2854 # "other" is generatorset not a real smart set |
2855 # we fallback to the old way (sad kitten) | 2855 # we fallback to the old way (sad kitten) |
2856 return super(fullreposet, self).__and__(other) | 2856 return super(fullreposet, self).__and__(other) |
2857 | 2857 |
2858 # preserve order: | 2858 # preserve order: |
2859 # | 2859 # |