Skip to content

Conversation

@hugovk
Copy link
Member

@hugovk hugovk commented Jul 30, 2025

Python 3.9 reaches end of life in October 2025:

Pillow 12.0.0 is planned for 2025-10-15 and will drop Python 3.9:

Notes:

  • Only Python 3.9 is available for Cygwin. I don't see any news of upgrades in recent months on the mailing list. This means we need to drop the Cygwin testing from the CI. I've not removed Python/C/test code for Cygwin, we can decide separately if/when to remove that.

  • We'll have to decide whether to drop or upgrade the Docker images for Amazon 2 (EOL 2026-06-30), Amazon 2023 (2029-06-30) and CentOS Stream 9 (2027-05-31) from Python 3.9 to something newer. We test CentOS Stream 10 (2030-01-01) with Python 3.12.

  • Qt typing refactoring: we can use a | b instead of Union[a, b] with Python 3.10. But mypy didn't like that for the Qt declarations, so we can instead use the imported ones with # type: ignore[assignment] and remove type: ignore[operator] elsewhere.

@hugovk hugovk added this to the 12.0.0 milestone Jul 30, 2025
@hugovk hugovk added the Removal Removal of a feature, usually done in major releases label Jul 30, 2025
@hugovk
Copy link
Member Author

hugovk commented Jul 31, 2025

  • We'll have to decide whether to drop or upgrade the Docker images for Amazon 2 (EOL 2026-06-30), Amazon 2023 (2029-06-30) and CentOS Stream 9 (2027-05-31) from Python 3.9 to something newer. We test CentOS Stream 10 (2030-01-01) with Python 3.12.

Upgraded in python-pillow/docker-images#244 🚀

@hugovk hugovk marked this pull request as ready for review July 31, 2025 08:57
# M1 only available for 3.10+
- { os: "macos-13", python-version: "3.9" }
exclude:
- { os: "macos-latest", python-version: "3.9" }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to be clear, so you'd like to drop testing for Intel macOS with each PR? We're still generating wheels for the platform, so we should still pick up any problems sooner or later.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GitHub Actions will be soon dropping macos-13 aka Intel:

The macOS 13 hosted runner image is closing down, following our N-1 OS support policy. This process will begin September 1, 2025, and the image will be fully retired on November 14, 2025. We recommend updating workflows to use macos-14 or macos-15.

https://github.blog/changelog/2025-07-11-upcoming-changes-to-macos-hosted-runners-macos-latest-migration-and-xcode-support-policy-updates/#macos-13-is-closing-down

So we'll need to drop it at some point. But I've pushed a commit to keep it for now (with 3.10), finding problems sooner is better than later :)


At some point, we'll have to decide how long we want to support Intel, and this doesn't necessarily need to be as long as Apple does.

At WWDC 2025 on June 9, 2025, Apple announced that macOS Tahoe would be the last release of macOS that would support Intel Macs, with macOS 27 in 2026 being exclusive to Macs with Apple silicon.

https://en.wikipedia.org/wiki/Mac_transition_to_Apple_silicon#2025

macOS 26 Tahoe will be released later this year and will likely be supported for three years, until late 2028.

We've generally followed upstream OS support timelines, but test and CI availability also influences ease of maintenance and support. Especially for building wheels. Perhaps we can test via emulation, or have best effort without main CI/wheels so people can self-build, or drop it. Let's see.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've created #9212

@hugovk hugovk enabled auto-merge (squash) August 2, 2025 10:26
@hugovk hugovk merged commit 2ab301d into python-pillow:main Aug 2, 2025
80 of 82 checks passed
@hugovk hugovk deleted the rm-3.9 branch August 2, 2025 12:02
@radarhere radarhere mentioned this pull request Oct 2, 2025
R-YaTian added a commit to R-YaTian/Pillow that referenced this pull request Oct 16, 2025
luketainton pushed a commit to luketainton/repos_webexmemebot that referenced this pull request Jan 5, 2026
This PR contains the following updates:

| Package | Change | Age | Confidence |
|---|---|---|---|
| [pillow](https://github.com/python-pillow/Pillow) ([changelog](https://github.com/python-pillow/Pillow/releases)) | `<12.0.0,>=11.0.0` -> `<12.0.1,>=12.0.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/pillow/12.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pillow/11.3.0/12.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>python-pillow/Pillow (pillow)</summary>

### [`v12.0.0`](https://github.com/python-pillow/Pillow/releases/tag/12.0.0)

[Compare Source](python-pillow/Pillow@11.3.0...12.0.0)

<https://pillow.readthedocs.io/en/stable/releasenotes/12.0.0.html>

#### Removals

- Remove support for FreeType <= 2.9.0 [#&#8203;9159](python-pillow/Pillow#9159) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Drop support for Python 3.9 [#&#8203;9119](python-pillow/Pillow#9119) \[[@&#8203;hugovk](https://github.com/hugovk)]
- Remove deprecations for Pillow 12.0.0 [#&#8203;9053](python-pillow/Pillow#9053) \[[@&#8203;radarhere](https://github.com/radarhere)]

#### Deprecations

- Deprecate Image.\_show [#&#8203;9186](python-pillow/Pillow#9186) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Deprecate ImageCmsProfile product\_name and product\_info [#&#8203;8995](python-pillow/Pillow#8995) \[[@&#8203;lukegb](https://github.com/lukegb)]

#### Documentation

- ImagingHistogramInstance can use two bands [#&#8203;9251](python-pillow/Pillow#9251) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Update 12.0.0 release notes [#&#8203;9247](python-pillow/Pillow#9247) \[[@&#8203;hugovk](https://github.com/hugovk)]
- Added ImageDraw alpha channel examples [#&#8203;9201](python-pillow/Pillow#9201) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Update Python version [#&#8203;9230](python-pillow/Pillow#9230) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Updated macOS tested Pillow versions [#&#8203;9209](python-pillow/Pillow#9209) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Add GitHub profile link to release notes [#&#8203;9197](python-pillow/Pillow#9197) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Split versionadded info [#&#8203;9190](python-pillow/Pillow#9190) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Document ImageFile.MAXBLOCK [#&#8203;9163](python-pillow/Pillow#9163) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Updated macOS version in CI targets [#&#8203;9157](python-pillow/Pillow#9157) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Fix typos [#&#8203;9135](python-pillow/Pillow#9135) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Added "Colors" to concepts [#&#8203;9067](python-pillow/Pillow#9067) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Update macOS tested Pillow versions [#&#8203;9068](python-pillow/Pillow#9068) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Thanks, folks! [#&#8203;9056](python-pillow/Pillow#9056) \[[@&#8203;aclark4life](https://github.com/aclark4life)]
- Setup nit: "fork" should be lowercased [#&#8203;9055](python-pillow/Pillow#9055) \[[@&#8203;aclark4life](https://github.com/aclark4life)]

#### Dependencies

- Update dependency cibuildwheel to v3.2.1 [#&#8203;9246](python-pillow/Pillow#9246) \[@&#8203;[renovate\[bot\]](https://github.com/apps/renovate)]
- \[pre-commit.ci] pre-commit autoupdate [#&#8203;9233](python-pillow/Pillow#9233) \[@&#8203;[pre-commit-ci\[bot\]](https://github.com/apps/pre-commit-ci)]
- Update harfbuzz to 12.1.0 [#&#8203;9218](python-pillow/Pillow#9218) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Update libtiff to 4.7.1 [#&#8203;9222](python-pillow/Pillow#9222) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Update FreeType to 2.14.1 on macOS and Linux wheels [#&#8203;9217](python-pillow/Pillow#9217) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Update dependency cibuildwheel to v3.2.0 [#&#8203;9219](python-pillow/Pillow#9219) \[@&#8203;[renovate\[bot\]](https://github.com/apps/renovate)]
- Update Ghostscript to 10.6.0 [#&#8203;9202](python-pillow/Pillow#9202) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Update openjpeg to 2.5.4 [#&#8203;9215](python-pillow/Pillow#9215) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Update harfbuzz to 11.5.0 [#&#8203;9203](python-pillow/Pillow#9203) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Update dependency mypy to v1.18.2 [#&#8203;9213](python-pillow/Pillow#9213) \[@&#8203;[renovate\[bot\]](https://github.com/apps/renovate)]
- Update dependency mypy to v1.18.1 [#&#8203;9207](python-pillow/Pillow#9207) \[@&#8203;[renovate\[bot\]](https://github.com/apps/renovate)]
- Update github-actions [#&#8203;9194](python-pillow/Pillow#9194) \[@&#8203;[renovate\[bot\]](https://github.com/apps/renovate)]
- Updated harfbuzz to 11.4.5 [#&#8203;9150](python-pillow/Pillow#9150) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Update zlib-ng to 2.2.5 [#&#8203;9140](python-pillow/Pillow#9140) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Update raqm to 0.10.3 [#&#8203;9137](python-pillow/Pillow#9137) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Update libjpeg-turbo to 3.1.2 [#&#8203;9188](python-pillow/Pillow#9188) \[[@&#8203;radarhere](https://github.com/radarhere)]
- \[pre-commit.ci] pre-commit autoupdate [#&#8203;9180](python-pillow/Pillow#9180) \[@&#8203;[pre-commit-ci\[bot\]](https://github.com/apps/pre-commit-ci)]
- Update dependency cibuildwheel to v3.1.4 [#&#8203;9164](python-pillow/Pillow#9164) \[@&#8203;[renovate\[bot\]](https://github.com/apps/renovate)]
- Update actions/checkout action to v5 [#&#8203;9156](python-pillow/Pillow#9156) \[@&#8203;[renovate\[bot\]](https://github.com/apps/renovate)]
- Update actions/download-artifact action to v5 [#&#8203;9141](python-pillow/Pillow#9141) \[@&#8203;[renovate\[bot\]](https://github.com/apps/renovate)]
- Updated harfbuzz to 11.3.3 [#&#8203;9103](python-pillow/Pillow#9103) \[[@&#8203;radarhere](https://github.com/radarhere)]
- \[pre-commit.ci] pre-commit autoupdate [#&#8203;9131](python-pillow/Pillow#9131) \[@&#8203;[pre-commit-ci\[bot\]](https://github.com/apps/pre-commit-ci)]
- Updated libimagequant to 4.4.0 [#&#8203;9074](python-pillow/Pillow#9074) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Update dependency mypy to v1.17.1 [#&#8203;9130](python-pillow/Pillow#9130) \[@&#8203;[renovate\[bot\]](https://github.com/apps/renovate)]
- Update dependency cibuildwheel to v3.1.3 [#&#8203;9129](python-pillow/Pillow#9129) \[@&#8203;[renovate\[bot\]](https://github.com/apps/renovate)]
- Update dependency cibuildwheel to v3.1.2 [#&#8203;9118](python-pillow/Pillow#9118) \[@&#8203;[renovate\[bot\]](https://github.com/apps/renovate)]
- Updated libpng to 1.6.50 [#&#8203;9058](python-pillow/Pillow#9058) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Update cygwin/cygwin-install-action action to v6 [#&#8203;9108](python-pillow/Pillow#9108) \[@&#8203;[renovate\[bot\]](https://github.com/apps/renovate)]
- Update dependency mypy to v1.17.0 [#&#8203;9092](python-pillow/Pillow#9092) \[@&#8203;[renovate\[bot\]](https://github.com/apps/renovate)]
- Updated libwebp to 1.6.0 [#&#8203;9082](python-pillow/Pillow#9082) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Update dependency cibuildwheel to v3.0.1 [#&#8203;9075](python-pillow/Pillow#9075) \[@&#8203;[renovate\[bot\]](https://github.com/apps/renovate)]
- \[pre-commit.ci] pre-commit autoupdate [#&#8203;9073](python-pillow/Pillow#9073) \[@&#8203;[pre-commit-ci\[bot\]](https://github.com/apps/pre-commit-ci)]

#### Testing

- Check return types [#&#8203;9045](python-pillow/Pillow#9045) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Upgrade from macos-13 [#&#8203;9212](python-pillow/Pillow#9212) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Wheels CI: Check number of expected dists [#&#8203;9239](python-pillow/Pillow#9239) \[[@&#8203;hugovk](https://github.com/hugovk)]
- Assert image type [#&#8203;8845](python-pillow/Pillow#8845) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Test GD transparency [#&#8203;9196](python-pillow/Pillow#9196) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Test mode when saving PPM images [#&#8203;9195](python-pillow/Pillow#9195) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Test unsupported BMP bitfields layout [#&#8203;9193](python-pillow/Pillow#9193) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Update Ghostscript to 10.6.0 [#&#8203;9202](python-pillow/Pillow#9202) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Use monkeypatch [#&#8203;9192](python-pillow/Pillow#9192) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Always check XMLPacket value [#&#8203;9113](python-pillow/Pillow#9113) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Rename variable to not shadow import [#&#8203;9124](python-pillow/Pillow#9124) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Removed unused code [#&#8203;9182](python-pillow/Pillow#9182) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Add has\_feature\_version helper [#&#8203;9172](python-pillow/Pillow#9172) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Replace print with assert [#&#8203;9171](python-pillow/Pillow#9171) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Add Debian 13 Trixie [#&#8203;9147](python-pillow/Pillow#9147) \[[@&#8203;hugovk](https://github.com/hugovk)]
- Do not import from Tests directory in checks [#&#8203;9143](python-pillow/Pillow#9143) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Improve features test coverage [#&#8203;9077](python-pillow/Pillow#9077) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Remove WebP feature handling [#&#8203;9096](python-pillow/Pillow#9096) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Update for pyroma 5.0 [#&#8203;9093](python-pillow/Pillow#9093) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Improve WmfImagePlugin test coverage [#&#8203;9090](python-pillow/Pillow#9090) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Improve DdsImagePlugin test coverage [#&#8203;9091](python-pillow/Pillow#9091) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Improve ImageMath test coverage [#&#8203;9087](python-pillow/Pillow#9087) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Fix unclosed file warning [#&#8203;9065](python-pillow/Pillow#9065) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Pyroma now supports PEP 639 [#&#8203;9064](python-pillow/Pillow#9064) \[[@&#8203;radarhere](https://github.com/radarhere)]

#### Type hints

- Install arro3 dependencies when type checking [#&#8203;9254](python-pillow/Pillow#9254) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Check return types [#&#8203;9045](python-pillow/Pillow#9045) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Assert image type [#&#8203;8845](python-pillow/Pillow#8845) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Move imports into TYPE\_CHECKING [#&#8203;9123](python-pillow/Pillow#9123) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Remove support for NumPy 1.20 when type checking [#&#8203;9125](python-pillow/Pillow#9125) \[[@&#8203;radarhere](https://github.com/radarhere)]

#### Other changes

- Use macos-14 for iOS arm64 simulator [#&#8203;9258](python-pillow/Pillow#9258) \[[@&#8203;hugovk](https://github.com/hugovk)]
- Use enums for Modes and RawModes in C [#&#8203;9256](python-pillow/Pillow#9256) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Add ImageText [#&#8203;9098](python-pillow/Pillow#9098) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Shift bits before making value negative [#&#8203;9255](python-pillow/Pillow#9255) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Support saving variable length rational TIFF tags by default [#&#8203;9241](python-pillow/Pillow#9241) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Added four private SGI TIFF tags [#&#8203;9245](python-pillow/Pillow#9245) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Band names for arrow exported images [#&#8203;9099](python-pillow/Pillow#9099) \[[@&#8203;wiredfool](https://github.com/wiredfool)]
- Use macos-latest for iOS arm64 simulator [#&#8203;9250](python-pillow/Pillow#9250) \[[@&#8203;radarhere](https://github.com/radarhere)]
- If pasting an image onto itself at a lower position, copy from bottom [#&#8203;8882](python-pillow/Pillow#8882) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Removed unused access for I;32L and I;32B [#&#8203;9238](python-pillow/Pillow#9238) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Corrected scientific-python-nightly-wheels pattern [#&#8203;9252](python-pillow/Pillow#9252) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Run sdist when scheduled, but do not upload to scientific-python-nightly-wheels index [#&#8203;9248](python-pillow/Pillow#9248) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Removed shebang lines and executable flags [#&#8203;9179](python-pillow/Pillow#9179) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Remove Pillow version from PDF comment [#&#8203;9176](python-pillow/Pillow#9176) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Support saving variable length rational TIFF tags [#&#8203;9111](python-pillow/Pillow#9111) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Build Python 3.14 on macOS 10.15 [#&#8203;9234](python-pillow/Pillow#9234) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Test largest CUR cursor [#&#8203;9191](python-pillow/Pillow#9191) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Do not unnecessarily update FLI \_\_offset [#&#8203;9184](python-pillow/Pillow#9184) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Fill alpha channel when quantizing RGB images [#&#8203;9133](python-pillow/Pillow#9133) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Allow RGBA palettes to work with ImageOps.expand() [#&#8203;9138](python-pillow/Pillow#9138) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Fixed loading rotated PCD images [#&#8203;9177](python-pillow/Pillow#9177) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Cast before shifting bits [#&#8203;9236](python-pillow/Pillow#9236) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Use \_ensure\_mutable() [#&#8203;9200](python-pillow/Pillow#9200) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Seek past BeginBinary data when parsing EPS metadata [#&#8203;9211](python-pillow/Pillow#9211) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Do not allow negative offset with memory mapping [#&#8203;9235](python-pillow/Pillow#9235) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Clear C image when MPO frame image size changes [#&#8203;9208](python-pillow/Pillow#9208) \[[@&#8203;radarhere](https://github.com/radarhere)]
- When converting RGBA to PA, use RGB to P quantization [#&#8203;9153](python-pillow/Pillow#9153) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Remove use of sudo from libavif and raqm install scripts [#&#8203;9231](python-pillow/Pillow#9231) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Load image palette into Python after converting to PA [#&#8203;9152](python-pillow/Pillow#9152) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Check all reserved bytes in FLI header [#&#8203;9183](python-pillow/Pillow#9183) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Limit length of read operation in ImageFont.\_load\_pilfont\_data() [#&#8203;9181](python-pillow/Pillow#9181) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Python 3.9 wheels are no longer needed [#&#8203;9214](python-pillow/Pillow#9214) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Remove unused Image \_expand() [#&#8203;9227](python-pillow/Pillow#9227) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Updated FreeType to 2.14.1 on Windows [#&#8203;9206](python-pillow/Pillow#9206) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Only deprecate fromarray mode for changing data types [#&#8203;9063](python-pillow/Pillow#9063) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Fix reading RGB and CMYK IPTC images [#&#8203;9088](python-pillow/Pillow#9088) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Install zstd for libtiff on Linux wheels [#&#8203;9097](python-pillow/Pillow#9097) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Improve WalImageFile test coverage [#&#8203;9189](python-pillow/Pillow#9189) \[[@&#8203;radarhere](https://github.com/radarhere)]
- ImageMorph operations must have length 1 [#&#8203;9102](python-pillow/Pillow#9102) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Set correct size for rotated PCD images after opening [#&#8203;9086](python-pillow/Pillow#9086) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Simplify check for GBR width and height [#&#8203;9089](python-pillow/Pillow#9089) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Make in parallel when building libjpeg-turbo and openjpeg for macOS and Linux wheels [#&#8203;9144](python-pillow/Pillow#9144) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Fix ZeroDivisionError in ImageStat [#&#8203;9105](python-pillow/Pillow#9105) \[[@&#8203;radarhere](https://github.com/radarhere)]
- When deleting EXIF IFD tag, delete IFD data [#&#8203;9083](python-pillow/Pillow#9083) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Allow alpha\_composite to use LA images [#&#8203;9066](python-pillow/Pillow#9066) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Improve \_accept length check [#&#8203;9170](python-pillow/Pillow#9170) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Do not set core to DeferredError [#&#8203;9166](python-pillow/Pillow#9166) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Use macos-14 for iOS arm64 simulator [#&#8203;9161](python-pillow/Pillow#9161) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Make in parallel when building brotli and libavif for macOS and Linux wheels [#&#8203;9142](python-pillow/Pillow#9142) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Use Python 3.14 for gcc problem matching [#&#8203;9134](python-pillow/Pillow#9134) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Add libavif support for iOS [#&#8203;9117](python-pillow/Pillow#9117) \[[@&#8203;freakboy3742](https://github.com/freakboy3742)]
- Restore pyroma test for iOS [#&#8203;9116](python-pillow/Pillow#9116) \[[@&#8203;freakboy3742](https://github.com/freakboy3742)]
- Use correct bands for two band histograms [#&#8203;9054](python-pillow/Pillow#9054) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Add support for Python 3.14 [#&#8203;9120](python-pillow/Pillow#9120) \[[@&#8203;hugovk](https://github.com/hugovk)]
- Drop support for PyPy3.10 [#&#8203;9112](python-pillow/Pillow#9112) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Add parallel compile from pybind11 [#&#8203;8990](python-pillow/Pillow#8990) \[[@&#8203;wiredfool](https://github.com/wiredfool)]
- Remove unused \_save\_cjpeg [#&#8203;9084](python-pillow/Pillow#9084) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Ensure dynamic libjpeg libraries are not linked [#&#8203;9081](python-pillow/Pillow#9081) \[[@&#8203;freakboy3742](https://github.com/freakboy3742)]
- Remove reference to libtiff 3.x [#&#8203;9072](python-pillow/Pillow#9072) \[[@&#8203;radarhere](https://github.com/radarhere)]
- Restored manylinux2014 wheels [#&#8203;9059](python-pillow/Pillow#9059) \[[@&#8203;radarhere](https://github.com/radarhere)]

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNDkuMiIsInVwZGF0ZWRJblZlciI6IjQxLjE0OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJ0eXBlL2RlcGVuZGVuY2llcyJdfQ==-->

Reviewed-on: https://git.tainton.uk/repos/webexmemebot/pulls/519
Co-authored-by: renovate[bot] <renovate-bot@git.tainton.uk>
Co-committed-by: renovate[bot] <renovate-bot@git.tainton.uk>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Removal Removal of a feature, usually done in major releases

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants