Skip to content

Conversation

@NoahStapp
Copy link
Contributor

@NoahStapp NoahStapp commented Oct 20, 2025

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

  • Did you update the changelog (if necessary)?
  • Is the intention of the code captured in relevant tests?
  • If there are new TODOs, has a related JIRA ticket been created?

Checklist for Reviewer @Jibola

  • Does the title of the PR reference a JIRA Ticket?
  • Do you fully understand the implementation? (Would you be comfortable explaining how this code works to someone else?)
  • Have you checked for spelling & grammar errors?
  • Is all relevant documentation (README or docstring) updated?

Focus Areas for Reviewer (optional)

@NoahStapp NoahStapp requested a review from a team as a code owner October 20, 2025 19:57
@NoahStapp NoahStapp requested a review from Jibola October 20, 2025 19:57
Copy link
Contributor

@Jibola Jibola left a 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)
Copy link
Contributor

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?

Copy link
Contributor Author

@NoahStapp NoahStapp Oct 22, 2025

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants