Skip to content
Snippets Groups Projects
generic.py 691 B
Newer Older
  • Learn to ignore specific revisions
  • 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)