Guido van Rossum wrote: > I just read Raymond Chen's rant against control flow macros: > http://blogs.msdn.com/oldnewthing/archive/2005/01/06/347666.aspx > > I think this pretty much kills PEP 340, as well as Nick Coghlan's > alternative: both proposals let you write a "template" that can be > used to hide exception-catching code, which is a form of control flow > (and a pretty important one if you read Chen's rant against exceptions > referenced by the former, even if you don't agree with everything he > says in the latter).
It seems the effect of Raymond's articles on you was similar to their effect on me :) > Straight up-or-down votes in the full senate are appreciated at this point. PEP 340 redux for me (as you might have guessed) - I think the transaction() use case is a genuinely useful one. The ability to access the return value of __enter__() is also more useful than simply duplicating what could be achieved by an assignment on the line before the user defined statement. > On to the secondary questions: > > - Today I like the 'do' keyword better; 'with' might confuse folks > coming from Pascal or VB I think 'do' can be made to read correctly in more contexts that 'with'. The lack of a corresponding 'while' or 'until' should eliminate any temptation to see it as a loop. The 'with' keyword also means I keep wanting the magic methods to be called "__acquire__" and "__release__" (and those would be harder to type. . .) > - I have a more elaborate proposal for __exit__'s arguments. Let the > translation be as follows: I plan to rewrite my proposal based on this suggestion, just to explore the ramifications. I think it will turn out quite nicely. The ban on yielding inside try/finally will need to be extended to yielding inside user defined statements until such time as an iterator finalisation protocol is chosen, though. > (An alternative would be to always call it with 4 arguments, the last > three being None in the first two cases.) The former is probably tidier. __exit__() method implementations which don't care about the exception details can still use "*exc_info" in the argument signature, while those that want to use the information can just name the three parts without needing to specify the "=None" defaults. Cheers, Nick. -- Nick Coghlan | [EMAIL PROTECTED] | Brisbane, Australia --------------------------------------------------------------- http://boredomandlaziness.blogspot.com _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com