Repository navigation
chore: upgrade to latest (Oct 2026) - #1
Merged
Merged
Conversation
…azure, pytest, pyinstaller; derivatives byte-identical on fixtures
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.
Summary
Upgrade sweep (22 Oct 2026) for ImageProcessorPro. Not merged, nothing released. Desktop/CLI tool, no deploy; release is a local PyInstaller build.
From -> to (exact pins)
Code change:
import fitz->import pymupdfinsrc/image_processor.py(PyMuPDF 2.0 deprecates thefitzname with a FutureWarning;pymupdfalso works on 1.2x).Derivative output check (the gate for the three majors)
Script ran the real
ImageProcessoron 8 generated fixtures (large EXIF-rotated JPEG, portrait PNG, RGBA PNG, CMYK JPEG, gray PNG, WebP, TIFF, 2-page PDF) across 6 configs (JPEG/PNG/WEBP, text watermark, tiled watermark file, both, metadata safe/preserve), old venv (Pillow 12.3.0 + PyMuPDF 1.28.0) vs new venv (13.0.0 + 2.0). Recorded per output: mode, size, decoded-pixel sha256, ICC hash, EXIF presence, file sha256, byte size.Result: 54 of 54 outputs byte-identical (file sha256 equal), 48/48 process calls ok in both. Nothing deferred.
One caveat found while comparing:
ImageCms.createProfile("sRGB")stamps the current time into the profile header, so embedded ICC bytes (and output file hashes) differ between any two processes. That is existing behaviour, not caused by Pillow 13. The comparison zeroed that 12-byte date field in both runs. Worth a follow-up (not done here): derivative file hashes are not reproducible across runs because of it.Gates
pip install -r requirements-dev.txt+ pyinstaller 6.22.3: ok (Python 3.13.3)ImageProcessorGUI()builds under customtkinter 6.0.0 and shows the first tab;py_compileof gui_app.py, cli.py, build_app.py okbuild_windows.bat). pyinstaller 6.22.3 installs; run the build before cutting a release.pymupdf_layoutandpymupdf4llmas dependencies (comes from PyMuPDF itself).Deploy plan
None needed. After merge: rebuild the Windows/macOS app with the build scripts when a release is wanted.
🤖 Generated with Claude Code