Skip to content

Commit 57337b2

Browse files
authored
Merge branch 'main' into fix-docs-typos-grammar
2 parents 7a51e25 + e96c5a5 commit 57337b2

5 files changed

Lines changed: 29 additions & 16 deletions

File tree

.github/workflows/wheels-dependencies.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ else
9696
FREETYPE_VERSION=2.14.1
9797
fi
9898
HARFBUZZ_VERSION=12.3.2
99-
LIBPNG_VERSION=1.6.54
99+
LIBPNG_VERSION=1.6.55
100100
JPEGTURBO_VERSION=3.1.3
101101
OPENJPEG_VERSION=2.5.4
102102
XZ_VERSION=5.8.2

.pre-commit-config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ repos:
3838
- repo: https://github.com/pre-commit/pre-commit-hooks
3939
rev: v6.0.0
4040
hooks:
41+
- id: check-case-conflict
4142
- id: check-executables-have-shebangs
4243
- id: check-shebang-scripts-are-executable
4344
- id: check-merge-conflict

Tests/test_imagepalette.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from __future__ import annotations
22

3-
from io import BytesIO
3+
import io
44
from pathlib import Path
55

66
import pytest
@@ -23,6 +23,13 @@ def test_reload() -> None:
2323
assert_image_equal(im.convert("RGB"), original.convert("RGB"))
2424

2525

26+
def test_save_fp() -> None:
27+
palette = ImagePalette.ImagePalette()
28+
with io.StringIO() as fp:
29+
palette.save(fp)
30+
assert not fp.closed
31+
32+
2633
def test_getcolor() -> None:
2734
palette = ImagePalette.ImagePalette()
2835
assert len(palette.palette) == 0
@@ -204,7 +211,7 @@ def test_2bit_palette(tmp_path: Path) -> None:
204211

205212

206213
def test_getpalette() -> None:
207-
b = BytesIO(b"0 1\n1 2 3 4")
214+
b = io.BytesIO(b"0 1\n1 2 3 4")
208215
p = PaletteFile.PaletteFile(b)
209216

210217
palette, rawmode = p.getpalette()
@@ -216,6 +223,6 @@ def test_invalid_palette() -> None:
216223
with pytest.raises(OSError):
217224
ImagePalette.load("Tests/images/hopper.jpg")
218225

219-
b = BytesIO(b"1" * 101)
226+
b = io.BytesIO(b"1" * 101)
220227
with pytest.raises(SyntaxError, match="bad palette file"):
221228
PaletteFile.PaletteFile(b)

src/PIL/ImagePalette.py

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -191,19 +191,24 @@ def save(self, fp: str | IO[str]) -> None:
191191
if self.rawmode:
192192
msg = "palette contains raw palette data"
193193
raise ValueError(msg)
194+
open_fp = False
194195
if isinstance(fp, str):
195196
fp = open(fp, "w")
196-
fp.write("# Palette\n")
197-
fp.write(f"# Mode: {self.mode}\n")
198-
for i in range(256):
199-
fp.write(f"{i}")
200-
for j in range(i * len(self.mode), (i + 1) * len(self.mode)):
201-
try:
202-
fp.write(f" {self.palette[j]}")
203-
except IndexError:
204-
fp.write(" 0")
205-
fp.write("\n")
206-
fp.close()
197+
open_fp = True
198+
try:
199+
fp.write("# Palette\n")
200+
fp.write(f"# Mode: {self.mode}\n")
201+
for i in range(256):
202+
fp.write(f"{i}")
203+
for j in range(i * len(self.mode), (i + 1) * len(self.mode)):
204+
try:
205+
fp.write(f" {self.palette[j]}")
206+
except IndexError:
207+
fp.write(" 0")
208+
fp.write("\n")
209+
finally:
210+
if open_fp:
211+
fp.close()
207212

208213

209214
# --------------------------------------------------------------------

winbuild/build_prepare.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ def cmd_msbuild(
121121
"LCMS2": "2.18",
122122
"LIBAVIF": "1.3.0",
123123
"LIBIMAGEQUANT": "4.4.1",
124-
"LIBPNG": "1.6.54",
124+
"LIBPNG": "1.6.55",
125125
"LIBWEBP": "1.6.0",
126126
"OPENJPEG": "2.5.4",
127127
"TIFF": "4.7.1",

0 commit comments

Comments
 (0)