mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-04-13 05:44:16 +03:00
Merge pull request #8803 from radarhere/abstract
Use ABCMeta in classes with abstractmethod
This commit is contained in:
commit
5e9eea12f3
|
@ -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]:
|
||||
|
|
|
@ -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`)
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user