Skip to content

ci: drop the matplotlib==3.6.0 pin from release.yml - #234

Merged
Jammy2211 merged 1 commit into
mainfrom
claude/wake-up-fv75vv
Aug 12, 2026
Merged

ci: drop the matplotlib==3.6.0 pin from release.yml#234
Jammy2211 merged 1 commit into
mainfrom
claude/wake-up-fv75vv

Conversation

@Jammy2211

Copy link
Copy Markdown
Collaborator

What

Removes the three hardcoded matplotlib==3.6.0 installs from release.yml
(the Tests step, run_smoke_tests, and the wiki/baseline job), replacing
each with a comment recording why matplotlib is deliberately unpinned.

Why

The nightly release has been blocked at Stage 2. Run
31562307129
reads green but its Blocked at a gate step executed — the driver stopped at
exit 2 after the rehearsal it dispatched
(31562335947)
failed on the PyAutoFit leg with 23 failed / 10 errors, every one:

AttributeError: module 'numpy' has no attribute 'row_stack'

The failing frames are matplotlib's, not autofit's:

matplotlib/axes/_axes.py:3593: in errorbar
matplotlib/axes/_axes.py:5324: in _fill_between_x_or_y

matplotlib 3.6.0 calls np.row_stack at exactly those two lines; NumPy removed
it in 2.0, and the rehearsal resolves numpy 2.5.2. Nothing in PyAutoFit pins
matplotlib — these workflow lines were downgrading it after the package
install while leaving numpy untouched.

3.6.0 also predates cp312 wheels, so the pin forced a 35.7 MB source rebuild on
every leg. PyAutoHeart's workspace-validation.yml already dropped the
equivalent pin for exactly these reasons and says so in a comment; this brings
release.yml into line with it.

Verification

Rehearsal dispatched against this branch —
31604030944,
rehearsal=true, published to TestPyPI as 2026.8.12.1.dev71201.

Result: success, 0 failed jobs of 20.

Leg Before After
PyAutoNerves cancelled (fail-fast) pass
PyAutoFit 23 failed / 10 errors 1731 passed, 2 skipped
PyAutoArray pass pass
PyAutoGalaxy cancelled (fail-fast) 1085 passed, 1 skipped
PyAutoLens pass pass

Both legs that were only ever cancelled by fail-fast were checked explicitly
rather than trusted on the badge — PyAutoGalaxy resolved the same
matplotlib-3.11.1 / numpy-2.5.2 pair and ran a real 1085-test suite.

PyAutoFit's count reconciles with the failing run: 1698 passed + 23 failed + 10
errors = 1731, so the previously-failing tests now pass rather than being
skipped. Reproduced independently on python 3.12 locally with the same numpy
(2.5.2): 1731 passed / 2 skipped / 0 failed.

The rehearsal also dropped from a much slower Stage 2 to 13 minutes end to end,
with the matplotlib source rebuild gone.

Note

agents/conductors/release/rehearse.sh:60 defaults to ref="main", so the
nightly driver always dispatches release.yml from main — the nightly keeps
hitting the old pin until this merges.

🤖 Generated with Claude Code

https://claude.ai/code/session_019fcp6CEptg9UsQzTWcPWSp


Generated by Claude Code

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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019fcp6CEptg9UsQzTWcPWSp
@Jammy2211
Jammy2211 merged commit 26ec660 into main Aug 12, 2026
23 checks passed
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