Spaces:
Runtime error
Runtime error
File size: 1,260 Bytes
4f8ad24 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
from typing import Iterator, Iterable
from ..model import ImageItem
class ActionStop(Exception):
pass
class BaseAction:
def iter(self, item: ImageItem) -> Iterator[ImageItem]:
raise NotImplementedError # pragma: no cover
def iter_from(self, iter_: Iterable[ImageItem]) -> Iterator[ImageItem]:
for item in iter_:
try:
yield from self.iter(item)
except ActionStop:
break
def reset(self):
raise NotImplementedError # pragma: no cover
class ProcessAction(BaseAction):
def process(self, item: ImageItem) -> ImageItem:
raise NotImplementedError # pragma: no cover
def iter(self, item: ImageItem) -> Iterator[ImageItem]:
yield self.process(item)
def reset(self):
pass
def __call__(self, item: ImageItem) -> ImageItem:
return self.process(item)
class FilterAction(BaseAction):
def check(self, item: ImageItem) -> bool:
raise NotImplementedError # pragma: no cover
def iter(self, item: ImageItem) -> Iterator[ImageItem]:
if self.check(item):
yield item
def reset(self):
pass
def __call__(self, item: ImageItem) -> bool:
return self.check(item)
|