Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/PIL/Image.py
Original file line number Diff line number Diff line change
Expand Up @@ -3437,7 +3437,7 @@ def register_open(id, factory, accept=None) -> None:
OPEN[id] = factory, accept


def register_mime(id, mimetype):
def register_mime(id: str, mimetype: str) -> None:
"""
Registers an image MIME type by populating ``Image.MIME``. This function
should not be used in application code.
Expand All @@ -3452,7 +3452,7 @@ def register_mime(id, mimetype):
MIME[id.upper()] = mimetype


def register_save(id, driver):
def register_save(id: str, driver) -> None:
"""
Registers an image save function. This function should not be
used in application code.
Expand Down
2 changes: 1 addition & 1 deletion src/PIL/ImageFile.py
Original file line number Diff line number Diff line change
Expand Up @@ -514,7 +514,7 @@ def close(self):
# --------------------------------------------------------------------


def _save(im, fp, tile, bufsize=0):
def _save(im, fp, tile, bufsize=0) -> None:
"""Helper to save image based on tile list

:param im: Image object.
Expand Down
2 changes: 1 addition & 1 deletion src/PIL/ImagePalette.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ def save(self, fp):
# Internal


def raw(rawmode, data):
def raw(rawmode, data) -> ImagePalette:
palette = ImagePalette()
palette.rawmode = rawmode
palette.palette = data
Expand Down
8 changes: 5 additions & 3 deletions src/PIL/McIdasImagePlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
from . import Image, ImageFile


def _accept(s):
return s[:8] == b"\x00\x00\x00\x00\x00\x00\x00\x04"
def _accept(prefix: bytes) -> bool:
return prefix[:8] == b"\x00\x00\x00\x00\x00\x00\x00\x04"


##
Expand All @@ -34,8 +34,10 @@ class McIdasImageFile(ImageFile.ImageFile):
format = "MCIDAS"
format_description = "McIdas area file"

def _open(self):
def _open(self) -> None:
# parse area file directory
assert self.fp is not None

s = self.fp.read(256)
if not _accept(s) or len(s) != 256:
msg = "not an McIdas area file"
Expand Down
8 changes: 6 additions & 2 deletions src/PIL/PcdImagePlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,10 @@ class PcdImageFile(ImageFile.ImageFile):
format = "PCD"
format_description = "Kodak PhotoCD"

def _open(self):
def _open(self) -> None:
# rough
assert self.fp is not None

self.fp.seek(2048)
s = self.fp.read(2048)

Expand All @@ -47,9 +49,11 @@ def _open(self):
self._size = 768, 512 # FIXME: not correct for rotated images!
self.tile = [("pcd", (0, 0) + self.size, 96 * 2048, None)]

def load_end(self):
def load_end(self) -> None:
if self.tile_post_rotate:
# Handle rotated PCDs
assert self.im is not None

self.im = self.im.rotate(self.tile_post_rotate)
self._size = self.im.size

Expand Down
10 changes: 7 additions & 3 deletions src/PIL/PcxImagePlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
logger = logging.getLogger(__name__)


def _accept(prefix):
def _accept(prefix: bytes) -> bool:
return prefix[0] == 10 and prefix[1] in [0, 2, 3, 5]


Expand All @@ -49,8 +49,10 @@ class PcxImageFile(ImageFile.ImageFile):
format = "PCX"
format_description = "Paintbrush"

def _open(self):
def _open(self) -> None:
# header
assert self.fp is not None

s = self.fp.read(128)
if not _accept(s):
msg = "not a PCX file"
Expand Down Expand Up @@ -141,7 +143,7 @@ def _open(self):
}


def _save(im, fp, filename):
def _save(im: Image.Image, fp: io.BytesIO, filename: str) -> None:
try:
version, bits, planes, rawmode = SAVE[im.mode]
except KeyError as e:
Expand Down Expand Up @@ -199,6 +201,8 @@ def _save(im, fp, filename):

if im.mode == "P":
# colour palette
assert im.im is not None

fp.write(o8(12))
palette = im.im.getpalette("RGB", "RGB")
palette += b"\x00" * (768 - len(palette))
Expand Down
6 changes: 4 additions & 2 deletions src/PIL/PixarImagePlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
# helpers


def _accept(prefix):
def _accept(prefix: bytes) -> bool:
return prefix[:4] == b"\200\350\000\000"


Expand All @@ -39,8 +39,10 @@ class PixarImageFile(ImageFile.ImageFile):
format = "PIXAR"
format_description = "PIXAR raster image"

def _open(self):
def _open(self) -> None:
# assuming a 4-byte magic label
assert self.fp is not None

s = self.fp.read(4)
if not _accept(s):
msg = "not a PIXAR file"
Expand Down
6 changes: 4 additions & 2 deletions src/PIL/SunImagePlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
from ._binary import i32be as i32


def _accept(prefix):
def _accept(prefix: bytes) -> bool:
return len(prefix) >= 4 and i32(prefix) == 0x59A66A95


Expand All @@ -33,7 +33,7 @@ class SunImageFile(ImageFile.ImageFile):
format = "SUN"
format_description = "Sun Raster File"

def _open(self):
def _open(self) -> None:
# The Sun Raster file header is 32 bytes in length
# and has the following format:

Expand All @@ -49,6 +49,8 @@ def _open(self):
# DWORD ColorMapLength; /* Size of the color map in bytes */
# } SUNRASTER;

assert self.fp is not None

# HEAD
s = self.fp.read(32)
if not _accept(s):
Expand Down
6 changes: 4 additions & 2 deletions src/PIL/XVThumbImagePlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
)


def _accept(prefix):
def _accept(prefix: bytes) -> bool:
return prefix[:6] == _MAGIC


Expand All @@ -45,8 +45,10 @@ class XVThumbImageFile(ImageFile.ImageFile):
format = "XVThumb"
format_description = "XV thumbnail image"

def _open(self):
def _open(self) -> None:
# check magic
assert self.fp is not None

if not _accept(self.fp.read(6)):
msg = "not an XV thumbnail file"
raise SyntaxError(msg)
Expand Down
9 changes: 6 additions & 3 deletions src/PIL/XbmImagePlugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
from __future__ import annotations

import re
from io import BytesIO

from . import Image, ImageFile

Expand All @@ -36,7 +37,7 @@
)


def _accept(prefix):
def _accept(prefix: bytes) -> bool:
return prefix.lstrip()[:7] == b"#define"


Expand All @@ -48,7 +49,9 @@ class XbmImageFile(ImageFile.ImageFile):
format = "XBM"
format_description = "X11 Bitmap"

def _open(self):
def _open(self) -> None:
assert self.fp is not None

m = xbm_head.match(self.fp.read(512))

if not m:
Expand All @@ -67,7 +70,7 @@ def _open(self):
self.tile = [("xbm", (0, 0) + self.size, m.end(), None)]


def _save(im, fp, filename):
def _save(im: Image.Image, fp: BytesIO, filename: str) -> None:
if im.mode != "1":
msg = f"cannot write mode {im.mode} as XBM"
raise OSError(msg)
Expand Down