import logging


class base(dict):
    """A base device for all devicetypes

    Args:
        mqtt_client (mqtt.mqtt_client): A MQTT Client instance
        topic (str): the base topic for this device
    """
    PROPERTIES = []

    def __init__(self, mqtt_client, topic, **kwargs):
        super().__init__()
        self.mqtt_client = mqtt_client
        self.topic = topic
        for key in kwargs:
            setattr(self, key, kwargs[key])
        #
        self.logger = logging.getLogger('devices')
        for entry in self.topic.split('/'):
            self.logger = self.logger.getChild(entry)

    def __set__(self, key, data):
        if key in self.PROPERTIES:
            self.logger.debug("Setting new property %s to %s", key, repr(data))
            self[key] = data
        else:
            self.logger.warning("Ignoring unsupported property %s", key)
