Merge pull request #8803 from radarhere/abstract

Use ABCMeta in classes with abstractmethod
This commit is contained in:
Hugo van Kemenade 2025-03-05 18:15:33 +02:00 committed by GitHub
commit 5e9eea12f3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 11 additions and 11 deletions

View File

@ -291,7 +291,7 @@ class BlpImageFile(ImageFile.ImageFile):
self.tile = [ImageFile._Tile(decoder, (0, 0) + self.size, offset, args)]
class _BLPBaseDecoder(ImageFile.PyDecoder):
class _BLPBaseDecoder(abc.ABC, ImageFile.PyDecoder):
_pulls_fd = True
def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]:

View File

@ -2980,7 +2980,7 @@ class Image:
# Abstract handlers.
class ImagePointHandler:
class ImagePointHandler(abc.ABC):
"""
Used as a mixin by point transforms
(for use with :py:meth:`~PIL.Image.Image.point`)
@ -2991,7 +2991,7 @@ class ImagePointHandler:
pass
class ImageTransformHandler:
class ImageTransformHandler(abc.ABC):
"""
Used as a mixin by geometry transforms
(for use with :py:meth:`~PIL.Image.Image.transform`)

View File

@ -438,7 +438,7 @@ class ImageFile(Image.Image):
return self.tell() != frame
class StubHandler:
class StubHandler(abc.ABC):
def open(self, im: StubImageFile) -> None:
pass
@ -447,7 +447,7 @@ class StubHandler:
pass
class StubImageFile(ImageFile):
class StubImageFile(ImageFile, metaclass=abc.ABCMeta):
"""
Base class for stub image loaders.
@ -455,9 +455,9 @@ class StubImageFile(ImageFile):
certain format, but relies on external code to load the file.
"""
@abc.abstractmethod
def _open(self) -> None:
msg = "StubImageFile subclass must implement _open"
raise NotImplementedError(msg)
pass
def load(self) -> Image.core.PixelAccess | None:
loader = self._load()
@ -471,10 +471,10 @@ class StubImageFile(ImageFile):
self.__dict__ = image.__dict__
return image.load()
@abc.abstractmethod
def _load(self) -> StubHandler | None:
"""(Hook) Find actual image loader."""
msg = "StubImageFile subclass must implement _load"
raise NotImplementedError(msg)
pass
class Parser:

View File

@ -27,7 +27,7 @@ if TYPE_CHECKING:
from ._typing import NumpyArray
class Filter:
class Filter(abc.ABC):
@abc.abstractmethod
def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore:
pass

View File

@ -192,7 +192,7 @@ if sys.platform == "darwin":
register(MacViewer)
class UnixViewer(Viewer):
class UnixViewer(abc.ABC, Viewer):
format = "PNG"
options = {"compress_level": 1, "save_all": True}