build: require anyplotlib>=0.4.2 (pan-diagnostic fix) - #45
Merged
Conversation
anyplotlib 0.4.2 gates the [TILEDBG] FETCH diagnostic behind isEnabledFor(DEBUG). Before it, np.unique ran on the raw native crop and on the tile as ARGUMENTS to a .debug() call, so every pan/zoom settle paid for two full sorts at any log level -- 259 ms on a 4096^2 frame at the zoom where VIEW_OVERFETCH makes the crop the whole image. Measured on the released wheel, pan settle on a 4096^2 frame: zoom 1.1x 377 -> 93 ms zoom 2x 377 -> 93 ms zoom 4x 125 -> 62 ms Verified the shipped artifact rather than assuming the tag: zero EXECUTABLE np.unique lines remain in _on_view_changed_internal (the string still occurs, but only in the comment explaining why the guard is there).
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.
anyplotlib 0.4.2 (CSSFrancis/anyplotlib#42) gates the
[TILEDBG]FETCH diagnostic behindisEnabledFor(DEBUG).Before it,
np.uniqueran on the raw native crop and on the tile as arguments to a.debug()call — so every pan/zoom settle paid for two full sorts at any log level. WithVIEW_OVERFETCH = 2.0the over-fetched crop is the whole image at any zoom below 2×, which is where panning actually happens.Pan settle on a 4096² frame, measured on the released wheel:
Verified the shipped artifact rather than trusting the tag: zero executable
np.uniquelines remain in_on_view_changed_internal. (The string still appears there — but only inside the comment explaining why the guard exists, which is worth knowing before someone greps and panics.)Two lines plus the lockfile.
uv lock --checkclean.Note on the upstream release
anyplotlib''s Release workflow reports failed for v0.4.2, but only its last job: "Create GitHub Release" errored with "a release with the same tag name already exists: v0.4.2". Build distribution and Publish to PyPI both succeeded — the wheel and sdist are on PyPI (uploaded 2026-07-26T20:53:35). The red X is cosmetic; nothing needs re-running.
Needed for rc.9.