[TASK]-[PYTHON-5623]: Change with_transaction callback return type to Awaitable #2594
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.
PYTHON-5623
Summary
AsyncClientSession.with_transaction's callback is typed as Callable[[AsyncClientSession], Coroutine[Any, Any, _T]] but does not use any of Coroutine's interface that isn't already provided in its parent type, Awaitable.
In other words: at runtime, any function that returns an Awaitable works as callback, but callback's type unnecessarily requires that the function's return type matches Coroutine.
This PR changes the type from Callable[[AsyncClientSession], Coroutine[Any, Any, _T]] to Callable[[AsyncClientSession], Awaitable[_T]] so that a non-Coroutine Awaitable can be used as callback.
Changes in this PR
This PR changes the type from Callable[[AsyncClientSession], Coroutine[Any, Any, _T]] to Callable[[AsyncClientSession], Awaitable[_T]] so that a non-Coroutine Awaitable can be used as callback.
Testing Plan
A new test to verify that this change works for both type checking and code execution.
Screenshots (optional)
N/A.
Checklist
Checklist for Author
Checklist for Reviewer @Jibola
Focus Areas for Reviewer (optional)