Skip to content

docs(profiling): py3.15 dev tooling and CPython upgrade runbook - #19273

Draft
vlad-scherbich wants to merge 6 commits into
vlad/ddtracepy-315-profiling-asyncio-monitoringfrom
vlad/315-profiling-dev-tooling
Draft

docs(profiling): py3.15 dev tooling and CPython upgrade runbook#19273
vlad-scherbich wants to merge 6 commits into
vlad/ddtracepy-315-profiling-asyncio-monitoringfrom
vlad/315-profiling-dev-tooling

Conversation

@vlad-scherbich

@vlad-scherbich vlad-scherbich commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

prev: #19272 | next: #19254

Summary

Bring-up scripts (verify_profiler_compatibility, run-profiling-tests), compatibility baselines, and CPython 3.15 upgrade runbook. See scripts/py315-stack/PROFILING_STACK.md for the 6-PR merge order.

Test plan

Tracker

@datadog-prod-us1-3

datadog-prod-us1-3 Bot commented Jul 24, 2026

Copy link
Copy Markdown

Pipelines  Tests

Unblock PR with BitsAI

⚠️ Warnings

🚦 12 Pipeline jobs failed

DataDog/apm-reliability/dd-trace-py | build linux serverless: [amd64, cp315-cp315, v113741238-d2b8243-manylinux2014_x86_64, 1] — 🔧 Needs a code fix, caused by this PR

View in Datadog · View in GitLab

DataDog/apm-reliability/dd-trace-py | build linux serverless: [amd64, cp315-cp315, v126532274-233089d-musllinux_1_2_x86_64, 1] — 🔧 Needs a code fix, caused by this PR

View in Datadog · View in GitLab

DataDog/apm-reliability/dd-trace-py | build linux serverless: [arm64, cp315-cp315, v113741357-d2b8243-manylinux2014_aarch64, 1] — 🔧 Needs a code fix, caused by this PR

View in Datadog · View in GitLab

View all 12 failed jobs.

ℹ️ Info

No other issues found (see more)

🧪 All tests passed
❄️ No new flaky tests detected

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 50bf856 | Docs | View more details | Give us feedback!

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Jul 24, 2026

Copy link
Copy Markdown

Codeowners resolved as

Resolved from the full PR diff against vlad/ddtracepy-315-profiling-asyncio-monitoring using the target branch CODEOWNERS file.
CODEOWNERS team requests not listed below are not required by the current file set.

