fix mqtt config check in OnlyWith configuration helper (#1304)

* fix config check in OnlyWith configuration helper

OnlyWith configuration helper check now verifies whether a component
is configured in any of the packages not only in raw configuration

* fix C0301(line-too-long) pylint in imports

* fix flake8 (E127) over-indented line
This commit is contained in:
Andrej Komelj 2020-10-15 15:14:07 +02:00 committed by Guillermo Ruffino
parent b38b7019ea
commit dd3e821857

View file

@ -11,10 +11,11 @@ from string import ascii_letters, digits
import voluptuous as vol import voluptuous as vol
from esphome import core from esphome import core
from esphome.const import CONF_AVAILABILITY, CONF_COMMAND_TOPIC, CONF_DISCOVERY, CONF_ID, \ from esphome.const import CONF_AVAILABILITY, CONF_COMMAND_TOPIC, \
CONF_INTERNAL, CONF_NAME, CONF_PAYLOAD_AVAILABLE, CONF_PAYLOAD_NOT_AVAILABLE, \ CONF_DISCOVERY, CONF_ID, CONF_INTERNAL, CONF_NAME, CONF_PAYLOAD_AVAILABLE, \
CONF_RETAIN, CONF_SETUP_PRIORITY, CONF_STATE_TOPIC, CONF_TOPIC, \ CONF_PAYLOAD_NOT_AVAILABLE, CONF_RETAIN, CONF_SETUP_PRIORITY, CONF_STATE_TOPIC, CONF_TOPIC, \
CONF_HOUR, CONF_MINUTE, CONF_SECOND, CONF_VALUE, CONF_UPDATE_INTERVAL, CONF_TYPE_ID, CONF_TYPE CONF_HOUR, CONF_MINUTE, CONF_SECOND, CONF_VALUE, CONF_UPDATE_INTERVAL, CONF_TYPE_ID, \
CONF_TYPE, CONF_PACKAGES
from esphome.core import CORE, HexInt, IPAddress, Lambda, TimePeriod, TimePeriodMicroseconds, \ from esphome.core import CORE, HexInt, IPAddress, Lambda, TimePeriod, TimePeriodMicroseconds, \
TimePeriodMilliseconds, TimePeriodSeconds, TimePeriodMinutes TimePeriodMilliseconds, TimePeriodSeconds, TimePeriodMinutes
from esphome.helpers import list_starts_with, add_class_to_obj from esphome.helpers import list_starts_with, add_class_to_obj
@ -1167,9 +1168,12 @@ class OnlyWith(Optional):
@property @property
def default(self): def default(self):
# pylint: disable=unsupported-membership-test # pylint: disable=unsupported-membership-test
if self._component not in CORE.raw_config: if (self._component in CORE.raw_config or
return vol.UNDEFINED (CONF_PACKAGES in CORE.raw_config and
return self._default self._component in
{list(x.keys())[0] for x in CORE.raw_config[CONF_PACKAGES].values()})):
return self._default
return vol.UNDEFINED
@default.setter @default.setter
def default(self, value): def default(self, value):