After taking a break to recapitulate from the vigorous debate, Brandt Bucher has revised PEP 618 https://www.python.org/dev/peps/pep-0618/ and submitted it for review https://github.com/python/peps/pull/1429. I volunteered to be PEP-Delegate (the new term for the outdated BDFL-Delegate) and the SC has approved https://github.com/python/steering-council/issues/28#issuecomment-644280869 me for this role. (Note that Antoine, the PEP's sponsor, declined to be the lightning rod, er, PEP-Delegate.)
I have now reviewed the PEP and skimmed some of the more recent discussion about the topic. It is clear that no solution will win everyone over. But most seem to agree that offering *some* solution for the stated problem is better than none.
To spare us more heartache, I am hereby accepting PEP 618. I expect that the implementation https://github.com/python/cpython/pull/20921 will land soon.
I have two very minor editorial remarks, which Brandt may address at his leisure:
- The "Backward Compatibility" section could be beefed up slightly, e.g. by pointing out that the default remains strict=False and that zip previously did not take keyword arguments at all.
- The error messages are somewhat odd: why is the error sometimes that one iterator is too long, and other times that one iterator is too short? All we really know is that not all iterators have the same length, but the current phrasing seems to be assuming that the first iterator is never too short or too long.