.claude/skills/type-annotate/SKILL.md                                   @DataDog/python-guild
AGENTS.md                                                               @DataDog/python-guild
docs/contributing-profiling-new-cpython.rst                             @DataDog/python-guild
docs/contributing-testing.rst                                           @DataDog/python-guild
docs/contributing.rst                                                   @DataDog/python-guild
docs/cpython-diffs/analysis_314_to_315.md                               @DataDog/python-guild
scripts/profiles/compatibility_baselines.json                           @DataDog/profiling-python
scripts/py315-stack/DRAFT_PRS.md                                        @DataDog/python-guild
scripts/py315-stack/MANUAL_EXISTING_PRS.md                              @DataDog/python-guild
scripts/py315-stack/PROFILING_STACK.md                                  @DataDog/python-guild
scripts/py315-stack/TRACKING.md                                         @DataDog/python-guild
scripts/py315-stack/generate-pr-urls.sh                                 @DataDog/python-guild
scripts/py315-stack/open-all-draft-prs.sh                               @DataDog/python-guild
scripts/py315-stack/pr-bodies/01-compare.url                            @DataDog/python-guild
scripts/py315-stack/pr-bodies/01-gab-315-monitoring-multiplexer.md      @DataDog/python-guild
scripts/py315-stack/pr-bodies/02-chore-315-wrapping-context.md          @DataDog/python-guild
scripts/py315-stack/pr-bodies/02-compare.url                            @DataDog/python-guild
scripts/py315-stack/pr-bodies/03-compare.url                            @DataDog/python-guild
scripts/py315-stack/pr-bodies/03-vlad-315-ci-matrix.md                  @DataDog/python-guild
scripts/py315-stack/pr-bodies/04-compare.url                            @DataDog/python-guild
scripts/py315-stack/pr-bodies/04-vlad-315-ci-autoregen-lockfiles.md     @DataDog/python-guild
scripts/py315-stack/pr-bodies/05-compare.url                            @DataDog/python-guild
scripts/py315-stack/pr-bodies/05-vlad-315-official-support.md           @DataDog/python-guild
scripts/py315-stack/pr-bodies/05-vlad-315-peripheral-compat.md          @DataDog/python-guild
scripts/py315-stack/pr-bodies/06-compare.url                            @DataDog/python-guild
scripts/py315-stack/pr-bodies/06-vlad-315-peripheral-compat.md          @DataDog/python-guild
scripts/py315-stack/pr-bodies/06-vlad-profiling-native-test-install-subdir.md  @DataDog/python-guild
scripts/py315-stack/pr-bodies/07-compare.url                            @DataDog/python-guild
scripts/py315-stack/pr-bodies/07-vlad-ddtracepy-315-profiling-native.md  @DataDog/python-guild
scripts/py315-stack/pr-bodies/07-vlad-profiling-native-test-install-subdir.md  @DataDog/python-guild
scripts/py315-stack/pr-bodies/08-compare.url                            @DataDog/python-guild
scripts/py315-stack/pr-bodies/08-vlad-ddtracepy-315-profiling-collectors.md  @DataDog/python-guild
scripts/py315-stack/pr-bodies/08-vlad-ddtracepy-315-profiling-native.md  @DataDog/python-guild
scripts/py315-stack/pr-bodies/09-compare.url                            @DataDog/python-guild
scripts/py315-stack/pr-bodies/09-vlad-ddtracepy-315-profiling-collectors.md  @DataDog/python-guild
scripts/py315-stack/pr-bodies/09-vlad-ddtracepy-315-profiling-only.md   @DataDog/python-guild
scripts/py315-stack/pr-bodies/10-compare.url                            @DataDog/python-guild
scripts/py315-stack/pr-bodies/10-vlad-ddtracepy-315-profiling-asyncio-monitoring.md  @DataDog/python-guild
scripts/py315-stack/pr-bodies/10-vlad-ddtracepy-315-profiling-only.md   @DataDog/python-guild
scripts/py315-stack/pr-bodies/11-compare.url                            @DataDog/python-guild
scripts/py315-stack/pr-bodies/11-vlad-315-profiling-dev-tooling.md      @DataDog/python-guild
scripts/py315-stack/pr-bodies/11-vlad-ddtracepy-315-profiling-asyncio-monitoring.md  @DataDog/python-guild
scripts/py315-stack/pr-bodies/12-compare.url                            @DataDog/python-guild
scripts/py315-stack/pr-bodies/12-vlad-315-lib-injection-ssi.md          @DataDog/python-guild
scripts/py315-stack/pr-bodies/12-vlad-315-profiling-dev-tooling.md      @DataDog/python-guild
scripts/py315-stack/pr-bodies/13-compare.url                            @DataDog/python-guild
scripts/py315-stack/pr-bodies/13-vlad-315-lib-injection-ssi.md          @DataDog/python-guild
scripts/py315-stack/pr-bodies/13-vlad-315-profiling-release-note.md     @DataDog/python-guild
scripts/py315-stack/pr-bodies/14-compare.url                            @DataDog/python-guild
scripts/py315-stack/pr-bodies/14-vlad-315-official-support.md           @DataDog/python-guild
scripts/py315-stack/pr-bodies/14-vlad-315-profiling-release-note.md     @DataDog/python-guild
scripts/py315-stack/pr-numbers.env                                      @DataDog/python-guild
scripts/py315-stack/rebuild-stack.sh                                    @DataDog/python-guild
scripts/py315-stack/sync-pr-numbers.sh                                  @DataDog/python-guild
scripts/run-profiling-tests                                             @DataDog/python-guild
scripts/verify_profiler_compatibility.py                                @DataDog/python-guild

