feat(py-315): enable lib-injection SSI for Python 3.15 (PROF-15812) - #19843
feat(py-315): enable lib-injection SSI for Python 3.15 (PROF-15812)#19843vlad-scherbich wants to merge 2 commits into
Conversation
Codeowners resolved asResolved from the full PR diff against |
Circular import analysis
|
Dependency direction analysis
|
|
There was a problem hiding this comment.
Pull request overview
Prepares lib-injection SSI tooling for Python 3.15 by updating runtime and wheel-version handling, release documentation, and lint exclusions.
Changes:
- Extends the SSI runtime allow-list and wheel downloader choices.
- Adds a Python 3.15 release note.
- Excludes lib-injection scripts from mypy and Bandit checks.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Reviewed changes and findings |
|---|---|
releasenotes/notes/ssi-enable-3.15-331733de322fe48b.yaml |
Documents Python 3.15 SSI support. |
lib-injection/sources/sitecustomize.py |
Extends the runtime upper bound. Critical (1 vote): Python 3.15 wrapping support remains unavailable, so SSI may report successful injection without tracing. |
lib-injection/dl_wheels.py |
Adds Python 3.15 as a downloader option. Moderate (2 votes): The packaging job still enumerates versions only through 3.14, so 3.15 wheels are not downloaded. |
hooks/scripts/run-mypy.sh |
Excludes lib-injection scripts from mypy. |
hooks/pre-commit/05-run-bandit |
Excludes lib-injection scripts from Bandit. |
Suppressed comments (2)
hooks/pre-commit/05-run-bandit:3
- This also disables Bandit for every current and future Python file under
lib-injection/, even though the stated untyped-script rationale applies to mypy rather than security scanning. These deployment/startup scripts execute subprocesses, so security regressions in them will no longer be caught by this hook; keep Bandit enabled and handle any narrowly identified false positives with targeted exclusions instead of removing the entire directory.
staged_files=$(git diff --staged --name-only HEAD --diff-filter=ACMR | grep -E '\.py$' | grep -v '^tests/' | grep -v '^lib-injection/' | tr '\n' ' ')
lib-injection/sources/sitecustomize.py:46
- The new runtime boundary is not covered by
tests/lib_injection: no test exercisesruntime_version_is_supported, even though the production path aborts when the selected 3.15 site-packages directory is absent. Add assertions that 3.15 is accepted and 3.16 is rejected so the strict upper-bound behavior cannot silently regress.
"max": Version(version=(3, 16), constraint=""),
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
|
||
| # Supported Python versions lists all python versions that can install at least one version of the ddtrace library. | ||
| supported_versions = ["2.7", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] | ||
| supported_versions = ["2.7", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14", "3.15"] |
| "cpython": { | ||
| "min": Version(version=(3, 9), constraint=""), | ||
| "max": Version(version=(3, 15), constraint=""), | ||
| "max": Version(version=(3, 16), constraint=""), |
BenchmarksBenchmark execution time: 2026-08-24 22:16:14 Comparing candidate commit 3ecffe0 in PR branch Found 0 performance improvements and 7 performance regressions! Performance is the same for 579 metrics, 10 unstable metrics, 2 known flaky benchmarks, 16 flaky benchmarks without significant changes.
|
Bump sitecustomize runtime allow-list max to 3.16 (strict less-than) and add 3.15 to dl_wheels supported_versions. Does not change pyproject.toml requires-python — PyPI still blocks pip install on 3.15 until the capstone packaging PR lands. Skip mypy/bandit pre-commit on lib-injection/ (untyped deployment scripts, outside ddtrace/). Closes #17813
Wire download_dependency_wheels for PYTHON_VERSION=3.15 using the 3.15.0rc1 mirror image tag (GA python:3.15.0 not published yet). Mark the matrix leg allow_failure until cp315 build linux wheels are stable. Completes the packaging path Copilot flagged: sitecustomize allow-list + dl_wheels CLI + CI artifact population.
3ecffe0 to
1232aa7
Compare
Description
Part of the Python 3.15 integration parity effort (parent tracker: #17809).
Closes #17813
Bump lib-injection runtime allow-list and wheel download list for Python 3.15 SSI.
Does not change
pyproject.tomlrequires-python— pip still blocks 3.15install until the capstone packaging PR (#17815/#19254).
Mirrors #15966 (3.14 SSI enable).
Changes
sitecustomize.py: allow-list max(3, 15)→(3, 16)(strict less-than)dl_wheels.py: add"3.15"tosupported_versionslib-injection/(untyped deployment scripts)Test plan
lib_injection_testsGitLab job greenriot run -s lib_injectiongreen