From aa60d362fd92769afe95825e4cb2776d05ce1a96 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Sun, 26 Apr 2020 02:12:36 +0200 Subject: [PATCH] Rename RemoteDevice to RemoteEntity (#34676) --- homeassistant/components/apple_tv/remote.py | 2 +- homeassistant/components/broadlink/remote.py | 4 ++-- homeassistant/components/demo/remote.py | 4 ++-- homeassistant/components/directv/remote.py | 4 ++-- homeassistant/components/harmony/remote.py | 2 +- homeassistant/components/itach/remote.py | 2 +- homeassistant/components/remote/__init__.py | 14 +++++++++++++- homeassistant/components/roku/remote.py | 4 ++-- homeassistant/components/xiaomi_miio/remote.py | 4 ++-- tests/components/remote/test_init.py | 10 ++++++++++ 10 files changed, 36 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/apple_tv/remote.py b/homeassistant/components/apple_tv/remote.py index dd784cc449d..4f935ba0ab8 100644 --- a/homeassistant/components/apple_tv/remote.py +++ b/homeassistant/components/apple_tv/remote.py @@ -17,7 +17,7 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info= async_add_entities([AppleTVRemote(atv, power, name)]) -class AppleTVRemote(remote.RemoteDevice): +class AppleTVRemote(remote.RemoteEntity): """Device that sends commands to an Apple TV.""" def __init__(self, atv, power, name): diff --git a/homeassistant/components/broadlink/remote.py b/homeassistant/components/broadlink/remote.py index 177cf2ee0bd..364fa39cdb1 100644 --- a/homeassistant/components/broadlink/remote.py +++ b/homeassistant/components/broadlink/remote.py @@ -22,7 +22,7 @@ from homeassistant.components.remote import ( DOMAIN as COMPONENT, PLATFORM_SCHEMA, SUPPORT_LEARN_COMMAND, - RemoteDevice, + RemoteEntity, ) from homeassistant.const import CONF_HOST, CONF_MAC, CONF_NAME, CONF_TIMEOUT, CONF_TYPE from homeassistant.core import callback @@ -124,7 +124,7 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info= async_add_entities([remote], False) -class BroadlinkRemote(RemoteDevice): +class BroadlinkRemote(RemoteEntity): """Representation of a Broadlink remote.""" def __init__(self, name, unique_id, api, code_storage, flag_storage): diff --git a/homeassistant/components/demo/remote.py b/homeassistant/components/demo/remote.py index 70e0d3c8b6e..9d12621fef1 100644 --- a/homeassistant/components/demo/remote.py +++ b/homeassistant/components/demo/remote.py @@ -1,5 +1,5 @@ """Demo platform that has two fake remotes.""" -from homeassistant.components.remote import RemoteDevice +from homeassistant.components.remote import RemoteEntity from homeassistant.const import DEVICE_DEFAULT_NAME @@ -18,7 +18,7 @@ def setup_platform(hass, config, add_entities_callback, discovery_info=None): ) -class DemoRemote(RemoteDevice): +class DemoRemote(RemoteEntity): """Representation of a demo remote.""" def __init__(self, name, state, icon): diff --git a/homeassistant/components/directv/remote.py b/homeassistant/components/directv/remote.py index 8bc7c220833..776ce7a229b 100644 --- a/homeassistant/components/directv/remote.py +++ b/homeassistant/components/directv/remote.py @@ -5,7 +5,7 @@ from typing import Any, Callable, Iterable, List from directv import DIRECTV, DIRECTVError -from homeassistant.components.remote import RemoteDevice +from homeassistant.components.remote import RemoteEntity from homeassistant.config_entries import ConfigEntry from homeassistant.helpers.typing import HomeAssistantType @@ -36,7 +36,7 @@ async def async_setup_entry( async_add_entities(entities, True) -class DIRECTVRemote(DIRECTVEntity, RemoteDevice): +class DIRECTVRemote(DIRECTVEntity, RemoteEntity): """Device that sends commands to a DirecTV receiver.""" def __init__(self, *, dtv: DIRECTV, name: str, address: str = "0") -> None: diff --git a/homeassistant/components/harmony/remote.py b/homeassistant/components/harmony/remote.py index 147ee75a863..25b68b42e72 100644 --- a/homeassistant/components/harmony/remote.py +++ b/homeassistant/components/harmony/remote.py @@ -125,7 +125,7 @@ async def async_setup_entry( ) -class HarmonyRemote(remote.RemoteDevice): +class HarmonyRemote(remote.RemoteEntity): """Remote representation used to control a Harmony device.""" def __init__(self, name, unique_id, host, activity, out_path, delay_secs): diff --git a/homeassistant/components/itach/remote.py b/homeassistant/components/itach/remote.py index 5390111890c..2a1a2eac0ca 100644 --- a/homeassistant/components/itach/remote.py +++ b/homeassistant/components/itach/remote.py @@ -84,7 +84,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None): return True -class ITachIP2IRRemote(remote.RemoteDevice): +class ITachIP2IRRemote(remote.RemoteEntity): """Device that sends commands to an ITachIP2IR device.""" def __init__(self, itachip2ir, name): diff --git a/homeassistant/components/remote/__init__.py b/homeassistant/components/remote/__init__.py index 580c0a3b152..ca9de0bfb62 100644 --- a/homeassistant/components/remote/__init__.py +++ b/homeassistant/components/remote/__init__.py @@ -122,7 +122,7 @@ async def async_unload_entry(hass: HomeAssistantType, entry: ConfigEntry) -> boo return await cast(EntityComponent, hass.data[DOMAIN]).async_unload_entry(entry) -class RemoteDevice(ToggleEntity): +class RemoteEntity(ToggleEntity): """Representation of a remote.""" @property @@ -149,3 +149,15 @@ class RemoteDevice(ToggleEntity): """Learn a command from a device.""" assert self.hass is not None await self.hass.async_add_executor_job(ft.partial(self.learn_command, **kwargs)) + + +class RemoteDevice(RemoteEntity): + """Representation of a remote (for backwards compatibility).""" + + def __init_subclass__(cls, **kwargs): + """Print deprecation warning.""" + super().__init_subclass__(**kwargs) + _LOGGER.warning( + "RemoteDevice is deprecated, modify %s to extend RemoteEntity", + cls.__name__, + ) diff --git a/homeassistant/components/roku/remote.py b/homeassistant/components/roku/remote.py index 999747c9a27..3a9adf3518c 100644 --- a/homeassistant/components/roku/remote.py +++ b/homeassistant/components/roku/remote.py @@ -7,7 +7,7 @@ from requests.exceptions import ( ) from roku import RokuException -from homeassistant.components.remote import RemoteDevice +from homeassistant.components.remote import RemoteEntity from homeassistant.config_entries import ConfigEntry from homeassistant.helpers.typing import HomeAssistantType @@ -24,7 +24,7 @@ async def async_setup_entry( async_add_entities([RokuRemote(roku)], True) -class RokuRemote(RemoteDevice): +class RokuRemote(RemoteEntity): """Device that sends commands to an Roku.""" def __init__(self, roku): diff --git a/homeassistant/components/xiaomi_miio/remote.py b/homeassistant/components/xiaomi_miio/remote.py index 8c4d68208b4..fb188368127 100644 --- a/homeassistant/components/xiaomi_miio/remote.py +++ b/homeassistant/components/xiaomi_miio/remote.py @@ -12,7 +12,7 @@ from homeassistant.components.remote import ( ATTR_NUM_REPEATS, DEFAULT_DELAY_SECS, PLATFORM_SCHEMA, - RemoteDevice, + RemoteEntity, ) from homeassistant.const import ( ATTR_ENTITY_ID, @@ -165,7 +165,7 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info= ) -class XiaomiMiioRemote(RemoteDevice): +class XiaomiMiioRemote(RemoteEntity): """Representation of a Xiaomi Miio Remote device.""" def __init__(self, friendly_name, device, unique_id, slot, timeout, commands): diff --git a/tests/components/remote/test_init.py b/tests/components/remote/test_init.py index 24210a38d5c..031131276fe 100644 --- a/tests/components/remote/test_init.py +++ b/tests/components/remote/test_init.py @@ -117,3 +117,13 @@ class TestRemote(unittest.TestCase): assert call.domain == remote.DOMAIN assert call.service == SERVICE_LEARN_COMMAND assert call.data[ATTR_ENTITY_ID] == "entity_id_val" + + +def test_deprecated_base_class(caplog): + """Test deprecated base class.""" + + class CustomRemote(remote.RemoteDevice): + pass + + CustomRemote() + assert "RemoteDevice is deprecated, modify CustomRemote" in caplog.text