ci(dd_coverage): enable dd_coverage on Python 3.15 - #18311
Conversation
Codeowners resolved as |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 407b4f4c8e
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| (3, 12), | ||
| (3, 13), | ||
| (3, 14), | ||
| (3, 15), |
There was a problem hiding this comment.
Commit all new 3.15 riot lockfiles
This adds 3.15 to the global SUPPORTED_PYTHON_VERSIONS, so every unbounded select_pys() suite now creates a Python 3.15 riot instance, not just dd_coverage (for example appsec and datastreams still call select_pys() with no max version). I checked check_requirements_lockfiles in .gitlab-ci.yml, which runs scripts/compile-and-prune-test-requirements; that script uses riot list --hash-only and generates any missing .riot/requirements/<hash>.txt, then scripts/check-diff '.riot/requirements/' fails if they were not committed. Since this commit only adds one 3.15 lockfile, CI will generate many additional 3.15 lockfiles for the other newly-active suites and fail the diff check.
Useful? React with 👍 / 👎.
|
BenchmarksBenchmark execution time: 2026-05-28 16:08:33 Comparing candidate commit b15578c in PR branch Found 0 performance improvements and 4 performance regressions! Performance is the same for 616 metrics, 10 unstable metrics. scenario:iastaspects-lstrip_aspect
scenario:iastaspectsospath-ospathbasename_aspect
scenario:span-start
scenario:telemetryaddmetric-1-count-metric-1-times
|
37b4711 to
a223369
Compare
Adds Python 3.15 to SUPPORTED_PYTHON_VERSIONS and updates pyproject.toml (requires-python <3.15 → <3.16, adds py3.15 classifier) so ddtrace installs on 3.15. Runs scripts/compile-and-prune-test-requirements with Python 3.15-dev (via pyenv) to generate all .riot/requirements/*.txt lockfiles for every suite that uses select_pys() without a max_version cap. Also removes stale lockfile 128b106.txt and updates tested_versions.json. The coverage instrumentation code already supports Python 3.15 (added in #17672): CACHE opcode handling for RESUME, PEP 810 IMPORT_NAME arg shift, and threading.local() ContextVar fallback. The max_version="3.12" cap on the dd_coverage venv was removed in the same PR. Part of the Python 3.15 integration parity effort (#17809). Closes #17842 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
a223369 to
b15578c
Compare
|
Closing in favour of a PR that branches off vlad/enable-py-315-repo-wide so the diff only shows the dd_coverage-specific fixes. |
Description
Part of the Python 3.15 integration parity effort (parent tracker: #17809).
Closes #17842
This PR enables the
dd_coverageintegration on Python 3.15.The coverage instrumentation code was already updated to fully support Python 3.15 in #17672 (
fix(ci_visibility): fix coverage instrumentation for Python 3.13+), which:_IMPORT_NAME_ARG_SHIFT = 2on 3.15+)threading.local()ContextVar fallback for 3.14+sys.monitoringcallback isolationmax_version="3.12"cap from thedd_coveragevenv inriotfile.pyThis PR completes the work by adding
(3, 15)toSUPPORTED_PYTHON_VERSIONSso thatdd_coverage'sselect_pys()call includes 3.15, and generates the corresponding lockfile.Checklist
max_versioncap already lifted in fix(ci_visibility): fix coverage instrumentation for Python 3.13+ #17672riot generate dd_coveragelockfile committed (.riot/requirements/16ccbdd.txt— verified against PR ci(py-315): enable cp315 across wheel matrix, riot, and CI #18146 which generated this with Python 3.15 installed)changelog/no-changeloglabel added (test/CI-only change)Testing
The
dd_coveragetest suite (85 tests) passes on Python 3.12, 3.13, and 3.14 as validated in #17672. Python 3.15-specific bytecode paths were verified via thebenchmarks/coverage_extract_lines/run_local.pybenchmark.Risks
SUPPORTED_PYTHON_VERSIONSnow includes 3.15, which means all venvs usingselect_pys()without amax_versioncap will also pick up 3.15. Suites with explicitmax_version="3.13"caps are unaffected. This is intentional — the repo already has Python 3.15-dev in the testrunner (pyenv global ... 3.15-dev).dd_coverageis trivial (mock, pytest, pytest-mock, coverage, pytest-cov, opentracing, hypothesis) and all resolve identically on 3.14 and 3.15.Additional Notes
The larger Python 3.15 repo-wide enablement (wheel builds, CI matrices, pyproject.toml classifier) is tracked in PR #18146.