Skip to content

chore(ci): test 4 more integrations on Python 3.15 [SIGN-29] - #21521

Draft
wconti27 wants to merge 1 commit into
mainfrom
signal/SIGN-29-python-3.15-batch-2
Draft

wconti27 wants to merge 1 commit into
mainfrom
signal/SIGN-29-python-3.15-batch-2

Conversation

@wconti27

@wconti27 wconti27 commented Nov 4, 2026

Copy link
Copy Markdown
Contributor

Description

Second and final Python 3.15 runtime batch (the first is #21519). This adds the newest Python runtimes to four more integration test suites:

Integration Package(s) New runtimes Jira Evidence of support
flask_cache flask-caching 3.14, 3.15 SIGN-29 Flask-Caching 2.5.1 ships a pure-Python py3 wheel with requires-python>=3.11 — https://pypi.org/project/Flask-Caching/
vertexai google-cloud-aiplatform 3.14, 3.15 SIGN-30 google-cloud-aiplatform 2.7.0 declares 3.14 and 3.15 classifiers — https://pypi.org/project/google-cloud-aiplatform/
vertexai vertexai 3.14, 3.15 SIGN-31 Pure-Python shim over google-cloud-aiplatform — https://pypi.org/project/vertexai/
mcp mcp 3.15 SIGN-38 Pure-Python wheel, requires-python>=3.10, no upper bound — https://pypi.org/project/mcp/

Changes:

  • flask_cache: add 3.14/3.15 to the newest row (flask + flask-caching, resolves 2.5.1). Flask-Caching 2.5 removed the short CACHE_TYPE aliases ("simple", "redis", "memcached"), so the tests now use the full flask_caching.backends.<Class> paths, which work on every flask-caching version the suite tests (>=1.10). The legacy Flask-Cache row keeps the short names.
  • vertexai: add 3.14/3.15 (resolves google-cloud-aiplatform 2.7.0). The test fixture calls vertexai.init(project="test-project", location="us-central1") so GenerativeModel construction does not depend on ambient Google Cloud configuration. The prediction clients are still mocked. The TODO(py-315) note on this suite is removed, because this PR re-adds 3.15 as that note asked.
  • mcp: add 3.15 to the mcp<2 and unpinned rows (resolves mcp 1.30.0 and 2.3.0). The suite already covers mcp 2.x (test_mcp_v2.py), so the TODO(py-315) note about the FastMCP → MCPServer rename no longer applies and is removed.
  • Regenerated test locks, supported_versions.json and the integration registry.

Testing

CI is the test gate for the new runtime cells. Local checks: scripts/lint format/style, scripts/lint suitespec-check, scripts/test-requirements check, and the lockfile cooldown check. I also confirmed in a standalone script that the full flask_caching.backends.SimpleCache / RedisCache / MemcachedCache paths build and work on flask-caching 1.10.0 and 2.5.1.

Risks

Test-only change. If a new runtime cell fails in CI, its bump is removed from this PR.

Additional Notes

Not in this batch: anthropic and openai (their newest SDK releases do not declare 3.15 yet), mlflow (the pyarrow release with cp315 wheels is still inside the lock cooldown), langchain (the newer langchain stack needs cassette updates), and suites that are upstream-blocked or skip: true.

No release note: this only changes CI test coverage.

🤖 Generated with Claude Code

Add Python 3.14 and 3.15 to the newest flask_cache (flask-caching) row and the vertexai suite (google-cloud-aiplatform, vertexai), and 3.15 to the newest two mcp rows; regenerate the test locks, supported_versions.json and the integration registry. flask-caching 2.5 removed the short CACHE_TYPE aliases, so the tests use the full flask_caching.backends class paths (legacy Flask-Cache keeps the short names). The vertexai fixture now calls vertexai.init(project=...) so GenerativeModel construction does not depend on ambient Google Cloud configuration. The mcp suite already covers mcp 2.x, so its stale py-315 note is removed.

Environment: Datadog workspace

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@wconti27 wconti27 added the changelog/no-changelog A changelog entry is not required for this PR. label Nov 4, 2026
@cit-pr-commenter-54b7da

Copy link
Copy Markdown

Dependency direction analysis

⚠️ Existing dependency direction violations

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

Show existing violations (showing 5 of 89 highest severity)
ddtrace.internal.tracemethods -×-> ddtrace.trace  (internal-core -> product:tracing, score=121)
ddtrace.llmobs._integrations.openai -×-> ddtrace.trace  (product:llmobs -> product:tracing, score=119)
ddtrace.llmobs._integrations.openai_agents -×-> ddtrace.trace  (product:llmobs -> product:tracing, score=119)
ddtrace.llmobs._integrations.langgraph -×-> ddtrace.trace  (product:llmobs -> product:tracing, score=119)
ddtrace.llmobs._integrations.google_adk -×-> ddtrace.trace  (product:llmobs -> product:tracing, score=119)

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

@cit-pr-commenter-54b7da

Copy link
Copy Markdown

Codeowners resolved as

Resolved from the full PR diff against main using the target branch CODEOWNERS file.
CODEOWNERS team requests not listed below are not required by the current file set.

scripts/integration_registry/registry.yaml                              @DataDog/apm-idm-python @DataDog/ml-observability
supported_versions.json                                                 @DataDog/python-guild @DataDog/apm-idm-python @DataDog/ml-observability
tests/contrib/flask_cache/__init__.py                                   @DataDog/python-guild @DataDog/apm-idm-python
tests/contrib/flask_cache/test.py                                       @DataDog/python-guild @DataDog/apm-idm-python
tests/contrib/flask_cache/test_utils.py                                 @DataDog/python-guild @DataDog/apm-idm-python
tests/contrib/flask_cache/test_wrapper_safety.py                        @DataDog/python-guild @DataDog/apm-idm-python
tests/contrib/suitespec.yml                                             @DataDog/python-guild
tests/contrib/vertexai/conftest.py                                      @DataDog/ml-observability
tests/llmobs/suitespec.yml                                              @DataDog/ml-observability
tests/requirements_locks/4e8f0f74fddd.txt                               @DataDog/apm-python
tests/requirements_locks/6e6f94a59a87.txt                               @DataDog/apm-python
tests/requirements_locks/8f96a24a58f1.txt                               @DataDog/apm-python
tests/requirements_locks/c3449dfc9993.txt                               @DataDog/apm-python
tests/requirements_locks/d3a4faa4ce79.txt                               @DataDog/apm-python
tests/requirements_locks/e50980f8cc9b.txt                               @DataDog/apm-python

@datadog-datadog-prod-us1-2

datadog-datadog-prod-us1-2 Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Pipelines  Tests

✨ Unblock PR with BitsAI

❌ Errors

Your PR has failed checks. Please review the issues below and take necessary action before merging.

🚦 3 Pipeline jobs failed

DataDog/apm-reliability/dd-trace-py | contrib/integration_registry — 🔧 Needs a code fix, caused by this PR

View more details · View in GitLab

DataDog/apm-reliability/dd-trace-py | llmobs/vertexai — 🔧 Needs a code fix, caused by this PR

View more details · View in GitLab

Changelog | Validate changelog

View more details · View in GitHub Actions

ℹ️ 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: e0c018a | Docs | View more details | Give us feedback!

@pr-commenter

pr-commenter Bot commented Nov 4, 2026

Copy link
Copy Markdown

Benchmarks

Benchmark execution time: 2026-11-04 23:25:37

Comparing candidate commit e0c018a in PR branch signal/SIGN-29-python-3.15-batch-2 with baseline commit f96c31d in branch main.

📊 Benchmarking dashboard

Found 0 performance improvements and 0 performance regressions! Performance is the same for 615 metrics, 10 unstable metrics, 1 flaky benchmarks without significant changes.

Explanation

This is an A/B test comparing a candidate commit's performance against that of a baseline commit. Performance changes are noted in the tables below as:

  • 🟩 = significantly better candidate vs. baseline
  • 🟥 = significantly worse candidate vs. baseline

We compute a confidence interval (CI) over the relative difference of means between metrics from the candidate and baseline commits, considering the baseline as the reference.

If the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD), the change is considered significant.

