Add support for multiple out params #626
Open
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.
See issue #621 - this patch makes it so that Python can properly call C++ or BP methods with one or more output parameters as well as C++ methods that have both output parameters and a return value. Further, it makes it so that in Python you can override and implement methods that have both return values and output parameters. A side effect of this patch is that so far it appears to have fixed #622.
Note that when combining out params and a return value, the return value needs to come last in the type annotation info, e.g. given a C++ base class method like this:
you'd implement it in Python like this:
In terms of lines of code, the biggest change is moving property creation to
new_property_from_pyobject
since it is needed in more places (and was getting unwieldy anyway).Given that this patch affects some pretty fundamental code, I also created a project that runs through a large set of test scenarios: https://github.com/dfb/uepy_test_prjs/tree/master/output_params