<div dir="ltr">Thanks for being a good sport, Raymond! I've probably spent too much time fretting about this, so thanks for the reminder. I want to get back to other things too, in particular the type hinting PEP: there's a draft, but there are many things we --the co-authors-- want to change before we bother the community with another review. And that one will certainly take longer than five days!<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Nov 28, 2014 at 12:01 PM, Raymond Hettinger <span dir="ltr"><<a href="mailto:raymond.hettinger@gmail.com" target="_blank">raymond.hettinger@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><span class=""><br><div><blockquote type="cite"><div>On Nov 27, 2014, at 8:52 AM, Guido van Rossum <<a href="mailto:guido@python.org" target="_blank">guido@python.org</a>> wrote:</div><div><div dir="ltr" style="font-family:ArialMT;font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div class="gmail_extra"><br></div><div class="gmail_extra">I understand that @allow_import_stop represents a compromise, an attempt at calming the waves that PEP 479 has caused. But I still want to push back pretty hard on this idea.<br><br>- It means we're forever stuck with two possible semantics for StopIteration raised in generators.<br><br>- It complicates the implementation, because (presumably) a generator marked with @allow_stop_import should not cause a warning when a StopIteration bubbles out -- so we actually need another flag to silence the warning.<br><br>- I don't actually know whether other Python implementations have the ability to copy code objects to change flags.<br><br></div><div class="gmail_extra">- It actually introduces a new incompatibility, that has to be solved in every module that wants to use it (as you show above), whereas just putting try/except around unguarded next() calls is fully backwards compatible.<br><br></div><div class="gmail_extra">- Its existence encourage people to use the decorator in favor of fixing their code properly.<br><br></div><div class="gmail_extra">- The decorator is so subtle that it probably needs to be explained to everyone who encounters it (and wasn't involved in this PEP discussion). Because of this I would strongly advise against using it to "fix" the itertools examples in the docs; it's just too magical. (IIRC only 2 examples actually depend on this.)<br></div></div></div></blockquote></div><br></span><div>I concur.  PEP 479 fixes are trivially easy to do without a decorator.</div><div><br></div><div>After Guido pronounced on the PEP, I fixed-up several parts of the standard library in just a few minutes.  It's not hard.</div><div><a href="https://mail.python.org/pipermail/python-checkins/2014-November/133252.html" target="_blank">https://mail.python.org/pipermail/python-checkins/2014-November/133252.html</a></div><div><a href="https://mail.python.org/pipermail/python-checkins/2014-November/133253.html" target="_blank">https://mail.python.org/pipermail/python-checkins/2014-November/133253.html</a></div><div><br></div><div>Also, I'm submitting a 479 patch to the Django project so we won't have to worry about this one.</div><div><br></div><div>I recommend that everyone just accept that the PEP is a done deal and stop adding complexity or work-arounds.  We have a lot of things going for us on this one:  1) the affected code isn't common-place (mostly in producer/consumer middleware tools created by tool makers rather than by tool users), 2) the RuntimeError is immediate and clear about both the cause and the repair, 3) the fixes are trivially easy to make (add try/except around next() calls and replace "raise StopIteration" with "return").</div><div><br></div><div>Ideally, everyone will let this die and go back to being with family for the holidays (or back to work if you don't have a holiday this week).</div><span class="HOEnZb"><font color="#888888"><div><br></div><div><br></div><div>Raymond</div></font></span></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature">--Guido van Rossum (<a href="http://python.org/~guido">python.org/~guido</a>)</div>
</div>