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
    • Hide

      1. What would you like to communicate to the user about this feature?
      2. Would you like the user to see examples of the syntax and/or executable code and its output?
      3. Which versions of the driver/connector does this apply to?

      Show
      1. What would you like to communicate to the user about this feature? 2. Would you like the user to see examples of the syntax and/or executable code and its output? 3. Which versions of the driver/connector does this apply to?
    • 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: