mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-07-30 09:59:50 +03:00
Merge branch 'main' into qoi_write
This commit is contained in:
commit
81ae70f972
|
@ -1 +1 @@
|
|||
cibuildwheel==2.23.3
|
||||
cibuildwheel==3.0.0
|
||||
|
|
2
.github/workflows/test-windows.yml
vendored
2
.github/workflows/test-windows.yml
vendored
|
@ -35,7 +35,7 @@ jobs:
|
|||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version: ["pypy3.11", "pypy3.10", "3.10", "3.11", "3.12", "3.13", "3.14"]
|
||||
python-version: ["pypy3.11", "pypy3.10", "3.10", "3.11", "3.12", ">=3.13.5", "3.14"]
|
||||
architecture: ["x64"]
|
||||
include:
|
||||
# Test the oldest Python on 32-bit
|
||||
|
|
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
|
@ -43,6 +43,7 @@ jobs:
|
|||
python-version: [
|
||||
"pypy3.11",
|
||||
"pypy3.10",
|
||||
"3.14t",
|
||||
"3.14",
|
||||
"3.13t",
|
||||
"3.13",
|
||||
|
@ -55,6 +56,7 @@ jobs:
|
|||
- { python-version: "3.11", PYTHONOPTIMIZE: 1, REVERSE: "--reverse" }
|
||||
- { python-version: "3.10", PYTHONOPTIMIZE: 2 }
|
||||
# Free-threaded
|
||||
- { python-version: "3.14t", disable-gil: true }
|
||||
- { python-version: "3.13t", disable-gil: true }
|
||||
# M1 only available for 3.10+
|
||||
- { os: "macos-13", python-version: "3.9" }
|
||||
|
|
2
.github/workflows/wheels-dependencies.sh
vendored
2
.github/workflows/wheels-dependencies.sh
vendored
|
@ -39,7 +39,7 @@ ARCHIVE_SDIR=pillow-depends-main
|
|||
# Package versions for fresh source builds
|
||||
FREETYPE_VERSION=2.13.3
|
||||
HARFBUZZ_VERSION=11.2.1
|
||||
LIBPNG_VERSION=1.6.48
|
||||
LIBPNG_VERSION=1.6.49
|
||||
JPEGTURBO_VERSION=3.1.1
|
||||
OPENJPEG_VERSION=2.5.3
|
||||
XZ_VERSION=5.8.1
|
||||
|
|
16
.github/workflows/wheels-test.ps1
vendored
16
.github/workflows/wheels-test.ps1
vendored
|
@ -9,17 +9,21 @@ if ("$venv" -like "*\cibw-run-*\pp*-win_amd64\*") {
|
|||
C:\vc_redist.x64.exe /install /quiet /norestart | Out-Null
|
||||
}
|
||||
$env:path += ";$pillow\winbuild\build\bin\"
|
||||
& "$venv\Scripts\activate.ps1"
|
||||
if (Test-Path $venv\Scripts\pypy.exe) {
|
||||
$python = "pypy.exe"
|
||||
} else {
|
||||
$python = "python.exe"
|
||||
}
|
||||
& reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\python.exe" /v "GlobalFlag" /t REG_SZ /d "0x02000000" /f
|
||||
if ("$venv" -like "*\cibw-run-*-win_amd64\*") {
|
||||
& python -m pip install numpy
|
||||
& $venv\Scripts\$python -m pip install numpy
|
||||
}
|
||||
cd $pillow
|
||||
& python -VV
|
||||
& $venv\Scripts\$python -VV
|
||||
if (!$?) { exit $LASTEXITCODE }
|
||||
& python selftest.py
|
||||
& $venv\Scripts\$python selftest.py
|
||||
if (!$?) { exit $LASTEXITCODE }
|
||||
& python -m pytest -vx Tests\check_wheel.py
|
||||
& $venv\Scripts\$python -m pytest -vx Tests\check_wheel.py
|
||||
if (!$?) { exit $LASTEXITCODE }
|
||||
& python -m pytest -vx Tests
|
||||
& $venv\Scripts\$python -m pytest -vx Tests
|
||||
if (!$?) { exit $LASTEXITCODE }
|
||||
|
|
2
.github/workflows/wheels.yml
vendored
2
.github/workflows/wheels.yml
vendored
|
@ -110,7 +110,6 @@ jobs:
|
|||
CIBW_MANYLINUX_PYPY_AARCH64_IMAGE: ${{ matrix.manylinux }}
|
||||
CIBW_MANYLINUX_PYPY_X86_64_IMAGE: ${{ matrix.manylinux }}
|
||||
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux }}
|
||||
CIBW_SKIP: pp39-*
|
||||
MACOSX_DEPLOYMENT_TARGET: ${{ matrix.macosx_deployment_target }}
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
|
@ -188,7 +187,6 @@ jobs:
|
|||
CIBW_BEFORE_ALL: "{package}\\winbuild\\build\\build_dep_all.cmd"
|
||||
CIBW_CACHE_PATH: "C:\\cibw"
|
||||
CIBW_ENABLE: cpython-prerelease cpython-freethreading pypy
|
||||
CIBW_SKIP: pp39-*
|
||||
CIBW_TEST_SKIP: "*-win_arm64"
|
||||
CIBW_TEST_COMMAND: 'docker run --rm
|
||||
-v {project}:C:\pillow
|
||||
|
|
BIN
Tests/images/p_4_planes.pcx
Normal file
BIN
Tests/images/p_4_planes.pcx
Normal file
Binary file not shown.
|
@ -37,6 +37,11 @@ def test_sanity(tmp_path: Path) -> None:
|
|||
im.save(f)
|
||||
|
||||
|
||||
def test_p_4_planes() -> None:
|
||||
with Image.open("Tests/images/p_4_planes.pcx") as im:
|
||||
assert im.getpixel((0, 0)) == 3
|
||||
|
||||
|
||||
def test_bad_image_size() -> None:
|
||||
with open("Tests/images/pil184.pcx", "rb") as fp:
|
||||
data = fp.read()
|
||||
|
|
|
@ -40,12 +40,12 @@ These platforms are built and tested for every change.
|
|||
| macOS 13 Ventura | 3.9 | x86-64 |
|
||||
+----------------------------------+----------------------------+---------------------+
|
||||
| macOS 14 Sonoma | 3.10, 3.11, 3.12, 3.13, | arm64 |
|
||||
| | PyPy3 | |
|
||||
| | 3.14, PyPy3 | |
|
||||
+----------------------------------+----------------------------+---------------------+
|
||||
| Ubuntu Linux 22.04 LTS (Jammy) | 3.10 | x86-64 |
|
||||
+----------------------------------+----------------------------+---------------------+
|
||||
| Ubuntu Linux 24.04 LTS (Noble) | 3.9, 3.10, 3.11, | x86-64 |
|
||||
| | 3.12, 3.13, PyPy3 | |
|
||||
| | 3.12, 3.13, 3.14, PyPy3 | |
|
||||
| +----------------------------+---------------------+
|
||||
| | 3.12 | arm64v8, ppc64le, |
|
||||
| | | s390x |
|
||||
|
@ -53,7 +53,7 @@ These platforms are built and tested for every change.
|
|||
| Windows Server 2022 | 3.9 | x86 |
|
||||
| +----------------------------+---------------------+
|
||||
| | 3.10, 3.11, 3.12, 3.13, | x86-64 |
|
||||
| | PyPy3 | |
|
||||
| | 3.14, PyPy3 | |
|
||||
| +----------------------------+---------------------+
|
||||
| | 3.12 (MinGW) | x86-64 |
|
||||
| +----------------------------+---------------------+
|
||||
|
|
56
docs/releasenotes/11.3.0.rst
Normal file
56
docs/releasenotes/11.3.0.rst
Normal file
|
@ -0,0 +1,56 @@
|
|||
11.3.0
|
||||
------
|
||||
|
||||
Security
|
||||
========
|
||||
|
||||
TODO
|
||||
^^^^
|
||||
|
||||
TODO
|
||||
|
||||
:cve:`YYYY-XXXXX`: TODO
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
TODO
|
||||
|
||||
Backwards incompatible changes
|
||||
==============================
|
||||
|
||||
TODO
|
||||
^^^^
|
||||
|
||||
Deprecations
|
||||
============
|
||||
|
||||
TODO
|
||||
^^^^
|
||||
|
||||
TODO
|
||||
|
||||
API changes
|
||||
===========
|
||||
|
||||
TODO
|
||||
^^^^
|
||||
|
||||
TODO
|
||||
|
||||
API additions
|
||||
=============
|
||||
|
||||
TODO
|
||||
^^^^
|
||||
|
||||
TODO
|
||||
|
||||
Other changes
|
||||
=============
|
||||
|
||||
Python 3.14 beta
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
To help other projects prepare for Python 3.14, wheels are now built for the
|
||||
3.14 beta as a preview. This is not official support for Python 3.14, but rather
|
||||
an opportunity for you to test how Pillow works with the beta and report any
|
||||
problems.
|
|
@ -14,6 +14,7 @@ expected to be backported to earlier versions.
|
|||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
11.3.0
|
||||
11.2.1
|
||||
11.1.0
|
||||
11.0.0
|
||||
|
|
|
@ -60,15 +60,25 @@ ImagingPcxDecode(Imaging im, ImagingCodecState state, UINT8 *buf, Py_ssize_t byt
|
|||
}
|
||||
|
||||
if (state->x >= state->bytes) {
|
||||
if (state->bytes % state->xsize && state->bytes > state->xsize) {
|
||||
int bands = state->bytes / state->xsize;
|
||||
int stride = state->bytes / bands;
|
||||
int bands;
|
||||
int xsize = 0;
|
||||
int stride = 0;
|
||||
if (state->bits == 2 || state->bits == 4) {
|
||||
xsize = (state->xsize + 7) / 8;
|
||||
bands = state->bits;
|
||||
stride = state->bytes / state->bits;
|
||||
} else {
|
||||
xsize = state->xsize;
|
||||
bands = state->bytes / state->xsize;
|
||||
if (bands != 0) {
|
||||
stride = state->bytes / bands;
|
||||
}
|
||||
}
|
||||
if (stride > xsize) {
|
||||
int i;
|
||||
for (i = 1; i < bands; i++) { // note -- skipping first band
|
||||
memmove(
|
||||
&state->buffer[i * state->xsize],
|
||||
&state->buffer[i * stride],
|
||||
state->xsize
|
||||
&state->buffer[i * xsize], &state->buffer[i * stride], xsize
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
2
tox.ini
2
tox.ini
|
@ -3,7 +3,7 @@ requires =
|
|||
tox>=4.2
|
||||
env_list =
|
||||
lint
|
||||
py{py3, 313, 312, 311, 310, 39}
|
||||
py{py3, 314, 313, 312, 311, 310, 39}
|
||||
|
||||
[testenv]
|
||||
deps =
|
||||
|
|
|
@ -118,7 +118,7 @@ V = {
|
|||
"LCMS2": "2.17",
|
||||
"LIBAVIF": "1.3.0",
|
||||
"LIBIMAGEQUANT": "4.3.4",
|
||||
"LIBPNG": "1.6.48",
|
||||
"LIBPNG": "1.6.49",
|
||||
"LIBWEBP": "1.5.0",
|
||||
"OPENJPEG": "2.5.3",
|
||||
"TIFF": "4.7.0",
|
||||
|
|
Loading…
Reference in New Issue
Block a user