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 #