@cit-pr-commenter-54b7da

cit-pr-commenter-54b7da Bot commented Jul 24, 2026

Copy link
Copy Markdown

Circular import analysis

⚠️ Existing circular imports

There are 3 circular imports that already exist on the base branch and have not been changed by this PR.

ddtrace.errortracking._handled_exceptions.bytecode_injector -> ddtrace.errortracking._handled_exceptions.callbacks -> ddtrace.errortracking._handled_exceptions.collector -> ddtrace.errortracking._handled_exceptions.bytecode_reporting -> ddtrace.errortracking._handled_exceptions.bytecode_injector
ddtrace.llmobs -> ddtrace.llmobs._evaluators -> ddtrace.llmobs._evaluators.format -> ddtrace.llmobs._experiment -> ddtrace.llmobs
ddtrace.appsec._asm_request_context -> ddtrace.appsec._iast._iast_request_context_base -> ddtrace.appsec._iast._iast_env -> ddtrace.appsec._iast.reporter -> ddtrace.appsec._exploit_prevention.stack_traces -> ddtrace.appsec._asm_request_context

@vlad-scherbich
vlad-scherbich force-pushed the vlad/ddtracepy-315-profiling-asyncio-monitoring branch from 4b85b1d to 636fd80 Compare August 21, 2026 04:53
@vlad-scherbich
vlad-scherbich force-pushed the vlad/315-profiling-dev-tooling branch from e703ab0 to e95f62f Compare August 21, 2026 04:53
@vlad-scherbich
vlad-scherbich force-pushed the vlad/ddtracepy-315-profiling-asyncio-monitoring branch from 636fd80 to ba0a39e Compare August 21, 2026 17:43
@vlad-scherbich
vlad-scherbich force-pushed the vlad/315-profiling-dev-tooling branch from e95f62f to b906b1e Compare August 21, 2026 17:43
Profiling bring-up scripts, compatibility baselines, Echion migration runbook,
and py315-stack PR navigation helpers (PR 12/14).
Update pr-numbers, generate-pr-urls, MANUAL_EXISTING_PRS, and rebuild-stack
to reflect linear stack with peripheral/profiling before packaging (#19254).
Replacement PRs #19267#19275 supersede wrongly-merged #19255#19259.
@vlad-scherbich
vlad-scherbich force-pushed the vlad/315-profiling-dev-tooling branch from b906b1e to ba0e2bf Compare August 21, 2026 18:43
@vlad-scherbich
vlad-scherbich force-pushed the vlad/ddtracepy-315-profiling-asyncio-monitoring branch from ba0a39e to 082c37a Compare August 21, 2026 18:43
@cit-pr-commenter-54b7da

Copy link
Copy Markdown

Dependency direction analysis

⚠️ Existing dependency direction violations

There are 250 dependency direction violations that already exist on the base branch and have not been changed by this PR.

Show existing violations (showing 5 of 250 highest severity)
ddtrace.internal.tracemethods -×-> ddtrace.trace  (internal-core -> product:tracing, score=135)
ddtrace.internal.test_visibility.api -×-> ddtrace.trace  (product:ci_visibility -> product:tracing, score=133)
ddtrace.profiling.collector.stack -×-> ddtrace.trace  (product:profiling -> product:tracing, score=133)
ddtrace.appsec._contrib.django -×-> ddtrace.trace  (product:appsec -> product:tracing, score=133)
ddtrace.llmobs._integrations.openai -×-> ddtrace.trace  (product:llmobs -> product:tracing, score=133)

To see all violations, download the layers-base.json and layers-pr.json artifacts from this CI job and run:

uv run --script scripts/import-analysis/layers.py compare layers-base.json layers-pr.json

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant