Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update pillow to 10.3.0 #720

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

pyup-bot
Copy link
Collaborator

@pyup-bot pyup-bot commented Apr 1, 2024

This PR updates Pillow from 5.4.1 to 10.3.0.

Changelog

10.3.0

https://pillow.readthedocs.io/en/stable/releasenotes/10.3.0.html

Changes

- CVE-2024-28219: Use strncpy to avoid buffer overflow 7928 [hugovk]
- Use `functools.lru_cache` for `hopper()` 7912 [hugovk]
- Raise ValueError if seeking to greater than offset-sized integer in TIFF 7883 [radarhere]
- Improve speed of loading QOI images 7925 [radarhere]
- Added RGB to I;16N conversion 7920 [radarhere]
- Add --report argument to __main__.py to omit supported formats 7818 [nulano]
- Added RGB to I;16, I;16L and I;16B conversion 7918 [radarhere]
- Fix editable installation with custom build backend and configuration options 7658 [nulano]
- Fix putdata() for I;16N on big-endian 7209 [Yay295]
- Determine MPO size from markers, not EXIF data 7884 [radarhere]
- Improved conversion from RGB to RGBa, LA and La 7888 [radarhere]
- Support FITS images with GZIP_1 compression 7894 [radarhere]
- Use I;16 mode for 9-bit JPEG 2000 images 7900 [scaramallion]
- Raise ValueError if kmeans is negative 7891 [radarhere]
- Remove TIFF tag OSUBFILETYPE when saving using libtiff 7893 [radarhere]
- Raise ValueError for negative values when loading P1-P3 PPM images 7882 [radarhere]
- Added reading of JPEG2000 palettes 7870 [radarhere]
- Added alpha_quality argument when saving WebP images 7872 [radarhere]
- Fixed joined corners for ImageDraw rounded_rectangle() non-integer dimensions 7881 [radarhere]
- Removed Python and NumPy pinning on Cygwin 7880 [radarhere]
- Update UnidentifiedImageError and __version__ imports 7644 [radarhere]
- Stop reading EPS image at EOF marker 7753 [radarhere]
- PSD layer co-ordinates may be negative 7706 [radarhere]
- Use subprocess with CREATE_NO_WINDOW flag in ImageShow WindowsViewer 7791 [radarhere]
- When saving GIF frame that restores to background color, do not fill identical pixels 7788 [radarhere]
- Fixed reading PNG iCCP compression method 7823 [radarhere]
- Allow writing IFDRational to UNDEFINED tag 7840 [radarhere]
- Fix logged tag name when loading Exif data 7842 [radarhere]
- Use maximum frame size in IHDR chunk when saving APNG images 7821 [radarhere]
- Prevent opening P TGA images without a palette 7797 [radarhere]
- Use palette when loading ICO images 7798 [radarhere]
- Use consistent arguments for load_read and load_seek 7713 [radarhere]
- Turn off nullability warnings for macOS SDK 7827 [radarhere]
- Fix shift-sign issue in Convert.c 7838 [r-barnes]
- winbuild: Refactor dependency versions into constants 7843 [hugovk]
- Build macOS arm64 wheels natively 7852 [radarhere]
- Fixed typo 7855 [radarhere]
- Open 16-bit grayscale PNGs as I;16 7849 [radarhere]
- Handle truncated chunks at the end of PNG images 7709 [lajiyuan]
- Match mask size to pasted image size in GifImagePlugin 7779 [radarhere]
- Changed SupportsGetMesh protocol to be public 7841 [radarhere]
- Release GIL while calling `WebPAnimDecoderGetNext` 7782 [evanmiller]
- Fixed reading FLI/FLC images with a prefix chunk 7804 [twolife]
- Updated package name for Tidelift 7810 [radarhere]
- Removed unused code 7744 [radarhere]
- Lint fix 7783 [radarhere]
- Update wl-paste handling and return None for some errors in grabclipboard() on Linux 7745 [nik012003]
- Fixed libXau error in wheels for macOS 10.10 7764 [radarhere]
- Changed name of first _Tile parameter 7772 [radarhere]
- Remove execute bit from `setup.py` 7760 [hugovk]
- Changed ImageMath.ops to be static 7721 [radarhere]
- Fix APNG info after seeking backwards more than twice 7701 [esoma]
- Removed PPM loop to read header tokens 7698 [radarhere]
- Added PerspectiveTransform 7699 [radarhere]
- Add support for reading and writing grayscale PFM images 7696 [nulano]
- Add LCMS2 flags to ImageCms 7676 [nulano]
- Rename x64 to AMD64 in winbuild 7693 [nulano]
- Build QEMU-emulated Linux aarch64 wheels on GitHub Actions instead of Travis CI 7690 [hugovk]
- Simplify FreeTypeFont.getmask2() 7645 [nulano]
- Updated Linux and macOS wheels matrix variable name 7691 [radarhere]
- Skip PyPy3.8 Windows wheel 7682 [radarhere]

Deprecations

- Deprecate eval(), replacing it with lambda_eval() and unsafe_eval() 7927 [hugovk]
- Deprecate ImageCms constants and versions() function 7702 [nulano]

Documentation

- Add type hints to release notes 7923 [hugovk]
- Corrected exiv2.org links 7856 [radarhere]
- Removed references to the "current version" 7905 [radarhere]
- Added release notes for 7872, 7882 and 7891 7904 [radarhere]
- Clean up authors and contributors 7895 [aclark4life]
- Update release notes 7885 [hugovk]
- Backfill release notes with security fix details 7877 [aclark4life]
- Describe difference between font size and bbox 7806 [radarhere]
- Decoders and encoders subclass PyDecoder and PyEncoder 7801 [radarhere]
- Update CI targets on GitHub Actions 7862 [hugovk]
- Update "What about PIL?" section 7861 [aclark4life]
- Update installation docs 7858 [hugovk]
- Move installation.rst to installation/*.rst 7832 [aclark4life]
- Removed references to Twitter 7836 [radarhere]
- Consistently place versionremoved under heading 7829 [radarhere]
- Remove outdated installation warnings 7814 [hugovk]
- PyPI project page URL is now lowercase 7703 [nulano]
- Use "non-zero" consistently 7695 [radarhere]
- Improve ImageTransform documentation 7684 [nulano]
- If ImageGrab.grab() bbox is omitted, screenshot is taken at 2x on Retina screens 7688 [radarhere]
- Updated macOS tested Pillow versions 7689 [radarhere]
- Update Windows 11 tested versions 7685 [nulano]
- ImageGrab.grab() bbox on macOS is not 2x on retina screens 7678 [radarhere]
- Package name is now lowercase in wheel filenames 7681 [radarhere]

Type hints

- Add type hints for ImageCms 7913 [nulano]
- Add type hints to `Image.py` 7924 [hugovk]
- Add type hints to release notes 7923 [hugovk]
- Added `py.typed` and `Typing :: Typed` to support type checking 7822 [radarhere]
- Added remaining type hints to Tests/test_image_*.py 7793 [radarhere]
- Added type hints for ImageShow 7712 [radarhere]
- Added type hints to additional tests 7754 [radarhere]
- Added type hints to additional tests 7755 [radarhere]
- Added type hints to additional tests 7769 [radarhere]
- Added type hints to additional tests 7784 [radarhere]
- Added type hints to additional tests 7794 [radarhere]
- Added type hints to additional tests 7807 [radarhere]
- Added type hints to additional tests 7816 [radarhere]
- Added type hints to additional tests 7846 [radarhere]
- Added type hints to FitsImagePlugin 7714 [radarhere]
- Added type hints to GdImageFile 7727 [radarhere]
- Added type hints to ImageMath 7707 [radarhere]
- Added type hints to ImageMorph 7708 [radarhere]
- Added type hints to ImageOps 7786 [radarhere]
- Added type hints to ImtImagePlugin 7720 [radarhere]
- Added type hints to MpegImagePlugin 7728 [radarhere]
- Added type hints to MspImagePlugin 7719 [radarhere]
- Added type hints to OSS Fuzz scripts 7731 [radarhere]
- Added type hints to PpmImagePlugin 7726 [radarhere]
- Added type hints to seven plugins 7716 [radarhere]
- Added type hints to SgiImagePlugin 7724 [radarhere]
- Added type hints to Tests/check_*.py 7732 [radarhere]
- Added type hints to Tests/conftest.py 7740 [radarhere]
- Added type hints to Tests/helper.py 7733 [radarhere]
- Added type hints to Tests/test_font_*.py 7743 [radarhere]
- Added type hints to TgaImagePlugin 7725 [radarhere]
- Autotype tests 7756 [hugovk]
- Decoders and encoders subclass PyDecoder and PyEncoder 7801 [radarhere]
- Removed mypy excludes 7808 [radarhere]
- Removed mypy excludes, except for olefile-related files 7790 [radarhere]
- Replace `io.BytesIO` in type hints 7750 [hugovk]
- Type hints: Add PYI (flake8-pyi) to Ruff and fix errors 7897 [hugovk]
- Use IO[bytes] in type hints 7795 [radarhere]

Dependencies

- [pre-commit.ci] pre-commit autoupdate and fix deprecations 7780 [pre-commit-ci]
- Install mypy from requirements file 7813 [hugovk]
- Pin codecov/codecov-action to v3.1.5 7776 [hugovk]
- Update actions/cache action to v4 7735 [renovate]
- Update dependency cibuildwheel to v2.16.4 7758 [renovate]
- Update dependency cibuildwheel to v2.16.5 7767 [renovate]
- Update dependency cibuildwheel to v2.17.0 7869 [renovate]
- Update dependency mypy to v1.8.0 7851 [renovate]
- Update dependency mypy to v1.9.0 7866 [renovate]
- Update github-actions to v4 7770 [renovate]
- Update release-drafter/release-drafter action to v6 7774 [renovate]
- Updated Ghostscript to 10.3.0 7887 [radarhere]
- Updated giflib on macOS to 5.2.2 7815 [radarhere]
- Updated harfbuzz to 8.3.1 7886 [radarhere]
- Updated harfbuzz to 8.4.0 7917 [radarhere]
- Updated libimagequant to 4.3.0 7749 [radarhere]
- Updated libjpeg-turbo to 3.0.2 7752 [radarhere]
- Updated libpng to 1.6.43 7768 [radarhere]
- Updated libxcb to 1.16.1 7853 [radarhere]
- Updated openjpeg to 2.5.2 7837 [radarhere]
- Updated xorgproto to 2024.1 7907 [radarhere]
- Updated zlib to 1.3.1 7746 [radarhere]


-  Testing

- Use setup_module() to open images so they aren't opened if skipped 7911 [Yay295]
- Skip AppVeyor builds for irrelevant files 7909 [hugovk]
- Revert "Pin Python 3.13 on Windows to a3" 7878 [radarhere]
- Restored testing of non-TrueType default font 7748 [radarhere]
- Parametrize test_seek_mode functions 7847 [Yay295]
- Do not use packaged MinGW pip 7844 [radarhere]
- Parametrize test_p_from_rgb_rgba() 7835 [Yay295]
- Require coverage.py 7.4.2+ for `COVERAGE_CORE: sysmon` 7825 [hugovk]
- Set `COVERAGE_CORE: sysmon` for faster tests on 3.12+ 7820 [hugovk]
- Build docs for Python changes 7819 [nulano]
- Install mypy from requirements file 7813 [hugovk]
- Pin Python 3.13 on Windows to a3 7805 [radarhere]
- Removed platform argument from setup-cygwin action 7775 [radarhere]
- Pin to Python 3.9.16-1 7762 [radarhere]
- Test on macOS M1 where available 7766 [hugovk]
- CI: Cache libimagequant on Linux builds 7741 [hugovk]
- Do not support using test-image-results to upload images after test failures 7739 [radarhere]
- Sort imports in `Tests/` 7736 [hugovk]
- Skip non-wheel CI runs for tags: Windows 7692 [hugovk]

10.2.0

https://pillow.readthedocs.io/en/stable/releasenotes/10.2.0.html

Changes

- Add `keep_rgb` option when saving JPEG to prevent conversion of RGB colorspace 7553 [bgilbert]
- Trim negative glyph offsets in ImageFont.getmask() 7672 [nulano]
- Removed unnecessary "pragma: no cover" 7668 [radarhere]
- Trim glyph size in ImageFont.getmask() 7669 [radarhere]
- Fix loading IPTC images and update test 7667 [nulano]
- Allow uncompressed TIFF images to be saved in chunks 7650 [radarhere]
- Concatenate multiple JPEG EXIF markers 7496 [radarhere]
- Changed IPTC tile tuple to match other plugins 7661 [radarhere]
- Do not assign new fp attribute when exiting context manager 7566 [radarhere]
- Support arbitrary masks for uncompressed RGB DDS images 7589 [radarhere]
- Support setting ROWSPERSTRIP tag 7654 [radarhere]
- Apply ImageFont.MAX_STRING_LENGTH to ImageFont.getmask() 7662 [radarhere]
- Optimise `ImageColor` using `functools.lru_cache` 7657 [hugovk]
- Restricted environment keys for ImageMath.eval() 7655 [radarhere]
- Optimise `ImageMode.getmode` using `functools.lru_cache` 7641 [hugovk]
- Added trusted PyPI publishing 7616 [radarhere]
- Compile FriBiDi for Windows ARM64 7629 [nulano]
- Fix incorrect color blending for overlapping glyphs 7497 [ZachNagengast]
- Add .git-blame-ignore-revs file 7528 [akx]
- Attempt memory mapping when tile args is a string 7565 [radarhere]
- Fill identical pixels with transparency in subsequent frames when saving GIF 7568 [radarhere]
- Removed unnecessary string length check 7560 [radarhere]
- Determine mask mode in Python instead of C 7548 [radarhere]
- Corrected duration when combining multiple GIF frames into single frame 7521 [radarhere]
- Handle disposing GIF background from outside palette 7515 [radarhere]
- Seek past the data when skipping a PSD layer 7483 [radarhere]
- ImageMath: Inline `isinstance` check 7623 [hugovk]
- Update actions/upload-artifact action to v4 7619 [radarhere]
- Import plugins relative to the module 7576 [deliangyang]
- Translate encoder error codes to strings; deprecate `ImageFile.raise_oserror()` 7609 [bgilbert]
- Updated readthedocs to latest version of Python 7611 [radarhere]
- Support reading BC4U and DX10 BC1 images 6486 [REDxEYE]
-  Optimize ImageStat.Stat.extrema 7593 [florath]
- Handle pathlib.Path in FreeTypeFont 7578 [radarhere]
- Use list comprehensions to create transformed lists 7597 [hugovk]
- Added support for reading DX10 BC4 DDS images 7603 [sambvfx]
- Optimized ImageStat.Stat.count 7599 [florath]
- Moved error from truetype() to FreeTypeFont 7587 [radarhere]
- Correct PDF palette size when saving 7555 [radarhere]
- Fixed closing file pointer with olefile 0.47 7594 [radarhere]
- ruff: Minor optimizations of list comprehensions, x in set, etc. 7524 [cclauss]
- Build Windows wheels using cibuildwheel 7580 [nulano]
- Raise ValueError when TrueType font size is zero or less 7584 [akx]
- Install cibuildwheel from requirements file 7581 [hugovk]
- List optional dependencies in pyproject (apart from docs and tests) 7563 [radarhere]
- Use cibuildwheel 7552 [radarhere]
- "optimize" default when saving GIF images 7570 [radarhere]
- If absent, do not try to close fp when closing image 7557 [RaphaelVRossi]
- Windows arm64 dependency cross-compilation fixes 7559 [nulano]
- Allow configuring JPEG restart marker interval on save 7488 [bgilbert]
- Decrement reference count for PyObject 7549 [radarhere]
- Release automation: create sdist on CI 7544 [hugovk]
- Fix for Python 3.13: explicitly include `unistd.h` 7535 [hugovk]
- Remove old commented-out code 7527 [akx]
- Implement `streamtype=1` option for tables-only JPEG encoding 7491 [bgilbert]
- DOC: Add missing sections to FREETYPE2.txt 7507 [stefan6419846]
- If save_all PNG only has one frame, do not create animated image 7522 [radarhere]
- Fixed frombytes() for images with a zero dimension 7493 [radarhere]
- Update Travis CI to Python 3.12 and Ubuntu 22.04 Jammy Jellyfish 7501 [hugovk]
- Simplified code 7499 [radarhere]
- Switched from direct setup.py invocation to "pip install ." 7498 [radarhere]
- Add mode to ImageOps._lut() error message 7490 [Yay295]
- Move config from `setup.cfg` to `pyproject.toml` 7484 [hugovk]
- Use "gray" more consistently 7481 [radarhere]
- Added messages to errors 7480 [radarhere]

Dependencies

- [pre-commit.ci] pre-commit autoupdate 7675 [pre-commit-ci]
- Update github-actions 7607 [renovate]
- [pre-commit.ci] pre-commit autoupdate 7602 [pre-commit-ci]
- Updated lcms2 to 2.16 7598 [radarhere]
- Updated harfbuzz to 8.3.0 7475 [radarhere]
- Updated xz to 5.4.5 7513 [radarhere]
- [pre-commit.ci] pre-commit autoupdate 7525 [pre-commit-ci]
- Updated libjpeg-turbo to 3.0.1 7472 [radarhere]

Deprecations

- Deprecate IptcImagePlugin helpers 7664 [nulano]

Documentation

- Fix image URL in "Reading from URL" example 7674 [nulano]
- Release notes: add `ImageColor` and `ImageMode` optimisations, and type hints 7665 [hugovk]
- Added release notes for 7589 and 7654 7670 [radarhere]
- Updated copyright year 7663 [radarhere]
- Updated RELEASING now that Trusted PyPI publishing is in use 7652 [radarhere]
- Add 'Type hints' as a release note category 7653 [hugovk]
- Document JPEG 2000 support for writing YCbCr and reading subsampled color 7636 [bgilbert]
- Clarify default anchor alignment 7600 [nulano]
- Added release notes 7608 [radarhere]
- Added release notes for 7599 and 7593 7605 [radarhere]
- Document JPEG `streamtype` option 7601 [bgilbert]
- Update Windows wheels info 7590 [radarhere]
- Docs: Activate tabs based on browser's operating system 7579 [hugovk]
- Updated wheels README after cibuildwheel integration 7572 [radarhere]
- Use --config-settings in external libraries list in installation.rst 7564 [nulano]
- Docs: tcl/tk is no longer a build dependency 7562 [radarhere]
- Add Windows 11 tested Pillow versions 7558 [nulano]
- Docs: link exceptions to Python docs 7512 [hugovk]
- Add CVE-2023-44271 to release notes 7520 [hugovk]
- Mention defusedxml and olefile in installation instructions 7509 [radarhere]
- Docs: Add `pypi` Sphinx role 7505 [hugovk]
- Improved olefile documentation and testing 7503 [radarhere]
- Add Python 3.12 support to Pillow 10.1.0 release notes 7466 [hugovk]
- Updated macOS tested Pillow versions 7470 [radarhere]
- Fix typos in ImageOps.rst and tutorial.rst 7469 [nulano]
- Update release checklist: macOS/Linux artifact is called 'wheels' 7467 [hugovk]

Testing

- Coverage: add more exclusions 7666 [hugovk]
- Add gcc problem matcher to test.yml 7585 [nulano]
- Restored testing of ImageFont class 7647 [radarhere]
- Check types with mypy 7622 [hugovk]
- Update pre-commit to fix Sphinx Lint 7615 [hugovk]
- Fix up most noqas 7526 [akx]
- Tests: Replace `assert False` with `pytest.fail()` 7546 [hugovk]
- Test Fedora 39 7542 [hugovk]
- Black and Ruff infer `target-version` from `requires-python` in `pyproject.toml` 7530 [hugovk]
- Move linting to ruff 6966 [akx]
- Removed Fedora 37 7516 [radarhere]
- Updated AppVeyor to Python 3.12 7508 [radarhere]
- Improved olefile documentation and testing 7503 [radarhere]
- Skip non-wheel CI runs for tags 7468 [hugovk]

Type hints

- Added type hints to ImageTransform 7671 [radarhere]
- Add type hints to _util 7642 [nulano]
- Add type hints to _binary 7659 [nulano]
- Add type hints to ContainerIO 7656 [nulano]
- Removed `__future__` import from fuzz_font.py and fuzz_pillow.py 7649 [radarhere]
- Added type hints to FontFile and subclasses 7643 [radarhere]
- Added type hints to selftest.py, docs/conf.py and docs/example/anchors.py 7640 [radarhere]
- Added TarIO type hints 7638 [radarhere]
- Moved `__future__` import to beginning of file 7637 [radarhere]
- Added type hints to ImageSequence 7635 [radarhere]
- Add type hints for ImageMode 7633 [hugovk]
- Add `from __future__ import annotations` using Ruff/isort 7631 [hugovk]
- Check types with mypy 7622 [hugovk]
- Added type hints for format and format_description 7624 [radarhere]
- Added type hints to ImageChops 7617 [radarhere]

10.1.0

https://pillow.readthedocs.io/en/stable/releasenotes/10.1.0.html

Changes

- Added TrueType default font to allow for different sizes 7354 [radarhere]
- Fixed invalid argument warning 7442 [radarhere]
- Fixed "may be used uninitialized" warning 7444 [radarhere]
- Added ImageOps cover method 7412 [radarhere]
- Catch struct.error from truncated EXIF when reading JPEG DPI 7458 [radarhere]
- Consider default image when selecting mode for PNG save_all 7437 [radarhere]
- Use new() instead of Image()._new() 7460 [radarhere]
- Fix libbrotli build for Windows wheels 7453 [nulano]
- Allow custom builds to be triggered in Travis CI 7449 [radarhere]
- Support BGR;15, BGR;16 and BGR;24 access, unpacking and putdata 7303 [radarhere]
- Added CMYK to RGB unpacker 7310 [radarhere]
- Improved flexibility of XMP parsing 7274 [radarhere]
- Support reading 8-bit YCbCr TIFF images 7415 [radarhere]
- Allow saving I;16B images as PNG 7302 [radarhere]
- Corrected drawing I;16 points and writing I;16 text 7257 [radarhere]
- Set blue channel to 128 for BC5S 7413 [radarhere]
- Increase flexibility when reading IPTC fields 7319 [radarhere]
- Set C palette to be empty by default 7289 [radarhere]
- Moved getmask2 MAX_IMAGE_PIXELS check to Python 7247 [radarhere]
- Added gs_binary to control Ghostscript use on all platforms 7392 [radarhere]
- Updated multibuild to include Python 3.12.0 7440 [radarhere]
- Don't run normal tests on changes to wheel-building files 7436 [hugovk]
- Move code from pillow-wheels 7418 [radarhere]
- Removed unused code 7434 [radarhere]
- Read bounding box information from the trailer of EPS files if specified 7382 [nopperl]
- Added reading 8-bit color DDS images 7426 [radarhere]
- Added has_transparency_data 7420 [radarhere]
- Revert 7311: "Read WebP duration after opening" 7406 [radarhere]
- Fixed bug when reading BC5S DDS images 7401 [radarhere]

Dependencies

- Updated libimagequant to 4.2.2 7463 [radarhere]
- Updated libtiff to 4.6.0 7452 [radarhere]
- Updated brotli to 1.1.0 7451 [radarhere]
- Updated harfbuzz to 8.2.1 7409 [radarhere]
- Updated PyPy to 7.3.13 7439 [radarhere]
- [pre-commit.ci] pre-commit autoupdate 7438 [pre-commit-ci]

Documentation

- Describe how to populate mode and size when writing a plugin 7465 [radarhere]
- Updated redirected links 7448 [radarhere]
- Add warning to docs: Pillow > 9.5.0 no longer includes 32-bit wheels 7447 [aclark4life]
- Added release notes for 7336, 7355, 7358 and 7392 7446 [radarhere]
- Corrected macOS version name 7431 [radarhere]
- Updated macOS tested Pillow versions 7430 [radarhere]
- Improved init(), preinit() and register_mime() documentation 7399 [radarhere]
- Updated macOS tested Pillow versions 7400 [radarhere]

Testing

- Test Python 3.12 final in GitHub Actions 7441 [radarhere]
- Add checks to pre-commit 7421 [hugovk]
- AppVeyor: don't download huge pillow-depends.zip 7407 [hugovk]
- NumPy now supports Python 3.12 7403 [radarhere]

10.0.1

https://pillow.readthedocs.io/en/stable/releasenotes/10.0.1.html

Changes

- Updated libwebp to 1.3.2 7395 [radarhere]
- Updated zlib to 1.3 7344 [radarhere]

10.0.0

https://pillow.readthedocs.io/en/stable/releasenotes/10.0.0.html

Changes

- Fixed deallocating mask images 7246 [radarhere]
- Added ImageFont.MAX_STRING_LENGTH 7244 [radarhere]
- Fix Windows build with pyproject.toml 7230 [nulano]
- Do not close provided file handles with libtiff 7199 [radarhere]
- Convert to HSV if mode is HSV in getcolor() 7226 [radarhere]
- Added alpha_only argument to getbbox() 7123 [radarhere]
- Prioritise speed in _repr_png_ 7242 [radarhere]
- Limit size even if one dimension is zero in decompression bomb check 7235 [radarhere]
- Restored 32-bit support 7234 [radarhere]
- Removed deleted file from codecov.yml and increased coverage threshold 7232 [radarhere]
- Removed support for 32-bit 7228 [radarhere]
- Use --config-settings instead of deprecated --global-option 7171 [radarhere]
- Better C integer definitions 6645 [Yay295]
- Fixed finding dependencies on Cygwin 7175 [radarhere]
- Improved checks in font_render 7218 [radarhere]
- Change `grabclipboard()` to use PNG compression on macOS 7219 [abey79]
- Added PyPy 3.10 and removed PyPy 3.8 7216 [radarhere]
- Added in_place argument to ImageOps.exif_transpose() 7092 [radarhere]
- Corrected error code 7177 [radarhere]
- Use "not in" 7174 [radarhere]
- Only call text_layout once in getmask2 7206 [radarhere]
- Fixed calling putpalette() on L and LA images before load() 7187 [radarhere]
- Removed unused INT64 definition 7180 [radarhere]
- Updated xz to 5.4.3 7136 [radarhere]
- Fixed saving TIFF multiframe images with LONG8 tag types 7078 [radarhere]
- Do not set size unnecessarily if image fails to open 7056 [radarhere]
- Removed unused code 7210 [radarhere]
- Removed unused variables 7205 [radarhere]
- Fixed signedness comparison warning 7203 [radarhere]
- Fixed combining single duration across duplicate APNG frames 7146 [radarhere]
- Remove temporary file when error is raised 7148 [radarhere]
- Do not use temporary file when grabbing clipboard on Linux 7200 [radarhere]
- If the clipboard fails to open on Windows, wait and try again 7141 [radarhere]
- Fixed saving multiple 1 mode frames to GIF 7181 [radarhere]
- Replaced absolute PIL import with relative import 7173 [radarhere]
- Removed files and types override 7194 [radarhere]
- Removed duplicate config 7193 [radarhere]
- Replaced deprecated Py_FileSystemDefaultEncoding for Python >= 3.12 7192 [radarhere]
- Improved wl-paste mimetype handling in ImageGrab 7094 [rrcgat]
- Updated redirected URLs 7178 [radarhere]
- Added _repr_jpeg_() for IPython display_jpeg 7135 [n3011]
- Use "/sbin/ldconfig" if ldconfig is not found 7068 [radarhere]
- Prefer screenshots using XCB over gnome-screenshot 7143 [nulano]
- Fixed joined corners for ImageDraw rounded_rectangle() odd dimensions 7151 [radarhere]
- Support reading signed 8-bit TIFF images 7111 [radarhere]
- Added width argument to ImageDraw regular_polygon 7132 [radarhere]
- Support I mode for ImageFilter.BuiltinFilter 7108 [radarhere]
- Raise error from stderr of Linux ImageGrab.grabclipboard() command 7112 [radarhere]
- Updated libimagequant to 4.2.0 7128 [radarhere]
- Added unpacker from I;16B to I;16 7125 [radarhere]
- Use stdlib for setuptools on MinGW 7131 [radarhere]
- [pre-commit.ci] pre-commit autoupdate 7129 [pre-commit-ci]
- Support float font sizes 7107 [radarhere]
- Use later value for duplicate xref entries in PdfParser 7102 [radarhere]
- Load before getting size in __getstate__ 7105 [bigcat88]
- Added Fedora 38 7109 [radarhere]
- Removed duplicate code 7106 [radarhere]
- Remove use of deprecated OpenJPEG "bpp" member 7090 [radarhere]
- Select Python version in Cygwin 7091 [radarhere]
- Updated nasm to 2.16.01 7089 [radarhere]
- Update vendored Raqm to 0.10.1 7087 [nulano]
- 10.0.0.dev0 version bump 7057 [radarhere]
- Fixed type handling for include and lib directories 7069 [adisbladis]
- Do not install PyQt6-Qt6 6.5.0 7081 [radarhere]
- Removed FIXME comment 7072 [radarhere]
- [pre-commit.ci] pre-commit autoupdate 7063 [pre-commit-ci]

Dependencies

- Updated libtiff to 4.5.1 7233 [radarhere]
- Updated libwebp to 1.3.1 7238 [radarhere]
- Updated freetype to 2.13.1 7231 [radarhere]
- Updated fribidi to 1.0.13 7166 [radarhere]
- Updated harfbuzz to 7.3.0 7152 [radarhere]
- Updated harfbuzz to 7.2.0 7118 [radarhere]
- Update cygwin/cygwin-install-action action to v4 7099 [renovate]
- Updated raqm to 0.10.1 7088 [radarhere]

Deprecations

- Do not use CFFI access by default on PyPy 7236 [radarhere]

Documentation

- Added release notes for 7123 7243 [radarhere]
- `Image.open()` seeks to the start of file objects 7097 [radarhere]
- Added release notes for 7235 7239 [radarhere]
- Update Image.show docs to list all viewers used on Linux 7229 [RoziePlaysPython]
- Document how to install on MinGW when setuptools >= 60 7224 [radarhere]
- Clarify that the changelog should not be updated in PRs 7220 [radarhere]
- Moved QOI from Write-Only to Read-Only 7212 [radarhere]
- Improved documention of "corners" argument for rounded_rectangle 7211 [radarhere]
- Removed rectangle example from co-ordinate system documentation 7169 [radarhere]
- Document order of kernel weights 7204 [radarhere]
- Build only PDF in addition to default html 7164 [hugovk]
- ImageGrab grabclipboard() is supported on Linux 7160 [radarhere]
- Clarify that line() and polygon() include xy pixels 7142 [radarhere]
- Updated redirected URL 7157 [radarhere]
- Updated ImagePath tolist() default 7138 [radarhere]
- Added release notes for 7132 7134 [radarhere]
- Build all readthedocs formats 7116 [radarhere]
- Updated macOS tested Pillow versions 7103 [radarhere]
- Fix typo 7101 [hugovk]
- Release refinement 7074 [hugovk]
- Improve ImageEnhance factor documentation 7065 [radarhere]

Removals

- Remove deprecated ImageFont.getsize and related functions for Pillow 10.0.0 7080 [radarhere]
- Remove deprecations for Pillow 10.0.0 7059 [hugovk]
- Drop support for soon-EOL Python 3.7 7058 [hugovk]

Testing

- bench_cffi_access print formatting 7227 [Yay295]
- Add Debian 12 Bookworm 7208 [hugovk]
- Fix Python 3.12 failures 7188 [radarhere]
- Test lists and tuples 6949 [Yay295]
- Test both lists and tuples as qtables arguments 6900 [Yay295]
- More ImagePath tests 6904 [Yay295]
- Removed Ubuntu 18.04 docker image 7115 [radarhere]
- Removed Fedora 36 7098 [radarhere]
- Fix codecov after they deleted the Python package from PyPI 7085 [hugovk]
- Install libxcb-cursor0 7083 [radarhere]
- Add release check to make sure no TODOs remain in release notes 7075 [hugovk]

9.5.0

https://pillow.readthedocs.io/en/stable/releasenotes/9.5.0.html

Changes

- Refactor EpsImagePlugin and deprecate PSFile 6879 [Yay295]
- Do not discard error message if _imagingft fails to import 7047 [nulano]
- Added ImageSourceData to TAGS_V2 7053 [radarhere]
- Clear PPM half token after use 7052 [radarhere]
- Do not render text if image has zero width or height 7021 [radarhere]
- Removed unnecessary silencing of stderr 7046 [radarhere]
- Fixed compilation warnings 7050 [radarhere]
- Handle failure from PyDict_New or PyList_New 6999 [radarhere]
- Removed absolute path to ldconfig 7044 [radarhere]
- Windows: compile xz with CMake 6947 [nulano]
- Support custom comments and PLT markers when saving JPEG2000 images 6903 [joshware]
- Load before getting size in __array_interface__ 7034 [radarhere]
- Support creating BGR;15, BGR;16 and BGR;24 images, but drop support for BGR;32 7010 [radarhere]
- Consider transparency when applying APNG blend mask 7018 [radarhere]
- Round duration when saving animated WebP images 6996 [radarhere]
- Added reading of JPEG2000 comments 6909 [radarhere]
- Decrement reference count 7003 [radarhere]
- Allow libtiff_support_custom_tags to be missing 7020 [radarhere]
- Updated xz to 5.4.2 7026 [radarhere]
- Improved I;16N support 6834 [radarhere]
- Added QOI reading 6852 [radarhere]
- Added saving RGBA images as PDFs 6925 [radarhere]
- Do not raise an error if os.environ does not contain PATH 6935 [radarhere]
- Close OleFileIO instance when closing or exiting FPX or MIC 7005 [radarhere]
- Added __int__ to IFDRational for Python >= 3.11 6998 [radarhere]
- Move potential error earlier 7002 [radarhere]
- Remove redundant default values 6914 [radarhere]
- Added memoryview support to Dib.frombytes() 6988 [radarhere]
- Close file pointer copy in the libtiff encoder if still open 6986 [fcarron]
- Removed unused profile_fromstring method 6987 [radarhere]
- Release buffer 6976 [radarhere]
- Raise an error if ImageDraw co-ordinates are incorrectly ordered 6978 [radarhere]
- Added "corners" argument to ImageDraw rounded_rectangle() 6954 [radarhere]
- Clarify some local variable names 6971 [akx]
- Added memoryview support to frombytes() 6974 [radarhere]
- Allow comments in FITS images 6973 [radarhere]
- Relax roundtrip check 6970 [radarhere]
- Support saving PDF with different X and Y resolutions 6961 [jvanderneutstulen]
- Relax roundtrip check 6967 [radarhere]
- Fixed writing int as UNDEFINED tag 6950 [radarhere]
- Update HPND wording in LICENSE file 6936 [mtelka]
- Relaxed child images check to allow for libjpeg 6853 [radarhere]
- Raise an error if EXIF data is too long when saving JPEG 6939 [radarhere]
- Fixed typo 6940 [radarhere]
- Sort dependencies 6922 [radarhere]
- Handle more than one directory returned by pkg-config 6896 [sebastic]
- Relax ImageQt roundtrip check 6915 [radarhere]
- Prevent register_open from adding duplicates to ID 6917 [radarhere]
- Do not retry past formats when loading all formats for the first time 6902 [radarhere]
- Handling for deprecations to be removed in Pillow 11 6905 [hugovk]
- Do not retry specified formats if they failed when opening 6893 [radarhere]
- Do not unintentionally load TIFF format at first 6892 [radarhere]
- Stop reading when EPS line becomes too long 6897 [radarhere]
- Allow writing IFDRational to BYTE tag 6890 [radarhere]
- Raise ValueError for BoxBlur filter with negative radius 6874 [hugovk]
- Only read when necessary in EpsImagePlugin 6880 [radarhere]
- Simplify isinstance, key in dict, enumerate 6869 [hugovk]
- Support arbitrary number of loaded modules on Windows 6761 [javidcf]

Dependencies

- Install Ghostscript using Chocolatey 7036 [radarhere]
- Update actions/stale action to v8 7035 [renovate]
- Updated libimagequant to 4.1.1 7000 [radarhere]
- Updated harfbuzz to 7.1.0 6983 [radarhere]
- Updated lcms2 to 2.15 6981 [radarhere]
- Updated harfbuzz to 7.0.1 6959 [radarhere]
- Updated harfbuzz to 7.0.0 6946 [radarhere]
- Updated freetype to 2.13 6931 [radarhere]
- Updated libjpeg-turbo to 2.1.5.1 6929 [radarhere]
- [pre-commit.ci] pre-commit autoupdate 6928 [pre-commit-ci]
- Updated libjpeg-turbo to 2.1.5 6923 [radarhere]
- pre-commit autoupdate 6920 [radarhere]
- Updated libimagequant to 4.1.0 6906 [radarhere]
- Updated libimagequant to 4.0.5 6901 [radarhere]
- Updated libwebp to 1.3.0 6889 [radarhere]
- Updated raqm to 0.10.0 6884 [radarhere]
- Updated xz to 5.4.1 6883 [radarhere]
- [pre-commit.ci] pre-commit autoupdate 6855 [pre-commit-ci]

Documentation

- Removed unused sections in release notes 7054 [radarhere]
- Add missing word 7051 [Yay295]
- Document handling of modes when converting to or from NumPy 7049 [radarhere]
- Document how to create universal2 wheels 6912 [radarhere]
- Docs: Replace dependency sphinx-issues with builtin sphinx.ext.extlinks 7016 [hugovk]
- Minor improvement made to c_extension_debugging.rst 7017 [Lucas-C]
- Restored deleted docstring 7027 [radarhere]
- Removed incorrect docstring 7025 [Auto-5]
- Fix order of arguments in docstring 7024 [Auto-5]
- Restore link anchor 6993 [nulano]
- Removed missing anchor from link 6992 [radarhere]
- Added release notes for 6961 and 6954 6990 [radarhere]
- Replace Python code-blocks with double colons 6958 [radarhere]
- Highlight code example 6969 [radarhere]
- Corrected documented WebP quality range 6952 [jzern]
- image-file-formats.rst: document WebP 'xmp' option 6951 [jzern]
- Add description for getexif() and Exif 6930 [greatvovan]
- Specify correct description for mode L 6907 [Pehat]
- Alex Clark -> Jeffrey A. Clark (Alex) 6895 [aclark4life]
- Updated macOS tested Pillow versions 6885 [radarhere]
- Verify the Mastodon docs link 6881 [hugovk]
- List Raqm build options in installation documentation 6876 [nulano]
- Refer to Resampling enum 6868 [radarhere]
- LOAD_TRUNCATED_IMAGES may allow PNG images to open 6856 [radarhere]
- Announce releases on Mastodon 6861 [radarhere]

Testing

- Added Amazon Linux 2023 docker image 7029 [radarhere]
- Remove EOL Debian 10 Buster from CI 7014 [hugovk]
- Moved tests that require libtiff 6919 [radarhere]
- Moved conversion test to test_imagecms 6866 [radarhere]
- Run CIFuzz tests when GitHub Actions file changes 6994 [radarhere]
- Build docs in own workflow 6991 [hugovk]
- Log expected & actual color in image access tests 6899 [Yay295]
- Fix up some pytest style issues 6968 [akx]
- Enable gcov support for codecov/codecov-action 6944 [hugovk]
- Test Python 3.12-dev 6943 [hugovk]
- Replace SVN with Git for installing extra test images 6918 [hugovk]
- Parametrize test_file_tar::test_sanity() 6898 [Yay295]
- Only install python-pyqt6 package on 64-bit 6886 [radarhere]
- Tests: Convert internal check() functions to use parametrize 6870 [hugovk]
- Clean up tests (simplified) 6865 [Yay295]
- NotImplementedError will not be raised by grapclipboard if xclip is available on Linux 6859 [radarhere]
- array tobytes() always exists in Python >= 3.2 6854 [radarhere]

9.4.0

https://pillow.readthedocs.io/en/stable/releasenotes/9.4.0.html

Changes

- Updated copyright year 6845 [radarhere]
- Fixed null pointer dereference crash with malformed font 6846 [radarhere]
- Return from ImagingFill early if image has a zero dimension 6842 [radarhere]
- Reversed deprecations for Image constants, except for duplicate Resampling attributes 6830 [radarhere]
- Improve exception traceback readability 6836 [hugovk]
- Fix version mismatch 6841 [smb123w64gb]
- Do not attempt to read IFD1 if absent 6840 [radarhere]
- Fixed writing int as ASCII tag 6800 [radarhere]
- If available, use wl-paste or xclip for grabclipboard() on Linux 6783 [radarhere]
- Added signed option when saving JPEG2000 images 6709 [radarhere]
- Patch OpenJPEG to include ARM64 fix 6718 [radarhere]
- Added support for I;16 modes in putdata() 6825 [radarhere]
- Added conversion from RGBa to RGB 6708 [radarhere]
- Added DDS support for uncompressed L and LA images 6820 [radarhere]
- Added LightSource tag values to ExifTags 6749 [radarhere]
- Updated libtiff shared library name 6826 [radarhere]
- Fixed PyAccess after changing ICO size 6821 [radarhere]
- Do not use EXIF from info when saving PNG images 6819 [radarhere]
- Fixed saving EXIF data to MPO 6817 [radarhere]
- Added Exif hide_offsets() 6762 [radarhere]
- Only compare to previous frame when checking for duplicate GIF frames while saving 6787 [radarhere]
- Always initialize all plugins in registered_extensions() 6811 [radarhere]
- Initialize unsigned char variables 6818 [radarhere]
- Updated deprecated NumPy alias 6814 [radarhere]
- Ignore non-opaque WebP background when saving as GIF 6792 [radarhere]
- Only set tile in ImageFile __setstate__ 6793 [radarhere]
- Fixed BytesWarnings 6816 [radarhere]
- When reading BLP, do not trust JPEG decoder to determine image is CMYK 6767 [radarhere]
- Updated xz to 5.4.0 6802 [radarhere]
- Added IFD enum to ExifTags 6748 [radarhere]
- Fixed bug combining GIF frame durations 6779 [radarhere]
- Remove unnecessary Pipfile 6790 [hugovk]
- Support saving JPEG comments 6774 [smason]
- Add support for PyPy3.9, drop PyPy3.7 6782 [hugovk]
- [pre-commit.ci] pre-commit autoupdate 6780 [pre-commit-ci]
- Use compile_python_fuzzer 6775 [radarhere]
- Remove specific number of jobs from comment 6772 [radarhere]
- Fix WebP dealloc method definitions 6763 [Yay295]
- Added getxmp() to WebPImagePlugin 6758 [radarhere]
- Use stdlib for setuptools on Cygwin 6760 [radarhere]
- Added "exact" option when saving WebP 6747 [ashafaei]
- Use fractional coordinates when drawing text 6722 [radarhere]
- Fixed writing int as BYTE tag 6740 [radarhere]
- Remove Tidelift alignment action and badge 6739 [aclark4life]
- Updated xz to 5.2.8 6738 [radarhere]
- Added MP Format Version when saving MPO 6735 [radarhere]
- Remove ImagingAccessInit line() method 6736 [Yay295]
- Update to Python 3.11 in GitHub Actions 6726 [radarhere]
- Added Interop to ExifTags 6724 [radarhere]
- CVE-2007-4559 patch when building on Windows 6704 [nulano]
- [pre-commit.ci] pre-commit autoupdate 6721 [pre-commit-ci]
- Fix compiler warning: accessing 64 bytes in a region of size 48 6714 [wiredfool]
- Use verbose flag for pip install 6713 [wiredfool]
- Replaced IOError with OSError 6715 [radarhere]
- Disable __CxxFrameHandler4 when compiling HarfBuzz 6702 [nulano]

Dependencies

- Updated libtiff to 4.5.0 6822 [radarhere]
- Update actions/stale action to v7 6813 [renovate]
- Updated harfbuzz to 6.0.0 6810 [radarhere]
- Update egor-tensin/cleanup-path action to v3 6806 [renovate]
- Update cygwin/cygwin-install-action action to v3 6776 [renovate]
- Updated xz to 5.2.9 6770 [radarhere]
- Updated libpng to 1.6.39 6752 [radarhere]
- Updated lcms2 to 2.14 6711 [radarhere]

Documentation

- Updated size parameter descriptions 6851 [radarhere]
- Added release notes for 6842 and 6846 6850 [radarhere]
- Document the meaning of "premultiplied alpha" 6838 [radarhere]
- Document "transparency" info key 6831 [radarhere]
- Clarify apply_transparency() docstring 6798 [radarhere]
- Improved mode range documentation 6795 [radarhere]
- Added releases notes for 6774 6784 [radarhere]
- Use Sphinx Inline Tabs to organise installation per OS 6764 [hugovk]
- Document how to install Pillow from a directory 6756 [radarhere]
- Add oss-fuzz badge 6717 [wiredfool]
- Updated macOS tested Pillow versions 6734 [radarhere]

Testing

- Removed Python 3.7 on Cygwin 6815 [radarhere]
- Run Bandit on CI via pre-commit 6805 [hugovk]
- Add allowlist_externals=make to fix tox 4 6801 [hugovk]
- Added Fedora 37 6742 [radarhere]
- Revert "Install NumPy with OpenBLAS" 6727 [radarhere]
- Updated AppVeyor to Python 3.11 6723 [radarhere]
- Added file to list of partially supported BMPs 6719 [radarhere]
- XCB will not be used by default on Linux if gnome-screenshot is present 6712 [radarhere]
- Removed Fedora 35 6705 [radarhere]
- Add xfail mark to TestEmbeddable 6703 [nulano]

9.3.0

https://pillow.readthedocs.io/en/stable/releasenotes/9.3.0.html

Changes

- Initialize libtiff buffer when saving 6699 [radarhere]
- Limit SAMPLESPERPIXEL to avoid runtime DOS 6700 [wiredfool]
- Inline fname2char to fix memory leak 6329 [nulano]
- Fix memory leaks related to text features 6330 [nulano]
- Use double quotes for version check on old CPython on Windows 6695 [hugovk]
- GHA: replace deprecated set-output command with GITHUB_OUTPUT file 6697 [nulano]
- Remove backup implementation of Round for Windows platforms 6693 [cgohlke]
- Upload fribidi.dll to GitHub Actions 6532 [nulano]
- Fixed set_variation_by_name offset 6445 [radarhere]
- Windows build improvements 6562 [nulano]
- Fix malloc in _imagingft.c:font_setvaraxes 6690 [cgohlke]
- Only use ASCII characters in C source file 6691 [cgohlke]
- Release Python GIL when converting images using matrix operations 6418 [hmaarrfk]
- Added ExifTags enums 6630 [radarhere]
- Do not modify previous frame when calculating delta in PNG 6683 [radarhere]
- Added support for reading BMP images with RLE4 compression 6674 [npjg]
- Decode JPEG compressed BLP1 data in original mode 6678 [radarhere]
- pylint warnings 6659 [marksmayo]
- Added GPS TIFF tag info 6661 [radarhere]
- Added conversion between RGB/RGBA/RGBX and LAB 6647 [radarhere]
- Do not attempt normalization if mode is already normal 6644 [radarhere]
- Fixed seeking to an L frame in a GIF 6576 [radarhere]
- Consider all frames when selecting mode for PNG save_all 6610 [radarhere]
- Don't reassign crc on ChunkStream close 6627 [radarhere]
- Raise a warning if NumPy failed to raise an error during conversion 6594 [radarhere]
- Only read a maximum of 100 bytes at a time in IMT header 6623 [radarhere]
- Show all frames in ImageShow 6611 [radarhere]
- Allow FLI palette chunk to not be first 6626 [radarhere]
- If first GIF frame has transparency for RGB_ALWAYS loading strategy, use RGBA mode 6592 [radarhere]
- Round box position to integer when pasting embedded color 6517 [radarhere]
- Removed EXIF prefix when saving WebP 6582 [radarhere]
- Pad IM palette to 768 bytes when saving 6579 [radarhere]
- Added DDS BC6H reading 6449 [ShadelessFox]
- Added support for opening WhiteIsZero 16-bit integer TIFF images 6642 [JayWiz]
- Raise an error when allocating translucent color to RGB palette 6654 [jsbueno]
- Moved mode check outside of loops 6650 [radarhere]
- Added reading of TIFF child images 6569 [radarhere]
- Improved ImageOps palette handling 6596 [PososikTeam]
- Defer parsing of palette into colors 6567 [radarhere]
- Apply transparency to P images in ImageTk.PhotoImage 6559 [radarhere]
- Use rounding in ImageOps contain() and pad() 6522 [bibinhashley]
- Fixed GIF remapping to palette with duplicate entries 6548 [radarhere]
- Allow remap_palette() to return an image with less than 256 palette entries 6543 [radarhere]
- Corrected BMP and TGA palette size when saving 6500 [radarhere]
- Move some static config to setup.cfg 6570 [hugovk]
- Do not call load() before draft() in Image.thumbnail 6539 [radarhere]
- Use constants in TiffImagePlugin 6552 [radarhere]
- Copy palette when converting from P to PA 6497 [radarhere]
- Allow RGB and RGBA values for PA image putpixel 6504 [radarhere]
- Removed support for tkinter in PyPy before Python 3.6 6551 [nulano]
- Do not use CCITTFaxDecode filter if libtiff is not available 6518 [radarhere]
- Fallback to not using mmap if buffer is not large enough 6510 [radarhere]
- Fixed writing bytes as ASCII tag 6493 [radarhere]
- Open 1 bit EPS in mode 1 6499 [radarhere]
- Removed support for tkinter before Python 1.5.2 6549 [radarhere]
- Fixed typo 6542 [radarhere]
- NumPy now supports Python 3.11 6538 [radarhere]
- Build lcms2 VC2022 6529 [radarhere]
- Added direct conversion from PA to P 6509 [radarhere]
- Allow default ImageDraw font to be set 6484 [radarhere]
- Save 1 mode PDF using CCITTFaxDecode filter 6470 [radarhere]
- Added support for RGBA PSD images 6481 [radarhere]
- Parse orientation from XMP tag contents 6463 [bigcat88]
- Added support for reading ATI1/ATI2 (BC4/BC5) DDS images 6457 [REDxEYE]
- Do not clear GIF tile when checking number of frames 6455 [radarhere]
- Support saving multiple MPO frames 6444 [radarhere]
- Moved tile encoding into separate function 6456 [radarhere]
- Do not double quote Pillow version for setuptools >= 60 6450 [radarhere]
- 3.11: Add Trove classifier and to tox.ini and update setup.py version check 6441 [hugovk]
- Added ABGR BMP mask mode 6436 [radarhere]
- Fixed PSDraw rectangle 6429 [radarhere]
- Raise ValueError if PNG sRGB chunk is truncated 6431 [radarhere]
- Handle missing Python executable in ImageShow on macOS 6416 [bryant1410]

Dependencies

- Updated harfbuzz to 5.3.1 6669 [radarhere]
- Updated zlib to 1.2.13 6664 [radarhere]
- Updated harfbuzz to 5.3.0 6651 [radarhere]
- Update github-actions 6616 [renovate]
- Updated Ghostscript to 10.0.0 6609 [radarhere]
- Fix Renovate config 6599 [hugovk]
- Configure Renovate 6564 [renovate]
- Updated harfbuzz to 5.2.0 6591 [radarhere]
- [pre-commit.ci] pre-commit autoupdate 6560 [pre-commit-ci]
- Updated libimagequant to 4.0.4 6535 [radarhere]
- Updated libimagequant to 4.0.2 6523 [radarhere]
- Updated libwebp to 1.2.4 6483 [radarhere]
- [pre-commit.ci] pre-commit autoupdate 6472 [pre-commit-ci]
- Updated harfbuzz to 5.1.0 6466 [radarhere]
- Updated libimagequant to 4.0.1 6451 [radarhere]
- Updated libwebp to 1.2.3 6442 [radarhere]

Documentation

- Update release notes for 9.3.0 6696 [hugovk]
- Document ImageDraw attributes 6533 [nulano]
- Added release notes for 6630 6685 [radarhere]
- Document when BLP1 JPEG data started being loaded incorrectly 6682 [radarhere]
- Added release notes for 6678 6680 [radarhere]
- Added release notes for 6449 and 6611 6668 [radarhere]
- Image channel is used when converting PA with an RGBA palette 6662 [radarhere]
- High bit depth multichannel images are not yet supported 6638 [radarhere]
- Improved layout_engine documentation 6633 [radarhere]
- Improved documentation of ImageDraw return values 6556 [radarhere]
- Added headings before listing options 6632 [radarhere]
- Improve documentation for ImageDraw.rectangle and rounded_rectangle 6625 [d0sboots]
- Ensure dependencies are installed when building docs 6612 [radarhere]
- Fixed broken URLs 6617 [radarhere]
- Updated redirected URLs 6613 [radarhere]
- Add OpenSSF Best Practices badge 6597 [hugovk]
- Corrected dictionary name 6593 [radarhere]
- Simplified enum references 6557 [radarhere]
- Documented TGA save keyword arguments 6546 [radarhere]
- Updated tested Windows environment list 6550 [radarhere]
- DOC: fix image-file-formats.rst 6513 [cgohlke]
- Ubuntu dependencies also apply to Jammy 6511 [radarhere]
- Orientation data is removed by exif_transpose() 6476 [radarhere]
- Note to Windows users that FreeType will keep the font file open 6485 [radarhere]
- Switch to GitHub Actions artifacts for Windows wheels 6458 [radarhere]
- Added release notes for 6457 6465 [radarhere]
- Docs: Replace version tables with RST csv-table and add 3.11 6433 [hugovk]
- Fix simple typo 6443 [timgates42]
- Docs: Allow setting Python interpreter via command line 6440 [hugovk]
- Updated links 6427 [radarhere]
- Updated macOS tested Pillow versions 6425 [radarhere]
- Document where to find other codecs 6415 [radarhere]

Testing

- GitHub Actions: Test Python 3.11.0 final 6686 [hugovk]
- Consistently write in binary format in PPM tests 6677 [radarhere]
- Removed print statement from tests 6660 [radarhere]
- Parametrized tests 6634 [radarhere]
- Do not import PIL.Image 6635 [radarhere]
- Add "concurrency" to GitHub Actions 6621 [Yay295]
- Updated codecov action to v3 6281 [radarhere]
- Use fixtures instead of classes in test_imagefont 6534 [nulano]
- Parametrize more tests 6531 [Yay295]
- [pre-commit.ci] pre-commit autoupdate 6560 [pre-commit-ci]
- Updated tested Windows environment list 6550 [radarhere]
- Set top-level permissions for remaining GitHub Actions 6541 [radarhere]
- Parametrized tests 6526 [radarhere]
- Parametrize Tests/test_image_paste.py 6519 [Yay295]
- Temporarily skip valgrind failure 6524 [radarhere]
- Do not install test-image-results on GitHub Actions 6501 [radarhere]
- Updated libjpeg-turbo to 2.1.4 6498 [radarhere]
- Increased test tolerance to allow for libtiff with libjpeg-turbo 6477 [radarhere]
- Updated Valgrind job to Jammy 6473 [radarhere]
- [pre-commit.ci] pre-commit autoupdate 6472 [pre-commit-ci]
- Install libxcb-shape0 6438 [radarhere]
- Set permissions for GitHub actions 6413 [neilnaveen]

9.2.0

https://pillow.readthedocs.io/en/stable/releasenotes/9.2.0.html

Changes

- Fixed null check for fribidi_version_info in FriBiDi shim 6376 [nulano]
- Added GIF decompression bomb check 6402 [radarhere]
- Handle PCF fonts files with less than 256 characters 6386 [dawidcrivelli]
- Improved GIF optimize condition 6378 [raygard]
- Reverted to __array_interface__ with the release of NumPy 1.23 6394 [radarhere]
- Pad PCX palette to 768 bytes when saving 6391 [radarhere]
- Fixed bug with rounding pixels to palette colors 6377 [btrekkie]
- Use gnome-screenshot on Linux if available 6361 [radarhere]
- Fixed loading L mode BMP RLE8 images 6384 [radarhere]
- Fixed incorrect operator in ImageCms error 6370 [LostBenjamin]
- Limit FPX tile size to avoid extending outside image 6368 [radarhere]
- Added support for decoding plain PPM formats 5242 [Piolie]
- Added apply_transparency() 6352 [radarhere]
- Fixed behaviour change from endian fix 6197 [radarhere]
- Use python3 6222 [radarhere]
- Allow remapping P images with RGBA palettes 6350 [radarhere]
- Revert "Skip test_realloc_overflow unless libtiff 4.0.4 or higher" 6354 [radarhere]
- [pre-commit.ci] pre-commit autoupdate 6353 [pre-commit-ci]
- Only import ImageFont in ImageDraw when necessary 6341 [radarhere]
- Fixed drawing translucent 1px high polygons 6278 [radarhere]
- Pad COLORMAP to 768 items when saving TIFF 6232 [radarhere]
- Fix P -> PA conversion  6337 [RedShy]
- Once exif data is parsed, do not reload unless it changes 6335 [radarhere]
- Only try to connect discontiguous corners at the end of edges 6303 [radarhere]
- Improve transparency handling when saving GIF images 6176 [radarhere]
- Do not update GIF frame position until local image is found 6219 [radarhere]
- Netscape GIF extension belongs after the global color table 6211 [radarhere]
- Only write GIF comments at the beginning of the file 6300 [raygard]
- Separate multiple GIF comment blocks with newlines 6294 [raygard]
- Always use GIF89a for comments 6292 [raygard]
- Ignore compression value from BMP info dictionary when saving as TIFF 6231 [radarhere]
- If font is file-like object, do not re-read from object to get variant 6234 [radarhere]
- Raise ValueError when trying to access internal fp after close 6213 [radarhere]
- Support more affine expression forms in im.point() 6254 [benrg]
- Include 'twine check' in 'make sdist' 6305 [hugovk]
- Ensure that furthest v is set in quantize2 6256 [radarhere]

Dependencies

- Updated harfbuzz to 4.4.1 6401 [radarhere]
- Updated harfbuzz to 4.4.0 6397 [radarhere]
- Use SourceForge auto mirror capability 6345 [raygard]
- Updated libtiff to 4.4.0 6339 [radarhere]
- Updated harfbuzz to 4.3.0 6315 [radarhere]

Deprecations

- Deprecate ImageFont.getsize and related functions 6381 [nulano]

Documentation

- Install furo if it is not available 6408 [radarhere]
- Added release notes for 6402 6403 [radarhere]
- Docs: remove redundant search page from table of contents 6399 [hugovk]
- Added pytest-timeout to test dependencies 6301 [radarhere]
- Fix Sphinx 5 warning by setting docs language 6347 [hugovk]
- Include 6178 in release notes 6346 [radarhere]
- Updated macOS tested Pillow versions 6316 [radarhere]
- Add Sphinx Lint to pre-commit and fix RST bug 6340 [hugovk]
- Added EMF and SUN to list of supported file formats 6338 [radarhere]
- Once a GIF comment is loaded, it is kept for subsequent frames 6325 [radarhere]
- Link to GitHub discussions in CONTRIBUTING 6333 [radarhere]
- Improved image file formats documentation 6313 [radarhere]

Testing

- Add Sphinx Lint to pre-commit and fix RST bug 6340 [hugovk]
- pre-commit autoupdate 6223 [radarhere]
- Upgrade non-amd64 Ubuntu jobs to Jammy 6306 [radarhere]

9.1.1

This release addresses several security problems.

[CVE-2022-30595](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-30595): When reading a TGA file with RLE packets that cross scan lines, Pillow reads the information past the end of the first line without deducting that from the length of the remaining file data. This vulnerability was introduced in Pillow 9.1.0, and can cause a heap buffer overflow.

Opening an image with a zero or negative height has been found to bypass a decompression bomb check. This will now raise a [`SyntaxError`](https://docs.python.org/3/library/exceptions.html#SyntaxError) instead, in turn raising a `PIL.UnidentifiedImageError`.

9.1.0

https://pillow.readthedocs.io/en/stable/releasenotes/9.1.0.html

Changes

- Add support for multiple component transformation to JPEG2000 5500 [scaramallion]
- Fix loading FriBiDi on Alpine 6165 [nulano]
- Added setting for converting GIF P frames to RGB 6150 [radarhere]
- Allow 1 mode images to be inverted 6034 [radarhere]
- Raise ValueError when trying to save empty JPEG 6159 [radarhere]
- Always save TIFF with contiguous planar configuration 5973 [radarhere]
- Connected discontiguous polygon corners 5980 [radarhere]
- Corrected memory allocation 5958 [radarhere]
- Ensure Tkinter hook is activated for getimage() 6032 [radarhere]
- Fixed comparison warnings 5970 [radarhere]
- Use screencapture arguments to crop on macOS 6152 [radarhere]
- Do not mark L mode JPEG as 1 bit in PDF 6151 [radarhere]
- Fixed saving L mode GIF with background as WebP 6147 [radarhere]
- Do not expand GIF during n_frames 6148 [radarhere]
- Added support for reading I;16R TIFF images 6132 [radarhere]
- If an error occurs after creating a file, remove the file 6134 [radarhere]
- decode() should return -1 when finished 6130 [radarhere]
- Fixed calling DisplayViewer or XVViewer without a title 6136 [radarhere]
- Retain RGBA transparency when saving multiple GIF frames 6128 [radarhere]
- Save additional ICO frames with other bit depths if supplied 6122 [radarhere]
- Handle EXIF data truncated to just the header 6124 [radarhere]
- Added support for reading BMP images with RLE8 compression 6102 [radarhere]
- Support Python distributions where _tkinter is compiled in 6006 [lukegb]
- Added WebP default duration of zero when saving 6140 [radarhere]
- Added support for PPM arbitrary maxval 6119 [radarhere]
- Removed unused variable 6137 [radarhere]
- libwebp 1.2.2 fixed endian bugs 5984 [radarhere]
- Added BigTIFF reading 6097 [radarhere]
- GIF seek performance improvements 6077 [radarhere]
- Removed load_prepare nearly identical to ImageFile load_prepare 6116 [radarhere]
- When converting, clip I;16 to be unsigned, not signed 6112 [radarhere]
- Check if self.im is not None 6108 [radarhere]
- Fixed loading L mode GIF with transparency 6086 [radarhere]
- Ensure cleanup() is called for PyEncoders 6096 [radarhere]
- Various _accept changes 6092 [radarhere]
- Improved handling of PPM header 5121 [Piolie]
- Reset size when seeking away from "Large Thumbnail" MPO frame 6101 [radarhere]
- Replace requirements.txt with extras 6072 [hugovk]
- Added PyEncoder and support BLP saving 6069 [radarhere]
- Handle TGA images with packets that cross scan lines 6087 [radarhere]
- Added FITS reading 6056 [radarhere]
- Added rawmode argument to Image.getpalette() 6061 [radarhere]
- Fixed BUFR, GRIB and HDF5 stub saving 6071 [radarhere]
- Changed quantize default dither to FLOYDSTEINBERG 6068 [radarhere]
- Do not automatically remove temporary ImageShow files on Unix 6045 [radarhere]
- Correctly read JPEG compressed BLP images 4685 [Meithal]
- Merged _MODE_CONV typ into ImageMode as typestr 6057 [radarhere]
- Consider palette size when converting and in getpalette() 6060 [radarhere]
- Added enums 5954 [radarhere]
- Ensure image is opaque after converting P to PA with RGB palette 6052 [radarhere]
- Replaced absolute PIL import with relative import 6058 [radarhere]
- Attach RGBA palettes from putpalette() when suitable 6054 [radarhere]
- Simplified code 6053 [radarhere]
- Clarify code and comments 6042 [radarhere]
- Added get_photoshop_blocks() to parse Photoshop TIFF tag 6030 [radarhere]
- Drop excess values in BITSPERSAMPLE 6041 [mikhail-iurkov]
- Issue warning if Raqm layout is requested, but Raqm is not available 6035 [nulano]
- Added unpacker from RGBA;15 to RGB 6031 [radarhere]

Dependencies

- Updated freetype to 2.12 6169 [radarhere]
- Updated harfbuzz to 4.2.0 6164 [radarhere]
- Updated zlib to 1.2.12 6160 [radarhere]
- Updated harfbuzz to 4.1.0 6153 [radarhere]
- Updated harfbuzz to 4.0.1 6125 [radarhere]
- Updated harfbuzz to 4.0.0 6104 [radarhere]
- Updated harfbuzz to 3.4.0 6048 [radarhere]
- Updated lcms2 to 2.13.1 6017 [radarhere]
- Updated harfbuzz to 3.3.2 6029 [radarhere]
- Updated libimagequant to 4.0.0 6014 [radarhere]

Documentation

- Add musllinux wheels to 9.1.0 release notes 6168 [hugovk]
- Document "keep" for JPEG save quality option 6135 [carandraug]
- Document support for RLE8 reading in BMP 6155 [radarhere]
- Removed period before colon 6143 [radarhere]
- Added merging images example 6129 [radarhere]
- decode() should return -1 when finished 6117 [radarhere]
- Improved codec documentation 6094 [radarhere]
- Document alternatives to accessing individual pixels 6099 [radarhere]
- Document that histogram() uses 256 bins per channel 6106 [radarhere]
- Added release notes for 6069 6095 [radarhere]
- Improved ImageShow documentation 6078 [radarhere]
- Corrected docstring 6081 [radarhere]
- Corrected JPEG subsampling documentation 6067 [radarhere]
- Use --no-binary when installing from source 6066 [radarhere]
- macOS: 'brew install openjpeg' for JPEG2000 support 6065 [hugovk]
- Updated comment 6063 [radarhere]
- Updated macOS tested Pillow versions 6038 [radarhere]
- Fix return in docs 6040 [hugovk]
- Corrected sentence 6016 [radarhere]

Testing

- Added pytest-timeout to AppVeyor 6157 [radarhere]
- Do not always require ctypes in tests 6141 [radarhere]
- Updated setup-python, checkout and upload-artifact actions to v3 6111 [radarhere]
- pre-commit autoupdate --freeze 6109 [radarhere]
- Updated Python for doccheck to 3.10 6098 [radarhere]
- Updated libjpeg-turbo to 2.1.3 6091 [radarhere]
- Enable heap verification without gflags 6089 [radarhere]
- Test that n_frames and is_animated do not change GIF 6080 [radarhere]
- Added Gentoo to Docker jobs 6088 [radarhere]
- Removed duplicate test 6082 [radarhere]
- Updated checks that no warnings were raised 6076 [radarhere]
- Updated comment 6063 [radarhere]
- Replaced test image to avoid copyrighted color space 6062 [radarhere]
- Only skip test if libimagequant is earlier than 4 on ppc64le 6050 [radarhere]
- Added CentOS Stream 9 6036 [radarhere]
- Upgraded AppVeyor Python 3.10 image to Visual Studio 2022 6026 [radarhere]

9.0.1

https://pillow.readthedocs.io/en/stable/releasenotes/9.0.1.html

Changes

- In show_file, use os.remove to remove temporary images. CVE-2022-24303 6010 [radarhere, hugovk]
- Restrict builtins within lambdas for ImageMath.eval. CVE-2022-22817 6009 [radarhere]

9.0.0

https://pillow.readthedocs.io/en/stable/releasenotes/9.0.0.html

Changes

- Restrict builtins for ImageMath.eval() 5923 [radarhere]
- Ensure JpegImagePlugin stops at the end of a truncated file 5921 [radarhere]
- Fixed ImagePath.Path array handling 5920 [radarhere]
- Remove consecutive duplicate tiles that only differ by their offset 5919 [radarhere]
- Removed redundant part of condition 5915 [radarhere]
- Explicitly enable strip chopping for large uncompressed TIFFs 5517 [kmilos]
- Use the Windows method to get TCL functions on Cygwin 5807 [DWesl]
- Changed error type to allow for incremental WebP parsing 5404 [radarhere]
- Improved I;16 operations on big endian 5901 [radarhere]
- Ensure that BMP pixel data offset does not ignore palette 5899 [radarhere]
- Limit quantized palette to number of colors 5879 [radarhere]
- Use latin1 encoding to decode bytes 5870 [radarhere]
- Fixed palette index for zeroed color in FASTOCTREE quantize 5869 [radarhere]
- When saving RGBA to GIF, make use of first transparent palette entry 5859 [radarhere]
- Pass SAMPLEFORMAT to libtiff 5848 [radarhere]
- Added rounding when converting P and PA 5824 [radarhere]
- Improved putdata() documentation and data handling 5910 [radarhere]
- Exclude carriage return in PDF regex to help prevent ReDoS 5912 [radarhere]
- Image.NONE is only used for resampling and dithers 5908 [radarhere]
- Fixed freeing pointer in ImageDraw.Outline.transform 5909 [radarhere]
- Add Tidelift alignment action and badge 5763 [aclark4life]
- Replaced further direct invocations of setup.py 5906 [radarhere]
- Added ImageShow support for xdg-open 5897 [m-shinder]
- Fixed typo 5902 [radarhere]
- Switched from deprecated "setup.py install" to "pip install ." 5896 [radarhere]
- Support 16-bit grayscale ImageQt conversion 5856 [cmbruns]
- Fixed raising OSError in _safe_read when size is greater than SAFEBLOCK 5872 [radarhere]
- Convert subsequent GIF frames to RGB or RGBA 5857 [radarhere]
- WebP: Fix memory leak during decoding on failure 5798 [ilai-deutel]
- Do not prematurely return in ImageFile when saving to stdout 5665 [infmagic2047]
- Added support for top right and bottom right TGA orientations 5829 [radarhere]
- Corrected ICNS file length in header 5845 [radarhere]
- Block tile TIFF tags when saving 5839 [radarhere]
- Added line width argument to ImageDraw polygon 5694 [radarhere]
- Do not redeclare class each time when converting to NumPy 5844 [radarhere]
- Only prevent repeated polygon pixels when drawing with transparency 5835 [radarhere]
- Fix pushes_fd method signature 5833 [hoodmane]
- Add support for pickling TrueType fonts 5826 [hugovk]
- Only prefer command line tools SDK on macOS over default MacOSX SDK 5828 [radarhere]
- Fix compilation on 64-bit Termux 5793 [landfillbaby]
- Replace 'setup.py sdist' with '-m build --sdist' 5785 [hugovk]
- Use declarative package configuration 5784 [hugovk]
- Use title for display in ImageShow 5788 [radarhere]
- Fix for PyQt6 5775 [hugovk]
- Rename master to main 5770 [hugovk]

Dependencies

- Updated winbuild libimagequant to 2.17.0 5916 [radarhere]
- Updated harfbuzz to 3.2.0 5883 [radarhere]
- Updated libimagequant to 2.17.0 5876 [radarhere]
- Updated freetype to 2.11.1 5867 [radarhere]
- Updated harfbuzz to 3.1.2 5853 [radarhere]
- Updated harfbuzz to 3.1.1 5820 [radarhere]
- Updated harfbuzz to 3.1.0 5808 [radarhere]

Documentation

- CVEs TBD 5924 [radarhere]
- Added release notes for 5919, 5920 and 5921 5922 [radarhere]
- Updated copyright year 5918 [radarhere]
- Added release notes for pillow-wheels237 5917 [radarhere]
- Added release notes for 5897 5905 [radarhere]
- Added PIL + pathlib Tutorial 5862 [kolibril13]
- Dedicate the next release to Fredrik Lundh 5885 [hugovk]
- Added release notes for 5857 5874 [radarhere]
- Improved example code 5866 [radarhere]
- Improved explanation of fromarray "mode" parameter 5849 [radarhere]
- Documentation for 5829 and 5694 5847 [radarhere]
- Updated macOS tested Pillow versions 5822 [radarhere]
- Docs: Remove docutils pin 5821 [hugovk]
- Changed URLs to https 5796 [radarhere]
- Added release notes for 5788 5792 [radarhere]
- Update expected Pillow 10 release date: 2023-07-01 5779 [hugovk]
- Document 5788: "Use title for display" 5790 [nulano]
- Improved image lifecycle documentation 5773 [radarhere]
- Docs: No security updates in 8.4.0 5767 [hugovk]

Removals

- Drop support for soon-EOL Python 3.6 5768 [hugovk]
- Remove support for FreeType 2.7 and older 5777 [hugovk]
- Removed deprecated PILLOW_VERSION, Image.show command parameter, Image._showxv and ImageFile.raise_ioerror 5776 [radarhere]

Testing

- Added sys import 5913 [radarhere]
- Do not compare properties to themselves 5907 [radarhere]
- GHA: Still use macos-latest for non-PyPy builds 5888 [radarhere]
- GHA: Use macos-10.15 to fix build 5886 [hugovk]
- GHA: Add workflow_dispatch to enable manually triggering builds 5861 [hugovk]
- Added context managers 5851 [radarhere]
- Updated libjpeg-turbo to 2.1.2 5841 [radarhere]
- GHA: Use actions/setup-python's pip cache 5840 [hugovk]
- Removed setuptools install from AppVeyor 5823 [radarhere]
- Added Fedora 35 5806 [radarhere]
- Test Python 3.10.0 final on AppVeyor 5805 [hugovk]
- Test PyPy3.8 5778 [hugovk]
- CI: Install pytest-timeout for MinGW CI 5780 [hugovk]
- Removed Fedora 33 docker job 5766 [radarhere]

8.4.0

https://pillow.readthedocs.io/en/stable/releasenotes/8.4.0.html

Changes

- Don't use bitmap glyphs when drawing text with stroker 5761 [nulano]
- Make TIFF strip size configurable 5744 [kmilos]
- Fixed Python erro

@pyup-bot pyup-bot mentioned this pull request Apr 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant