Capture correct tracebacks when using inline_callbacks.
#475
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #449. I'm not sure if this a great solution, but it appears to fix the issue by letting Failure's stack walking find the right context.
When an inlineCallback completes synchronously, such as in tests, twisted will
string-ify the traceback, which means that when the exception is then thrown
into another inlineCallback function, the stack trace is lost[1]. Twisted works
around this by inspect the stack and finding the Failure instance from the
inner call, to get traceback there.
However, this only works if
Failure.throwExceptionIntoGeneratoris used.This adjusts eliot_friendly_generator_function to use
Failure, instead of anexc_info tuple, when used via
inline_callabcks.[1] The string-ified traceback can't be passed to
.send.