From 6b9cdb18750129daf22fadd3a3e9336a39f9f24d Mon Sep 17 00:00:00 2001 From: James Nightingale Date: Wed, 12 Aug 2026 13:50:47 +0000 Subject: [PATCH] ci: drop the matplotlib==3.6.0 pin from release.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The nightly release has been blocked at Stage 2 since the TestPyPI rehearsal began resolving numpy 2.x: the PyAutoFit leg failed with 23 failed / 10 errors, every one `AttributeError: module 'numpy' has no attribute 'row_stack'`. The failing frames are matplotlib's, not autofit's — `_axes.py:3593` (errorbar) and `:5324` (fill_between). matplotlib 3.6.0 calls `np.row_stack`, which NumPy removed in 2.0. Nothing in PyAutoFit pins matplotlib; the three hardcoded `matplotlib==3.6.0` installs in this workflow were dragging it down after the package install, while leaving numpy at 2.5.2. 3.6.0 also predates cp312 wheels, so the pin forced a 35.7 MB source rebuild on every run. PyAutoHeart's workspace-validation.yml already dropped the equivalent pin for those reasons; this brings release.yml into line with it. Verified locally on python 3.12 with the same numpy the rehearsal resolved (2.5.2): unpinned, matplotlib resolves to 3.11.1 and the full PyAutoFit suite is 1731 passed / 2 skipped / 0 failed. That reconciles with the failing run's 1698 passed + 23 failed + 10 errors = 1731, so the previously-failing tests pass rather than being skipped. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_019fcp6CEptg9UsQzTWcPWSp --- .github/workflows/release.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 840de2a..af0e07c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -265,7 +265,12 @@ jobs: run: | pushd "${{ matrix.project.path }}" export JAX_ENABLE_X64=True - pip install matplotlib==3.6.0 + # NOT pinning matplotlib (same call as PyAutoHeart's + # workspace-validation.yml): 3.6.0 predates cp312 wheels, so the pin + # forces a slow source rebuild, and its errorbar/fill_between call + # np.row_stack — removed in NumPy 2.0. Against the numpy 2.x the + # install above resolves, that pin is an immediate AttributeError + # across the graphical/ and tools/ suites. pip install pynufft==2025.1.1 pip install pytest pip install numba @@ -324,7 +329,8 @@ jobs: fi sleep 10 done - pip install matplotlib==3.6.0 pynufft==2025.1.1 numba + # matplotlib deliberately unpinned — see the Tests step above. + pip install pynufft==2025.1.1 numba # Belt-and-braces JAX install — the [optional] → [jax] chain # occasionally silently drops jax from test.pypi resolution. pip install "jax>=0.7,<0.11" "jaxlib>=0.7,<0.11" @@ -714,7 +720,8 @@ jobs: fi sleep 10 done - pip install matplotlib==3.6.0 pynufft==2025.1.1 numba + # matplotlib deliberately unpinned — see the Tests step above. + pip install pynufft==2025.1.1 numba # Belt-and-braces JAX install (same reason as the install steps above). pip install "jax>=0.7,<0.11" "jaxlib>=0.7,<0.11" pushd workspace