-
Type:
Task
-
Resolution: Fixed
-
Priority:
Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
None
-
Python Drivers
-
Not Needed
-
None
-
None
-
None
-
None
-
None
-
None
Context
Python 3.15 is at its release candidate (rc2, 2026-09-01). PyMongo already tests 3.15 in the GitHub Actions matrix (PYTHON-5837) and carries a fork-test fix for 3.15 (PYTHON-5874), but the packaging metadata, wheel builds, and Evergreen test matrix still stop at 3.14.
This ticket promotes 3.15 to officially supported and adding the wheels to our release. We do not commit to having this complete by the first official release, due to upstream constraints like cryptography wheels, but commit to having it done by 3.15.1, which is scheduled for December. https://peps.python.org/pep-0790/#schedule
Definition of done
- Add the Python 3.15 trove classifier to pyproject.toml.
- Build cp315 and cp315t wheels in the dist.yml cibuildwheel workflow and assert that both are present.
- Add 3.15 and 3.15t to the Evergreen test matrix in generate_config_utils.py and regenerate the checked-in configs and the compression variant tags in generate_config.py.
- Add "Added support for Python 3.15." to the changelog in a new 4.19.0 section.
- Evergreen tasks and wheel builds for 3.15 and 3.15t run green.
Pitfalls
- The 3.15 and 3.15t tasks set UV_PYTHON to the exact pre-release version (3.15.0rc2 / 3.15.0rc2t). uv does not index Python 3.15 pre-releases, so setup-dev-env.sh falls back to fetch-python.sh, which downloads the python-build-standalone build (release 20260901) and points UV_PYTHON at it.
- The fetch fallback is temporary. Remove fetch-python.sh and its hook in setup-dev-env.sh once the Evergreen toolchain provisions 3.15, and drop the UV_PYTHON_VERSIONS entries in generate_config_utils.py once 3.15.0 stable is available.
- Keep the .free-threaded selective exclusions (auth, enterprise-auth) that already apply to 3.14t working for 3.15t.
- Verify the pinned cibuildwheel range (>=3.2.0,<4) supports cp315/cp315t; bump the lower bound if it does not.
- Add 3.15/3.15t entries to the zstd compression variant tags in generate_config.py; those tags are hard-coded and do not auto-update.
- 4.18.0 is already released; the changelog entry goes in a new 4.19.0 section, not the 4.18.0 section.
- is blocked by
-
PYTHON-6081 test_list_collections in test_typing.py fails when the test database is empty
-
- Closed
-
-
PYTHON-6084 Improve python version handling in Evergreen
-
- Closed
-
- related to
-
PYTHON-5874 Fix test_fork.py failures on Python 3.15 due to fork() DeprecationWarning in multi-threaded processes
-
- Closed
-
-
PYTHON-5837 Check for Beta release of the new Python version
-
- Closed
-