Officially support Python 3.15

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • None
    • Python Drivers
    • 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.

      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.

            Assignee:
            Steve Silvester
            Reporter:
            Steve Silvester
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: