mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 05:07:41 +00:00
Deprecate explicit entity_id in template platforms (#11123)
* Deprecate explicit entity_id in template platforms * Use config validator for deprecation * Fix copy/paste typos * Also print the config value * Add test for config validator * Assert the module name that logged the message
This commit is contained in:
parent
88b70e964c
commit
9e0ca719ed
@ -38,6 +38,11 @@ SENSOR_SCHEMA = vol.Schema({
|
|||||||
vol.All(cv.time_period, cv.positive_timedelta),
|
vol.All(cv.time_period, cv.positive_timedelta),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
SENSOR_SCHEMA = vol.All(
|
||||||
|
cv.deprecated(ATTR_ENTITY_ID),
|
||||||
|
SENSOR_SCHEMA,
|
||||||
|
)
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
vol.Required(CONF_SENSORS): vol.Schema({cv.slug: SENSOR_SCHEMA}),
|
vol.Required(CONF_SENSORS): vol.Schema({cv.slug: SENSOR_SCHEMA}),
|
||||||
})
|
})
|
||||||
|
@ -67,6 +67,11 @@ COVER_SCHEMA = vol.Schema({
|
|||||||
vol.Optional(CONF_ENTITY_ID): cv.entity_ids
|
vol.Optional(CONF_ENTITY_ID): cv.entity_ids
|
||||||
})
|
})
|
||||||
|
|
||||||
|
COVER_SCHEMA = vol.All(
|
||||||
|
cv.deprecated(CONF_ENTITY_ID),
|
||||||
|
COVER_SCHEMA,
|
||||||
|
)
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
vol.Required(CONF_COVERS): vol.Schema({cv.slug: COVER_SCHEMA}),
|
vol.Required(CONF_COVERS): vol.Schema({cv.slug: COVER_SCHEMA}),
|
||||||
})
|
})
|
||||||
|
@ -44,6 +44,11 @@ LIGHT_SCHEMA = vol.Schema({
|
|||||||
vol.Optional(CONF_ENTITY_ID): cv.entity_ids
|
vol.Optional(CONF_ENTITY_ID): cv.entity_ids
|
||||||
})
|
})
|
||||||
|
|
||||||
|
LIGHT_SCHEMA = vol.All(
|
||||||
|
cv.deprecated(CONF_ENTITY_ID),
|
||||||
|
LIGHT_SCHEMA,
|
||||||
|
)
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
vol.Required(CONF_LIGHTS): vol.Schema({cv.slug: LIGHT_SCHEMA}),
|
vol.Required(CONF_LIGHTS): vol.Schema({cv.slug: LIGHT_SCHEMA}),
|
||||||
})
|
})
|
||||||
|
@ -31,6 +31,11 @@ SENSOR_SCHEMA = vol.Schema({
|
|||||||
vol.Optional(ATTR_ENTITY_ID): cv.entity_ids
|
vol.Optional(ATTR_ENTITY_ID): cv.entity_ids
|
||||||
})
|
})
|
||||||
|
|
||||||
|
SENSOR_SCHEMA = vol.All(
|
||||||
|
cv.deprecated(ATTR_ENTITY_ID),
|
||||||
|
SENSOR_SCHEMA,
|
||||||
|
)
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
vol.Required(CONF_SENSORS): vol.Schema({cv.slug: SENSOR_SCHEMA}),
|
vol.Required(CONF_SENSORS): vol.Schema({cv.slug: SENSOR_SCHEMA}),
|
||||||
})
|
})
|
||||||
|
@ -38,6 +38,11 @@ SWITCH_SCHEMA = vol.Schema({
|
|||||||
vol.Optional(ATTR_ENTITY_ID): cv.entity_ids
|
vol.Optional(ATTR_ENTITY_ID): cv.entity_ids
|
||||||
})
|
})
|
||||||
|
|
||||||
|
SWITCH_SCHEMA = vol.All(
|
||||||
|
cv.deprecated(ATTR_ENTITY_ID),
|
||||||
|
SWITCH_SCHEMA,
|
||||||
|
)
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
vol.Required(CONF_SWITCHES): vol.Schema({cv.slug: SWITCH_SCHEMA}),
|
vol.Required(CONF_SWITCHES): vol.Schema({cv.slug: SWITCH_SCHEMA}),
|
||||||
})
|
})
|
||||||
|
@ -5,6 +5,8 @@ import os
|
|||||||
import re
|
import re
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
from socket import _GLOBAL_DEFAULT_TIMEOUT
|
from socket import _GLOBAL_DEFAULT_TIMEOUT
|
||||||
|
import logging
|
||||||
|
import inspect
|
||||||
|
|
||||||
from typing import Any, Union, TypeVar, Callable, Sequence, Dict
|
from typing import Any, Union, TypeVar, Callable, Sequence, Dict
|
||||||
|
|
||||||
@ -430,6 +432,22 @@ def ensure_list_csv(value: Any) -> Sequence:
|
|||||||
return ensure_list(value)
|
return ensure_list(value)
|
||||||
|
|
||||||
|
|
||||||
|
def deprecated(key):
|
||||||
|
"""Log key as deprecated."""
|
||||||
|
module_name = inspect.getmodule(inspect.stack()[1][0]).__name__
|
||||||
|
|
||||||
|
def validator(config):
|
||||||
|
"""Check if key is in config and log warning."""
|
||||||
|
if key in config:
|
||||||
|
logging.getLogger(module_name).warning(
|
||||||
|
"The '%s' option (with value '%s') is deprecated, please "
|
||||||
|
"remove it from your configuration.", key, config[key])
|
||||||
|
|
||||||
|
return config
|
||||||
|
|
||||||
|
return validator
|
||||||
|
|
||||||
|
|
||||||
# Validator helpers
|
# Validator helpers
|
||||||
|
|
||||||
def key_dependency(key, dependency):
|
def key_dependency(key, dependency):
|
||||||
|
@ -441,6 +441,27 @@ def test_datetime():
|
|||||||
schema('2016-11-23T18:59:08')
|
schema('2016-11-23T18:59:08')
|
||||||
|
|
||||||
|
|
||||||
|
def test_deprecated(caplog):
|
||||||
|
"""Test deprecation log."""
|
||||||
|
schema = vol.Schema({
|
||||||
|
'venus': cv.boolean,
|
||||||
|
'mars': cv.boolean
|
||||||
|
})
|
||||||
|
deprecated_schema = vol.All(
|
||||||
|
cv.deprecated('mars'),
|
||||||
|
schema
|
||||||
|
)
|
||||||
|
|
||||||
|
deprecated_schema({'venus': True})
|
||||||
|
assert len(caplog.records) == 0
|
||||||
|
|
||||||
|
deprecated_schema({'mars': True})
|
||||||
|
assert len(caplog.records) == 1
|
||||||
|
assert caplog.records[0].name == __name__
|
||||||
|
assert ("The 'mars' option (with value 'True') is deprecated, "
|
||||||
|
"please remove it from your configuration.") in caplog.text
|
||||||
|
|
||||||
|
|
||||||
def test_key_dependency():
|
def test_key_dependency():
|
||||||
"""Test key_dependency validator."""
|
"""Test key_dependency validator."""
|
||||||
schema = vol.Schema(cv.key_dependency('beer', 'soda'))
|
schema = vol.Schema(cv.key_dependency('beer', 'soda'))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user