Conversation
…7-officially-support-py315 # Conflicts: # .evergreen/generated_configs/tasks.yml
This reverts commit 78b8a2e.
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
| write_env("KRB5_CONFIG", krb_conf) | ||
| LOGGER.info("Writing keytab") | ||
| keytab = base64.b64decode(config["KEYTAB_BASE64"]) | ||
| keytab_b64 = config["KEYTAB_BASE64"] |
There was a problem hiding this comment.
This change was needed for Python 3.15 support
There was a problem hiding this comment.
🟡 Changes recommended
The fallback selects a 64-bit interpreter for Win32 coverage and performs avoidable rate-limited API requests.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Adds official Python 3.15 and free-threaded 3.15 support across packaging and CI.
Changes:
- Adds Python 3.15 metadata, changelog, tests, and wheels.
- Standardizes CI interpreter selection through
UV_PYTHON. - Adds a python-build-standalone fallback and stricter keytab decoding.
File summaries
| File | Description |
|---|---|
pyproject.toml |
Adds the Python 3.15 classifier. |
doc/changelog.rst |
Documents Python 3.15 support. |
.github/workflows/dist.yml |
Builds and verifies 3.15 wheels. |
.evergreen/scripts/setup-uv-python.sh |
Resolves toolchain interpreters. |
.evergreen/scripts/setup-dev-env.sh |
Installs or fetches missing interpreters. |
.evergreen/scripts/setup_tests.py |
Corrects keytab Base64 padding. |
.evergreen/scripts/generate_config.py |
Generates UV_PYTHON-based tasks. |
.evergreen/scripts/generate_config_utils.py |
Defines 3.15 versions and helpers. |
.evergreen/scripts/fetch-python.sh |
Fetches standalone Python builds. |
.evergreen/generated_configs/variants.yml |
Adds 3.15 compression variants. |
.evergreen/generated_configs/tasks.yml |
Adds and migrates generated tasks. |
.evergreen/generated_configs/functions.yml |
Propagates UV_PYTHON. |
Review details
Suppressed comments (1)
.evergreen/scripts/fetch-python.sh:35
- This unauthenticated GitHub API request runs before the existing-install check at line 53, so every repeated setup still consumes a request even after the large interpreter has been cached. Python 3.15 tasks source this setup more than once, making shared CI egress susceptible to GitHub's unauthenticated rate limit and causing otherwise cached jobs to fail. Resolve the cache path and return it before querying the release API, or cache the release metadata separately.
release="$(curl -fsSL --retry 3 https://api.github.com/repos/astral-sh/python-build-standalone/releases/latest)"
- Files reviewed: 11/12 changed files
- Comments generated: 1
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
The new python-build-standalone fallback currently sets UV_PYTHON to a directory (not an interpreter path), which is inconsistent with how UV_PYTHON is handled elsewhere and can break uv run interpreter selection.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review details
Suppressed comments (1)
Previously missed (1) — in code that hasn't changed since the last review.
doc/changelog.rst:4
- The changelog header uses an invalid date placeholder ("2026/XX/XX"), which can be confusing and may break tooling that expects a real date. Consider using an explicit "Unreleased" marker until the release date is known.
- Files reviewed: 11/12 changed files
- Comments generated: 1
- Review effort level: Lite
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…7-officially-support-py315 # Conflicts: # doc/changelog.rst
There was a problem hiding this comment.
🟡 Changes recommended
Timeout cleanup can race with an active socket worker, and FIPS warning handling can incorrectly report FIPS as disabled.
Get a fresh assessment by requesting another Copilot review.
Review details
- Files reviewed: 19/19 changed files
- Comments generated: 2
- Review effort level: Balanced
…fork warning suppression
There was a problem hiding this comment.
🟡 Changes recommended
Worker exceptions can mask cancellation, and the wheel check can pass without a standard CPython 3.15 wheel.
Get a fresh assessment by requesting another Copilot review.
Review details
- Files reviewed: 19/19 changed files
- Comments generated: 2
- Review effort level: Balanced
… timeout on worker failure
There was a problem hiding this comment.
🟡 Changes recommended
Repeated cancellation can still let the socket worker outlive its caller, and the TLS compatibility path lacks direct regression coverage.
Get a fresh assessment by requesting another Copilot review.
Review details
Suppressed comments (1)
Previously missed (1) — in code that hasn't changed since the last review.
pymongo/network_layer.py:84
- The Python 3.15 compatibility fix itself is not covered: the added tests call the generic helper with
len/sleep functions, but none invokesasync_socket_sendallwith a TLS socket. Please add a regression test that exercises this branch and verifies the peer-reset translation (and ideally timeout translation), so the behavior described by this PR cannot regress while the helper tests still pass.
- Files reviewed: 19/19 changed files
- Comments generated: 1
- Review effort level: Balanced
|
Assigned |
sleepyStick
left a comment
There was a problem hiding this comment.
took me a minute to understand what was happening but i think i get it now lol great work!
PYTHON-6077
Changes in this PR
async_socket_sendallfor compatibility with Python 3.15. This is the trickiest change.Test Plan
MIN_MAX_PYTHON[-1]), it runs in 80 of the PR tasks.Checklist
Checklist for Author
Checklist for Reviewer