Fix #470: Prevent error AsyncToSync.main_wrap() got multiple values for argument '<kwarg>'
#471
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 #470.
Destructuring
*args
and**kwargs
passed in by the callee has the chance that the same kwargs names may be used as bymain_wrap
. If that happens, the interpreter will raise a error like:TypeError: AsyncToSync.main_wrap() got multiple values for argument 'context'
.ParamSpec
requires the*args
and**kwargs
syntax to be used, but it is wrong execution wise.So we work around the issue by pre-creating the awaitable outside
main_wrap
, which removes the need to pass*args
and**kwargs
.Another alternative instead of creating the awaitable could be to use
functools.partial
, though that does add some performance overhead: #470 (comment).