[PATCH] py3: catch StopIteration from next() in generatorset

Sean Farley sean at farley.io
Tue Jun 20 17:53:40 EDT 2017


Martin von Zweigbergk via Mercurial-devel
<mercurial-devel at mercurial-scm.org> writes:

> # HG changeset patch
> # User Martin von Zweigbergk <martinvonz at google.com>
> # Date 1497992441 25200
> #      Tue Jun 20 14:00:41 2017 -0700
> # Node ID f86d21c457209f5f5a139bcc808be33fbd930424
> # Parent  0906385672d754f13a512fe70759f0463a069f1e
> 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.

I was just thinking of doing something like this. Shouldn't we just
'return None' in Mercurial instead of 'raise StopIteration'?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 800 bytes
Desc: not available
URL: <http://www.mercurial-scm.org/pipermail/mercurial-devel/attachments/20170620/0a866381/attachment.sig>


More information about the Mercurial-devel mailing list