On 2014-03-05, 4:54 PM, Nick Coghlan wrote:
On 6 Mar 2014 02:43, "Antoine Pitrou" <solip...@pitrou.net> wrote:
Le 05/03/2014 17:37, Victor Stinner a écrit :

Python 3.4 introduced frame.clear(), but frame.clear() raises an
RuntimeError if the frame is still running. And it doesn't break all
reference cycles.

An obvious workaround is to store the traceback as text, but this
operation is "expensive" especially if the traceback is only needed in
rare cases.

Another "obvious" workaround is to call frame.clear() from the parent
function (i.e. have a dedicated wrapping layer).

Guido had a fix in mind - splitting traceback formatting into two pieces.
The first would convert a traceback to a sequence of named tuples, the
second would do the actual string formatting.

I don't like the idea of using tuples instead of tracebacks
in 'exception.__traceback__'.  Lots of introspection and logging
tools except to find tracebacks in exceptions, and do custom
formatting or submitting data to remote servers for further
analysis (sometimes with values of local variables in frames).
If asyncio starts stripping exception.__traceback__ and using
namedtuples, it will make it harder to write/integrate such
tools.

Yury
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to