ci: drop the matplotlib==3.6.0 pin from release.yml - #234
Merged
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Removes the three hardcoded
matplotlib==3.6.0installs fromrelease.yml(the
Testsstep,run_smoke_tests, and the wiki/baseline job), replacingeach 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 gatestep executed — the driver stopped atexit 2 after the rehearsal it dispatched
(31562335947)
failed on the PyAutoFit leg with 23 failed / 10 errors, every one:
The failing frames are matplotlib's, not autofit's:
matplotlib 3.6.0 calls
np.row_stackat exactly those two lines; NumPy removedit 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'sworkspace-validation.ymlalready dropped theequivalent pin for exactly these reasons and says so in a comment; this brings
release.ymlinto line with it.Verification
Rehearsal dispatched against this branch —
31604030944,
rehearsal=true, published to TestPyPI as2026.8.12.1.dev71201.Result:
success, 0 failed jobs of 20.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.2pair 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:60defaults toref="main", so thenightly driver always dispatches
release.ymlfrommain— the nightly keepshitting the old pin until this merges.
🤖 Generated with Claude Code
https://claude.ai/code/session_019fcp6CEptg9UsQzTWcPWSp
Generated by Claude Code