diff --git a/.appveyor.yml b/.appveyor.yml index 6ce5200b6ea..e12987a5fa7 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -21,9 +21,9 @@ environment: - PYTHON: C:/Python312 ARCHITECTURE: x86 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022 - - PYTHON: C:/Python38-x64 + - PYTHON: C:/Python39-x64 ARCHITECTURE: AMD64 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 install: @@ -38,7 +38,7 @@ install: - path c:\nasm-2.16.03;C:\Program Files\gs\gs10.03.1\bin;%PATH% - cd c:\pillow\winbuild\ - ps: | - c:\python38\python.exe c:\pillow\winbuild\build_prepare.py -v --depends=C:\pillow-depends\ + c:\python39\python.exe c:\pillow\winbuild\build_prepare.py -v --depends=C:\pillow-depends\ c:\pillow\winbuild\build\build_dep_all.cmd $host.SetShouldExit(0) - path C:\pillow\winbuild\build\bin;%PATH% diff --git a/.ci/install.sh b/.ci/install.sh index c6e166171a4..30ff916a02e 100755 --- a/.ci/install.sh +++ b/.ci/install.sh @@ -49,7 +49,6 @@ if [[ $(uname) != CYGWIN* ]]; then # Pyroma uses non-isolated build and fails with old setuptools if [[ $GHA_PYTHON_VERSION == pypy3.9 - || $GHA_PYTHON_VERSION == 3.8 || $GHA_PYTHON_VERSION == 3.9 ]]; then # To match pyproject.toml diff --git a/.github/workflows/test-cygwin.yml b/.github/workflows/test-cygwin.yml index 97422d56916..8e282709917 100644 --- a/.github/workflows/test-cygwin.yml +++ b/.github/workflows/test-cygwin.yml @@ -35,7 +35,7 @@ jobs: strategy: fail-fast: false matrix: - python-minor-version: [8, 9] + python-minor-version: [9] timeout-minutes: 40 diff --git a/.github/workflows/test-docker.yml b/.github/workflows/test-docker.yml index 6afed74db31..79eca5edfca 100644 --- a/.github/workflows/test-docker.yml +++ b/.github/workflows/test-docker.yml @@ -50,7 +50,6 @@ jobs: fedora-39-amd64, fedora-40-amd64, gentoo, - ubuntu-20.04-focal-amd64, ubuntu-22.04-jammy-amd64, ubuntu-24.04-noble-amd64, ] diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml index ee265774b2e..5b34d6703af 100644 --- a/.github/workflows/test-windows.yml +++ b/.github/workflows/test-windows.yml @@ -35,7 +35,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["pypy3.10", "pypy3.9", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + python-version: ["pypy3.10", "pypy3.9", "3.9", "3.10", "3.11", "3.12", "3.13"] timeout-minutes: 30 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index aa5646caf44..0972459b0fb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -48,7 +48,6 @@ jobs: "3.11", "3.10", "3.9", - "3.8", ] include: - python-version: "3.11" @@ -59,13 +58,9 @@ jobs: # M1 only available for 3.10+ - os: "macos-13" python-version: "3.9" - - os: "macos-13" - python-version: "3.8" exclude: - os: "macos-14" python-version: "3.9" - - os: "macos-14" - python-version: "3.8" runs-on: ${{ matrix.os }} name: ${{ matrix.os }} Python ${{ matrix.python-version }} diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 3d6099c1cf5..4eb907bcd9f 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -41,7 +41,6 @@ jobs: python-version: - pp39 - pp310 - - cp38 - cp39 - cp310 - cp311 @@ -136,8 +135,6 @@ jobs: CIBW_MANYLINUX_PYPY_X86_64_IMAGE: ${{ matrix.manylinux }} CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux }} CIBW_PRERELEASE_PYTHONS: True - CIBW_SKIP: pp38-* - CIBW_TEST_SKIP: cp38-macosx_arm64 MACOSX_DEPLOYMENT_TARGET: ${{ matrix.macosx_deployment_target }} - uses: actions/upload-artifact@v4 @@ -208,7 +205,6 @@ jobs: CIBW_BEFORE_ALL: "{package}\\winbuild\\build\\build_dep_all.cmd" CIBW_CACHE_PATH: "C:\\cibw" CIBW_PRERELEASE_PYTHONS: True - CIBW_SKIP: pp38-* CIBW_TEST_SKIP: "*-win_arm64" CIBW_TEST_COMMAND: 'docker run --rm -v {project}:C:\pillow diff --git a/docs/installation/basic-installation.rst b/docs/installation/basic-installation.rst index 01981aa4fbe..989f72dddde 100644 --- a/docs/installation/basic-installation.rst +++ b/docs/installation/basic-installation.rst @@ -68,8 +68,8 @@ and :pypi:`olefile` for Pillow to read FPX and MIC images:: .. tab:: Windows We provide Pillow binaries for Windows compiled for the matrix of supported - Pythons in the wheel format. These include x86, x86-64 and arm64 versions - (with the exception of Python 3.8 on arm64). These binaries include support + Pythons in the wheel format. These include x86, x86-64 and arm64 versions. + These binaries include support for all optional libraries except libimagequant and libxcb. Raqm support requires FriBiDi to be installed separately:: diff --git a/docs/installation/newer-versions.csv b/docs/installation/newer-versions.csv index e21caf52071..ff545511573 100644 --- a/docs/installation/newer-versions.csv +++ b/docs/installation/newer-versions.csv @@ -1,8 +1,9 @@ Python,3.12,3.11,3.10,3.9,3.8,3.7,3.6,3.5 +Pillow >= 11,Yes,Yes,Yes,Yes,,,, Pillow >= 10.1,Yes,Yes,Yes,Yes,Yes,,, Pillow 10.0,,Yes,Yes,Yes,Yes,,, Pillow 9.3 - 9.5,,Yes,Yes,Yes,Yes,Yes,, Pillow 9.0 - 9.2,,,Yes,Yes,Yes,Yes,, Pillow 8.3.2 - 8.4,,,Yes,Yes,Yes,Yes,Yes, Pillow 8.0 - 8.3.1,,,,Yes,Yes,Yes,Yes, -Pillow 7.0 - 7.2,,,,,Yes,Yes,Yes,Yes +Pillow 7.0 - 7.2,,,,,Yes,Yes,Yes,Yes diff --git a/docs/installation/platform-support.rst b/docs/installation/platform-support.rst index ed25d33a6f3..439a6ed6b25 100644 --- a/docs/installation/platform-support.rst +++ b/docs/installation/platform-support.rst @@ -37,14 +37,12 @@ These platforms are built and tested for every change. +----------------------------------+----------------------------+---------------------+ | Gentoo | 3.9 | x86-64 | +----------------------------------+----------------------------+---------------------+ -| macOS 13 Ventura | 3.8, 3.9 | x86-64 | +| macOS 13 Ventura | 3.9 | x86-64 | +----------------------------------+----------------------------+---------------------+ | macOS 14 Sonoma | 3.10, 3.11, 3.12, 3.13, | arm64 | | | PyPy3 | | +----------------------------------+----------------------------+---------------------+ -| Ubuntu Linux 20.04 LTS (Focal) | 3.8 | x86-64 | -+----------------------------------+----------------------------+---------------------+ -| Ubuntu Linux 22.04 LTS (Jammy) | 3.8, 3.9, 3.10, 3.11, | x86-64 | +| Ubuntu Linux 22.04 LTS (Jammy) | 3.9, 3.10, 3.11, | x86-64 | | | 3.12, 3.13, PyPy3 | | | +----------------------------+---------------------+ | | 3.10 | arm64v8 | @@ -52,16 +50,16 @@ These platforms are built and tested for every change. | Ubuntu Linux 24.04 LTS (Noble) | 3.12 | x86-64, ppc64le, | | | | s390x | +----------------------------------+----------------------------+---------------------+ -| Windows Server 2016 | 3.8 | x86-64 | +| Windows Server 2016 | 3.9 | x86-64 | +----------------------------------+----------------------------+---------------------+ -| Windows Server 2022 | 3.8, 3.9, 3.10, 3.11, | x86-64 | +| Windows Server 2022 | 3.9, 3.10, 3.11, | x86-64 | | | 3.12, 3.13, PyPy3 | | | +----------------------------+---------------------+ | | 3.12 | x86 | | +----------------------------+---------------------+ | | 3.9 (MinGW) | x86-64 | | +----------------------------+---------------------+ -| | 3.8, 3.9 (Cygwin) | x86-64 | +| | 3.9 (Cygwin) | x86-64 | +----------------------------------+----------------------------+---------------------+ diff --git a/docs/releasenotes/11.0.0.rst b/docs/releasenotes/11.0.0.rst index bde791b1e4f..e16304e61b6 100644 --- a/docs/releasenotes/11.0.0.rst +++ b/docs/releasenotes/11.0.0.rst @@ -17,6 +17,12 @@ TODO Backwards Incompatible Changes ============================== +Python 3.8 +^^^^^^^^^^ + +Pillow has dropped support for Python 3.8, +which reached end-of-life in October 2024. + PSFile ^^^^^^ diff --git a/pyproject.toml b/pyproject.toml index 20e87ad327d..514f1a8151a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,12 +16,11 @@ keywords = [ ] license = {text = "HPND"} authors = [{name = "Jeffrey A. Clark", email = "aclark@aclark.net"}] -requires-python = ">=3.8" +requires-python = ">=3.9" classifiers = [ "Development Status :: 6 - Mature", "License :: OSI Approved :: Historical Permission Notice and Disclaimer (HPND)", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", @@ -136,7 +135,7 @@ addopts = "-ra --color=yes" testpaths = ["Tests"] [tool.mypy] -python_version = "3.8" +python_version = "3.9" pretty = true disallow_any_generics = true enable_error_code = "ignore-without-code" diff --git a/tox.ini b/tox.ini index d225a310697..39d3cf34b68 100644 --- a/tox.ini +++ b/tox.ini @@ -3,7 +3,7 @@ requires = tox>=4.2 env_list = lint - py{py3, 312, 311, 310, 39, 38} + py{py3, 312, 311, 310, 39} [testenv] deps =