[Python-Dev] PEP 344 (was: with_traceback)

Collin Winter collinw at gmail.com
Sat Mar 3 00:45:20 CET 2007


On 2/26/07, Andrew Dalke <dalke at dalkescientific.com> wrote:
> My concern when I saw Guido's keynote was the worry that
> people do/might write code like this
>
> NO_END_OF_RECORD = ParserError("Cannot find end of record")
>
> def parse_record(input_file):
>    ...
>     raise NO_END_OF_RECORD
>    ...
>
>
> That is, create instances at the top of the module, to be used
> later.  This code assume that the NO_END_OF_RECORD
> exception instance is never modified.
>
> If the traceback is added to its __traceback__ attribute then
> I see two problems if I were to write code like the above:
>
>   - the traceback stays around "forever"
>   - the code is no longer thread-safe.

While there are now quite a few threads discussing the problems
related to the proposed __traceback__ attribute (thread-safety being
the primary one, from what I can tease out), I haven't seen anyone
address the rest of PEP 344: the __cause__ and __context__ attributes.

Do those who oppose __traceback__ also oppose __cause__ and
__context__? Should PEP 344 be rejected on these grounds, or should we
just learn not to pre-instance exceptions if we're interested in these
attributes?

Collin Winter


More information about the Python-Dev mailing list