mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-07-05 12:23:18 +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)]
|
self.tile = [ImageFile._Tile(decoder, (0, 0) + self.size, offset, args)]
|
||||||
|
|
||||||
|
|
||||||
class _BLPBaseDecoder(ImageFile.PyDecoder):
|
class _BLPBaseDecoder(abc.ABC, ImageFile.PyDecoder):
|
||||||
_pulls_fd = True
|
_pulls_fd = True
|
||||||
|
|
||||||
def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]:
|
def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]:
|
||||||
|
|
|
@ -2980,7 +2980,7 @@ class Image:
|
||||||
# Abstract handlers.
|
# Abstract handlers.
|
||||||
|
|
||||||
|
|
||||||
class ImagePointHandler:
|
class ImagePointHandler(abc.ABC):
|
||||||
"""
|
"""
|
||||||
Used as a mixin by point transforms
|
Used as a mixin by point transforms
|
||||||
(for use with :py:meth:`~PIL.Image.Image.point`)
|
(for use with :py:meth:`~PIL.Image.Image.point`)
|
||||||
|
@ -2991,7 +2991,7 @@ class ImagePointHandler:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class ImageTransformHandler:
|
class ImageTransformHandler(abc.ABC):
|
||||||
"""
|
"""
|
||||||
Used as a mixin by geometry transforms
|
Used as a mixin by geometry transforms
|
||||||
(for use with :py:meth:`~PIL.Image.Image.transform`)
|
(for use with :py:meth:`~PIL.Image.Image.transform`)
|
||||||
|
|
|
@ -438,7 +438,7 @@ class ImageFile(Image.Image):
|
||||||
return self.tell() != frame
|
return self.tell() != frame
|
||||||
|
|
||||||
|
|
||||||
class StubHandler:
|
class StubHandler(abc.ABC):
|
||||||
def open(self, im: StubImageFile) -> None:
|
def open(self, im: StubImageFile) -> None:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -447,7 +447,7 @@ class StubHandler:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
class StubImageFile(ImageFile):
|
class StubImageFile(ImageFile, metaclass=abc.ABCMeta):
|
||||||
"""
|
"""
|
||||||
Base class for stub image loaders.
|
Base class for stub image loaders.
|
||||||
|
|
||||||
|
@ -455,9 +455,9 @@ class StubImageFile(ImageFile):
|
||||||
certain format, but relies on external code to load the file.
|
certain format, but relies on external code to load the file.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@abc.abstractmethod
|
||||||
def _open(self) -> None:
|
def _open(self) -> None:
|
||||||
msg = "StubImageFile subclass must implement _open"
|
pass
|
||||||
raise NotImplementedError(msg)
|
|
||||||
|
|
||||||
def load(self) -> Image.core.PixelAccess | None:
|
def load(self) -> Image.core.PixelAccess | None:
|
||||||
loader = self._load()
|
loader = self._load()
|
||||||
|
@ -471,10 +471,10 @@ class StubImageFile(ImageFile):
|
||||||
self.__dict__ = image.__dict__
|
self.__dict__ = image.__dict__
|
||||||
return image.load()
|
return image.load()
|
||||||
|
|
||||||
|
@abc.abstractmethod
|
||||||
def _load(self) -> StubHandler | None:
|
def _load(self) -> StubHandler | None:
|
||||||
"""(Hook) Find actual image loader."""
|
"""(Hook) Find actual image loader."""
|
||||||
msg = "StubImageFile subclass must implement _load"
|
pass
|
||||||
raise NotImplementedError(msg)
|
|
||||||
|
|
||||||
|
|
||||||
class Parser:
|
class Parser:
|
||||||
|
|
|
@ -27,7 +27,7 @@ if TYPE_CHECKING:
|
||||||
from ._typing import NumpyArray
|
from ._typing import NumpyArray
|
||||||
|
|
||||||
|
|
||||||
class Filter:
|
class Filter(abc.ABC):
|
||||||
@abc.abstractmethod
|
@abc.abstractmethod
|
||||||
def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore:
|
def filter(self, image: _imaging.ImagingCore) -> _imaging.ImagingCore:
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -192,7 +192,7 @@ if sys.platform == "darwin":
|
||||||
register(MacViewer)
|
register(MacViewer)
|
||||||
|
|
||||||
|
|
||||||
class UnixViewer(Viewer):
|
class UnixViewer(abc.ABC, Viewer):
|
||||||
format = "PNG"
|
format = "PNG"
|
||||||
options = {"compress_level": 1, "save_all": True}
|
options = {"compress_level": 1, "save_all": True}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user