Skip to content

Commit ad42bb3

Browse files
authored
Merge branch 'main' into jpeg-app-segments
2 parents ae5ec03 + 76f04b4 commit ad42bb3

File tree

459 files changed

+24821
-5751
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

459 files changed

+24821
-5751
lines changed

.ci/install.sh

Lines changed: 26 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -13,57 +13,48 @@ aptget_update()
1313
return 1
1414
fi
1515
}
16-
if [[ $(uname) != CYGWIN* ]]; then
17-
aptget_update || aptget_update retry || aptget_update retry
18-
fi
16+
aptget_update || aptget_update retry || aptget_update retry
1917

2018
set -e
2119

22-
if [[ $(uname) != CYGWIN* ]]; then
23-
sudo apt-get -qq install libfreetype6-dev liblcms2-dev libtiff-dev python3-tk\
24-
ghostscript libjpeg-turbo8-dev libopenjp2-7-dev\
25-
cmake meson imagemagick libharfbuzz-dev libfribidi-dev\
26-
sway wl-clipboard libopenblas-dev
27-
fi
20+
sudo apt-get -qq install libfreetype6-dev liblcms2-dev libtiff-dev python3-tk\
21+
ghostscript libjpeg-turbo8-dev libopenjp2-7-dev\
22+
cmake meson imagemagick libharfbuzz-dev libfribidi-dev\
23+
sway wl-clipboard libopenblas-dev nasm
2824

2925
python3 -m pip install --upgrade pip
3026
python3 -m pip install --upgrade wheel
3127
python3 -m pip install coverage
3228
python3 -m pip install defusedxml
3329
python3 -m pip install ipython
30+
python3 -m pip install numpy
3431
python3 -m pip install olefile
3532
python3 -m pip install -U pytest
3633
python3 -m pip install -U pytest-cov
3734
python3 -m pip install -U pytest-timeout
3835
python3 -m pip install pyroma
36+
# optional test dependency, only install if there's a binary package.
37+
# fails on beta 3.14 and PyPy
38+
python3 -m pip install --only-binary=:all: pyarrow || true
39+
40+
# PyQt6 doesn't support PyPy3
41+
if [[ $GHA_PYTHON_VERSION == 3.* ]]; then
42+
sudo apt-get -qq install libegl1 libxcb-cursor0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-shape0 libxkbcommon-x11-0
43+
# TODO Update condition when pyqt6 supports free-threading
44+
if ! [[ "$PYTHON_GIL" == "0" ]]; then python3 -m pip install pyqt6 ; fi
45+
fi
3946

40-
if [[ $(uname) != CYGWIN* ]]; then
41-
python3 -m pip install numpy
42-
43-
# PyQt6 doesn't support PyPy3
44-
if [[ $GHA_PYTHON_VERSION == 3.* ]]; then
45-
sudo apt-get -qq install libegl1 libxcb-cursor0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-shape0 libxkbcommon-x11-0
46-
# TODO Update condition when pyqt6 supports free-threading
47-
if ! [[ "$PYTHON_GIL" == "0" ]]; then python3 -m pip install pyqt6 ; fi
48-
fi
49-
50-
# Pyroma uses non-isolated build and fails with old setuptools
51-
if [[ $GHA_PYTHON_VERSION == 3.9 ]]; then
52-
# To match pyproject.toml
53-
python3 -m pip install "setuptools>=67.8"
54-
fi
47+
# webp
48+
pushd depends && ./install_webp.sh && popd
5549

56-
# webp
57-
pushd depends && ./install_webp.sh && popd
50+
# libimagequant
51+
pushd depends && ./install_imagequant.sh && popd
5852

59-
# libimagequant
60-
pushd depends && ./install_imagequant.sh && popd
53+
# raqm
54+
pushd depends && sudo ./install_raqm.sh && popd
6155

62-
# raqm
63-
pushd depends && ./install_raqm.sh && popd
56+
# libavif
57+
pushd depends && sudo ./install_libavif.sh && popd
6458

65-
# extra test images
66-
pushd depends && ./install_extra_test_images.sh && popd
67-
else
68-
cd depends && ./install_extra_test_images.sh && cd ..
69-
fi
59+
# extra test images
60+
pushd depends && ./install_extra_test_images.sh && popd

.ci/requirements-cibw.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
cibuildwheel==2.23.1
1+
cibuildwheel==3.2.1

.ci/requirements-mypy.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1-
mypy==1.15.0
1+
mypy==1.18.2
2+
arro3-compute
3+
arro3-core
24
IceSpringPySideStubs-PyQt6
35
IceSpringPySideStubs-PySide6
46
ipython
57
numpy
68
packaging
9+
pyarrow-stubs
10+
pybind11
711
pytest
812
sphinx
913
types-atheris

.ci/test.cmd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
python.exe -c "from PIL import Image"
22
IF ERRORLEVEL 1 EXIT /B
3-
python.exe -bb -m pytest -v -x -W always --cov PIL --cov Tests --cov-report term --cov-report xml Tests
3+
python.exe -bb -m pytest -vv -x -W always --cov PIL --cov Tests --cov-report term --cov-report xml Tests

