Guido van Rossum wrote: > We considered this at some point during the PEP 340/343/346 discussion > (in fact I had it this way in an early version of one of the PEPs), > and in the end decided against it. I believe the argument was that any > failure *before* __enter__() returns can be handled by try/except > clauses inside __init__() or __enter__().
Hmm, you're right. Also, given implementation of PEP 343, code which genuinely has to care about this can do so manually: with async_exceptions_blocked(): with critical_resource(): with async_exceptions_unblocked(): # Do the real work This ensures acquisition of the critical resource is not interrupted. Even better, the above can be wrapped up in a template and still give the desired guarantees: @stmt_template def safe_acquisition(resource): with async_exceptions_blocked(): with resource(): with async_exceptions_unblocked(): yield None with safe_acquisition(critical_resource): # Do the real work 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