On Tue, Nov 14, 2017 at 6:54 AM, Mark E. Haase <meha...@gmail.com> wrote:
> If an exception is thrown while the `asyncio` event loop is running, the
> stack trace is pretty complicated. Here's an example:
>
[...]
>
> I'm posting here to get constructive criticism on the concept and would also
> like to hear if Curio or Trio have done anything like this. (Based on a
> quick skim of the docs, I don't think they are.) I might publish a PyPI
> package if anybody is interested.

Trio does jump through hoops to try to make its tracebacks more
readable, but so far this is mostly aimed at cases where there are
multiple exceptions happening concurrently, and there is still an
unpleasant amount of internal gibberish that can overwhelm the parts
the user actually cares about. Doing something about this is on my
todo list [1], and it shouldn't be *too* hard given that Trio already
has to take over sys.excepthook, but I'm not 100% sure how to best
track which frames are pure bookkeeping noise and which are
interesting -- it's a bit more subtle than just "in the trio namespace
or not". (I'd also like to annotate the traceback with more
information, e.g. showing where an exception jumped between tasks.)

Messing with tracebacks like this does feel a bit weird, but async
libraries are in a weird position. The interpreter hides traceback
lines all the time, because every time you go into C then the
traceback disappears; Python's tracebacks are specifically designed to
show user code, not interpreter internals. Async libraries are doing
the same work the interpreter does, like implementing exception
propagation machinery, but they're doing it in Python code, so it
messes up the normal heuristic that C = low-level interpreter
machinery, Python = user code.

-n

[1] https://github.com/python-trio/trio/issues/56

-- 
Nathaniel J. Smith -- https://vorpus.org
_______________________________________________
Async-sig mailing list
Async-sig@python.org
https://mail.python.org/mailman/listinfo/async-sig
Code of Conduct: https://www.python.org/psf/codeofconduct/

Reply via email to