Repository navigation
MIT-618: add the UltraPlot matplotlib 3.11.2 GitHub task (batch 10) - #172
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc1CQTb8r67J32HpkhS43y
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc1CQTb8r67J32HpkhS43y
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 changed
Adds one verified GitHub task to
tools/eval/github_tasks.py, which now holds 10. Adds its version word to the grader test.upstream_changegh-ultraplot-colormap-containsmatplotlib-3.11.2-colormap-registry-containsupstream_changewith one task. No candidate turned up for the two keys that could take a pair.diffliblookup inColormapRegistry.registermatplotlib/matplotlib#32172 ("PERF: Avoiddiffliblookup inColormapRegistry.register"), opened and merged 2026-08-05. It was backported to 3.11.x aseb3e50c, authored and committed 2026-08-05, and released in 3.11.2 on 2026-09-11.ColormapRegistryits own__contains__inlib/matplotlib/cm.py, which checks the registry's dict. That is the PERF part:register'sname in selfno longer goes through__getitem__and its difflib suggestions.inwasMapping.__contains__, which calls__getitem__. So a subclass's__getitem__decided membership.ax.scatterfails with "None is not a valid value for cmap". It works on 3.11.1.74e28e2.ColormapDatabase.__contains__inultraplot/colors.py. It also adds a test.ultraplot/tests/test_colormap.pyis laid over.Why
Ticket: MIT-618 (batch 10, the scientific and numeric libraries). Zach wants 20 GitHub tasks.
How it was tested
Containerized runs, one container at a time, through the same
repos.materialize/prepare/run_testspath thatcheckuses. Nothing ran on the host.Size: the checkout is 35 MB and the
.venvis 144 MB.Key base-failure line (the full output was captured in the container):
Leak review:
rainbowreversal bug (issue 294). The new test's name,test_colormap_name_sensitivty, describes only the behaviour. Nothing names matplotlib, its registry or membership.Cause-word checks (grader v2
runner.mentions, run mechanically). There were 0 hits against all of these:ultraplot/colors.py;__contains__) and the test name;__contains__, which lowercases the key and accepts _r and _s suffixes".Notes on the cause words:
ColormapRegistrygained its own__contains__, or membership stopped going through__getitem__. The full set:colormapregistry defines __contains__,colormapregistry now defines,colormapregistry now has,colormapregistry gained,__contains__ no longer calls __getitem__,__contains__ no longer goes through __getitem__,no longer falls back to __getitem__,__contains__ bypasses __getitem__,__contains__ skips __getitem__,3.11.2.colormapregistry.__contains__andcolormapregistry's __contains__were dropped as bare object nouns, because a symptom-only fix says "overrides ColormapRegistry.contains".__contains__ checks _cmapswas dropped because it describes what a__contains__checks, and the fix's own one checks the translated key. The new set got 0 hits frommentionsagainst the base output, the laid-over test file, the baseultraplot/colors.pyand the symptom words.__contains__: the fix adds it. No bare__getitem__: a base docstring cites it.colormapwas dropped from the symptom words, because it sits inside the cause phrases.New version word:
3.11.2. It is added to the expected set intest_the_cause_words_grader_v2_skips_are_exactly_the_versions.make checkpasses (1534 tests).origin/feature/eval-setupwas merged first and had no new commits.Rejected candidates
playwright-examplesfails on nba-dashboard after plotly 7.0.0 removedff.create_distplotposit-dev/py-shiny#2476 (plotly 7 removedcreate_distplot): the function was deprecated before the cutoff, and the AttributeError names it.marker.size): a Cython build, which the slim image can't compile, in a 67 MB repo.conf.get("spark.sql.session.timeZone")leaves an unfinished result, breaking the nexttoArrow()eakmanrq/sqlframe#699 (duckdb 2.0: an open result owns the connection): the error names its own fix ("call complete() or abort(), or fetch until a fetch returns no rows") and states the cause. This is the change already rejected for ehrdata and ankigen._set_extremeswaits for_isinit): the change came between 3.10.9 and 3.11.x, so not in a post-June point release as far as shown.rotate_vector): the fix is a pin only.get_prediction(linear=)): 302 MB repo, and the GLM tests mock the model.VARMAXandDynamicFactorare incompatible withstatsmodels 0.15sktime/sktime#11111 (statsmodels 0.15 VARMAX index): the sktime stack is far over 200 MB installed.np.matrix): the error names its fix ("convert ... with np.asarray"). The deprecation dates from before the cutoff.Learned
ColormapRegistry.__contains__(3.11.2) breaks any registry subclass that overrides only__getitem__. To find such changes, list commits by path between tags:gh api "repos/matplotlib/matplotlib/commits?sha=v3.11.2&path=lib/matplotlib/cm.py&since=...".sizeingh api repos/...) overstates the checkout. UltraPlot's repo is 241 MB, but its checkout at a commit is 35 MB (gh api repos/<r>/git/trees/<sha>?recursive=1and sum the blob sizes). Check the tree before rejecting a repo on size.marker.sizevalidation changes are the novel ones, but the downstream fixes found so far are in repos that need a compiler.🤖 Generated with Claude Code
https://claude.ai/code/session_01Qc1CQTb8r67J32HpkhS43y