Newer
Older
import abc
def all_subclasses(cls):
return cls.__subclasses__() \
+ [g for s in cls.__subclasses__() for g in all_subclasses(s)]
class Converter(metaclass=abc.ABCMeta):
""" A base class if we incorporate more converters in the future. New
implementations need to be registered in this modules __init__.py """
@abc.abstractmethod
def convert(self):
pass
@property
@abc.abstractclassmethod
def accepted_files(cls):
pass
@classmethod
def implementations(cls):
return all_subclasses(cls)
@classmethod
def accept(cls, filepath):
return any(filepath.endswith(ending) for ending in cls.accepted_files)