-
Notifications
You must be signed in to change notification settings - Fork 1.1k
[TASK]-[PYTHON-5623]: Change with_transaction callback return type to Awaitable #2594
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Jibola
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
NIT: date on the release notes. Also let's note that we added the changelog information for an unrelated change.
| - Removed support for Eventlet. | ||
| Eventlet is actively being sunset by its maintainers and has compatibility issues with PyMongo's dnspython dependency. | ||
|
|
||
| Changes in Version 4.15.4 (2025/10/21) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is this also bundling the release alongside?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What do you mean? We'll update the release date when the release is ready to go out.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Follow-up here @Jibola
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I assumed it would have XXXX/XX/XX, since it hasn't been released yet. This isn't a blocking issue since it'll get updated when its going out.
… Awaitable (mongodb#2594) Co-authored-by: Logan Pulley <logan@pulley.host> (cherry picked from commit 5f00966)
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)