import abc from pathlib import Path from typing import List, Tuple, Union, Optional, IO from modelscan.error import Error from modelscan.issues import Issue class ScanBase(metaclass=abc.ABCMeta): @staticmethod @abc.abstractmethod def name() -> str: raise NotImplementedError @staticmethod @abc.abstractmethod def scan( source: Union[str, Path], data: Optional[IO[bytes]] = None ) -> Tuple[List[Issue], List[Error]]: raise NotImplementedError @staticmethod @abc.abstractmethod def supported_extensions() -> List[str]: raise NotImplementedError