Another PEP 343 contextmanager glitch
It appears that the contextmanager implementation (both in the stdlib and as described in the PEP) doesn't correctly handle the case where the generator yields a new value in response to throw(). It responds by suppressing the original exception, but IIRC earlier versions of the PEP threw a RuntimeError for this scenario. Unless there are any objections, I'd like to restore this by replacing the "return True" that follows the throw(), with: raise RuntimeError("generator didn't stop after throw()") and again, update the PEP accordingly.
Oops, that's definitely a bug. Please go ahead and fix in both places.
(I'm still trying to fathom the other PEP 343 issue you brought up.)
--Guido
On 3/24/06, Phillip J. Eby
It appears that the contextmanager implementation (both in the stdlib and as described in the PEP) doesn't correctly handle the case where the generator yields a new value in response to throw(). It responds by suppressing the original exception, but IIRC earlier versions of the PEP threw a RuntimeError for this scenario.
Unless there are any objections, I'd like to restore this by replacing the "return True" that follows the throw(), with:
raise RuntimeError("generator didn't stop after throw()")
and again, update the PEP accordingly.
_______________________________________________ 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/guido%40python.org
-- --Guido van Rossum (home page: http://www.python.org/~guido/)
participants (2)
-
Guido van Rossum
-
Phillip J. Eby