Comments
Patch
@@ -2643,29 +2643,29 @@ class _generatorset(object):
self._cache[x] = False
return False
def __iter__(self):
if self._finished:
- for x in self._genlist:
- yield x
- return
+ return iter(self._genlist)
# we have to use this complexe iteration strategy to allow multiple
# iteration at the same time. We need to be able to catch revision
# removed from `consumegen` and added to genlist in another instance.
#
# Getting ride of it would provide an about 15% speed up on this
# iteration.
- i = 0
genlist = self._genlist
nextrev = self._consumegen().next
- while True:
- if i < len(genlist):
- yield genlist[i]
- else:
- yield nextrev()
- i += 1
+ def gen():
+ i = 0
+ while True:
+ if i < len(genlist):
+ yield genlist[i]
+ else:
+ yield nextrev()
+ i += 1
+ return gen()
def _consumegen(self):
for item in self._gen:
self._cache[item] = True
self._genlist.append(item)