diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 65f25175b..33b7e0f76 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -427,10 +427,17 @@ jobs: strategy: matrix: # Modern, supported runner images (ubuntu-20.04 was retired in 2025). - # macos-15-intel -> x86_64 wheels, macos-14 -> arm64 wheels, - # windows-2022 -> AMD64 wheels. Build config lives in - # pyproject.toml's [tool.cibuildwheel] (cp3*, auto64, Cython). - os: [ubuntu-latest, macos-15-intel, macos-14, windows-2022] + # macos-15-intel -> x86_64 wheels, macos-14 -> arm64 wheels. Build + # config lives in pyproject.toml's [tool.cibuildwheel] (cp3*, auto64, + # Cython). + # + # windows-2022 is deliberately not in this list: a failure on that leg + # fails the whole `build_wheels` job (matrix legs are ANDed together + # for job success, independent of fail-fast), and `publish` needs + # `build_wheels` -- so one broken Windows build blocks every + # platform's release, not just Windows' (see #790). Re-add it once + # Windows wheel builds have proven stable again. + os: [ubuntu-latest, macos-15-intel, macos-14] steps: - uses: actions/checkout@v4 with: diff --git a/pyproject.toml b/pyproject.toml index e45684343..c6e47171d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -175,7 +175,16 @@ skip = ["*musllinux*"] # unknown directives instead of failing, so a lower version here would quietly # produce extensions that re-enable the GIL -- see the note in # `[build-system].requires`. -before-build = "pip install 'Cython>=3.1'" +# +# Double-quoted, not single-quoted: cibuildwheel runs `before-build` through +# the native shell, which on windows-2022 is cmd.exe. cmd.exe does not treat +# single quotes as a quoting character, so `'Cython>=3.1'` left the `>` +# exposed as its output-redirection operator -- the command ran as `pip +# install 'Cython` with stdout redirected to a file literally named `3.1'`, +# which fails with no Cython installed. cmd.exe does honor double quotes, and +# bash/zsh treat `"..."` as a quoted string too, so this is quoted correctly +# on every platform cibuildwheel builds on here. +before-build = 'pip install "Cython>=3.1"' manylinux-x86_64-image = "manylinux2014" manylinux-pypy_x86_64-image = "manylinux2014"