.ci/test.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ set -e
44

55
python3 -c "from PIL import Image"
66

7-
python3 -bb -m pytest -v -x -W always --cov PIL --cov Tests --cov-report term --cov-report xml Tests $REVERSE
7+
python3 -bb -m pytest -vv -x -W always --cov PIL --cov Tests --cov-report term --cov-report xml Tests $REVERSE

.clang-format

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# A clang-format style that approximates Python's PEP 7
22
# Useful for IDE integration
3+
Language: C
34
BasedOnStyle: Google
45
AlwaysBreakAfterReturnType: All
56
AllowShortIfStatementsOnASingleLine: false
@@ -11,7 +12,26 @@ ColumnLimit: 88
1112
DerivePointerAlignment: false
1213
IndentGotoLabels: false
1314
IndentWidth: 4
15+
PointerAlignment: Right
16+
ReflowComments: true
17+
SortIncludes: false
18+
SpaceBeforeParens: ControlStatements
19+
SpacesInParentheses: false
20+
TabWidth: 4
21+
UseTab: Never
22+
---
1423
Language: Cpp
24+
BasedOnStyle: Google
25+
AlwaysBreakAfterReturnType: All
26+
AllowShortIfStatementsOnASingleLine: false
27+
AlignAfterOpenBracket: BlockIndent
28+
BinPackArguments: false
29+
BinPackParameters: false
30+
BreakBeforeBraces: Attach
31+
ColumnLimit: 88
32+
DerivePointerAlignment: false
33+
IndentGotoLabels: false
34+
IndentWidth: 4
1535
PointerAlignment: Right
1636
ReflowComments: true
1737
SortIncludes: false

.coveragerc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,5 @@ exclude_also =
1818

1919
[run]
2020
omit =
21-
Tests/32bit_segfault_check.py
22-
Tests/check_*.py
21+
checks/*.py
2322
Tests/createfontdatachunk.py

.github/ISSUE_TEMPLATE/RELEASE.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
name: "Maintainers only: Release"
3+
about: For maintainers to schedule a quarterly release
4+
labels: Release
5+
---
6+
7+
## Main release
8+
9+
Released quarterly on January 2nd, April 1st, July 1st and October 15th.
10+
11+
* [ ] Open a release ticket e.g. https://github.com/python-pillow/Pillow/issues/3154
12+
* [ ] Develop and prepare release in `main` branch.
13+
* [ ] Add release notes e.g. https://github.com/python-pillow/Pillow/pull/8885
14+
* [ ] Check [GitHub Actions](https://github.com/python-pillow/Pillow/actions) to confirm passing tests in `main` branch.
15+
* [ ] 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.
16+
* [ ] In compliance with [PEP 440](https://peps.python.org/pep-0440/), update version identifier in `src/PIL/_version.py`
17+
* [ ] Run pre-release check via `make release-test` in a freshly cloned repo.
18+
* [ ] Create branch and tag for release e.g.:
19+
```bash
20+
git branch [[MAJOR.MINOR]].x
21+
git tag [[MAJOR.MINOR]].0
22+
git push --tags
23+
```
24+
* [ ] Check the [GitHub Actions "Wheels" workflow](https://github.com/python-pillow/Pillow/actions/workflows/wheels.yml) has passed, including the "Upload release to PyPI" job. This will have been triggered by the new tag.
25+
* [ ] Publish the [release on GitHub](https://github.com/python-pillow/Pillow/releases).
26+
* [ ] In compliance with [PEP 440](https://peps.python.org/pep-0440/), increment and append `.dev0` to version identifier in `src/PIL/_version.py` and then:
27+
```bash
28+
git push --all
29+
```
30+
31+
## Publicize release
32+
33+
* [ ] Announce release availability via [Mastodon](https://fosstodon.org/@pillow) e.g. https://fosstodon.org/@pillow/110639450470725321
34+
35+
## Documentation
36+
37+
* [ ] Make sure the [default version for Read the Docs](https://pillow.readthedocs.io/en/stable/) is up-to-date with the release changes
38+
39+
## Docker images
40+
41+
* [ ] Update Pillow in the Docker Images repository
42+
```bash
43+
git clone https://github.com/python-pillow/docker-images
44+
cd docker-images
45+
./update-pillow-tag.sh [[release tag]]
46+
```

.github/mergify.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ pull_request_rules:
88
- status-success=Docker Test Successful
99
- status-success=Windows Test Successful
1010
- status-success=MinGW
11-
- status-success=Cygwin Test Successful
1211
actions:
1312
merge:
1413
method: merge

.github/workflows/docs.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ jobs:
3232
name: Docs
3333

3434
steps:
35-
- uses: actions/checkout@v4
35+
- uses: actions/checkout@v5
3636
with:
3737
persist-credentials: false
3838

3939
- name: Set up Python
40-
uses: actions/setup-python@v5
40+
uses: actions/setup-python@v6
4141
with:
4242
python-version: "3.x"
4343
cache: pip

0 commit comments

Comments
 (0)