comparison mercurial/smartset.py @ 32977:27ba0d8dc26c

py3: catch StopIteration from next() in generatorset IIUC, letting the StopIteration through would not cause any bugs, but not doing it makes the test-py3-commands.t pass. I have also diligently gone through all uses of next() in our code base. They either: * are not called from a generator * pass a default value to next() * catch StopException * work on infinite iterators * request a fixed number of items that matches the generated number * are about batching in wireproto which I didn't quite follow I'd appreciate if Augie or someone else could take a look at the wireproto batching and convince themselves that the next(batchable) calls there will not raise a StopIteration.
author Martin von Zweigbergk <martinvonz@google.com>
date Tue, 20 Jun 2017 14:00:41 -0700
parents 9b7d615108d7
children 6d767d62b25e
comparison
equal deleted inserted replaced
32976:d39639fb840e 32977:27ba0d8dc26c
869 i = 0 869 i = 0
870 while True: 870 while True:
871 if i < _len(genlist): 871 if i < _len(genlist):
872 yield genlist[i] 872 yield genlist[i]
873 else: 873 else:
874 yield _next(nextgen) 874 try:
875 yield _next(nextgen)
876 except StopIteration:
877 return
875 i += 1 878 i += 1
876 return gen() 879 return gen()
877 880
878 def _consumegen(self): 881 def _consumegen(self):
879 cache = self._cache 882 cache = self._cache