from abc import ABC, abstractmethod from redbot.core import commands from redbot.core.bot import Red from .utilities.config import Config class CompositeMetaClass(type(commands.Cog), type(ABC)): """ This allows the metaclass used for proper type detection to coexist with discord.py's metaclass """ class Mixin(ABC): """ Base class for well behaved type hint detection with composite class. Basically, to keep developers sane when not all attributes are defined in each mixin. """ def __init__(self, *_args): super().__init__() self.config: Config self.bot: Red ####################################################################### # configuration/commands.py # ####################################################################### @abstractmethod async def aurora(self, ctx: commands.Context) -> None: raise NotImplementedError() @abstractmethod async def aurora_config(self, ctx: commands.Context) -> None: raise NotImplementedError() @abstractmethod async def aurora_import(self, ctx: commands.Context) -> None: raise NotImplementedError() @abstractmethod async def aurora_import_aurora(self, ctx: commands.Context) -> None: raise NotImplementedError() @abstractmethod async def aurora_import_galacticbot(self, ctx: commands.Context) -> None: raise NotImplementedError()