from __future__ import annotations import abc import logging from typing import TYPE_CHECKING, Optional if TYPE_CHECKING: from ._node import MqttNode from ._payload import MqttPayload class MqttModule(abc.ABC): tick_interval: int _initialized: bool def __init__(self, tick_interval=0): self.tick_interval = tick_interval self._initialized = False self._logger = logging.getLogger(self.__class__.__name__) def init(self, mqtt: MqttNode): pass def is_initialized(self): return self._initialized def set_initialized(self): self._initialized = True def unset_initialized(self): self._initialized = False def tick(self, mqtt: MqttNode): pass def handle_payload(self, mqtt: MqttNode, topic: str, payload: bytes) -> Optional[MqttPayload]: pass