diff --git a/.appveyor.yml b/.appveyor.yml
deleted file mode 100644
index 781ad4a4b..000000000
--- a/.appveyor.yml
+++ /dev/null
@@ -1,99 +0,0 @@
-skip_commits:
- files:
- - ".github/**/*"
- - ".gitmodules"
- - "docs/**/*"
- - "wheels/**/*"
-
-version: '{build}'
-clone_folder: c:\pillow
-init:
-- ECHO %PYTHON%
-#- ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
-# Uncomment previous line to get RDP access during the build.
-
-environment:
- COVERAGE_CORE: sysmon
- EXECUTABLE: python.exe
- TEST_OPTIONS:
- DEPLOY: YES
- matrix:
- - PYTHON: C:/Python313
- ARCHITECTURE: x86
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
- - PYTHON: C:/Python39-x64
- ARCHITECTURE: AMD64
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
-
-
-install:
-- '%PYTHON%\%EXECUTABLE% --version'
-- '%PYTHON%\%EXECUTABLE% -m pip install --upgrade pip'
-- curl -fsSL -o pillow-test-images.zip https://github.com/python-pillow/test-images/archive/main.zip
-- 7z x pillow-test-images.zip -oc:\
-- xcopy /S /Y c:\test-images-main\* c:\pillow\tests\images
-- curl -fsSL -o nasm-win64.zip https://raw.githubusercontent.com/python-pillow/pillow-depends/main/nasm-2.16.03-win64.zip
-- 7z x nasm-win64.zip -oc:\
-- choco install ghostscript --version=10.4.0
-- path c:\nasm-2.16.03;C:\Program Files\gs\gs10.04.0\bin;%PATH%
-- cd c:\pillow\winbuild\
-- ps: |
- 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%
-
-build_script:
-- cd c:\pillow
-- winbuild\build\build_env.cmd
-- '%PYTHON%\%EXECUTABLE% -m pip install -v -C raqm=vendor -C fribidi=vendor .'
-- '%PYTHON%\%EXECUTABLE% selftest.py --installed'
-
-test_script:
-- cd c:\pillow
-- '%PYTHON%\%EXECUTABLE% -m pip install pytest pytest-cov pytest-timeout defusedxml ipython numpy olefile pyroma'
-- c:\"Program Files (x86)"\"Windows Kits"\10\Debuggers\x86\gflags.exe /p /enable %PYTHON%\%EXECUTABLE%
-- path %PYTHON%;%PATH%
-- .ci\test.cmd
-
-after_test:
-- curl -Os https://uploader.codecov.io/latest/windows/codecov.exe
-- .\codecov.exe --file coverage.xml --name %PYTHON% --flags AppVeyor
-
-matrix:
- fast_finish: true
-
-cache:
-- '%LOCALAPPDATA%\pip\Cache'
-
-artifacts:
-- path: pillow\*.egg
- name: egg
-- path: pillow\*.whl
- name: wheel
-
-before_deploy:
- - cd c:\pillow
- - '%PYTHON%\%EXECUTABLE% -m pip wheel -v -C raqm=vendor -C fribidi=vendor .'
- - ps: Get-ChildItem .\*.whl | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
-
-deploy:
- provider: S3
- region: us-west-2
- access_key_id: AKIAIRAXC62ZNTVQJMOQ
- secret_access_key:
- secure: Hwb6klTqtBeMgxAjRoDltiiqpuH8xbwD4UooDzBSiCWXjuFj1lyl4kHgHwTCCGqi
- bucket: pillow-nightly
- folder: win/$(APPVEYOR_BUILD_NUMBER)/
- artifact: /.*egg|wheel/
- on:
- APPVEYOR_REPO_NAME: python-pillow/Pillow
- branch: main
- deploy: YES
-
-
-# Uncomment the following lines to get RDP access after the build/test and block for
-# up to the timeout limit (~1hr)
-#
-#on_finish:
-#- ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index ba2b7d8ed..c098e32eb 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -9,7 +9,7 @@ Please send a pull request to the `main` branch. Please include [documentation](
- Fork the Pillow repository.
- Create a branch from `main`.
- Develop bug fixes, features, tests, etc.
-- Run the test suite. You can enable GitHub Actions (https://github.com/MY-USERNAME/Pillow/actions) and [AppVeyor](https://ci.appveyor.com/projects/new) on your repo to catch test failures prior to the pull request, and [Codecov](https://codecov.io/gh) to see if the changed code is covered by tests.
+- Run the test suite. You can enable GitHub Actions (https://github.com/MY-USERNAME/Pillow/actions) on your repo to catch test failures prior to the pull request, and [Codecov](https://codecov.io/gh) to see if the changed code is covered by tests.
- Create a pull request to pull the changes from your branch to the Pillow `main`.
### Guidelines
@@ -17,7 +17,7 @@ Please send a pull request to the `main` branch. Please include [documentation](
- Separate code commits from reformatting commits.
- Provide tests for any newly added code.
- Follow PEP 8.
-- When committing only documentation changes please include `[ci skip]` in the commit message to avoid running tests on AppVeyor.
+- When committing only documentation changes please include `[ci skip]` in the commit message to avoid running extra tests.
- Include [release notes](https://github.com/python-pillow/Pillow/tree/main/docs/releasenotes) as needed or appropriate with your bug fixes, feature additions and tests.
## Reporting Issues
diff --git a/.github/mergify.yml b/.github/mergify.yml
index 3c2066137..9bb089615 100644
--- a/.github/mergify.yml
+++ b/.github/mergify.yml
@@ -9,7 +9,6 @@ pull_request_rules:
- status-success=Windows Test Successful
- status-success=MinGW
- status-success=Cygwin Test Successful
- - status-success=continuous-integration/appveyor/pr
actions:
merge:
method: merge
diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml
index b76b00eaa..8faab2ef4 100644
--- a/.github/workflows/test-windows.yml
+++ b/.github/workflows/test-windows.yml
@@ -31,15 +31,20 @@ env:
jobs:
build:
- runs-on: windows-latest
+ runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
- python-version: ["pypy3.10", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
+ python-version: ["pypy3.10", "3.10", "3.11", "3.12", "3.13", "3.14"]
+ architecture: ["x64"]
+ os: ["windows-latest"]
+ include:
+ # Test the oldest Python on 32-bit
+ - { python-version: "3.9", architecture: "x86", os: "windows-2019" }
timeout-minutes: 30
- name: Python ${{ matrix.python-version }}
+ name: Python ${{ matrix.python-version }} (${{ matrix.architecture }})
steps:
- name: Checkout Pillow
@@ -67,6 +72,7 @@ jobs:
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
+ architecture: ${{ matrix.architecture }}
cache: pip
cache-dependency-path: ".github/workflows/test-windows.yml"
@@ -78,7 +84,7 @@ jobs:
python3 -m pip install --upgrade pip
- name: Install CPython dependencies
- if: "!contains(matrix.python-version, 'pypy')"
+ if: "!contains(matrix.python-version, 'pypy') && matrix.architecture != 'x86'"
run: |
python3 -m pip install PyQt6
diff --git a/MANIFEST.in b/MANIFEST.in
index af25dfd2d..48085b82e 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -20,7 +20,6 @@ graft docs
graft _custom_build
# build/src control detritus
-exclude .appveyor.yml
exclude .clang-format
exclude .coveragerc
exclude .editorconfig
diff --git a/README.md b/README.md
index 057d0acf0..1cae558ad 100644
--- a/README.md
+++ b/README.md
@@ -42,9 +42,6 @@ As of 2019, Pillow development is
-
diff --git a/RELEASING.md b/RELEASING.md
index ebdbb6406..932beb2c2 100644
--- a/RELEASING.md
+++ b/RELEASING.md
@@ -9,7 +9,7 @@ Released quarterly on January 2nd, April 1st, July 1st and October 15th.
* [ ] Open a release ticket e.g. https://github.com/python-pillow/Pillow/issues/3154
* [ ] Develop and prepare release in `main` branch.
-* [ ] Check [GitHub Actions](https://github.com/python-pillow/Pillow/actions) and [AppVeyor](https://ci.appveyor.com/project/python-pillow/Pillow) to confirm passing tests in `main` branch.
+* [ ] Check [GitHub Actions](https://github.com/python-pillow/Pillow/actions) to confirm passing tests in `main` branch.
* [ ] Check that all the wheel builds pass the tests in the [GitHub Actions "Wheels" workflow](https://github.com/python-pillow/Pillow/actions/workflows/wheels.yml) jobs by manually triggering them.
* [ ] In compliance with [PEP 440](https://peps.python.org/pep-0440/), update version identifier in `src/PIL/_version.py`
* [ ] Run pre-release check via `make release-test` in a freshly cloned repo.
@@ -38,7 +38,7 @@ Released as needed for security, installation or critical bug fixes.
git checkout -t remotes/origin/5.2.x
```
* [ ] Cherry pick individual commits from `main` branch to release branch e.g. `5.2.x`, then `git push`.
-* [ ] Check [GitHub Actions](https://github.com/python-pillow/Pillow/actions) and [AppVeyor](https://ci.appveyor.com/project/python-pillow/Pillow) to confirm passing tests in release branch e.g. `5.2.x`.
+* [ ] Check [GitHub Actions](https://github.com/python-pillow/Pillow/actions) to confirm passing tests in release branch e.g. `5.2.x`.
* [ ] In compliance with [PEP 440](https://peps.python.org/pep-0440/), update version identifier in `src/PIL/_version.py`
* [ ] Run pre-release check via `make release-test`.
* [ ] Create tag for release e.g.:
diff --git a/Tests/helper.py b/Tests/helper.py
index 126644c15..e7b0db1d6 100644
--- a/Tests/helper.py
+++ b/Tests/helper.py
@@ -320,16 +320,7 @@ def magick_command() -> list[str] | None:
return None
-def on_appveyor() -> bool:
- return "APPVEYOR" in os.environ
-
-
-def on_github_actions() -> bool:
- return "GITHUB_ACTIONS" in os.environ
-
-
def on_ci() -> bool:
- # GitHub Actions and AppVeyor have "CI"
return "CI" in os.environ
diff --git a/docs/about.rst b/docs/about.rst
index c51ddebd0..7df895b8f 100644
--- a/docs/about.rst
+++ b/docs/about.rst
@@ -6,12 +6,11 @@ Goals
The fork author's goal is to foster and support active development of PIL through:
-- Continuous integration testing via `GitHub Actions`_ and `AppVeyor`_
+- Continuous integration testing via `GitHub Actions`_
- Publicized development activity on `GitHub`_
- Regular releases to the `Python Package Index`_
.. _GitHub Actions: https://github.com/python-pillow/Pillow/actions
-.. _AppVeyor: https://ci.appveyor.com/project/Python-pillow/pillow
.. _GitHub: https://github.com/python-pillow/Pillow
.. _Python Package Index: https://pypi.org/project/pillow/
diff --git a/docs/index.rst b/docs/index.rst
index 18f5c3d13..689088d48 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -33,10 +33,6 @@ Pillow for enterprise is available via the Tidelift Subscription. `Learn more