Skip to content

Commit 741da90

Browse files
committed
Added type hints
1 parent 1187777 commit 741da90

6 files changed

Lines changed: 35 additions & 21 deletions

File tree

Tests/test_image.py

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -514,21 +514,31 @@ def test_no_supported_modes_method(self, tmp_path: Path) -> None:
514514
im = hopper()
515515
im.save(temp_file, convert_mode=True)
516516

517-
def test_convert_mode(self) -> None:
518-
for mode, modes in [["P", []], ["P", ["P"]]]: # no modes, same mode
519-
im = Image.new(mode, (100, 100))
520-
assert im._convert_mode(modes) is None
521-
522-
for mode, modes in [
523-
["P", ["RGB"]],
524-
["P", ["L"]], # converting to a non-preferred mode
525-
["LA", ["P"]],
526-
["I", ["L"]],
527-
["RGB", ["L"]],
528-
["RGB", ["CMYK"]],
529-
]:
530-
im = Image.new(mode, (100, 100))
531-
assert im._convert_mode(modes) is not None
517+
@pytest.mark.parametrize(
518+
"mode, modes",
519+
(
520+
("P", ["RGB"]),
521+
("P", ["L"]), # converting to a non-preferred mode
522+
("LA", ["P"]),
523+
("I", ["L"]),
524+
("RGB", ["L"]),
525+
("RGB", ["CMYK"]),
526+
),
527+
)
528+
def test_convert_mode(self, mode: str, modes: list[str]) -> None:
529+
im = Image.new(mode, (100, 100))
530+
assert im._convert_mode(modes) is not None
531+
532+
@pytest.mark.parametrize(
533+
"mode, modes",
534+
(
535+
("P", []), # no mode
536+
("P", ["P"]), # same mode
537+
),
538+
)
539+
def test_convert_mode_noop(self, mode: str, modes: list[str]) -> None:
540+
im = Image.new(mode, (100, 100))
541+
assert im._convert_mode(modes) is None
532542

533543
def test_effect_mandelbrot(self) -> None:
534544
# Arrange

src/PIL/GifImagePlugin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1181,7 +1181,7 @@ def write(self, data: Buffer) -> int:
11811181
return fp.data
11821182

11831183

1184-
def _supported_modes():
1184+
def _supported_modes() -> list[str]:
11851185
return ["RGB", "RGBA", "P", "I", "F", "LA", "L", "1"]
11861186

11871187

src/PIL/Image.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2618,9 +2618,11 @@ def save(
26182618
if open_fp:
26192619
fp.close()
26202620

2621-
def _convert_mode(self, modes, params={}):
2621+
def _convert_mode(
2622+
self, modes: list[str], params: dict[str, Any] = {}
2623+
) -> Image | None:
26222624
if not modes or self.mode in modes:
2623-
return
2625+
return None
26242626
if self.mode == "P":
26252627
preferred_modes = []
26262628
if "A" in self.im.getpalettemode():
@@ -2674,6 +2676,8 @@ def _convert_mode(self, modes, params={}):
26742676
elif new_mode:
26752677
return self.convert(new_mode)
26762678

2679+
return None
2680+
26772681
def seek(self, frame: int) -> None:
26782682
"""
26792683
Seeks to the given frame in this sequence file. If you seek

src/PIL/JpegImagePlugin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -891,7 +891,7 @@ def jpeg_factory(
891891
return im
892892

893893

894-
def _supported_modes():
894+
def _supported_modes() -> list[str]:
895895
return ["RGB", "CMYK", "YCbCr", "RGBX", "L", "1"]
896896

897897

src/PIL/PngImagePlugin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1532,7 +1532,7 @@ def append(fp: IO[bytes], cid: bytes, *data: bytes) -> None:
15321532
return chunks
15331533

15341534

1535-
def _supported_modes():
1535+
def _supported_modes() -> list[str]:
15361536
return ["RGB", "RGBA", "P", "I", "LA", "L", "1"]
15371537

15381538

src/PIL/WebPImagePlugin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ def _save(im: Image.Image, fp: IO[bytes], filename: str | bytes) -> None:
314314
fp.write(data)
315315

316316

317-
def _supported_modes():
317+
def _supported_modes() -> list[str]:
318318
return [
319319
"RGB",
320320
"RGBA",

0 commit comments

Comments
 (0)