from abc import ABC, abstractmethod from argparse import ArgumentParser from inflection import underscore as camel2snake class BaseCommand(ABC): @property def name(self) -> str: return camel2snake(self.__class__.__name__) @property @abstractmethod def description(self) -> str: pass @abstractmethod def run(self, *args, **kwargs) -> None: pass def add_arguments(self, parser: ArgumentParser) -> None: pass