Skip to content

ci(loongsuite): add Python 3.15 jobs and classifiers - #289

Open
pylaterreur wants to merge 4 commits into
alibaba:mainfrom
pylaterreur:add-python-3.15
Open

pylaterreur wants to merge 4 commits into
alibaba:mainfrom
pylaterreur:add-python-3.15

Conversation

@pylaterreur

Copy link
Copy Markdown
Contributor

Python 3.15.0 is out. This runs the LoongSuite instrumentation packages, loongsuite-distro and opentelemetry-util-genai on 3.15 and adds the 3.15 trove classifier to them. It follows #285 (3.14).

  • The workflow generator gets the py315 alias, and loongsuite_test_0.yml gains the matching 34 jobs.
  • A GitHub Actions matrix holds at most 256 jobs, and the test matrix reaches 263 with 3.15. The first commit splits the dynamic test matrix into chunks of 250 jobs in the same workflow: one selector step and one test job per chunk, and the existing result job needs and checks all of them. select_loongsuite_matrix.py is unchanged. With 250 jobs or fewer the generated workflow is byte-for-byte the same as before. The lint matrix keeps the guard.
  • LiteLLM, Google ADK and Vita stay on 3.14 and older. litellm declares Requires-Python <3.15 and has no cp315 wheels, and building it from source needs fastuuid 0.14.0, which has no cp315 wheels either and fails to build (PyO3 0.26 supports Python up to 3.14). The Google ADK tests install litellm. vita 0.1.0 only has wheels up to cp314 and no sdist.

Not run locally: the 3.15 test jobs; they need this PR's CI.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GwUvhmzgfkiZ6vo4uGyesN

pylaterreur and others added 2 commits October 28, 2026 07:53
A GitHub Actions matrix holds at most 256 jobs, so the workflow
generator refuses to render loongsuite_test with more than 250 jobs.
Adding Python 3.15 brings the test matrix to 263 jobs.

Instead of refusing, render one selector step and one test job per chunk
of 250 jobs, all in loongsuite_test_0.yml. Each selector step runs the
existing select_loongsuite_matrix.py on its own chunk, so the script is
unchanged, and the existing "LoongSuite Test 0 result" job now needs and
checks every chunk. With 250 jobs or fewer the generated workflow is
byte-for-byte the same as before. The lint matrix keeps the guard.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwUvhmzgfkiZ6vo4uGyesN
Test the LoongSuite instrumentation packages, loongsuite-distro and
opentelemetry-util-genai on Python 3.15, and add the Python 3.15 trove
classifier to them. The vendored workflow generator gets the py315
alias, and the regenerated loongsuite_test_0.yml gains the matching 34
jobs; they go into the second matrix chunk.

LiteLLM, Google ADK and Vita stay on Python 3.14 and older. litellm
declares Requires-Python <3.15 and has no cp315 wheels, and building it
from source needs fastuuid 0.14.0, which has no cp315 wheels either and
fails to build (PyO3 0.26 supports Python up to 3.14). The Google ADK
tests install litellm. vita 0.1.0 only has wheels up to cp314 and no
sdist.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GwUvhmzgfkiZ6vo4uGyesN
@pylaterreur

Copy link
Copy Markdown
Contributor Author

The red crewai jobs here are not from this PR: they fail the same way on main since crewAI 1.15.31 (it needs litellm >= 1.97.0 to load its LLM fallback, and the tests' aiohttp<3.12 cap holds litellm at 1.95.0). The fix is #290; after it merges this PR needs a merge of main.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GwUvhmzgfkiZ6vo4uGyesN

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The generator and generated matrix were statically validated, but 34 new Python 3.15 dependent CI jobs and third-party dependency installs remain unexecuted, so GitHub-hosted CI is needed to verify runtime behavior and compatibility.

No open issues 🎉

What changed in this PR

Adds Python 3.15 support for eligible LoongSuite packages and updates CI to run the expanded test matrix without exceeding GitHub Actions limits.

Changes:

  • Adds Python 3.15 classifiers and tox environments for supported packages.
  • Adds the py315 workflow alias and generated Python 3.15 jobs.
  • Splits oversized test matrices into chunks with aggregate result validation.
  • Keeps packages with incompatible dependencies on earlier Python versions.

This pull request is too complex or risky for automated approval.

File Description
util/​opentelemetry-util-genai/​pyproject.toml Adds the Python 3.15 classifier.
util/​opentelemetry-util-genai/​CHANGELOG-loongsuite.md Documents Python 3.15 CI support.
tox-loongsuite.ini Adds Python 3.15 test environments for supported packages.
loongsuite-distro/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-wildtool/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-widesearch/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-webarena/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-terminus2/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-strands/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-slop-code/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-qwen-agent/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-minisweagent/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-microsoft-agent-framework/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-mem0/​README.md Updates Python compatibility documentation; one compatibility wording nit remains.
instrumentation-loongsuite/​loongsuite-instrumentation-mem0/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-llama-index/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-langgraph/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-hermes-agent/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-google-genai/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-deepagents/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-dashscope/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-claw-eval/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-claude-agent-sdk/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-bfclv4/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-autogen/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-algotune/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-agno/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-agentscope/​pyproject.toml Adds the Python 3.15 classifier.
instrumentation-loongsuite/​loongsuite-instrumentation-a2a/​pyproject.toml Adds the Python 3.15 classifier.
CHANGELOG-loongsuite.md Records Python 3.15 support and dependency-based exclusions.
.github/​workflows/​loongsuite_test_0.yml Regenerates CI with Python 3.15 jobs, split test matrices, and aggregate result checks.
.github/​workflows/​generate_workflows_lib/​src/​generate_workflows_lib/​loongsuite_test.yml.j2 Templates chunked selectors, test jobs, and result validation.
.github/​workflows/​generate_workflows_lib/​src/​generate_workflows_lib/​__init__.py Adds the py315 alias and matrix chunk generation.
.github/​workflows/​generate_workflows_lib/​pyproject.toml Adds the Python 3.15 classifier to the workflow generator package.

Review effort: Lite

@ralf0131
ralf0131 requested a balanced review from Copilot October 29, 2026 12:30

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.

@ralf0131

Copy link
Copy Markdown
Collaborator

Thanks for the contribution! Please resolve the conflict first.

# Conflicts:
#	util/opentelemetry-util-genai/CHANGELOG-loongsuite.md
@pylaterreur

Copy link
Copy Markdown
Contributor Author

The red jobs here are not from this PR: docs (fixed by #295; it fails on every PR since #294) and google-genai-latest 3.11-3.15 (google-genai 2.34.0 released today; fixed by #296). After they merge this needs a merge of main.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GwUvhmzgfkiZ6vo4uGyesN

This branch has not been deployed

No deployments
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.

5 participants