Skip to content

[Tracker] Python 3.15 integration parity #17809

Description

@vlad-scherbich

Python 3.15 integration parity tracker

This issue tracks bringing dd-trace-py integration coverage on Python 3.15
to parity with the 3.14 release. The list below is the inverse of the
dd-trace-py v3.16.0 release notes "still does not work with Python 3.14"
section — for 3.15 we expect the same set of items to be skipped until each
row's blocker is resolved.

How this works

  • Each checkbox below should result in one independent PR.
    The 3.14 migration followed the same pattern (see @emmettbutler's PR series linked at the bottom).
  • Each unchecked checkbox below is also a real GitHub sub-issue (created via the task-list "convert to issue" option on each bullet). The parent checkbox auto-flips when the sub-issue closes. Rows already pre-checked (- [x]) are already merged on main and don't need a sub-issue.
  • To claim a row: click into the row's sub-issue (each - [ ] bullet links to one), then either self-assign on that sub-issue page (top-right "Assignees" → "assign yourself") or leave a Taking this comment on the sub-issue itself and a maintainer will assign you. Don't claim on this parent tracker — comments here are ambiguous about which row and add noise.
  • PRs that close a row should use the
    python_315_bump
    PR template (added in #17791; open via ?template=python_315_bump.md) and include Closes #<sub-issue-number> in the description.
    That auto-closes the sub-issue on merge, which auto-flips the parent checkbox.
  • Most rows are a one-line riotfile.py max_version= bump + riot generate <suite> regen + lockfile commit. A few are real integration work and are called out below.

Tier A: wheel-build prerequisites

These must land before we can flip the cp315 wheel job from allow-fail to required. Scope is intentionally narrow — anything that can be skipped at runtime on 3.15 the way 3.14 skipped Profiling / IAST / ci_visibility (see dd-trace-py v3.16.0 release notes) lives in Tier B, not here.

Owned

Completed

Tier B: integration parity

Notes:

  • None of these rows block the cp315 wheel cutover. They are integration-parity work that ships as each row lands, same model as the dd-trace-py v3.16.0 release notes' "still does not work with Python 3.14" list (those wheels still shipped). Each row failing only means that one integration / product is silently skipped on 3.15.
  • All caps in riotfile.py are at max_version="3.13" (not "3.14"). A volunteer PR must therefore do a 3.13 → 3.15 jump and validate the integration on both 3.14 and 3.15, then remove any # X doesn't yet work with Python 3.14 comments left over from previous iterations.
  • A few rows are more nuanced than the dd-trace-py v3.16.0 release notes flatten them; see notes inline below.

Owned

Profiling — @DataDog/profiling-python

Frameworks / IDM — @DataDog/apm-idm-python

Needs an owner

LLM Observability — @DataDog/ml-observability

Most are blocked on tiktoken or protobuf cutting a 3.15 release; bump the upstream pin and regen the lockfile.

API SDK — @DataDog/apm-sdk-capabilities-python

Serverless — @DataDog/apm-serverless

CI Visibility — @DataDog/ci-app-libraries

ASM — @DataDog/asm-python

Data Streams — @DataDog/data-streams-monitoring

Completed

Non-goals (no action required for the py-315 migration itself)

The integrations below are explicitly out of scope for the 3.15 effort. They were already capped below 3.14
long before 3.15 came up, so flipping on cp315 wheels does not change anything for them.
They are listed here only as an opportunity for a future cleanup / deprecation initiative to happen independently
of the 3.15 cycle (all are likely owned by @DataDog/apm-idm-python / @DataDog/apm-core-python).

  • vertica (capped at 3.9) — already deprecated in dd-trace-py v3.16.0; on its way out.
  • bottle (capped at 3.10) — Bottle the framework is dormant upstream.
  • aredis (capped at 3.9) — library abandoned upstream; superseded by redis>=4.2.0.
  • yaaredis (capped at 3.10) — library abandoned upstream; superseded by redis>=4.2.0.
  • rediscluster (capped at 3.11) — redis-py-cluster superseded by native cluster support in redis>=4.2.0.
  • asynctest (capped at 3.9) — library obsoleted by stdlib unittest.IsolatedAsyncioTestCase in Python 3.8.
  • pynamodb (capped at 3.11) — test-harness incompat at 3.12+; orthogonal to 3.15 (fixing it would unblock 3.12-3.15 in one shot). Belongs in a general test-hygiene backlog.

If any of these turn out to need attention, file a separate issue —
don't reopen this tracker for them.

References

Metadata

Metadata

Labels

python:3.15Tracks Python 3.15 enablement work

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions