Skip to content

ci: repair CI on the v0.16.x maintenance branch - #868

Open
d-v-b wants to merge 9 commits into
zarr-developers:v0.16.xfrom
d-v-b:ci/repair-0.16.x
Open

d-v-b wants to merge 9 commits into
zarr-developers:v0.16.xfrom
d-v-b:ci/repair-0.16.x

Conversation

@d-v-b

@d-v-b d-v-b commented Oct 5, 2026

Copy link
Copy Markdown
Contributor

🤖 AI text below 🤖

Repairs CI on the v0.16.x maintenance branch, which currently fails for reasons unrelated to the code on the branch. There is no user-facing change.

  • Test collection under pytest 9: test_checksum32.py passed itertools.product(...) directly to parametrize. pytest 9 warns about non-collection iterables, and filterwarnings = error turns that into a collection error. The arguments are now wrapped in tuple().
  • zarr-python main: the test-zarr-main dependency group is removed, along with its pixi tasks and CI matrix entry. zarr-python main requires Python >=3.12 and this line supports >=3.11, so uv could not resolve the project at all (failing i386 run).
  • macOS Intel runner: macos-13 is replaced with macos-15-large in the test and wheel workflows, with the LC_RPATH deduplication step that macOS 15 needs for conda-forge-built extensions.
  • Read the Docs: the build image moves from the removed ubuntu-20.04 to ubuntu-24.04.

The agent checked only that the tuple change passes the full suite locally (macOS arm64, Python 3.12, pytest 9). The workflow changes are untested until CI runs on this PR, and more fixes may be needed once it does.

Branch bookkeeping
  • Base: v0.16.x, created at the v0.16.5 tag.
  • The macOS changes mirror 64eade5 and 7ae0f4b on backport-0.15-zstd-fixes; the tuple change mirrors 15803df.
  • Independent of the companion PR for v0.15.x.

🤖 Generated with Claude Code

d-v-b added 4 commits October 5, 2026 20:30
pytest 9 raises PytestRemovedIn10Warning for non-Collection iterables passed to parametrize, which becomes an error under filterwarnings=error and aborts test collection. Same change as 15803df on backport-0.15-zstd-fixes.

Assisted-by: ClaudeCode:claude-fable-5.1
zarr-python main now requires Python >=3.12, while this line supports Python >=3.11. uv resolves all dependency groups together, so the test-zarr-main group made every uv invocation fail with an unsatisfiable resolution (seen in the i386 workflow). A maintenance line does not need to track zarr-python main, so remove the group, its pixi tasks, and its CI matrix entry.

Assisted-by: ClaudeCode:claude-fable-5.1
macos-13 runners are no longer available. macos-15-large is still an Intel runner, so x86 coverage is preserved. macOS 15's dyld rejects the duplicate LC_RPATH entries that the conda-forge compilers produce, so add the same deduplication step used on backport-0.15-zstd-fixes (64eade5, 7ae0f4b).

Assisted-by: ClaudeCode:claude-fable-5.1
Read the Docs removed the ubuntu-20.04 build image.

Assisted-by: ClaudeCode:claude-fable-5.1
@codecov

codecov Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 98.68%. Comparing base (69bc233) to head (a38a16f).

Additional details and impacted files
@@           Coverage Diff            @@
##           v0.16.x     #868   +/-   ##
========================================
  Coverage    98.68%   98.68%           
========================================
  Files           64       64           
  Lines         2595     2595           
========================================
  Hits          2561     2561           
  Misses          34       34           
Files with missing lines Coverage Δ
numcodecs/tests/test_checksum32.py 93.33% <100.00%> (ø)
numcodecs/tests/test_pyzstd.py 100.00% <100.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

d-v-b added 5 commits October 5, 2026 20:37
The pin downgraded the conda-forge compiler to clang 14, which cannot parse the macOS 15 SDK headers on macos-15-large (math.h: '_Float16 is not supported on this target'), so every extension build failed. Use the clang that the conda-forge c-compiler package installs instead.

Assisted-by: ClaudeCode:claude-fable-5.1
zfp's pyproject.toml has no [project] table, so 'uv add "zfpy @ ./zfp"' fails with 'No project table found'. Install the locally built zfpy into the environment with 'uv pip install ./zfp', as main does. Because zfpy is no longer recorded in pyproject.toml, keep the same virtual environment for the numcodecs install and run pytest with --no-sync so uv does not re-resolve the environment.

Assisted-by: ClaudeCode:claude-fable-5.1
This workflow has no matrix, so the python-version conditional always took the branch that installs pcodec. pcodec has no i386 wheel and its source build produces a wheel tagged linux_x86_64, which uv refuses to install in the i386 Alpine environment. Install without pcodec, as main does; the pcodec tests are skipped when it is missing.

Assisted-by: ClaudeCode:claude-fable-5.1
On Python 3.14, pyzstd imports the standard library's compression.zstd, which needs the _zstd extension module. Alpine's i386 Python does not ship it, so importing pyzstd raised ModuleNotFoundError and aborted test collection. Use pytest.importorskip, as main does (zarr-developers#845).

Assisted-by: ClaudeCode:claude-fable-5.1
codecov/project has failed on every recent commit of this line, including the 0.16.5 release, at 98.68% against a 100% target. The uncovered lines are in numcodecs/zarr3.py and the crc32c fallback paths, which the coverage-uploading jobs do not exercise. Set the project target to auto so the check fails only when a change lowers coverage. The patch target stays at 100%.

Assisted-by: ClaudeCode:claude-fable-5.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant