from cpl_cli.abc.generate_schematic_abc import GenerateSchematicABC
from cpl_core.utils import String


class ABC(GenerateSchematicABC):
    def __init__(self, name: str, schematic: str, path: str):
        GenerateSchematicABC.__init__(self, name, schematic, path)
        self._class_name = name
        if name != "":
            self._class_name = f'{String.first_to_upper(name.replace(schematic, ""))}ABC'

    def get_code(self) -> str:
        code = """\
        from abc import ABC, abstractmethod


        class $Name(ABC):
        
            @abstractmethod
            def __init__(self): pass
        """
        x = self.build_code_str(code, Name=self._class_name)
        return x

    @classmethod
    def register(cls):
        GenerateSchematicABC.register(cls, "abc", ["a", "A"])
