Skip to content

Commit 9904777

Browse files
authored
Merge pull request #273 from openzim/add_overloads
Add proper typing @overload to `zimscraperlib.image.optimize_xxx` methods
2 parents 26e3ab1 + 1893e14 commit 9904777

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Fixed
11+
12+
- Add proper typing @overload to `zimscraperlib.image.optimize_xxx` methods (#273)
13+
1014
## [5.3.0] - 2025-11-14
1115

1216
### Changed

src/zimscraperlib/image/optimization.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import pathlib
2424
import subprocess
2525
from dataclasses import dataclass
26+
from typing import overload
2627

2728
import piexif # pyright: ignore[reportMissingTypeStubs]
2829
from optimize_images.img_aux_processing import ( # pyright: ignore[reportMissingTypeStubs]
@@ -78,6 +79,18 @@ class OptimizePngOptions:
7879
remove_transparency: bool | None = False
7980

8081

82+
@overload
83+
def optimize_png(
84+
src: pathlib.Path | io.BytesIO,
85+
dst: io.BytesIO | None = None,
86+
options: OptimizePngOptions | None = None,
87+
) -> io.BytesIO: ...
88+
@overload
89+
def optimize_png(
90+
src: pathlib.Path | io.BytesIO,
91+
dst: pathlib.Path,
92+
options: OptimizePngOptions | None = None,
93+
) -> pathlib.Path: ...
8194
def optimize_png(
8295
src: pathlib.Path | io.BytesIO,
8396
dst: pathlib.Path | io.BytesIO | None = None,
@@ -128,6 +141,18 @@ class OptimizeJpgOptions:
128141
keep_exif: bool | None = True
129142

130143

144+
@overload
145+
def optimize_jpeg(
146+
src: pathlib.Path | io.BytesIO,
147+
dst: io.BytesIO | None = None,
148+
options: OptimizeJpgOptions | None = None,
149+
) -> io.BytesIO: ...
150+
@overload
151+
def optimize_jpeg(
152+
src: pathlib.Path | io.BytesIO,
153+
dst: pathlib.Path,
154+
options: OptimizeJpgOptions | None = None,
155+
) -> pathlib.Path: ...
131156
def optimize_jpeg(
132157
src: pathlib.Path | io.BytesIO,
133158
dst: pathlib.Path | io.BytesIO | None = None,
@@ -218,6 +243,18 @@ class OptimizeWebpOptions:
218243
lossless: bool | None = False
219244

220245

246+
@overload
247+
def optimize_webp(
248+
src: pathlib.Path | io.BytesIO,
249+
dst: io.BytesIO | None = None,
250+
options: OptimizeWebpOptions | None = None,
251+
) -> io.BytesIO: ...
252+
@overload
253+
def optimize_webp(
254+
src: pathlib.Path | io.BytesIO,
255+
dst: pathlib.Path,
256+
options: OptimizeWebpOptions | None = None,
257+
) -> pathlib.Path: ...
221258
def optimize_webp(
222259
src: pathlib.Path | io.BytesIO,
223260
dst: pathlib.Path | io.BytesIO | None = None,

0 commit comments

Comments
 (0)