Use entity class attributes for apple_tv (#52664)

* Use entity class attributes for apple_tv

* fix pylint

* tweak
This commit is contained in:
Robert Hillis 2021-07-12 12:29:34 -04:00 committed by GitHub
parent 8c812bc25c
commit ad0ccc1b70
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 37 deletions

View file

@ -83,12 +83,17 @@ async def async_unload_entry(hass, entry):
class AppleTVEntity(Entity): class AppleTVEntity(Entity):
"""Device that sends commands to an Apple TV.""" """Device that sends commands to an Apple TV."""
_attr_should_poll = False
def __init__(self, name, identifier, manager): def __init__(self, name, identifier, manager):
"""Initialize device.""" """Initialize device."""
self.atv = None self.atv = None
self.manager = manager self.manager = manager
self._name = name self._attr_name = name
self._identifier = identifier self._attr_unique_id = identifier
self._attr_device_info = {
"identifiers": {(DOMAIN, identifier)},
}
async def async_added_to_hass(self): async def async_added_to_hass(self):
"""Handle when an entity is about to be added to Home Assistant.""" """Handle when an entity is about to be added to Home Assistant."""
@ -109,13 +114,13 @@ class AppleTVEntity(Entity):
self.async_on_remove( self.async_on_remove(
async_dispatcher_connect( async_dispatcher_connect(
self.hass, f"{SIGNAL_CONNECTED}_{self._identifier}", _async_connected self.hass, f"{SIGNAL_CONNECTED}_{self.unique_id}", _async_connected
) )
) )
self.async_on_remove( self.async_on_remove(
async_dispatcher_connect( async_dispatcher_connect(
self.hass, self.hass,
f"{SIGNAL_DISCONNECTED}_{self._identifier}", f"{SIGNAL_DISCONNECTED}_{self.unique_id}",
_async_disconnected, _async_disconnected,
) )
) )
@ -126,28 +131,6 @@ class AppleTVEntity(Entity):
def async_device_disconnected(self): def async_device_disconnected(self):
"""Handle when connection was lost to device.""" """Handle when connection was lost to device."""
@property
def name(self):
"""Return the name of the device."""
return self._name
@property
def unique_id(self):
"""Return a unique ID."""
return self._identifier
@property
def should_poll(self):
"""No polling needed for Apple TV."""
return False
@property
def device_info(self):
"""Return the device info."""
return {
"identifiers": {(DOMAIN, self._identifier)},
}
class AppleTVManager: class AppleTVManager:
"""Connection and power manager for an Apple TV. """Connection and power manager for an Apple TV.

View file

@ -75,6 +75,8 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
class AppleTvMediaPlayer(AppleTVEntity, MediaPlayerEntity): class AppleTvMediaPlayer(AppleTVEntity, MediaPlayerEntity):
"""Representation of an Apple TV media player.""" """Representation of an Apple TV media player."""
_attr_supported_features = SUPPORT_APPLE_TV
def __init__(self, name, identifier, manager, **kwargs): def __init__(self, name, identifier, manager, **kwargs):
"""Initialize the Apple TV media player.""" """Initialize the Apple TV media player."""
super().__init__(name, identifier, manager, **kwargs) super().__init__(name, identifier, manager, **kwargs)
@ -229,11 +231,6 @@ class AppleTvMediaPlayer(AppleTVEntity, MediaPlayerEntity):
return self._playing.shuffle != ShuffleState.Off return self._playing.shuffle != ShuffleState.Off
return None return None
@property
def supported_features(self):
"""Flag media player features that are supported."""
return SUPPORT_APPLE_TV
def _is_feature_available(self, feature): def _is_feature_available(self, feature):
"""Return if a feature is available.""" """Return if a feature is available."""
if self.atv and self._playing: if self.atv and self._playing:

View file

@ -34,11 +34,6 @@ class AppleTVRemote(AppleTVEntity, RemoteEntity):
"""Return true if device is on.""" """Return true if device is on."""
return self.atv is not None return self.atv is not None
@property
def should_poll(self):
"""No polling needed for Apple TV."""
return False
async def async_turn_on(self, **kwargs): async def async_turn_on(self, **kwargs):
"""Turn the device on.""" """Turn the device on."""
await self.manager.connect() await self.manager.connect()
@ -53,7 +48,7 @@ class AppleTVRemote(AppleTVEntity, RemoteEntity):
delay = kwargs.get(ATTR_DELAY_SECS, DEFAULT_DELAY_SECS) delay = kwargs.get(ATTR_DELAY_SECS, DEFAULT_DELAY_SECS)
if not self.is_on: if not self.is_on:
_LOGGER.error("Unable to send commands, not connected to %s", self._name) _LOGGER.error("Unable to send commands, not connected to %s", self.name)
return return
for _ in range(num_repeats): for _ in range(num_repeats):