From e2b89e4650dc7e6bbd24c54bd1e326d579216c0e Mon Sep 17 00:00:00 2001 From: Robert Hillis Date: Mon, 5 Jul 2021 03:37:09 -0400 Subject: [PATCH] Use entity class attributes for alpha_vantage (#52520) * Use entity class attributes for alpha_vantage * tweak * clean up --- .../components/alpha_vantage/sensor.py | 108 ++++++------------ 1 file changed, 34 insertions(+), 74 deletions(-) diff --git a/homeassistant/components/alpha_vantage/sensor.py b/homeassistant/components/alpha_vantage/sensor.py index 0788772a45b..512de247ff2 100644 --- a/homeassistant/components/alpha_vantage/sensor.py +++ b/homeassistant/components/alpha_vantage/sensor.py @@ -110,48 +110,27 @@ class AlphaVantageSensor(SensorEntity): def __init__(self, timeseries, symbol): """Initialize the sensor.""" self._symbol = symbol[CONF_SYMBOL] - self._name = symbol.get(CONF_NAME, self._symbol) + self._attr_name = symbol.get(CONF_NAME, self._symbol) self._timeseries = timeseries - self.values = None - self._unit_of_measurement = symbol.get(CONF_CURRENCY, self._symbol) - self._icon = ICONS.get(symbol.get(CONF_CURRENCY, "USD")) - - @property - def name(self): - """Return the name of the sensor.""" - return self._name - - @property - def unit_of_measurement(self): - """Return the unit of measurement of this entity, if any.""" - return self._unit_of_measurement - - @property - def state(self): - """Return the state of the sensor.""" - return self.values["1. open"] - - @property - def extra_state_attributes(self): - """Return the state attributes.""" - if self.values is not None: - return { - ATTR_ATTRIBUTION: ATTRIBUTION, - ATTR_CLOSE: self.values["4. close"], - ATTR_HIGH: self.values["2. high"], - ATTR_LOW: self.values["3. low"], - } - - @property - def icon(self): - """Return the icon to use in the frontend, if any.""" - return self._icon + self._attr_unit_of_measurement = symbol.get(CONF_CURRENCY, self._symbol) + self._attr_icon = ICONS.get(symbol.get(CONF_CURRENCY, "USD")) def update(self): """Get the latest data and updates the states.""" _LOGGER.debug("Requesting new data for symbol %s", self._symbol) all_values, _ = self._timeseries.get_intraday(self._symbol) - self.values = next(iter(all_values.values())) + values = next(iter(all_values.values())) + self._attr_state = values["1. open"] + self._attr_extra_state_attributes = ( + { + ATTR_ATTRIBUTION: ATTRIBUTION, + ATTR_CLOSE: values["4. close"], + ATTR_HIGH: values["2. high"], + ATTR_LOW: values["3. low"], + } + if values is not None + else None + ) _LOGGER.debug("Received new values for symbol %s", self._symbol) @@ -163,43 +142,13 @@ class AlphaVantageForeignExchange(SensorEntity): self._foreign_exchange = foreign_exchange self._from_currency = config[CONF_FROM] self._to_currency = config[CONF_TO] - if CONF_NAME in config: - self._name = config.get(CONF_NAME) - else: - self._name = f"{self._to_currency}/{self._from_currency}" - self._unit_of_measurement = self._to_currency - self._icon = ICONS.get(self._from_currency, "USD") - self.values = None - - @property - def name(self): - """Return the name of the sensor.""" - return self._name - - @property - def unit_of_measurement(self): - """Return the unit of measurement of this entity, if any.""" - return self._unit_of_measurement - - @property - def state(self): - """Return the state of the sensor.""" - return round(float(self.values["5. Exchange Rate"]), 4) - - @property - def icon(self): - """Return the icon to use in the frontend, if any.""" - return self._icon - - @property - def extra_state_attributes(self): - """Return the state attributes.""" - if self.values is not None: - return { - ATTR_ATTRIBUTION: ATTRIBUTION, - CONF_FROM: self._from_currency, - CONF_TO: self._to_currency, - } + self._attr_name = ( + config.get(CONF_NAME) + if CONF_NAME in config + else f"{self._to_currency}/{self._from_currency}" + ) + self._attr_icon = ICONS.get(self._from_currency, "USD") + self._attr_unit_of_measurement = self._to_currency def update(self): """Get the latest data and updates the states.""" @@ -208,9 +157,20 @@ class AlphaVantageForeignExchange(SensorEntity): self._from_currency, self._to_currency, ) - self.values, _ = self._foreign_exchange.get_currency_exchange_rate( + values, _ = self._foreign_exchange.get_currency_exchange_rate( from_currency=self._from_currency, to_currency=self._to_currency ) + self._attr_state = round(float(values["5. Exchange Rate"]), 4) + self._attr_extra_state_attributes = ( + { + ATTR_ATTRIBUTION: ATTRIBUTION, + CONF_FROM: self._from_currency, + CONF_TO: self._to_currency, + } + if values is not None + else None + ) + _LOGGER.debug( "Received new data for forex %s - %s", self._from_currency,