Feel free to reach out to #apm-benchmarking-platform on Slack if you have any questions.

More details about the CI and significant changes

You can imagine this CI as a range of values that is likely to contain the true difference of means between the candidate and baseline commits.

CIs of the difference of means are often centered around 0%, because often changes are not that big:

---------------------------------(------|---^--------)-------------------------------->
                              -0.6%    0%  0.3%     +1.2%
                                 |          |        |
         lower bound of the CI --'          |        |
sample mean (center of the CI) -------------'        |
         upper bound of the CI ----------------------'

As described above, a change is considered significant if the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD).

For instance, for an execution time metric, this confidence interval indicates a significantly worse performance:

----------------------------------------|---------|---(---------^---------)---------->
                                       0%        1%  1.3%      2.2%      3.1%
                                                  |   |         |         |
       significant impact threshold --------------'   |         |         |
                      lower bound of CI --------------'         |         |
       sample mean (center of the CI) --------------------------'         |
                      upper bound of CI ----------------------------------'

Unstable benchmarks

These benchmarks have a confidence interval too wide to call a change; treat them as noise rather than signal.

scenario:coreapiscenario-context_with_data_listeners

  • unstable execution_time [-685.719ns; +785.826ns] or [-6.408%; +7.343%]

scenario:coreapiscenario-core_dispatch_1_listener

  • unstable execution_time [-31.561ns; +38.951ns] or [-4.597%; +5.673%]

scenario:coreapiscenario-core_dispatch_50_listeners

  • unstable execution_time [-2019.587ns; +1835.961ns] or [-10.054%; +9.140%]

scenario:coreapiscenario-core_dispatch_exception_listeners

  • unstable execution_time [-1782.728ns; +1831.257ns] or [-9.395%; +9.650%]

scenario:coreapiscenario-core_dispatch_listeners

  • unstable execution_time [-389.365ns; +370.450ns] or [-9.050%; +8.610%]

scenario:coreapiscenario-core_dispatch_no_args_listeners

  • unstable execution_time [-230.595ns; +221.264ns] or [-8.497%; +8.154%]

scenario:coreapiscenario-core_dispatch_with_results_1_listener

  • unstable execution_time [-111.730ns; +69.688ns] or [-7.756%; +4.838%]

scenario:coreapiscenario-core_dispatch_with_results_50_listeners

  • unstable execution_time [-4853.524ns; +4949.319ns] or [-9.527%; +9.715%]

scenario:coreapiscenario-core_dispatch_with_results_listeners

  • unstable execution_time [-1145.632ns; +865.738ns] or [-10.597%; +8.008%]

scenario:packagesupdateimporteddependencies-import_many_stdlib_cached

  • unstable execution_time [-53.695µs; +57.778µs] or [-9.267%; +9.971%]

Known flaky benchmarks

These benchmarks are marked as flaky and will not trigger a failure. Modify FLAKY_BENCHMARKS_REGEX to control which benchmarks are marked as flaky.

Known flaky benchmarks without significant changes:

  • scenario:packagespackageforrootmodulemapping-cache_off

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

Labels

changelog/no-changelog A changelog entry is not required for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant