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
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