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 #57
This change ensure that rather calling
PyErr.print()
which prints the exception and then forgets about it, we callPyErr.restore()
which restores it as 'current' exception.If the calling Rust code:
()
, this will now trigger the same exception once we reach PythonPyErr::take
to check for a current exception, it will fetch the exception and is able to manipulate it and turn it into aPyResult
in whichever way it sees fit.PyErr::take
to defuse the exception and returns something other than()
itself, then Python will turn the originally thrown exception into aSystemError
with the messageSystemError: <method 'example' of 'builtins.YourCustomClass' objects> returned a result with an exception set
. The original exception is included as cause of this exception.