mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 09:17:53 +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),
|
||||
})
|
||||
|
||||
SENSOR_SCHEMA = vol.All(
|
||||
cv.deprecated(ATTR_ENTITY_ID),
|
||||
SENSOR_SCHEMA,
|
||||
)
|
||||
|
||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||
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
|
||||
})
|
||||
|
||||
COVER_SCHEMA = vol.All(
|
||||
cv.deprecated(CONF_ENTITY_ID),
|
||||
COVER_SCHEMA,
|
||||
)
|
||||
|
||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||
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
|
||||
})
|
||||
|
||||
LIGHT_SCHEMA = vol.All(
|
||||
cv.deprecated(CONF_ENTITY_ID),
|
||||
LIGHT_SCHEMA,
|
||||
)
|
||||
|
||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||
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
|
||||
})
|
||||
|
||||
SENSOR_SCHEMA = vol.All(
|
||||
cv.deprecated(ATTR_ENTITY_ID),
|
||||
SENSOR_SCHEMA,
|
||||
)
|
||||
|
||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||
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
|
||||
})
|
||||
|
||||
SWITCH_SCHEMA = vol.All(
|
||||
cv.deprecated(ATTR_ENTITY_ID),
|
||||
SWITCH_SCHEMA,
|
||||
)
|
||||
|
||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||
vol.Required(CONF_SWITCHES): vol.Schema({cv.slug: SWITCH_SCHEMA}),
|
||||
})
|
||||
|
@ -5,6 +5,8 @@ import os
|
||||
import re
|
||||
from urllib.parse import urlparse
|
||||
from socket import _GLOBAL_DEFAULT_TIMEOUT
|
||||
import logging
|
||||
import inspect
|
||||
|
||||
from typing import Any, Union, TypeVar, Callable, Sequence, Dict
|
||||
|
||||
@ -430,6 +432,22 @@ def ensure_list_csv(value: Any) -> Sequence:
|
||||
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
|
||||
|
||||
def key_dependency(key, dependency):
|
||||
|
@ -441,6 +441,27 @@ def test_datetime():
|
||||
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():
|
||||
"""Test key_dependency validator."""
|
||||
schema = vol.Schema(cv.key_dependency('beer', 'soda'))
|
||||
|
Loading…
x
Reference in New Issue
Block a user