From 1147a20cb6ea19796707b6111cd56d6997142b7b Mon Sep 17 00:00:00 2001 From: Chao Zhang Date: Tue, 25 Aug 2026 15:37:42 +0800 Subject: [PATCH 1/3] Add Windows ARM64 support to CI --- .github/workflows/pypi-build-artifacts.yml | 12 +++++++++--- .github/workflows/svn-build-artifacts.yml | 12 +++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pypi-build-artifacts.yml b/.github/workflows/pypi-build-artifacts.yml index 5e742fbd8c..d571cd89e8 100644 --- a/.github/workflows/pypi-build-artifacts.yml +++ b/.github/workflows/pypi-build-artifacts.yml @@ -36,7 +36,11 @@ jobs: strategy: max-parallel: 15 matrix: - os: [ ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-15-intel, macos-latest ] + os: [ ubuntu-latest, ubuntu-24.04-arm, windows-latest, windows-11-arm, macos-15-intel, macos-latest ] + include: + - os: windows-11-arm + before_test: "uv pip install pytest==9.1.1" + test_command: "python -m pytest --confcutdir={project}/tests/avro {project}/tests/avro/test_decoder.py" steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -79,8 +83,10 @@ jobs: CIBW_PROJECT_REQUIRES_PYTHON: ">=3.10,<3.15" # Keep these in sync with Python CI job `cibw-dev-env-smoke-test` # in .github/workflows/python-ci.yml to catch import-time regressions early. - CIBW_BEFORE_TEST: "uv sync --directory {project} --only-group dev --no-install-project" - CIBW_TEST_COMMAND: "uv run --directory {project} pytest tests/avro/test_decoder.py" + # PyArrow does not publish Windows ARM64 wheels, so that runner uses + # the minimal test environment configured in the matrix. + CIBW_BEFORE_TEST: ${{ matrix.before_test || 'uv sync --directory {project} --only-group dev --no-install-project' }} + CIBW_TEST_COMMAND: ${{ matrix.test_command || 'uv run --directory {project} pytest tests/avro/test_decoder.py' }} # Skip free-threaded (PEP 703) builds until we evaluate decoder_fast support CIBW_SKIP: "cp3*t-*" diff --git a/.github/workflows/svn-build-artifacts.yml b/.github/workflows/svn-build-artifacts.yml index 250901b9f9..7e56a0c291 100644 --- a/.github/workflows/svn-build-artifacts.yml +++ b/.github/workflows/svn-build-artifacts.yml @@ -36,7 +36,11 @@ jobs: strategy: max-parallel: 15 matrix: - os: [ ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-15-intel, macos-latest ] + os: [ ubuntu-latest, ubuntu-24.04-arm, windows-latest, windows-11-arm, macos-15-intel, macos-latest ] + include: + - os: windows-11-arm + before_test: "uv pip install pytest==9.1.1" + test_command: "python -m pytest --confcutdir={project}/tests/avro {project}/tests/avro/test_decoder.py" steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -71,8 +75,10 @@ jobs: # Ignore 32 bit architectures CIBW_ARCHS: "auto64" CIBW_PROJECT_REQUIRES_PYTHON: ">=3.10,<3.15" - CIBW_BEFORE_TEST: "uv sync --directory {project} --only-group dev --no-install-project" - CIBW_TEST_COMMAND: "uv run --directory {project} pytest tests/avro/test_decoder.py" + # PyArrow does not publish Windows ARM64 wheels, so that runner uses + # the minimal test environment configured in the matrix. + CIBW_BEFORE_TEST: ${{ matrix.before_test || 'uv sync --directory {project} --only-group dev --no-install-project' }} + CIBW_TEST_COMMAND: ${{ matrix.test_command || 'uv run --directory {project} pytest tests/avro/test_decoder.py' }} # Skip free-threaded (PEP 703) builds until we evaluate decoder_fast support CIBW_SKIP: "cp3*t-*" From 06d16c0672e2a58b43101cce7dc2c08337d624c8 Mon Sep 17 00:00:00 2001 From: Chao Zhang Date: Tue, 25 Aug 2026 17:02:33 +0800 Subject: [PATCH 2/3] Fix Windows ARM64 matrix configuration Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .github/workflows/pypi-build-artifacts.yml | 2 +- .github/workflows/svn-build-artifacts.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pypi-build-artifacts.yml b/.github/workflows/pypi-build-artifacts.yml index d571cd89e8..f88d7ee2ee 100644 --- a/.github/workflows/pypi-build-artifacts.yml +++ b/.github/workflows/pypi-build-artifacts.yml @@ -36,7 +36,7 @@ jobs: strategy: max-parallel: 15 matrix: - os: [ ubuntu-latest, ubuntu-24.04-arm, windows-latest, windows-11-arm, macos-15-intel, macos-latest ] + os: [ ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-15-intel, macos-latest ] include: - os: windows-11-arm before_test: "uv pip install pytest==9.1.1" diff --git a/.github/workflows/svn-build-artifacts.yml b/.github/workflows/svn-build-artifacts.yml index 7e56a0c291..5387ebe501 100644 --- a/.github/workflows/svn-build-artifacts.yml +++ b/.github/workflows/svn-build-artifacts.yml @@ -36,7 +36,7 @@ jobs: strategy: max-parallel: 15 matrix: - os: [ ubuntu-latest, ubuntu-24.04-arm, windows-latest, windows-11-arm, macos-15-intel, macos-latest ] + os: [ ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-15-intel, macos-latest ] include: - os: windows-11-arm before_test: "uv pip install pytest==9.1.1" From 85105ce22a97725ea9ea6fe41e3b23b706da9de1 Mon Sep 17 00:00:00 2001 From: Chao Zhang Date: Wed, 26 Aug 2026 09:50:17 +0800 Subject: [PATCH 3/3] Clarify Windows ARM64 wheel testing Explicitly select ARM64 wheels on the Windows ARM runner and document why its minimal environment still runs the same decoder smoke test as every platform. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .github/workflows/pypi-build-artifacts.yml | 7 +++++-- .github/workflows/svn-build-artifacts.yml | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pypi-build-artifacts.yml b/.github/workflows/pypi-build-artifacts.yml index f88d7ee2ee..db99bec762 100644 --- a/.github/workflows/pypi-build-artifacts.yml +++ b/.github/workflows/pypi-build-artifacts.yml @@ -39,6 +39,7 @@ jobs: os: [ ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-15-intel, macos-latest ] include: - os: windows-11-arm + windows_archs: "ARM64" before_test: "uv pip install pytest==9.1.1" test_command: "python -m pytest --confcutdir={project}/tests/avro {project}/tests/avro/test_decoder.py" @@ -80,11 +81,13 @@ jobs: env: # Ignore 32 bit architectures CIBW_ARCHS: "auto64" + CIBW_ARCHS_WINDOWS: ${{ matrix.windows_archs || 'auto64' }} CIBW_PROJECT_REQUIRES_PYTHON: ">=3.10,<3.15" # Keep these in sync with Python CI job `cibw-dev-env-smoke-test` # in .github/workflows/python-ci.yml to catch import-time regressions early. - # PyArrow does not publish Windows ARM64 wheels, so that runner uses - # the minimal test environment configured in the matrix. + # Every platform runs the decoder wheel smoke test. PyArrow does not + # publish Windows ARM64 wheels, so that runner uses a minimal test + # environment and avoids loading the repository-wide conftest. CIBW_BEFORE_TEST: ${{ matrix.before_test || 'uv sync --directory {project} --only-group dev --no-install-project' }} CIBW_TEST_COMMAND: ${{ matrix.test_command || 'uv run --directory {project} pytest tests/avro/test_decoder.py' }} # Skip free-threaded (PEP 703) builds until we evaluate decoder_fast support diff --git a/.github/workflows/svn-build-artifacts.yml b/.github/workflows/svn-build-artifacts.yml index 5387ebe501..ec857e8110 100644 --- a/.github/workflows/svn-build-artifacts.yml +++ b/.github/workflows/svn-build-artifacts.yml @@ -39,6 +39,7 @@ jobs: os: [ ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-15-intel, macos-latest ] include: - os: windows-11-arm + windows_archs: "ARM64" before_test: "uv pip install pytest==9.1.1" test_command: "python -m pytest --confcutdir={project}/tests/avro {project}/tests/avro/test_decoder.py" @@ -74,9 +75,11 @@ jobs: env: # Ignore 32 bit architectures CIBW_ARCHS: "auto64" + CIBW_ARCHS_WINDOWS: ${{ matrix.windows_archs || 'auto64' }} CIBW_PROJECT_REQUIRES_PYTHON: ">=3.10,<3.15" - # PyArrow does not publish Windows ARM64 wheels, so that runner uses - # the minimal test environment configured in the matrix. + # Every platform runs the decoder wheel smoke test. PyArrow does not + # publish Windows ARM64 wheels, so that runner uses a minimal test + # environment and avoids loading the repository-wide conftest. CIBW_BEFORE_TEST: ${{ matrix.before_test || 'uv sync --directory {project} --only-group dev --no-install-project' }} CIBW_TEST_COMMAND: ${{ matrix.test_command || 'uv run --directory {project} pytest tests/avro/test_decoder.py' }} # Skip free-threaded (PEP 703) builds until we evaluate decoder_fast support