On 5/15/2020 11:56 AM, Chris Angelico wrote:
On Sat, May 16, 2020 at 1:54 AM Antoine Pitrou <solipsis@pitrou.net> wrote:
On Fri, 15 May 2020 10:46:25 -0400
David Mertz <mertz@gnosis.cx> wrote:

1. +1 itertools.zip_strict function
2. +1 zip.strict(*args)
3. +1 zip(*args, mode='strict')  # mode='shortest' by default
4. +0 zip(*args, strict=True)

Mostly I agree with Steven on relative preference:

itertools.zip_strict() +1
zip.strict() +0.5
zip(mode='strict') +0
zip(strict=True) -0.5
For me:

* zip(strict=True)       +1
* zip(mode='strict')     -0
* itertools.zip_strict() -0.5
* zip.strict()           -1  (but really, I'd like to make this -1e10)

Since we're posting:

itertools.zip_strict() +1
zip.strict() +0.1
zip(strict=True) -0.5
zip(mode='strict') -1
itertools.zip_strict() +1
zip.strict() +0
zip(strict=True) -0
zip(mode='strict') -1

I don't particularly care for "strict", though. It doesn't seem specific enough, and doesn't say "they iterators must return the same number of items" to me. I sort of liked "equal" better, but not so much to make a big stink about it.

Also: The PEP says "At most one additional item may be consumed from one of the iterators when compared to normal zip usage." I think this should be prefaced with "If ValueError is raised ...". Also, why does it say "at most one additional item". How could it ever be less than one?