Skip to content

Commit e79b298

Browse files
committed
Merge branch 'main' into mozjpeg
2 parents 30c4ad4 + 4f7510b commit e79b298

File tree

20 files changed

+119
-244
lines changed

20 files changed

+119
-244
lines changed

.appveyor.yml

Lines changed: 0 additions & 99 deletions
This file was deleted.

.github/CONTRIBUTING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ Please send a pull request to the `main` branch. Please include [documentation](
99
- Fork the Pillow repository.
1010
- Create a branch from `main`.
1111
- Develop bug fixes, features, tests, etc.
12-
- 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.
12+
- 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.
1313
- Create a pull request to pull the changes from your branch to the Pillow `main`.
1414

1515
### Guidelines
1616

1717
- Separate code commits from reformatting commits.
1818
- Provide tests for any newly added code.
1919
- Follow PEP 8.
20-
- When committing only documentation changes please include `[ci skip]` in the commit message to avoid running tests on AppVeyor.
20+
- When committing only documentation changes please include `[ci skip]` in the commit message to avoid running extra tests.
2121
- 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.
2222

2323
## Reporting Issues

.github/mergify.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ pull_request_rules:
99
- status-success=Windows Test Successful
1010
- status-success=MinGW
1111
- status-success=Cygwin Test Successful
12-
- status-success=continuous-integration/appveyor/pr
1312
actions:
1413
merge:
1514
method: merge

.github/workflows/test-windows.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,20 @@ env:
3131

3232
jobs:
3333
build:
34-
runs-on: windows-latest
34+
runs-on: ${{ matrix.os }}
3535
strategy:
3636
fail-fast: false
3737
matrix:
38-
python-version: ["pypy3.10", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
38+
python-version: ["pypy3.10", "3.10", "3.11", "3.12", "3.13", "3.14"]
39+
architecture: ["x64"]
40+
os: ["windows-latest"]
41+
include:
42+
# Test the oldest Python on 32-bit
43+
- { python-version: "3.9", architecture: "x86", os: "windows-2019" }
3944

4045
timeout-minutes: 30
4146

42-
name: Python ${{ matrix.python-version }}
47+
name: Python ${{ matrix.python-version }} (${{ matrix.architecture }})
4348

4449
steps:
4550
- name: Checkout Pillow
@@ -67,6 +72,7 @@ jobs:
6772
with:
6873
python-version: ${{ matrix.python-version }}
6974
allow-prereleases: true
75+
architecture: ${{ matrix.architecture }}
7076
cache: pip
7177
cache-dependency-path: ".github/workflows/test-windows.yml"
7278

@@ -78,7 +84,7 @@ jobs:
7884
python3 -m pip install --upgrade pip
7985
8086
- name: Install CPython dependencies
81-
if: "!contains(matrix.python-version, 'pypy')"
87+
if: "!contains(matrix.python-version, 'pypy') && matrix.architecture != 'x86'"
8288
run: |
8389
python3 -m pip install PyQt6
8490

.github/workflows/wheels.yml

Lines changed: 15 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -42,62 +42,7 @@ env:
4242
FORCE_COLOR: 1
4343

4444
jobs:
45-
build-1-QEMU-emulated-wheels:
46-
if: github.event_name != 'schedule'
47-
name: aarch64 ${{ matrix.python-version }} ${{ matrix.spec }}
48-
runs-on: ubuntu-latest
49-
strategy:
50-
fail-fast: false
51-
matrix:
52-
python-version:
53-
- pp310
54-
- cp3{9,10,11}
55-
- cp3{12,13}
56-
spec:
57-
- manylinux2014
58-
- manylinux_2_28
59-
- musllinux
60-
exclude:
61-
- { python-version: pp310, spec: musllinux }
62-
63-
steps:
64-
- uses: actions/checkout@v4
65-
with:
66-
persist-credentials: false
67-
submodules: true
68-
69-
- uses: actions/setup-python@v5
70-
with:
71-
python-version: "3.x"
72-
73-
# https://github.com/docker/setup-qemu-action
74-
- name: Set up QEMU
75-
uses: docker/setup-qemu-action@v3
76-
77-
- name: Install cibuildwheel
78-
run: |
79-
python3 -m pip install -r .ci/requirements-cibw.txt
80-
81-
- name: Build wheels
82-
run: |
83-
python3 -m cibuildwheel --output-dir wheelhouse
84-
env:
85-
# Build only the currently selected Linux architecture (so we can
86-
# parallelise for speed).
87-
CIBW_ARCHS: "aarch64"
88-
# Likewise, select only one Python version per job to speed this up.
89-
CIBW_BUILD: "${{ matrix.python-version }}-${{ matrix.spec == 'musllinux' && 'musllinux' || 'manylinux' }}*"
90-
CIBW_ENABLE: cpython-prerelease
91-
# Extra options for manylinux.
92-
CIBW_MANYLINUX_AARCH64_IMAGE: ${{ matrix.spec }}
93-
CIBW_MANYLINUX_PYPY_AARCH64_IMAGE: ${{ matrix.spec }}
94-
95-
- uses: actions/upload-artifact@v4
96-
with:
97-
name: dist-qemu-${{ matrix.python-version }}-${{ matrix.spec }}
98-
path: ./wheelhouse/*.whl
99-
100-
build-2-native-wheels:
45+
build-native-wheels:
10146
if: github.event_name != 'schedule' || github.repository_owner == 'python-pillow'
10247
name: ${{ matrix.name }}
10348
runs-on: ${{ matrix.os }}
@@ -132,6 +77,14 @@ jobs:
13277
cibw_arch: x86_64
13378
build: "*manylinux*"
13479
manylinux: "manylinux_2_28"
80+
- name: "manylinux2014 and musllinux aarch64"
81+
os: ubuntu-24.04-arm
82+
cibw_arch: aarch64
83+
- name: "manylinux_2_28 aarch64"
84+
os: ubuntu-24.04-arm
85+
cibw_arch: aarch64
86+
build: "*manylinux*"
87+
manylinux: "manylinux_2_28"
13588
steps:
13689
- uses: actions/checkout@v4
13790
with:
@@ -152,7 +105,9 @@ jobs:
152105
env:
153106
CIBW_ARCHS: ${{ matrix.cibw_arch }}
154107
CIBW_BUILD: ${{ matrix.build }}
155-
CIBW_ENABLE: cpython-prerelease cpython-freethreading
108+
CIBW_ENABLE: cpython-prerelease cpython-freethreading pypy
109+
CIBW_MANYLINUX_AARCH64_IMAGE: ${{ matrix.manylinux }}
110+
CIBW_MANYLINUX_PYPY_AARCH64_IMAGE: ${{ matrix.manylinux }}
156111
CIBW_MANYLINUX_PYPY_X86_64_IMAGE: ${{ matrix.manylinux }}
157112
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux }}
158113
CIBW_SKIP: pp39-*
@@ -229,7 +184,7 @@ jobs:
229184
CIBW_ARCHS: ${{ matrix.cibw_arch }}
230185
CIBW_BEFORE_ALL: "{package}\\winbuild\\build\\build_dep_all.cmd"
231186
CIBW_CACHE_PATH: "C:\\cibw"
232-
CIBW_ENABLE: cpython-prerelease cpython-freethreading
187+
CIBW_ENABLE: cpython-prerelease cpython-freethreading pypy
233188
CIBW_SKIP: pp39-*
234189
CIBW_TEST_SKIP: "*-win_arm64"
235190
CIBW_TEST_COMMAND: 'docker run --rm
@@ -275,7 +230,7 @@ jobs:
275230

276231
scientific-python-nightly-wheels-publish:
277232
if: github.repository_owner == 'python-pillow' && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch')
278-
needs: [build-2-native-wheels, windows]
233+
needs: [build-native-wheels, windows]
279234
runs-on: ubuntu-latest
280235
name: Upload wheels to scientific-python-nightly-wheels
281236
steps:
@@ -292,7 +247,7 @@ jobs:
292247

293248
pypi-publish:
294249
if: github.repository_owner == 'python-pillow' && github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
295-
needs: [build-1-QEMU-emulated-wheels, build-2-native-wheels, windows, sdist]
250+
needs: [build-native-wheels, windows, sdist]
296251
runs-on: ubuntu-latest
297252
name: Upload release to PyPI
298253
environment:

MANIFEST.in

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ graft docs
2020
graft _custom_build
2121

2222
# build/src control detritus
23-
exclude .appveyor.yml
2423
exclude .clang-format
2524
exclude .coveragerc
2625
exclude .editorconfig

README.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,6 @@ As of 2019, Pillow development is
4242
<a href="https://github.com/python-pillow/Pillow/actions/workflows/test-docker.yml"><img
4343
alt="GitHub Actions build status (Test Docker)"
4444
src="https://github.com/python-pillow/Pillow/workflows/Test%20Docker/badge.svg"></a>
45-
<a href="https://ci.appveyor.com/project/python-pillow/Pillow"><img
46-
alt="AppVeyor CI build status (Windows)"
47-
src="https://img.shields.io/appveyor/build/python-pillow/Pillow/main.svg?label=Windows%20build"></a>
4845
<a href="https://github.com/python-pillow/Pillow/actions/workflows/wheels.yml"><img
4946
alt="GitHub Actions build status (Wheels)"
5047
src="https://github.com/python-pillow/Pillow/workflows/Wheels/badge.svg"></a>

RELEASING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Released quarterly on January 2nd, April 1st, July 1st and October 15th.
99

1010
* [ ] Open a release ticket e.g. https://github.com/python-pillow/Pillow/issues/3154
1111
* [ ] Develop and prepare release in `main` branch.
12-
* [ ] 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.
12+
* [ ] Check [GitHub Actions](https://github.com/python-pillow/Pillow/actions) to confirm passing tests in `main` branch.
1313
* [ ] 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.
1414
* [ ] In compliance with [PEP 440](https://peps.python.org/pep-0440/), update version identifier in `src/PIL/_version.py`
1515
* [ ] 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.
3838
git checkout -t remotes/origin/5.2.x
3939
```
4040
* [ ] Cherry pick individual commits from `main` branch to release branch e.g. `5.2.x`, then `git push`.
41-
* [ ] 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`.
41+
* [ ] Check [GitHub Actions](https://github.com/python-pillow/Pillow/actions) to confirm passing tests in release branch e.g. `5.2.x`.
4242
* [ ] In compliance with [PEP 440](https://peps.python.org/pep-0440/), update version identifier in `src/PIL/_version.py`
4343
* [ ] Run pre-release check via `make release-test`.
4444
* [ ] Create tag for release e.g.:

Tests/helper.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -320,16 +320,7 @@ def magick_command() -> list[str] | None:
320320
return None
321321

322322

323-
def on_appveyor() -> bool:
324-
return "APPVEYOR" in os.environ
325-
326-
327-
def on_github_actions() -> bool:
328-
return "GITHUB_ACTIONS" in os.environ
329-
330-
331323
def on_ci() -> bool:
332-
# GitHub Actions and AppVeyor have "CI"
333324
return "CI" in os.environ
334325

335326

Tests/test_image.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -989,6 +989,11 @@ def test_getxmp_padded(self) -> None:
989989
else:
990990
assert im.getxmp() == {"xmpmeta": None}
991991

992+
def test_get_child_images(self) -> None:
993+
im = Image.new("RGB", (1, 1))
994+
with pytest.warns(DeprecationWarning):
995+
assert im.get_child_images() == []
996+
992997
@pytest.mark.parametrize("size", ((1, 0), (0, 1), (0, 0)))
993998
def test_zero_tobytes(self, size: tuple[int, int]) -> None:
994999
im = Image.new("RGB", size)

0 commit comments

Comments
 (0)