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.
This pull request introduces a new way to call Python functions from Swift that surfaces Python exceptions as Swift errors, rather than trapping. This allows developers to handle Python errors using Swift's
try/catchmechanism, making error handling more robust and idiomatic in Swift. The changes include a new wrapper type, an extension property for easier access, and corresponding unit tests.New error-handling callable support:
throwingCallableproperty toPythonObject, which returns aThrowingDynamicCallablewrapper. This allows users to opt-in to error handling viatry/catchwhen calling Python functions from Swift.ThrowingDynamicCallablestruct, a dynamic-callable wrapper aroundPythonObjectthat throws Swift errors when Python exceptions are raised, instead of trapping. This struct provides severaldynamicallyCallmethods for calling Python functions with positional or keyword arguments.Testing:
testThrowingCallableWrapper, to verify thatthrowingCallablecorrectly returns results for valid calls and throws Swift errors for Python exceptions, including checking the exception type.