Add additional info to TypeError when C++->Python casting fails #3605
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.
Description
Adds additional information when raising a type error during function return. Inspired by the unexpected behavior from #3600 .
Suggested changelog entry:
* If possible, attach Python exception with ``py::raise_from`` to TypeError when casting from C++ to Python. This will give additional info if Python exceptions occur in the caster. Adds a test case of trying to convert a set from C++ to Python when the hash function is not defined in Python.
As a meta note, this is an issue because we are a bit inconsistent in how we handle Python exceptions with
py::set
,py::dict
, etc...). We currently not raising an exception from Python to C++ when interacting with them, maybe we should consider doing that.