import abc from collections import namedtuple from typing import Iterable from image_prediction.utils import get_logger ImageMetadataPair = namedtuple("ImageMetadataPair", ["image", "metadata"]) logger = get_logger() class ImageExtractor(abc.ABC): @abc.abstractmethod def extract(self, obj) -> Iterable[ImageMetadataPair]: raise NotImplementedError def __call__(self, obj, **kwargs): logger.debug("ImageExtractor.extract") return self.extract(obj, **kwargs)