From feb572c3a741a3070426720b33da816cecdd5fa6 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Thu, 22 May 2025 01:22:32 -0700 Subject: [PATCH 01/15] add win-arm64 builds --- .github/workflows/coverage.yml | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 4863574a6..94638a163 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -56,7 +56,7 @@ jobs: coverage: name: "${{ matrix.python-version }} on ${{ matrix.os }}" - runs-on: "${{ matrix.os }}-${{ matrix.os-version || 'latest' }}" + runs-on: "${{ matrix.os }}-${{ matrix.os-version || 'latest' }}${{ matrix.os-version || '' }}" timeout-minutes: 30 # Only run coverage if Python files or this workflow changed. @@ -64,7 +64,7 @@ jobs: if: ${{ needs.changed.outputs.run_coverage == 'true' }} env: - MATRIX_ID: "${{ matrix.python-version }}.${{ matrix.os }}" + MATRIX_ID: "${{ matrix.python-version }}.${{ matrix.os }}${{ matrix.os-version || '' }}" TOX_GH_MAJOR_MINOR: "${{ matrix.python-version }}" strategy: @@ -73,6 +73,9 @@ jobs: - ubuntu - macos - windows + os-version: + - "" + - "-11-arm" python-version: # When changing this list, be sure to check the [gh] list in # tox.ini so that tox will run properly. PYVERSIONS @@ -94,6 +97,10 @@ jobs: python-version: "pypy-3.9" - os: macos python-version: "pypy-3.10" + - os: macos + os-version: "-11-arm" + - os: ubuntu + os-version: "-11-arm" # Windows pypy 3.9 and 3.10 get stuck with PyPy 7.3.15. I hope to # unstick them, but I don't want that to block all other progress, so # skip them for now. @@ -107,6 +114,16 @@ jobs: python-version: "3.14" - os: windows python-version: "3.14t" + # setup-python only works on arm64 windows for 3.11+ + - os: windows + os-version: "-11-arm" + python-version: "3.9" + - os: windows + os-version: "-11-arm" + python-version: "3.10" + + + # If we need to tweak the os version we can do it with an include like # this: # include: From 5af9e65ba5ccf0aaf7482e1f8fad6588bb8b6a63 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Thu, 22 May 2025 01:28:36 -0700 Subject: [PATCH 02/15] add win-arm64 wheel builds --- .github/workflows/kit.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/kit.yml b/.github/workflows/kit.yml index d56705f87..4a9e0a599 100644 --- a/.github/workflows/kit.yml +++ b/.github/workflows/kit.yml @@ -142,6 +142,9 @@ jobs: - {"os": "windows", "py": "cp311", "arch": "AMD64"} - {"os": "windows", "py": "cp312", "arch": "AMD64"} - {"os": "windows", "py": "cp313", "arch": "AMD64"} + - {"os": "windows", "os-version": "11-arm", "py": "cp311", "arch": "ARM64"} + - {"os": "windows", "os-version": "11-arm", "py": "cp312", "arch": "ARM64"} + - {"os": "windows", "os-version": "11-arm", "py": "cp313", "arch": "ARM64"} # [[[end]]] (checksum: 7c3758a4ca41df53d7ebcad68f12d0d0) fail-fast: false From e0dd3908ce2db04a9cd008d3dea70f2360eb3b78 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Thu, 22 May 2025 01:31:31 -0700 Subject: [PATCH 03/15] fix os-version --- .github/workflows/coverage.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 94638a163..4bb2ab14f 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -55,8 +55,8 @@ jobs: - "tests/gold/**" coverage: - name: "${{ matrix.python-version }} on ${{ matrix.os }}" - runs-on: "${{ matrix.os }}-${{ matrix.os-version || 'latest' }}${{ matrix.os-version || '' }}" + name: "${{ matrix.python-version }} on ${{ matrix.os }}${{ matrix.os-version && format('-{0}', matrix.os-version) || '' }}" + runs-on: "${{ matrix.os }}-${{ matrix.os-version || 'latest' }}" timeout-minutes: 30 # Only run coverage if Python files or this workflow changed. @@ -64,7 +64,7 @@ jobs: if: ${{ needs.changed.outputs.run_coverage == 'true' }} env: - MATRIX_ID: "${{ matrix.python-version }}.${{ matrix.os }}${{ matrix.os-version || '' }}" + MATRIX_ID: "${{ matrix.python-version }}.${{ matrix.os }}${{ matrix.os-version && format('-{0}', matrix.os-version) || '' }}" TOX_GH_MAJOR_MINOR: "${{ matrix.python-version }}" strategy: @@ -75,7 +75,7 @@ jobs: - windows os-version: - "" - - "-11-arm" + - "11-arm" python-version: # When changing this list, be sure to check the [gh] list in # tox.ini so that tox will run properly. PYVERSIONS @@ -98,9 +98,9 @@ jobs: - os: macos python-version: "pypy-3.10" - os: macos - os-version: "-11-arm" + os-version: "11-arm" - os: ubuntu - os-version: "-11-arm" + os-version: "11-arm" # Windows pypy 3.9 and 3.10 get stuck with PyPy 7.3.15. I hope to # unstick them, but I don't want that to block all other progress, so # skip them for now. @@ -116,10 +116,10 @@ jobs: python-version: "3.14t" # setup-python only works on arm64 windows for 3.11+ - os: windows - os-version: "-11-arm" + os-version: "11-arm" python-version: "3.9" - os: windows - os-version: "-11-arm" + os-version: "11-arm" python-version: "3.10" From 6a46b1ca4f1828fb8d247322f544b3afeb650c63 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Thu, 22 May 2025 01:35:38 -0700 Subject: [PATCH 04/15] add win-arm64 tests --- .github/workflows/testsuite.yml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/.github/workflows/testsuite.yml b/.github/workflows/testsuite.yml index a27e41f99..94bc8216a 100644 --- a/.github/workflows/testsuite.yml +++ b/.github/workflows/testsuite.yml @@ -54,7 +54,7 @@ jobs: - "tests/gold/**" tests: - name: "${{ matrix.python-version }} on ${{ matrix.os }}" + name: "${{ matrix.python-version }} on ${{ matrix.os }}${{ matrix.os-version && format('-{0}', matrix.os-version) || '' }}" runs-on: "${{ matrix.os }}-${{ matrix.os-version || 'latest' }}" timeout-minutes: 30 @@ -72,6 +72,9 @@ jobs: - ubuntu - macos - windows + os-version: + - "" + - "11-arm" python-version: # When changing this list, be sure to check the [gh] list in # tox.ini so that tox will run properly. PYVERSIONS @@ -90,12 +93,23 @@ jobs: - "pypy-3.10" - "pypy-3.11" exclude: + - os: macos + os-version: "11-arm" + - os: ubuntu + os-version: "11-arm" # Windows 3.14.0b1 seems confused somehow about t vs not-t: # https://github.com/python/cpython/issues/133779 - os: windows python-version: "3.14" - os: windows python-version: "3.14t" + # setup-python only works on arm64 windows for 3.11+ + - os: windows + os-version: "11-arm" + python-version: "3.9" + - os: windows + os-version: "11-arm" + python-version: "3.10" # # If we need to exclude any combinations, do it like this: # exclude: From ababb46af8005872bf618c32c7896603c72830f8 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Thu, 22 May 2025 01:37:53 -0700 Subject: [PATCH 05/15] add minpy for win-arm64 --- .github/workflows/kit.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/kit.yml b/.github/workflows/kit.yml index 4a9e0a599..9b6d77f79 100644 --- a/.github/workflows/kit.yml +++ b/.github/workflows/kit.yml @@ -142,9 +142,9 @@ jobs: - {"os": "windows", "py": "cp311", "arch": "AMD64"} - {"os": "windows", "py": "cp312", "arch": "AMD64"} - {"os": "windows", "py": "cp313", "arch": "AMD64"} - - {"os": "windows", "os-version": "11-arm", "py": "cp311", "arch": "ARM64"} - - {"os": "windows", "os-version": "11-arm", "py": "cp312", "arch": "ARM64"} - - {"os": "windows", "os-version": "11-arm", "py": "cp313", "arch": "ARM64"} + - {"os": "windows", "os-version": "11-arm", "py": "cp311", "arch": "ARM64", minpy: "3.11"} + - {"os": "windows", "os-version": "11-arm", "py": "cp312", "arch": "ARM64", minpy: "3.11"} + - {"os": "windows", "os-version": "11-arm", "py": "cp313", "arch": "ARM64", minpy: "3.11"} # [[[end]]] (checksum: 7c3758a4ca41df53d7ebcad68f12d0d0) fail-fast: false @@ -157,7 +157,7 @@ jobs: - name: "Install Python" uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: - python-version: "3.9" # Minimum of PYVERSIONS + python-version: ${{ matrix.minpy || "3.9" }} # Minimum of PYVERSIONS cache: pip cache-dependency-path: 'requirements/*.pip' From 821604f387c8cb845dcf668ec19aea2ff343328a Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Thu, 22 May 2025 01:42:05 -0700 Subject: [PATCH 06/15] fix python-version --- .github/workflows/kit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/kit.yml b/.github/workflows/kit.yml index 9b6d77f79..23af4d19e 100644 --- a/.github/workflows/kit.yml +++ b/.github/workflows/kit.yml @@ -157,7 +157,7 @@ jobs: - name: "Install Python" uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: - python-version: ${{ matrix.minpy || "3.9" }} # Minimum of PYVERSIONS + python-version: "${{ matrix.minpy || '3.9' }}" # Minimum of PYVERSIONS cache: pip cache-dependency-path: 'requirements/*.pip' From 3006c4f32f0d02f3283c043fade884870e71a231 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Thu, 22 May 2025 01:43:57 -0700 Subject: [PATCH 07/15] skip pypy for win-arm64 --- .github/workflows/testsuite.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/testsuite.yml b/.github/workflows/testsuite.yml index 94bc8216a..d69306c5a 100644 --- a/.github/workflows/testsuite.yml +++ b/.github/workflows/testsuite.yml @@ -110,6 +110,16 @@ jobs: - os: windows os-version: "11-arm" python-version: "3.10" + # pypy not available for arm64 windows + - os: windows + os-version: "11-arm" + python-version: "pypy-3.9" + - os: windows + os-version: "11-arm" + python-version: "pypy-3.10" + - os: windows + os-version: "11-arm" + python-version: "pypy-3.11" # # If we need to exclude any combinations, do it like this: # exclude: From a3b77319787f0b9a03396fe113be1ad1568cc5a2 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Thu, 22 May 2025 01:58:02 -0700 Subject: [PATCH 08/15] add setup-rust step --- .github/workflows/kit.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/kit.yml b/.github/workflows/kit.yml index 23af4d19e..5d758ba45 100644 --- a/.github/workflows/kit.yml +++ b/.github/workflows/kit.yml @@ -161,6 +161,15 @@ jobs: cache: pip cache-dependency-path: 'requirements/*.pip' + # rust toolchain is not currently installed on windows arm64 images https://github.com/actions/partner-runner-images/issues/77 + - if: ${{ matrix.os-version == "11-arm" }} + name: Setup rust + id: setup-rust + run: | + Invoke-WebRequest https://static.rust-lang.org/rustup/dist/aarch64-pc-windows-msvc/rustup-init.exe -OutFile .\rustup-init.exe + .\rustup-init.exe -y + Add-Content $env:GITHUB_PATH "$env:USERPROFILE\.cargo\bin" + - name: "Install tools" run: | python -m pip install -r requirements/kit.pip From c552199ddceee1c8341a3136b26d39fd055bc039 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Thu, 22 May 2025 01:58:58 -0700 Subject: [PATCH 09/15] fix conditional --- .github/workflows/kit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/kit.yml b/.github/workflows/kit.yml index 5d758ba45..09c9bfa98 100644 --- a/.github/workflows/kit.yml +++ b/.github/workflows/kit.yml @@ -162,7 +162,7 @@ jobs: cache-dependency-path: 'requirements/*.pip' # rust toolchain is not currently installed on windows arm64 images https://github.com/actions/partner-runner-images/issues/77 - - if: ${{ matrix.os-version == "11-arm" }} + - if: ${{ matrix.os-version == '11-arm' }} name: Setup rust id: setup-rust run: | From f4a8fdfa8921cc0a50180ff3b6c7e7cbe774b645 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Thu, 22 May 2025 02:03:56 -0700 Subject: [PATCH 10/15] fix shell for rust setup --- .github/workflows/kit.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/kit.yml b/.github/workflows/kit.yml index 09c9bfa98..d39c81bbe 100644 --- a/.github/workflows/kit.yml +++ b/.github/workflows/kit.yml @@ -165,6 +165,7 @@ jobs: - if: ${{ matrix.os-version == '11-arm' }} name: Setup rust id: setup-rust + shell: pwsh run: | Invoke-WebRequest https://static.rust-lang.org/rustup/dist/aarch64-pc-windows-msvc/rustup-init.exe -OutFile .\rustup-init.exe .\rustup-init.exe -y From 24b0b2b7e6fdf0f8dc6f382274f12dd618df3606 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Thu, 22 May 2025 02:14:48 -0700 Subject: [PATCH 11/15] increase number of expected distributions --- .github/workflows/kit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/kit.yml b/.github/workflows/kit.yml index d39c81bbe..8d4582837 100644 --- a/.github/workflows/kit.yml +++ b/.github/workflows/kit.yml @@ -39,7 +39,7 @@ env: PIP_DISABLE_PIP_VERSION_CHECK: 1 # PYVERSIONS: changing the list of versions will change the number of # expected distributions. - EXPECTED: 63 + EXPECTED: 67 permissions: contents: read From 9d0ba114a2dafd41d513d3f5360204cc007b27b2 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Thu, 22 May 2025 02:24:33 -0700 Subject: [PATCH 12/15] remove extra lines --- .github/workflows/coverage.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 4bb2ab14f..3002baa82 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -121,9 +121,7 @@ jobs: - os: windows os-version: "11-arm" python-version: "3.10" - - - + # If we need to tweak the os version we can do it with an include like # this: # include: From fed43ea47aa43a6faa70bfdf5e87339ddbe51b5f Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Thu, 22 May 2025 10:39:21 -0700 Subject: [PATCH 13/15] Remove changes to coverage.yml --- .github/workflows/coverage.yml | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 3002baa82..4863574a6 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -55,7 +55,7 @@ jobs: - "tests/gold/**" coverage: - name: "${{ matrix.python-version }} on ${{ matrix.os }}${{ matrix.os-version && format('-{0}', matrix.os-version) || '' }}" + name: "${{ matrix.python-version }} on ${{ matrix.os }}" runs-on: "${{ matrix.os }}-${{ matrix.os-version || 'latest' }}" timeout-minutes: 30 @@ -64,7 +64,7 @@ jobs: if: ${{ needs.changed.outputs.run_coverage == 'true' }} env: - MATRIX_ID: "${{ matrix.python-version }}.${{ matrix.os }}${{ matrix.os-version && format('-{0}', matrix.os-version) || '' }}" + MATRIX_ID: "${{ matrix.python-version }}.${{ matrix.os }}" TOX_GH_MAJOR_MINOR: "${{ matrix.python-version }}" strategy: @@ -73,9 +73,6 @@ jobs: - ubuntu - macos - windows - os-version: - - "" - - "11-arm" python-version: # When changing this list, be sure to check the [gh] list in # tox.ini so that tox will run properly. PYVERSIONS @@ -97,10 +94,6 @@ jobs: python-version: "pypy-3.9" - os: macos python-version: "pypy-3.10" - - os: macos - os-version: "11-arm" - - os: ubuntu - os-version: "11-arm" # Windows pypy 3.9 and 3.10 get stuck with PyPy 7.3.15. I hope to # unstick them, but I don't want that to block all other progress, so # skip them for now. @@ -114,14 +107,6 @@ jobs: python-version: "3.14" - os: windows python-version: "3.14t" - # setup-python only works on arm64 windows for 3.11+ - - os: windows - os-version: "11-arm" - python-version: "3.9" - - os: windows - os-version: "11-arm" - python-version: "3.10" - # If we need to tweak the os version we can do it with an include like # this: # include: From 6bdb8a2da12ae023effbaec99ae42d7e6a5e4e19 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Thu, 22 May 2025 10:40:43 -0700 Subject: [PATCH 14/15] Remove changes to testsuite.yml --- .github/workflows/testsuite.yml | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/.github/workflows/testsuite.yml b/.github/workflows/testsuite.yml index d69306c5a..a27e41f99 100644 --- a/.github/workflows/testsuite.yml +++ b/.github/workflows/testsuite.yml @@ -54,7 +54,7 @@ jobs: - "tests/gold/**" tests: - name: "${{ matrix.python-version }} on ${{ matrix.os }}${{ matrix.os-version && format('-{0}', matrix.os-version) || '' }}" + name: "${{ matrix.python-version }} on ${{ matrix.os }}" runs-on: "${{ matrix.os }}-${{ matrix.os-version || 'latest' }}" timeout-minutes: 30 @@ -72,9 +72,6 @@ jobs: - ubuntu - macos - windows - os-version: - - "" - - "11-arm" python-version: # When changing this list, be sure to check the [gh] list in # tox.ini so that tox will run properly. PYVERSIONS @@ -93,33 +90,12 @@ jobs: - "pypy-3.10" - "pypy-3.11" exclude: - - os: macos - os-version: "11-arm" - - os: ubuntu - os-version: "11-arm" # Windows 3.14.0b1 seems confused somehow about t vs not-t: # https://github.com/python/cpython/issues/133779 - os: windows python-version: "3.14" - os: windows python-version: "3.14t" - # setup-python only works on arm64 windows for 3.11+ - - os: windows - os-version: "11-arm" - python-version: "3.9" - - os: windows - os-version: "11-arm" - python-version: "3.10" - # pypy not available for arm64 windows - - os: windows - os-version: "11-arm" - python-version: "pypy-3.9" - - os: windows - os-version: "11-arm" - python-version: "pypy-3.10" - - os: windows - os-version: "11-arm" - python-version: "pypy-3.11" # # If we need to exclude any combinations, do it like this: # exclude: From 8d95f568073b8781d3dc5a837a85bea8ebd84397 Mon Sep 17 00:00:00 2001 From: Finn Womack Date: Thu, 22 May 2025 11:49:13 -0700 Subject: [PATCH 15/15] Use cogapp to regen kit.yml --- .github/workflows/kit.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/kit.yml b/.github/workflows/kit.yml index 8d4582837..1fb81beae 100644 --- a/.github/workflows/kit.yml +++ b/.github/workflows/kit.yml @@ -78,7 +78,7 @@ jobs: # os_archs = { # "ubuntu": ["x86_64", "i686", "aarch64"], # "macos": ["arm64", "x86_64"], - # "windows": ["x86", "AMD64"], + # "windows": ["x86", "AMD64", "ARM64"], # } # # PYVERSIONS. Available versions: https://pypi.org/project/cibuildwheel/ # # PyPy versions are handled further below in the "pypy" step. @@ -87,6 +87,7 @@ jobs: # # Some OS/arch combinations need overrides for the Python versions: # os_arch_pys = { # # ("macos", "arm64"): ["cp38", "cp39", "cp310", "cp311", "cp312"], + # ("windows", "ARM64"): ["cp311", "cp312", "cp313"], # } # # #----- ^^^ ---------------------- ^^^ ----- @@ -102,6 +103,9 @@ jobs: # } # if the_os == "macos": # them["os-version"] = "13" + # if the_os == "windows" and the_arch == "ARM64": + # them["os-version"] = "11-arm" + # them["minpy"] = "3.11" # if the_arch == "aarch64": # # https://github.com/pypa/cibuildwheel/issues/2257 # them["os-version"] = "22.04-arm" @@ -142,10 +146,10 @@ jobs: - {"os": "windows", "py": "cp311", "arch": "AMD64"} - {"os": "windows", "py": "cp312", "arch": "AMD64"} - {"os": "windows", "py": "cp313", "arch": "AMD64"} - - {"os": "windows", "os-version": "11-arm", "py": "cp311", "arch": "ARM64", minpy: "3.11"} - - {"os": "windows", "os-version": "11-arm", "py": "cp312", "arch": "ARM64", minpy: "3.11"} - - {"os": "windows", "os-version": "11-arm", "py": "cp313", "arch": "ARM64", minpy: "3.11"} - # [[[end]]] (checksum: 7c3758a4ca41df53d7ebcad68f12d0d0) + - {"os": "windows", "py": "cp311", "arch": "ARM64", "os-version": "11-arm", "minpy": "3.11"} + - {"os": "windows", "py": "cp312", "arch": "ARM64", "os-version": "11-arm", "minpy": "3.11"} + - {"os": "windows", "py": "cp313", "arch": "ARM64", "os-version": "11-arm", "minpy": "3.11"} + # [[[end]]] (checksum: ce8e88f33d7db22f1e21a767e3256a00) fail-fast: false steps: