Repository navigation
ci: run the free-threaded and typing jobs on the matrix's Python - #360
Open
pylaterreur wants to merge 2 commits into
Open
pylaterreur wants to merge 2 commits into
pylaterreur wants to merge 2 commits into
Conversation
uv 0.8.11 only uses a free-threaded interpreter when one is explicitly requested. `uv run` requests `>=3.10` from `requires-python`, so in the 3.13t and 3.14t jobs uv skips the interpreter installed by setup-python and runs the tests on the next GIL-enabled Python it finds on the runner, e.g. /usr/bin/python3 (3.12.3) on Ubuntu or the preinstalled 3.12.10 on Windows. Set UV_PYTHON to the matrix version so that every job uses the interpreter installed by setup-python. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GwUvhmzgfkiZ6vo4uGyesN
The typing workflow never used matrix.py: it has no setup-python step and uv gets no Python request, so every job ran mypy on the runner's system Python 3.12.3. Install the matrix version with setup-python and point uv at it, as in the test workflow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GwUvhmzgfkiZ6vo4uGyesN
This was referenced Oct 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The free-threaded test jobs and the typing jobs don't run on the Python they're named after.
test.yml. uv 0.8.11, the pinned version, only uses a free-threaded interpreter when one is requested explicitly (e.g.
3.14t; uv 0.9 relaxed this for 3.14+).uv runonly requests>=3.10fromrequires-python. So in thetjobs, uv skips the interpreter that setup-python installed:None of the 14
tjobs in main's scheduled run 38940387418 used a free-threaded interpreter:/usr/bin/python3(3.12.3)/opt/homebrew/opt/python@3.15/bin/python3.15(3.15.0)/usr/local/bin/python3(3.13.16 / 3.14.8)...\Python\3.12.10\x64\python3.exe...\Python\3.13.16\arm64\python3.exeWith
UV_PYTHONset to the matrix version, uv uses the interpreter installed by setup-python. The other jobs already end up on that interpreter, and this keeps them there.typing.yml. The workflow has no setup-python step and never passes
matrix.pyto uv. All 7 mypy jobs therefore run on the runner's/usr/bin/python3(3.12.3) (run 38941189455). Like test.yml, it now installs the matrix version with setup-python and setsUV_PYTHON.This also affects the 3.15t jobs that #357 adds: its fork run of
test (ubuntu-24.04, 3.15t, x64)ran on/usr/bin/python3(3.12.3).Testing. I ran this branch on my fork:
tjobs now run onpython3.13t/python3.14t(Linux x64/arm64, macOS arm64/x64, Windows x64/x86/arm64).test_optimizefailure.macos-26-intel, 3.10, ran into hypothesis's 20 s deadline in a fuzzing test. That also happens on main (scheduled run 38780348047), and ci: fix the anaconda, wheel, external-zstd and flaky test workflows #358 removes that deadline.python3.13tandpython3.14t. All 7 pass.I also reproduced the problem locally with uv 0.8.11 and GitHub's 3.15.0t build first on
PATH.uv run --lockedpicks/usr/bin/python3(Py_GIL_DISABLED= 0). WithUV_PYTHON=3.15t, it pickspython3.15t(Py_GIL_DISABLED= 1). zizmor 1.31.1 (offline audits) and actionlint report nothing.Prepared with the help of Claude Code.
🤖 Generated with Claude Code