From 645f916cf4328cf8c38bf6ef00948fed824925ab Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Tue, 21 Nov 2023 07:51:41 +0100 Subject: [PATCH] Remove support for deprecated light attributes from light scenes (#104254) --- .../components/light/reproduce_state.py | 37 +-------- .../components/light/test_reproduce_state.py | 80 ++----------------- 2 files changed, 8 insertions(+), 109 deletions(-) diff --git a/homeassistant/components/light/reproduce_state.py b/homeassistant/components/light/reproduce_state.py index f055f02ebda..54fcd01843c 100644 --- a/homeassistant/components/light/reproduce_state.py +++ b/homeassistant/components/light/reproduce_state.py @@ -17,15 +17,10 @@ from homeassistant.core import Context, HomeAssistant, State from . import ( ATTR_BRIGHTNESS, - ATTR_BRIGHTNESS_PCT, ATTR_COLOR_MODE, - ATTR_COLOR_NAME, ATTR_COLOR_TEMP, ATTR_EFFECT, - ATTR_FLASH, ATTR_HS_COLOR, - ATTR_KELVIN, - ATTR_PROFILE, ATTR_RGB_COLOR, ATTR_RGBW_COLOR, ATTR_RGBWW_COLOR, @@ -40,13 +35,7 @@ _LOGGER = logging.getLogger(__name__) VALID_STATES = {STATE_ON, STATE_OFF} -ATTR_GROUP = [ - ATTR_BRIGHTNESS, - ATTR_BRIGHTNESS_PCT, - ATTR_EFFECT, - ATTR_FLASH, - ATTR_TRANSITION, -] +ATTR_GROUP = [ATTR_BRIGHTNESS, ATTR_EFFECT] COLOR_GROUP = [ ATTR_HS_COLOR, @@ -55,10 +44,6 @@ COLOR_GROUP = [ ATTR_RGBW_COLOR, ATTR_RGBWW_COLOR, ATTR_XY_COLOR, - # The following color attributes are deprecated - ATTR_PROFILE, - ATTR_COLOR_NAME, - ATTR_KELVIN, ] @@ -79,21 +64,6 @@ COLOR_MODE_TO_ATTRIBUTE = { ColorMode.XY: ColorModeAttr(ATTR_XY_COLOR, ATTR_XY_COLOR), } -DEPRECATED_GROUP = [ - ATTR_BRIGHTNESS_PCT, - ATTR_COLOR_NAME, - ATTR_FLASH, - ATTR_KELVIN, - ATTR_PROFILE, - ATTR_TRANSITION, -] - -DEPRECATION_WARNING = ( - "The use of other attributes than device state attributes is deprecated and will be" - " removed in a future release. Invalid attributes are %s. Read the logs for further" - " details: https://www.home-assistant.io/integrations/scene/" -) - def _color_mode_same(cur_state: State, state: State) -> bool: """Test if color_mode is same.""" @@ -124,11 +94,6 @@ async def _async_reproduce_state( ) return - # Warn if deprecated attributes are used - deprecated_attrs = [attr for attr in state.attributes if attr in DEPRECATED_GROUP] - if deprecated_attrs: - _LOGGER.warning(DEPRECATION_WARNING, deprecated_attrs) - # Return if we are already at the right state. if ( cur_state.state == state.state diff --git a/tests/components/light/test_reproduce_state.py b/tests/components/light/test_reproduce_state.py index 816bde430e7..65b83aa0269 100644 --- a/tests/components/light/test_reproduce_state.py +++ b/tests/components/light/test_reproduce_state.py @@ -2,35 +2,24 @@ import pytest from homeassistant.components import light -from homeassistant.components.light.reproduce_state import DEPRECATION_WARNING from homeassistant.core import HomeAssistant, State from homeassistant.helpers.state import async_reproduce_state from tests.common import async_mock_service VALID_BRIGHTNESS = {"brightness": 180} -VALID_FLASH = {"flash": "short"} VALID_EFFECT = {"effect": "random"} -VALID_TRANSITION = {"transition": 15} -VALID_COLOR_NAME = {"color_name": "red"} VALID_COLOR_TEMP = {"color_temp": 240} VALID_HS_COLOR = {"hs_color": (345, 75)} -VALID_KELVIN = {"kelvin": 4000} -VALID_PROFILE = {"profile": "relax"} VALID_RGB_COLOR = {"rgb_color": (255, 63, 111)} VALID_RGBW_COLOR = {"rgbw_color": (255, 63, 111, 10)} VALID_RGBWW_COLOR = {"rgbww_color": (255, 63, 111, 10, 20)} VALID_XY_COLOR = {"xy_color": (0.59, 0.274)} NONE_BRIGHTNESS = {"brightness": None} -NONE_FLASH = {"flash": None} NONE_EFFECT = {"effect": None} -NONE_TRANSITION = {"transition": None} -NONE_COLOR_NAME = {"color_name": None} NONE_COLOR_TEMP = {"color_temp": None} NONE_HS_COLOR = {"hs_color": None} -NONE_KELVIN = {"kelvin": None} -NONE_PROFILE = {"profile": None} NONE_RGB_COLOR = {"rgb_color": None} NONE_RGBW_COLOR = {"rgbw_color": None} NONE_RGBWW_COLOR = {"rgbww_color": None} @@ -43,14 +32,9 @@ async def test_reproducing_states( """Test reproducing Light states.""" hass.states.async_set("light.entity_off", "off", {}) hass.states.async_set("light.entity_bright", "on", VALID_BRIGHTNESS) - hass.states.async_set("light.entity_flash", "on", VALID_FLASH) hass.states.async_set("light.entity_effect", "on", VALID_EFFECT) - hass.states.async_set("light.entity_trans", "on", VALID_TRANSITION) - hass.states.async_set("light.entity_name", "on", VALID_COLOR_NAME) hass.states.async_set("light.entity_temp", "on", VALID_COLOR_TEMP) hass.states.async_set("light.entity_hs", "on", VALID_HS_COLOR) - hass.states.async_set("light.entity_kelvin", "on", VALID_KELVIN) - hass.states.async_set("light.entity_profile", "on", VALID_PROFILE) hass.states.async_set("light.entity_rgb", "on", VALID_RGB_COLOR) hass.states.async_set("light.entity_xy", "on", VALID_XY_COLOR) @@ -63,14 +47,9 @@ async def test_reproducing_states( [ State("light.entity_off", "off"), State("light.entity_bright", "on", VALID_BRIGHTNESS), - State("light.entity_flash", "on", VALID_FLASH), State("light.entity_effect", "on", VALID_EFFECT), - State("light.entity_trans", "on", VALID_TRANSITION), - State("light.entity_name", "on", VALID_COLOR_NAME), State("light.entity_temp", "on", VALID_COLOR_TEMP), State("light.entity_hs", "on", VALID_HS_COLOR), - State("light.entity_kelvin", "on", VALID_KELVIN), - State("light.entity_profile", "on", VALID_PROFILE), State("light.entity_rgb", "on", VALID_RGB_COLOR), State("light.entity_xy", "on", VALID_XY_COLOR), ], @@ -92,20 +71,15 @@ async def test_reproducing_states( [ State("light.entity_xy", "off"), State("light.entity_off", "on", VALID_BRIGHTNESS), - State("light.entity_bright", "on", VALID_FLASH), - State("light.entity_flash", "on", VALID_EFFECT), - State("light.entity_effect", "on", VALID_TRANSITION), - State("light.entity_trans", "on", VALID_COLOR_NAME), - State("light.entity_name", "on", VALID_COLOR_TEMP), + State("light.entity_bright", "on", VALID_EFFECT), + State("light.entity_effect", "on", VALID_COLOR_TEMP), State("light.entity_temp", "on", VALID_HS_COLOR), - State("light.entity_hs", "on", VALID_KELVIN), - State("light.entity_kelvin", "on", VALID_PROFILE), - State("light.entity_profile", "on", VALID_RGB_COLOR), + State("light.entity_hs", "on", VALID_RGB_COLOR), State("light.entity_rgb", "on", VALID_XY_COLOR), ], ) - assert len(turn_on_calls) == 11 + assert len(turn_on_calls) == 6 expected_calls = [] @@ -113,42 +87,22 @@ async def test_reproducing_states( expected_off["entity_id"] = "light.entity_off" expected_calls.append(expected_off) - expected_bright = dict(VALID_FLASH) + expected_bright = dict(VALID_EFFECT) expected_bright["entity_id"] = "light.entity_bright" expected_calls.append(expected_bright) - expected_flash = dict(VALID_EFFECT) - expected_flash["entity_id"] = "light.entity_flash" - expected_calls.append(expected_flash) - - expected_effect = dict(VALID_TRANSITION) + expected_effect = dict(VALID_COLOR_TEMP) expected_effect["entity_id"] = "light.entity_effect" expected_calls.append(expected_effect) - expected_trans = dict(VALID_COLOR_NAME) - expected_trans["entity_id"] = "light.entity_trans" - expected_calls.append(expected_trans) - - expected_name = dict(VALID_COLOR_TEMP) - expected_name["entity_id"] = "light.entity_name" - expected_calls.append(expected_name) - expected_temp = dict(VALID_HS_COLOR) expected_temp["entity_id"] = "light.entity_temp" expected_calls.append(expected_temp) - expected_hs = dict(VALID_KELVIN) + expected_hs = dict(VALID_RGB_COLOR) expected_hs["entity_id"] = "light.entity_hs" expected_calls.append(expected_hs) - expected_kelvin = dict(VALID_PROFILE) - expected_kelvin["entity_id"] = "light.entity_kelvin" - expected_calls.append(expected_kelvin) - - expected_profile = dict(VALID_RGB_COLOR) - expected_profile["entity_id"] = "light.entity_profile" - expected_calls.append(expected_profile) - expected_rgb = dict(VALID_XY_COLOR) expected_rgb["entity_id"] = "light.entity_rgb" expected_calls.append(expected_rgb) @@ -191,10 +145,8 @@ async def test_filter_color_modes( """Test filtering of parameters according to color mode.""" hass.states.async_set("light.entity", "off", {}) all_colors = { - **VALID_COLOR_NAME, **VALID_COLOR_TEMP, **VALID_HS_COLOR, - **VALID_KELVIN, **VALID_RGB_COLOR, **VALID_RGBW_COLOR, **VALID_RGBWW_COLOR, @@ -240,31 +192,13 @@ async def test_filter_color_modes( assert len(turn_on_calls) == 1 -async def test_deprecation_warning( - hass: HomeAssistant, caplog: pytest.LogCaptureFixture -) -> None: - """Test deprecation warning.""" - hass.states.async_set("light.entity_off", "off", {}) - turn_on_calls = async_mock_service(hass, "light", "turn_on") - await async_reproduce_state( - hass, [State("light.entity_off", "on", {"brightness_pct": 80})] - ) - assert len(turn_on_calls) == 1 - assert DEPRECATION_WARNING % ["brightness_pct"] in caplog.text - - @pytest.mark.parametrize( "saved_state", ( NONE_BRIGHTNESS, - NONE_FLASH, NONE_EFFECT, - NONE_TRANSITION, - NONE_COLOR_NAME, NONE_COLOR_TEMP, NONE_HS_COLOR, - NONE_KELVIN, - NONE_PROFILE, NONE_RGB_COLOR, NONE_RGBW_COLOR, NONE_RGBWW_COLOR,