[Python-Dev] PEP 415: Implementing PEP 409 differently

Nick Coghlan ncoghlan at gmail.com
Mon Feb 27 03:15:01 CET 2012


Thanks for writing that up. I'd be amenable if the PEP was clearly
updated to say that ``raise exc from cause`` would change from being
syntactic sugar for ``_hidden = exc; _hidden.__cause__ = cause; raise
exc`` (as it is now) to ``_hidden = exc; _hidden.__cause__ = cause;
_hidden.__suppress_context__ = True; raise exc``. The patch should
then be implemented accordingly (including appropriate updates to the
language reference).

I previously didn't like this solution because I thought it would
require a special case for None in the syntax expansion, but I have
now realised that isn't the case (since the new flag can be set
unconditionally regardless of the value assigned to __cause__).

Code that wants to display both __cause__ and __context__ can then
just either set __cause__ directly, or else later switch off the
context suppression.

Cheers,
Nick.

-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia


More information about the Python-Dev mailing list