From 47b91bbe6aa222e015d3ef39150412d39f079a52 Mon Sep 17 00:00:00 2001 From: Anghelo Carvajal Date: Sun, 22 Feb 2026 11:21:06 -0300 Subject: [PATCH 1/8] Install the built wheels in CI to make sure they work corrently in multiple versions. --- .github/scripts/ci_check_wheel.ps1 | 33 +++++++++++ .github/scripts/ci_check_wheel.sh | 33 +++++++++++ .github/workflows/pypi_upload.yml | 93 ++++++++++++++++++++++++++++++ .gitignore | 2 + CHANGELOG.md | 2 + 5 files changed, 163 insertions(+) create mode 100644 .github/scripts/ci_check_wheel.ps1 create mode 100755 .github/scripts/ci_check_wheel.sh diff --git a/.github/scripts/ci_check_wheel.ps1 b/.github/scripts/ci_check_wheel.ps1 new file mode 100644 index 00000000..b722ce58 --- /dev/null +++ b/.github/scripts/ci_check_wheel.ps1 @@ -0,0 +1,33 @@ +# A Powershell port of `ci_check_wheel.sh`. Refer to that script instead. + +# Any change made here should be made in `ci_check_wheel.sh` too. + +param ( + [Parameter(Mandatory = $true)] + [string]$PYTHON_VERSION, + + [Parameter(Mandatory = $true)] + [string]$KEY, + + [string]$EXTRA +) + +# Equivalent to `set -e` +$ErrorActionPreference = "Stop" + +if (Test-Path ".venv") { + Remove-Item -Recurse -Force ".venv" +} + +# When $EXTRA is empty powershell passes the argument as an empty argument to +# uv, so we need to explicitly check the argument and only pass it if it is not +# empty to avoid uv from erroring +if ($EXTRA) { + uv venv --no-config .venv -p $PYTHON_VERSION $EXTRA +} else { + uv venv --no-config .venv -p $PYTHON_VERSION +} + +uv run --no-config --no-build --no-sync python --version +uv pip install $(Get-ChildItem -Path .\dist\ -Recurse -Filter "crunch64-*-abi3-*") +uv run --no-config --no-build --no-sync python -c "import rabbitizer; print(rabbitizer.Instruction(0).disassemble())" diff --git a/.github/scripts/ci_check_wheel.sh b/.github/scripts/ci_check_wheel.sh new file mode 100755 index 00000000..94a73dfc --- /dev/null +++ b/.github/scripts/ci_check_wheel.sh @@ -0,0 +1,33 @@ +# This script checks a given Python wheel inside the `dist` is installable in a +# given Python version. +# +# It recieves the following arguments: +# - The python version to check, it must be compatible with uv. +# - A key value to allow searching for the wheel in the `dist` folder. Only a +# single wheel in the folder must contain this value in its name. +# Recommended values: abi3, cp314t, pypy39 and similar values. +# - (OPTIONAL) A single aditional flag to pass to `uv venv`. +# Usually `--managed-python`. + +# Any change made here should be made in `ci_check_wheel.ps1` too. + +PYTHON_VERSION=$1 +KEY=$2 +EXTRA=$3 + +# Exit with an error value if any command produces an error. +set -e + +# We make a venv with the Python version we were told to. +rm -rf .venv +uv venv --no-config -p $PYTHON_VERSION $EXTRA +source .venv/bin/activate +# Allows us to check we are actually using the requested Python version. +uv run --no-config --no-build --no-sync python --version + +# We install the wheel by looking it up in the dist folder. +# We need to do a `find` command here because we don't know the exact name of +# the wheel (it can be affected by package version, arch, python version, etc.). +uv pip install $(find ./dist/ -name "rabbitizer-*-$KEY*") +# Check something basic to make sure it was installed correctly. +uv run --no-config --no-build --no-sync python -c "import rabbitizer; print(rabbitizer.Instruction(0).disassemble())" diff --git a/.github/workflows/pypi_upload.yml b/.github/workflows/pypi_upload.yml index 18caf46d..2f04c936 100644 --- a/.github/workflows/pypi_upload.yml +++ b/.github/workflows/pypi_upload.yml @@ -21,33 +21,83 @@ jobs: include: - os: linux-intel runs-on: ubuntu-22.04 + check-wheel: true + wheel-check-script: .github/scripts/ci_check_wheel.sh + python_version_min: '3.7' + python_version_max: '3.14' + abi3-key: abi3-manylinux - os: linux-arm runs-on: ubuntu-24.04-arm + check-wheel: true + wheel-check-script: .github/scripts/ci_check_wheel.sh + python_version_min: '3.7' + python_version_max: '3.14' + abi3-key: abi3-manylinux - os: windows-intel runs-on: windows-latest + check-wheel: true + wheel-check-script: .github/scripts/ci_check_wheel.ps1 + python_version_min: '3.7' + python_version_max: '3.14' + abi3-key: abi3-win_amd64 - os: windows-arm runs-on: windows-11-arm + check-wheel: true + wheel-check-script: .github/scripts/ci_check_wheel.ps1 + python_version_min: '3.7' + python_version_max: '3.14' + abi3-key: abi3-win_arm64 - os: macos-intel # macos-15-intel is the last x86_64 runner runs-on: macos-15-intel + check-wheel: true + wheel-check-script: .github/scripts/ci_check_wheel.sh + python_version_min: '3.7' + python_version_max: '3.14' + abi3-key: abi3 - os: macos-arm # macos-14+ (including latest) are ARM64 runners runs-on: macos-latest + check-wheel: true + wheel-check-script: .github/scripts/ci_check_wheel.sh + python_version_min: '3.7' + python_version_max: '3.14' + abi3-key: abi3 - os: android-intel runs-on: ubuntu-22.04 platform: android + check-wheel: false + wheel-check-script: .github/scripts/ci_check_wheel.sh + python_version_min: '3.7' + python_version_max: '3.14' + abi3-key: abi3 - os: android-arm # GitHub Actions doesn’t currently support the Android emulator on any ARM # runner. So we build on a non-ARM runner, which will skip the tests. runs-on: ubuntu-22.04 platform: android archs: arm64_v8a + check-wheel: false + wheel-check-script: .github/scripts/ci_check_wheel.sh + python_version_min: '3.7' + python_version_max: '3.14' + abi3-key: abi3 - os: ios runs-on: macos-latest platform: ios + check-wheel: false + wheel-check-script: .github/scripts/ci_check_wheel.sh + python_version_min: '3.7' + python_version_max: '3.14' + abi3-key: abi3 - os: pyodide runs-on: ubuntu-22.04 platform: pyodide + check-wheel: false + wheel-check-script: .github/scripts/ci_check_wheel.sh + python_version_min: '3.7' + python_version_max: '3.14' + abi3-key: abi3 steps: - name: Checkout reposistory @@ -67,6 +117,49 @@ jobs: name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }} path: ./wheelhouse/*.whl + # Test the built wheels are installable in the min and max Python + # versions we are about. + # We do this by installing the Python version in a venv using uv, + # installing the built wheel into the venv and running some simple + # command. + # We can only test the wheels that matches the architecture of the runner + # so we hope the other built wheels will just work, hopefully. + - name: Install uv + uses: astral-sh/setup-uv@v7 + if: ${{ matrix.check-wheel }} + - name: Setup python + uses: actions/setup-python@v6 + if: ${{ matrix.check-wheel }} + with: + python-version: | + ${{ matrix.python_version_min }} + 3.14t + pypy3.9 + pypy3.10 + pypy3.11 + - name: Test wheels with min version (${{ matrix.python_version_min }}) + if: ${{ matrix.check-wheel }} + # Check the built wheel is installable on the oldest Python supported + run: | + ${{ matrix.wheel-check-script }} ${{ matrix.python_version_min }} ${{ matrix.abi3-key }} + - name: Test wheels with max version (${{ matrix.python_version_max }}) + if: ${{ matrix.check-wheel }} + # Check the built wheel is installable on the newest Python we know of + run: | + ${{ matrix.wheel-check-script }} ${{ matrix.python_version_max }} ${{ matrix.abi3-key }} --managed-python + + - name: Test free threaded wheels + if: ${{ matrix.check-wheel }} + run: | + ${{ matrix.wheel-check-script }} 3.14t cp314t --managed-python + + - name: Test pypy wheels + if: ${{ matrix.check-wheel }} + run: | + ${{ matrix.wheel-check-script }} pypy3.9 pypy39 --managed-python + ${{ matrix.wheel-check-script }} pypy3.10 pypy310 --managed-python + ${{ matrix.wheel-check-script }} pypy3.11 pypy311 --managed-python + build_sdist: name: Build source distribution runs-on: ubuntu-22.04 diff --git a/.gitignore b/.gitignore index 467b37aa..11907a8a 100644 --- a/.gitignore +++ b/.gitignore @@ -227,3 +227,5 @@ cython_debug/ /target .make_options + +uv.lock diff --git a/CHANGELOG.md b/CHANGELOG.md index ee622164..5aab9e21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - This allows us to build a single wheel that can work in multiple Python versions, instead of needing to build a wheel for each Python version. - The minimum Python version for `abi3` compatibility is 3.4 now. +- Install the built wheels in CI to make sure they work corrently in multiple + versions. ## [1.14.3] - 2025-10-12 From 96293ab1cefa03bb75d7bb2e625395250f998d78 Mon Sep 17 00:00:00 2001 From: Anghelo Carvajal Date: Sun, 22 Feb 2026 11:28:10 -0300 Subject: [PATCH 2/8] fix path --- .github/scripts/ci_check_wheel.ps1 | 2 +- .github/scripts/ci_check_wheel.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/scripts/ci_check_wheel.ps1 b/.github/scripts/ci_check_wheel.ps1 index b722ce58..329c04d1 100644 --- a/.github/scripts/ci_check_wheel.ps1 +++ b/.github/scripts/ci_check_wheel.ps1 @@ -29,5 +29,5 @@ if ($EXTRA) { } uv run --no-config --no-build --no-sync python --version -uv pip install $(Get-ChildItem -Path .\dist\ -Recurse -Filter "crunch64-*-abi3-*") +uv pip install $(Get-ChildItem -Path .\wheelhouse\ -Recurse -Filter "crunch64-*-abi3-*") uv run --no-config --no-build --no-sync python -c "import rabbitizer; print(rabbitizer.Instruction(0).disassemble())" diff --git a/.github/scripts/ci_check_wheel.sh b/.github/scripts/ci_check_wheel.sh index 94a73dfc..2a351a56 100755 --- a/.github/scripts/ci_check_wheel.sh +++ b/.github/scripts/ci_check_wheel.sh @@ -28,6 +28,6 @@ uv run --no-config --no-build --no-sync python --version # We install the wheel by looking it up in the dist folder. # We need to do a `find` command here because we don't know the exact name of # the wheel (it can be affected by package version, arch, python version, etc.). -uv pip install $(find ./dist/ -name "rabbitizer-*-$KEY*") +uv pip install $(find ./wheelhouse/ -name "rabbitizer-*-$KEY*") # Check something basic to make sure it was installed correctly. uv run --no-config --no-build --no-sync python -c "import rabbitizer; print(rabbitizer.Instruction(0).disassemble())" From 29b4ca6b994136b0f8e0d7d2d461deb2e349654f Mon Sep 17 00:00:00 2001 From: Anghelo Carvajal Date: Sun, 22 Feb 2026 11:46:47 -0300 Subject: [PATCH 3/8] Fixes --- .github/scripts/ci_check_wheel.ps1 | 3 ++- .github/workflows/pypi_upload.yml | 18 ++++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/.github/scripts/ci_check_wheel.ps1 b/.github/scripts/ci_check_wheel.ps1 index 329c04d1..b4905869 100644 --- a/.github/scripts/ci_check_wheel.ps1 +++ b/.github/scripts/ci_check_wheel.ps1 @@ -28,6 +28,7 @@ if ($EXTRA) { uv venv --no-config .venv -p $PYTHON_VERSION } +.\.venv\Scripts\Activate.ps1 uv run --no-config --no-build --no-sync python --version -uv pip install $(Get-ChildItem -Path .\wheelhouse\ -Recurse -Filter "crunch64-*-abi3-*") +uv pip install $(Get-ChildItem -Path .\wheelhouse\ -Recurse -Filter "rabbitizer-*-$KEY*") uv run --no-config --no-build --no-sync python -c "import rabbitizer; print(rabbitizer.Instruction(0).disassemble())" diff --git a/.github/workflows/pypi_upload.yml b/.github/workflows/pypi_upload.yml index 2f04c936..c3795df3 100644 --- a/.github/workflows/pypi_upload.yml +++ b/.github/workflows/pypi_upload.yml @@ -26,13 +26,15 @@ jobs: python_version_min: '3.7' python_version_max: '3.14' abi3-key: abi3-manylinux + t-extra-key: -manylinux - os: linux-arm runs-on: ubuntu-24.04-arm check-wheel: true wheel-check-script: .github/scripts/ci_check_wheel.sh - python_version_min: '3.7' + python_version_min: '3.8' python_version_max: '3.14' abi3-key: abi3-manylinux + t-extra-key: -manylinux - os: windows-intel runs-on: windows-latest check-wheel: true @@ -40,13 +42,15 @@ jobs: python_version_min: '3.7' python_version_max: '3.14' abi3-key: abi3-win_amd64 + t-extra-key: '' - os: windows-arm runs-on: windows-11-arm check-wheel: true wheel-check-script: .github/scripts/ci_check_wheel.ps1 - python_version_min: '3.7' + python_version_min: '3.11' python_version_max: '3.14' abi3-key: abi3-win_arm64 + t-extra-key: '' - os: macos-intel # macos-15-intel is the last x86_64 runner runs-on: macos-15-intel @@ -55,14 +59,16 @@ jobs: python_version_min: '3.7' python_version_max: '3.14' abi3-key: abi3 + t-extra-key: '' - os: macos-arm # macos-14+ (including latest) are ARM64 runners runs-on: macos-latest check-wheel: true wheel-check-script: .github/scripts/ci_check_wheel.sh - python_version_min: '3.7' + python_version_min: '3.8' python_version_max: '3.14' abi3-key: abi3 + t-extra-key: '' - os: android-intel runs-on: ubuntu-22.04 platform: android @@ -71,6 +77,7 @@ jobs: python_version_min: '3.7' python_version_max: '3.14' abi3-key: abi3 + t-extra-key: '' - os: android-arm # GitHub Actions doesn’t currently support the Android emulator on any ARM # runner. So we build on a non-ARM runner, which will skip the tests. @@ -82,6 +89,7 @@ jobs: python_version_min: '3.7' python_version_max: '3.14' abi3-key: abi3 + t-extra-key: '' - os: ios runs-on: macos-latest platform: ios @@ -90,6 +98,7 @@ jobs: python_version_min: '3.7' python_version_max: '3.14' abi3-key: abi3 + t-extra-key: '' - os: pyodide runs-on: ubuntu-22.04 platform: pyodide @@ -98,6 +107,7 @@ jobs: python_version_min: '3.7' python_version_max: '3.14' abi3-key: abi3 + t-extra-key: '' steps: - name: Checkout reposistory @@ -151,7 +161,7 @@ jobs: - name: Test free threaded wheels if: ${{ matrix.check-wheel }} run: | - ${{ matrix.wheel-check-script }} 3.14t cp314t --managed-python + ${{ matrix.wheel-check-script }} 3.14t cp314t${{ matrix.t-extra-key }} --managed-python - name: Test pypy wheels if: ${{ matrix.check-wheel }} From a14197f474413f57960cc423cab2a056359a3657 Mon Sep 17 00:00:00 2001 From: Anghelo Carvajal Date: Sun, 22 Feb 2026 12:05:39 -0300 Subject: [PATCH 4/8] more fixes --- .github/workflows/pypi_upload.yml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pypi_upload.yml b/.github/workflows/pypi_upload.yml index c3795df3..e59e84bf 100644 --- a/.github/workflows/pypi_upload.yml +++ b/.github/workflows/pypi_upload.yml @@ -27,6 +27,7 @@ jobs: python_version_max: '3.14' abi3-key: abi3-manylinux t-extra-key: -manylinux + check-pypy-wheel: true - os: linux-arm runs-on: ubuntu-24.04-arm check-wheel: true @@ -35,6 +36,7 @@ jobs: python_version_max: '3.14' abi3-key: abi3-manylinux t-extra-key: -manylinux + check-pypy-wheel: true - os: windows-intel runs-on: windows-latest check-wheel: true @@ -42,7 +44,8 @@ jobs: python_version_min: '3.7' python_version_max: '3.14' abi3-key: abi3-win_amd64 - t-extra-key: '' + t-extra-key: '-win_amd64' + check-pypy-wheel: true - os: windows-arm runs-on: windows-11-arm check-wheel: true @@ -51,6 +54,7 @@ jobs: python_version_max: '3.14' abi3-key: abi3-win_arm64 t-extra-key: '' + check-pypy-wheel: false - os: macos-intel # macos-15-intel is the last x86_64 runner runs-on: macos-15-intel @@ -60,6 +64,7 @@ jobs: python_version_max: '3.14' abi3-key: abi3 t-extra-key: '' + check-pypy-wheel: true - os: macos-arm # macos-14+ (including latest) are ARM64 runners runs-on: macos-latest @@ -69,6 +74,7 @@ jobs: python_version_max: '3.14' abi3-key: abi3 t-extra-key: '' + check-pypy-wheel: true - os: android-intel runs-on: ubuntu-22.04 platform: android @@ -78,6 +84,7 @@ jobs: python_version_max: '3.14' abi3-key: abi3 t-extra-key: '' + check-pypy-wheel: true - os: android-arm # GitHub Actions doesn’t currently support the Android emulator on any ARM # runner. So we build on a non-ARM runner, which will skip the tests. @@ -90,6 +97,7 @@ jobs: python_version_max: '3.14' abi3-key: abi3 t-extra-key: '' + check-pypy-wheel: true - os: ios runs-on: macos-latest platform: ios @@ -99,6 +107,7 @@ jobs: python_version_max: '3.14' abi3-key: abi3 t-extra-key: '' + check-pypy-wheel: true - os: pyodide runs-on: ubuntu-22.04 platform: pyodide @@ -108,6 +117,7 @@ jobs: python_version_max: '3.14' abi3-key: abi3 t-extra-key: '' + check-pypy-wheel: true steps: - name: Checkout reposistory @@ -137,13 +147,18 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v7 if: ${{ matrix.check-wheel }} - - name: Setup python + - name: Setup Python uses: actions/setup-python@v6 if: ${{ matrix.check-wheel }} with: python-version: | ${{ matrix.python_version_min }} 3.14t + - name: Setup PyPy + uses: actions/setup-python@v6 + if: ${{ matrix.check-wheel && matrix.check-pypy-wheel }} + with: + python-version: | pypy3.9 pypy3.10 pypy3.11 @@ -164,7 +179,7 @@ jobs: ${{ matrix.wheel-check-script }} 3.14t cp314t${{ matrix.t-extra-key }} --managed-python - name: Test pypy wheels - if: ${{ matrix.check-wheel }} + if: ${{ matrix.check-wheel && matrix.check-pypy-wheel }} run: | ${{ matrix.wheel-check-script }} pypy3.9 pypy39 --managed-python ${{ matrix.wheel-check-script }} pypy3.10 pypy310 --managed-python From f04e1bcf60d72536404f95536367da06e7ca7954 Mon Sep 17 00:00:00 2001 From: Anghelo Carvajal Date: Sun, 22 Feb 2026 12:25:18 -0300 Subject: [PATCH 5/8] arm windows nonsense --- .github/scripts/ci_check_wheel.ps1 | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/scripts/ci_check_wheel.ps1 b/.github/scripts/ci_check_wheel.ps1 index b4905869..3ab21dd8 100644 --- a/.github/scripts/ci_check_wheel.ps1 +++ b/.github/scripts/ci_check_wheel.ps1 @@ -15,6 +15,15 @@ param ( # Equivalent to `set -e` $ErrorActionPreference = "Stop" +# We need to set UV_PYTHON manually on arm runners, otherwise uv installs x86 binaries for some reason. +# https://github.com/astral-sh/uv/issues/12906 +$osArch = [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture +switch ($osArch) { + arm64 { set UV_PYTHON=arm64 } + x86 { } + x64 { } +} + if (Test-Path ".venv") { Remove-Item -Recurse -Force ".venv" } From 398d59b3564b7bf9897f8d0da5c14201b2056fa0 Mon Sep 17 00:00:00 2001 From: Anghelo Carvajal Date: Sun, 22 Feb 2026 12:44:31 -0300 Subject: [PATCH 6/8] fix? --- .github/scripts/ci_check_wheel.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/scripts/ci_check_wheel.ps1 b/.github/scripts/ci_check_wheel.ps1 index 3ab21dd8..f0d57a10 100644 --- a/.github/scripts/ci_check_wheel.ps1 +++ b/.github/scripts/ci_check_wheel.ps1 @@ -19,7 +19,7 @@ $ErrorActionPreference = "Stop" # https://github.com/astral-sh/uv/issues/12906 $osArch = [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture switch ($osArch) { - arm64 { set UV_PYTHON=arm64 } + arm64 { $Env:UV_PYTHON=arm64 } x86 { } x64 { } } From 726a1aea11bec931ca1020afe989e687cb49e8ec Mon Sep 17 00:00:00 2001 From: Anghelo Carvajal Date: Sun, 22 Feb 2026 12:56:27 -0300 Subject: [PATCH 7/8] =?UTF-8?q?fix=C2=BF=C2=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/scripts/ci_check_wheel.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/scripts/ci_check_wheel.ps1 b/.github/scripts/ci_check_wheel.ps1 index f0d57a10..87bd6c51 100644 --- a/.github/scripts/ci_check_wheel.ps1 +++ b/.github/scripts/ci_check_wheel.ps1 @@ -19,7 +19,7 @@ $ErrorActionPreference = "Stop" # https://github.com/astral-sh/uv/issues/12906 $osArch = [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture switch ($osArch) { - arm64 { $Env:UV_PYTHON=arm64 } + arm64 { $env:UV_PYTHON = arm64 } x86 { } x64 { } } From aec0ed2160227aa71452f9f8e7722facafc9591d Mon Sep 17 00:00:00 2001 From: Anghelo Carvajal Date: Sun, 22 Feb 2026 13:04:49 -0300 Subject: [PATCH 8/8] I don't care enough about windows arm --- .github/scripts/ci_check_wheel.ps1 | 9 --------- .github/workflows/pypi_upload.yml | 5 ++++- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/.github/scripts/ci_check_wheel.ps1 b/.github/scripts/ci_check_wheel.ps1 index 87bd6c51..b4905869 100644 --- a/.github/scripts/ci_check_wheel.ps1 +++ b/.github/scripts/ci_check_wheel.ps1 @@ -15,15 +15,6 @@ param ( # Equivalent to `set -e` $ErrorActionPreference = "Stop" -# We need to set UV_PYTHON manually on arm runners, otherwise uv installs x86 binaries for some reason. -# https://github.com/astral-sh/uv/issues/12906 -$osArch = [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture -switch ($osArch) { - arm64 { $env:UV_PYTHON = arm64 } - x86 { } - x64 { } -} - if (Test-Path ".venv") { Remove-Item -Recurse -Force ".venv" } diff --git a/.github/workflows/pypi_upload.yml b/.github/workflows/pypi_upload.yml index e59e84bf..7d03a9ff 100644 --- a/.github/workflows/pypi_upload.yml +++ b/.github/workflows/pypi_upload.yml @@ -48,7 +48,10 @@ jobs: check-pypy-wheel: true - os: windows-arm runs-on: windows-11-arm - check-wheel: true + # uv installs x86 binaries on arm windows, so we can't test + # the wheels actually work for arm. + # https://github.com/astral-sh/uv/issues/12906 + check-wheel: false wheel-check-script: .github/scripts/ci_check_wheel.ps1 python_version_min: '3.11' python_version_max: '3.14'