Correct spelling of aliases, deprecate old config options. (#8348)
* correct spelling of aliases * add deprecation * Fix style.pull/8370/head
parent
143044f8f1
commit
fe6a4b8ae5
tests/components
|
@ -10,13 +10,16 @@ import logging
|
|||
from homeassistant.components.light import (
|
||||
ATTR_BRIGHTNESS, SUPPORT_BRIGHTNESS, Light)
|
||||
from homeassistant.components.rflink import (
|
||||
CONF_ALIASSES, CONF_AUTOMATIC_ADD, CONF_DEVICE_DEFAULTS, CONF_DEVICES,
|
||||
CONF_FIRE_EVENT, CONF_GROUP, CONF_GROUP_ALIASSES, CONF_IGNORE_DEVICES,
|
||||
CONF_ALIASES, CONF_ALIASSES, CONF_AUTOMATIC_ADD, CONF_DEVICE_DEFAULTS,
|
||||
CONF_DEVICES, CONF_FIRE_EVENT, CONF_GROUP, CONF_GROUP_ALIASES,
|
||||
CONF_GROUP_ALIASSES, CONF_IGNORE_DEVICES, CONF_NOGROUP_ALIASES,
|
||||
CONF_NOGROUP_ALIASSES, CONF_SIGNAL_REPETITIONS, DATA_DEVICE_REGISTER,
|
||||
DATA_ENTITY_GROUP_LOOKUP, DATA_ENTITY_LOOKUP, DEVICE_DEFAULTS_SCHEMA,
|
||||
DOMAIN, EVENT_KEY_COMMAND, EVENT_KEY_ID, SwitchableRflinkDevice, cv, vol)
|
||||
DOMAIN, EVENT_KEY_COMMAND, EVENT_KEY_ID, SwitchableRflinkDevice, cv,
|
||||
remove_deprecated, vol)
|
||||
from homeassistant.const import (
|
||||
CONF_NAME, CONF_PLATFORM, CONF_TYPE, STATE_UNKNOWN)
|
||||
from homeassistant.helpers.deprecation import get_deprecated
|
||||
|
||||
DEPENDENCIES = ['rflink']
|
||||
|
||||
|
@ -39,15 +42,22 @@ PLATFORM_SCHEMA = vol.Schema({
|
|||
vol.Optional(CONF_TYPE):
|
||||
vol.Any(TYPE_DIMMABLE, TYPE_SWITCHABLE,
|
||||
TYPE_HYBRID, TYPE_TOGGLE),
|
||||
vol.Optional(CONF_ALIASSES, default=[]):
|
||||
vol.Optional(CONF_ALIASES, default=[]):
|
||||
vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Optional(CONF_GROUP_ALIASSES, default=[]):
|
||||
vol.Optional(CONF_GROUP_ALIASES, default=[]):
|
||||
vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Optional(CONF_NOGROUP_ALIASSES, default=[]):
|
||||
vol.Optional(CONF_NOGROUP_ALIASES, default=[]):
|
||||
vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Optional(CONF_FIRE_EVENT, default=False): cv.boolean,
|
||||
vol.Optional(CONF_SIGNAL_REPETITIONS): vol.Coerce(int),
|
||||
vol.Optional(CONF_GROUP, default=True): cv.boolean,
|
||||
# deprecated config options
|
||||
vol.Optional(CONF_ALIASSES):
|
||||
vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Optional(CONF_GROUP_ALIASSES):
|
||||
vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Optional(CONF_NOGROUP_ALIASSES):
|
||||
vol.All(cv.ensure_list, [cv.string]),
|
||||
},
|
||||
}),
|
||||
})
|
||||
|
@ -103,6 +113,7 @@ def devices_from_config(domain_config, hass=None):
|
|||
entity_class = entity_class_for_type(entity_type)
|
||||
|
||||
device_config = dict(domain_config[CONF_DEVICE_DEFAULTS], **config)
|
||||
remove_deprecated(device_config)
|
||||
|
||||
is_hybrid = entity_class is HybridRflinkLight
|
||||
|
||||
|
@ -117,25 +128,27 @@ def devices_from_config(domain_config, hass=None):
|
|||
device = entity_class(device_id, hass, **device_config)
|
||||
devices.append(device)
|
||||
|
||||
# Register entity (and aliasses) to listen to incoming rflink events
|
||||
# Register entity (and aliases) to listen to incoming rflink events
|
||||
|
||||
# Device id and normal aliasses respond to normal and group command
|
||||
# Device id and normal aliases respond to normal and group command
|
||||
hass.data[DATA_ENTITY_LOOKUP][
|
||||
EVENT_KEY_COMMAND][device_id].append(device)
|
||||
if config[CONF_GROUP]:
|
||||
hass.data[DATA_ENTITY_GROUP_LOOKUP][
|
||||
EVENT_KEY_COMMAND][device_id].append(device)
|
||||
for _id in config[CONF_ALIASSES]:
|
||||
for _id in get_deprecated(config, CONF_ALIASES, CONF_ALIASSES):
|
||||
hass.data[DATA_ENTITY_LOOKUP][
|
||||
EVENT_KEY_COMMAND][_id].append(device)
|
||||
hass.data[DATA_ENTITY_GROUP_LOOKUP][
|
||||
EVENT_KEY_COMMAND][_id].append(device)
|
||||
# group_aliasses only respond to group commands
|
||||
for _id in config[CONF_GROUP_ALIASSES]:
|
||||
# group_aliases only respond to group commands
|
||||
for _id in get_deprecated(
|
||||
config, CONF_GROUP_ALIASES, CONF_GROUP_ALIASSES):
|
||||
hass.data[DATA_ENTITY_GROUP_LOOKUP][
|
||||
EVENT_KEY_COMMAND][_id].append(device)
|
||||
# nogroup_aliasses only respond to normal commands
|
||||
for _id in config[CONF_NOGROUP_ALIASSES]:
|
||||
# nogroup_aliases only respond to normal commands
|
||||
for _id in get_deprecated(
|
||||
config, CONF_NOGROUP_ALIASES, CONF_NOGROUP_ALIASSES):
|
||||
hass.data[DATA_ENTITY_LOOKUP][
|
||||
EVENT_KEY_COMMAND][_id].append(device)
|
||||
|
||||
|
|
|
@ -10,15 +10,15 @@ import functools as ft
|
|||
import logging
|
||||
|
||||
import async_timeout
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.const import (
|
||||
ATTR_ENTITY_ID, CONF_HOST, CONF_PORT, EVENT_HOMEASSISTANT_STOP,
|
||||
STATE_UNKNOWN)
|
||||
from homeassistant.core import CoreState, callback
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.deprecation import get_deprecated
|
||||
from homeassistant.helpers.entity import Entity
|
||||
import voluptuous as vol
|
||||
|
||||
REQUIREMENTS = ['rflink==0.0.34']
|
||||
|
||||
|
@ -27,9 +27,12 @@ _LOGGER = logging.getLogger(__name__)
|
|||
ATTR_EVENT = 'event'
|
||||
ATTR_STATE = 'state'
|
||||
|
||||
CONF_ALIASES = 'aliases'
|
||||
CONF_ALIASSES = 'aliasses'
|
||||
CONF_GROUP_ALIASES = 'group_aliases'
|
||||
CONF_GROUP_ALIASSES = 'group_aliasses'
|
||||
CONF_GROUP = 'group'
|
||||
CONF_NOGROUP_ALIASES = 'nogroup_aliases'
|
||||
CONF_NOGROUP_ALIASSES = 'nogroup_aliasses'
|
||||
CONF_DEVICE_DEFAULTS = 'device_defaults'
|
||||
CONF_DEVICES = 'devices'
|
||||
|
@ -219,8 +222,8 @@ class RflinkDevice(Entity):
|
|||
platform = None
|
||||
_state = STATE_UNKNOWN
|
||||
|
||||
def __init__(self, device_id, hass, name=None, aliasses=None, group=True,
|
||||
group_aliasses=None, nogroup_aliasses=None, fire_event=False,
|
||||
def __init__(self, device_id, hass, name=None, aliases=None, group=True,
|
||||
group_aliases=None, nogroup_aliases=None, fire_event=False,
|
||||
signal_repetitions=DEFAULT_SIGNAL_REPETITIONS):
|
||||
"""Initialize the device."""
|
||||
self.hass = hass
|
||||
|
@ -398,3 +401,24 @@ class SwitchableRflinkDevice(RflinkCommand):
|
|||
def async_turn_off(self, **kwargs):
|
||||
"""Turn the device off."""
|
||||
return self._async_handle_command("turn_off")
|
||||
|
||||
|
||||
DEPRECATED_CONFIG_OPTIONS = [
|
||||
CONF_ALIASSES,
|
||||
CONF_GROUP_ALIASSES,
|
||||
CONF_NOGROUP_ALIASSES]
|
||||
REPLACEMENT_CONFIG_OPTIONS = [
|
||||
CONF_ALIASES,
|
||||
CONF_GROUP_ALIASES,
|
||||
CONF_NOGROUP_ALIASES]
|
||||
|
||||
|
||||
def remove_deprecated(config):
|
||||
"""Remove deprecated config options from device config."""
|
||||
for index, deprecated_option in enumerate(DEPRECATED_CONFIG_OPTIONS):
|
||||
if deprecated_option in config:
|
||||
replacement_option = REPLACEMENT_CONFIG_OPTIONS[index]
|
||||
# generate deprecation warning
|
||||
get_deprecated(config, replacement_option, deprecated_option)
|
||||
# remove old config value replacing new one
|
||||
config[replacement_option] = config.pop(deprecated_option)
|
||||
|
|
|
@ -9,9 +9,9 @@ from functools import partial
|
|||
import logging
|
||||
|
||||
from homeassistant.components.rflink import (
|
||||
CONF_ALIASSES, CONF_AUTOMATIC_ADD, CONF_DEVICES, DATA_DEVICE_REGISTER,
|
||||
DATA_ENTITY_LOOKUP, DOMAIN, EVENT_KEY_ID, EVENT_KEY_SENSOR, EVENT_KEY_UNIT,
|
||||
RflinkDevice, cv, vol)
|
||||
CONF_ALIASES, CONF_ALIASSES, CONF_AUTOMATIC_ADD, CONF_DEVICES,
|
||||
DATA_DEVICE_REGISTER, DATA_ENTITY_LOOKUP, DOMAIN, EVENT_KEY_ID,
|
||||
EVENT_KEY_SENSOR, EVENT_KEY_UNIT, RflinkDevice, cv, remove_deprecated, vol)
|
||||
from homeassistant.const import (
|
||||
ATTR_UNIT_OF_MEASUREMENT, CONF_NAME, CONF_PLATFORM,
|
||||
CONF_UNIT_OF_MEASUREMENT)
|
||||
|
@ -36,7 +36,10 @@ PLATFORM_SCHEMA = vol.Schema({
|
|||
vol.Optional(CONF_NAME): cv.string,
|
||||
vol.Required(CONF_SENSOR_TYPE): cv.string,
|
||||
vol.Optional(CONF_UNIT_OF_MEASUREMENT, default=None): cv.string,
|
||||
vol.Optional(CONF_ALIASSES, default=[]):
|
||||
vol.Optional(CONF_ALIASES, default=[]):
|
||||
vol.All(cv.ensure_list, [cv.string]),
|
||||
# deprecated config options
|
||||
vol.Optional(CONF_ALIASSES):
|
||||
vol.All(cv.ensure_list, [cv.string]),
|
||||
},
|
||||
}),
|
||||
|
@ -61,6 +64,7 @@ def devices_from_config(domain_config, hass=None):
|
|||
if not config[ATTR_UNIT_OF_MEASUREMENT]:
|
||||
config[ATTR_UNIT_OF_MEASUREMENT] = lookup_unit_for_sensor_type(
|
||||
config[CONF_SENSOR_TYPE])
|
||||
remove_deprecated(config)
|
||||
device = RflinkSensor(device_id, hass, **config)
|
||||
devices.append(device)
|
||||
|
||||
|
|
|
@ -8,13 +8,15 @@ import asyncio
|
|||
import logging
|
||||
|
||||
from homeassistant.components.rflink import (
|
||||
CONF_ALIASSES, CONF_DEVICE_DEFAULTS, CONF_DEVICES, CONF_FIRE_EVENT,
|
||||
CONF_GROUP, CONF_GROUP_ALIASSES, CONF_NOGROUP_ALIASSES,
|
||||
CONF_SIGNAL_REPETITIONS, DATA_ENTITY_GROUP_LOOKUP, DATA_ENTITY_LOOKUP,
|
||||
DEVICE_DEFAULTS_SCHEMA, DOMAIN, EVENT_KEY_COMMAND, SwitchableRflinkDevice,
|
||||
cv, vol)
|
||||
CONF_ALIASES, CONF_ALIASSES, CONF_DEVICE_DEFAULTS, CONF_DEVICES,
|
||||
CONF_FIRE_EVENT, CONF_GROUP, CONF_GROUP_ALIASES, CONF_GROUP_ALIASSES,
|
||||
CONF_NOGROUP_ALIASES, CONF_NOGROUP_ALIASSES, CONF_SIGNAL_REPETITIONS,
|
||||
DATA_ENTITY_GROUP_LOOKUP, DATA_ENTITY_LOOKUP, DEVICE_DEFAULTS_SCHEMA,
|
||||
DOMAIN, EVENT_KEY_COMMAND, SwitchableRflinkDevice, cv, remove_deprecated,
|
||||
vol)
|
||||
from homeassistant.components.switch import SwitchDevice
|
||||
from homeassistant.const import CONF_NAME, CONF_PLATFORM
|
||||
from homeassistant.helpers.deprecation import get_deprecated
|
||||
|
||||
DEPENDENCIES = ['rflink']
|
||||
|
||||
|
@ -27,15 +29,22 @@ PLATFORM_SCHEMA = vol.Schema({
|
|||
vol.Optional(CONF_DEVICES, default={}): vol.Schema({
|
||||
cv.string: {
|
||||
vol.Optional(CONF_NAME): cv.string,
|
||||
vol.Optional(CONF_ALIASSES, default=[]):
|
||||
vol.Optional(CONF_ALIASES, default=[]):
|
||||
vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Optional(CONF_GROUP_ALIASSES, default=[]):
|
||||
vol.Optional(CONF_GROUP_ALIASES, default=[]):
|
||||
vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Optional(CONF_NOGROUP_ALIASSES, default=[]):
|
||||
vol.Optional(CONF_NOGROUP_ALIASES, default=[]):
|
||||
vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Optional(CONF_FIRE_EVENT, default=False): cv.boolean,
|
||||
vol.Optional(CONF_SIGNAL_REPETITIONS): vol.Coerce(int),
|
||||
vol.Optional(CONF_GROUP, default=True): cv.boolean,
|
||||
# deprecated config options
|
||||
vol.Optional(CONF_ALIASSES):
|
||||
vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Optional(CONF_GROUP_ALIASSES):
|
||||
vol.All(cv.ensure_list, [cv.string]),
|
||||
vol.Optional(CONF_NOGROUP_ALIASSES):
|
||||
vol.All(cv.ensure_list, [cv.string]),
|
||||
},
|
||||
}),
|
||||
})
|
||||
|
@ -46,27 +55,30 @@ def devices_from_config(domain_config, hass=None):
|
|||
devices = []
|
||||
for device_id, config in domain_config[CONF_DEVICES].items():
|
||||
device_config = dict(domain_config[CONF_DEVICE_DEFAULTS], **config)
|
||||
remove_deprecated(device_config)
|
||||
device = RflinkSwitch(device_id, hass, **device_config)
|
||||
devices.append(device)
|
||||
|
||||
# Register entity (and aliasses) to listen to incoming rflink events
|
||||
# Device id and normal aliasses respond to normal and group command
|
||||
# Register entity (and aliases) to listen to incoming rflink events
|
||||
# Device id and normal aliases respond to normal and group command
|
||||
hass.data[DATA_ENTITY_LOOKUP][
|
||||
EVENT_KEY_COMMAND][device_id].append(device)
|
||||
if config[CONF_GROUP]:
|
||||
hass.data[DATA_ENTITY_GROUP_LOOKUP][
|
||||
EVENT_KEY_COMMAND][device_id].append(device)
|
||||
for _id in config[CONF_ALIASSES]:
|
||||
for _id in get_deprecated(config, CONF_ALIASES, CONF_ALIASSES):
|
||||
hass.data[DATA_ENTITY_LOOKUP][
|
||||
EVENT_KEY_COMMAND][_id].append(device)
|
||||
hass.data[DATA_ENTITY_GROUP_LOOKUP][
|
||||
EVENT_KEY_COMMAND][_id].append(device)
|
||||
# group_aliasses only respond to group commands
|
||||
for _id in config[CONF_GROUP_ALIASSES]:
|
||||
# group_aliases only respond to group commands
|
||||
for _id in get_deprecated(
|
||||
config, CONF_GROUP_ALIASES, CONF_GROUP_ALIASSES):
|
||||
hass.data[DATA_ENTITY_GROUP_LOOKUP][
|
||||
EVENT_KEY_COMMAND][_id].append(device)
|
||||
# nogroup_aliasses only respond to normal commands
|
||||
for _id in config[CONF_NOGROUP_ALIASSES]:
|
||||
# nogroup_aliases only respond to normal commands
|
||||
for _id in get_deprecated(
|
||||
config, CONF_NOGROUP_ALIASES, CONF_NOGROUP_ALIASSES):
|
||||
hass.data[DATA_ENTITY_LOOKUP][
|
||||
EVENT_KEY_COMMAND][_id].append(device)
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ CONFIG = {
|
|||
'devices': {
|
||||
'protocol_0_0': {
|
||||
'name': 'test',
|
||||
'aliasses': ['test_alias_0_0'],
|
||||
'aliases': ['test_alias_0_0'],
|
||||
},
|
||||
'dimmable_0_0': {
|
||||
'name': 'dim_test',
|
||||
|
@ -58,7 +58,7 @@ def test_default_setup(hass, monkeypatch):
|
|||
assert light_initial.attributes['assumed_state']
|
||||
|
||||
# light should follow state of the hardware device by interpreting
|
||||
# incoming events for its name and aliasses
|
||||
# incoming events for its name and aliases
|
||||
|
||||
# mock incoming command event for this device
|
||||
event_callback({
|
||||
|
@ -100,7 +100,7 @@ def test_default_setup(hass, monkeypatch):
|
|||
|
||||
assert hass.states.get(DOMAIN + '.test').state == 'off'
|
||||
|
||||
# test following aliasses
|
||||
# test following aliases
|
||||
# mock incoming command event for this device alias
|
||||
event_callback({
|
||||
'id': 'test_alias_0_0',
|
||||
|
@ -185,7 +185,7 @@ def test_firing_bus_event(hass, monkeypatch):
|
|||
'devices': {
|
||||
'protocol_0_0': {
|
||||
'name': 'test',
|
||||
'aliasses': ['test_alias_0_0'],
|
||||
'aliases': ['test_alias_0_0'],
|
||||
'fire_event': True,
|
||||
},
|
||||
},
|
||||
|
@ -418,7 +418,7 @@ def test_group_alias(hass, monkeypatch):
|
|||
'devices': {
|
||||
'protocol_0_0': {
|
||||
'name': 'test',
|
||||
'group_aliasses': ['test_group_0_0'],
|
||||
'group_aliases': ['test_group_0_0'],
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -461,7 +461,7 @@ def test_nogroup_alias(hass, monkeypatch):
|
|||
'devices': {
|
||||
'protocol_0_0': {
|
||||
'name': 'test',
|
||||
'nogroup_aliasses': ['test_nogroup_0_0'],
|
||||
'nogroup_aliases': ['test_nogroup_0_0'],
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
@ -24,7 +24,7 @@ CONFIG = {
|
|||
'devices': {
|
||||
'protocol_0_0': {
|
||||
'name': 'test',
|
||||
'aliasses': ['test_alias_0_0'],
|
||||
'aliases': ['test_alias_0_0'],
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -47,7 +47,7 @@ def test_default_setup(hass, monkeypatch):
|
|||
assert switch_initial.attributes['assumed_state']
|
||||
|
||||
# switch should follow state of the hardware device by interpreting
|
||||
# incoming events for its name and aliasses
|
||||
# incoming events for its name and aliases
|
||||
|
||||
# mock incoming command event for this device
|
||||
event_callback({
|
||||
|
@ -70,7 +70,7 @@ def test_default_setup(hass, monkeypatch):
|
|||
|
||||
assert hass.states.get('switch.test').state == 'off'
|
||||
|
||||
# test following aliasses
|
||||
# test following aliases
|
||||
# mock incoming command event for this device alias
|
||||
event_callback({
|
||||
'id': 'test_alias_0_0',
|
||||
|
@ -112,7 +112,7 @@ def test_group_alias(hass, monkeypatch):
|
|||
'devices': {
|
||||
'protocol_0_0': {
|
||||
'name': 'test',
|
||||
'group_aliasses': ['test_group_0_0'],
|
||||
'group_aliases': ['test_group_0_0'],
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -155,7 +155,7 @@ def test_nogroup_alias(hass, monkeypatch):
|
|||
'devices': {
|
||||
'protocol_0_0': {
|
||||
'name': 'test',
|
||||
'nogroup_aliasses': ['test_nogroup_0_0'],
|
||||
'nogroup_aliases': ['test_nogroup_0_0'],
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
@ -99,7 +99,7 @@ def test_send_no_wait(hass, monkeypatch):
|
|||
'devices': {
|
||||
'protocol_0_0': {
|
||||
'name': 'test',
|
||||
'aliasses': ['test_alias_0_0'],
|
||||
'aliases': ['test_alias_0_0'],
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -192,7 +192,7 @@ def test_error_when_not_connected(hass, monkeypatch):
|
|||
'devices': {
|
||||
'protocol_0_0': {
|
||||
'name': 'test',
|
||||
'aliasses': ['test_alias_0_0'],
|
||||
'aliases': ['test_alias_0_0'],
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue