check for async callable object and function for relay resolver #1244
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 PR ensures that the relay
resolve_wrapper
can handle async functions and objects with an async__call__
method.I ran into this issue trying to use the ariadne-auth
authz.require_permission
function alongside the connection class.require_permission
converts the decorated resolver into an instance ofPermissionChecker
which defines anasync __call__
and is not picked up byinspect.iscoroutinefunction
.The helper function was inspired by starlette.
For now, I only added the helper to the connection object, that said, many of the existing usages of
inspect.iscoroutinefunction
will want to move to this helper.