Skip to content

Commit 9c18f90

Browse files
committed
ci: set UV_PYTHON so uv sync keeps the free-threaded interpreter
Pinning only 'uv venv --python' was not enough: 'uv sync' ignores the existing .venv, runs its own interpreter discovery, and recreated the venv with the system 3.12, again mismatching the cp313t wheel. Set UV_PYTHON to the setup-python interpreter for the install and test steps so every uv command (venv, sync, pip, run) uses it.
1 parent 067ca45 commit 9c18f90

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

.github/workflows/test.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,15 @@ jobs:
7979
path: wheels/
8080

8181
- name: Install from pre-built wheels
82+
env:
83+
# Pin every uv command to the interpreter from setup-python.
84+
# Without this, `uv sync` ignores the existing .venv, runs its
85+
# own discovery, and grabs the system 3.12, producing a
86+
# wheel/ABI mismatch on free-threaded jobs.
87+
UV_PYTHON: ${{ steps.setup-python.outputs.python-path }}
8288
run: |
8389
set -x
84-
# Use the interpreter installed by setup-python. Passing a bare
85-
# version like "3.13t" lets uv fall back to a different system
86-
# interpreter (e.g. 3.12), producing a wheel/ABI mismatch.
87-
uv venv --python "${{ steps.setup-python.outputs.python-path }}"
90+
uv venv
8891
uv sync --dev --no-install-package datafusion
8992
WHEELS=$(find wheels/ -name "*.whl")
9093
if [ -n "$WHEELS" ]; then
@@ -99,6 +102,7 @@ jobs:
99102
- name: Run tests
100103
env:
101104
RUST_BACKTRACE: 1
105+
UV_PYTHON: ${{ steps.setup-python.outputs.python-path }}
102106
# On free-threaded interpreters, fail loud if any C extension
103107
# re-enables the GIL implicitly.
104108
PYTHON_GIL: ${{ matrix.freethreaded && '0' || '' }}

0 commit comments

Comments
 (0)