Source code for inatcog.interfaces

"""Module for abc interfaces."""

from abc import ABC
from asyncio import Event
from typing import DefaultDict, Tuple

from inflect import engine
from redbot.core import Config
from redbot.core.bot import Red
from redbot.core.utils.antispam import AntiSpam
from .api import INatAPI
from .client import iNatClient
from .obs_query import INatObsQuery
from .places import INatPlaceTable
from .projects import INatProjectTable
from .search import INatSiteSearch
from .taxon_query import INatTaxonQuery
from .query import INatQuery
from .users import INatUserTable


[docs]class MixinMeta(ABC): """ Metaclass for well behaved type hint detection with composite class. """ # https://github.com/python/mypy/issues/1996 def __init__(self, *_args): self.config: Config self.api: INatAPI self.inat_client: iNatClient self.bot: Red self.p: engine # pylint: disable=invalid-name self.user_table: INatUserTable self.reaction_locks: dict self.predicate_locks: dict self.obs_query: INatObsQuery self.place_table: INatPlaceTable self.project_table: INatProjectTable self.site_search: INatSiteSearch self.taxon_query: INatTaxonQuery self.query: INatQuery self.user_cache_init: dict self.member_as: DefaultDict[Tuple[int, int], AntiSpam] self._log_ignored_reactions: bool self._ready_event: Event