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

Ethan Furman ethan at stoneleaf.us
Mon Feb 27 21:29:23 CET 2012


Benjamin Peterson wrote:
> 2012/2/27 Ethan Furman <ethan at stoneleaf.us>:
>> Benjamin Peterson wrote:
>>> 2012/2/26 Nick Coghlan <ncoghlan at gmail.com>:
>>>> 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 add the following lines to the PEP:
>>>
>>> To summarize, ``raise exc from cause`` will be equivalent to::
>>>
>>>    exc.__cause__ = cause
>>>    exc.__suppress_context__ = cause is None
>>>    raise exc
>>
>> So exc.__cause__ will be None both before and after `raise Exception from
>> None`?
> 
> Yes.

And the primary advantage being that we don't lose an already set 
__cause__ (since most of the time __cause__ would be empty and we're 
just suppressing __context__)... seems like a good idea.  +1

As far as Ellipsis goes -- I do think it works well in this case, but I 
am not opposed to changing it.  I do think we do ourselves a disservice 
if we refuse to use it in other situations because "it's only for slices".

~Ethan~


More information about the Python-Dev mailing list