From 4a042e7d73414177dcf44e5d34ee776a903b3f38 Mon Sep 17 00:00:00 2001 From: Robert Hillis Date: Sat, 29 Jan 2022 09:01:00 -0500 Subject: [PATCH] Bump pyefergy to 22.1.1 (#65156) * Bump pyefergy to 22.1.0 * uno mas * uno mas * uno mas --- homeassistant/components/efergy/manifest.json | 2 +- homeassistant/components/efergy/sensor.py | 22 ++++++++++++------- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/efergy/__init__.py | 20 ++++++++--------- 5 files changed, 27 insertions(+), 21 deletions(-) diff --git a/homeassistant/components/efergy/manifest.json b/homeassistant/components/efergy/manifest.json index d3482738450..fc90591cae6 100644 --- a/homeassistant/components/efergy/manifest.json +++ b/homeassistant/components/efergy/manifest.json @@ -3,7 +3,7 @@ "name": "Efergy", "config_flow": true, "documentation": "https://www.home-assistant.io/integrations/efergy", - "requirements": ["pyefergy==0.1.5"], + "requirements": ["pyefergy==22.1.1"], "codeowners": ["@tkdrob"], "iot_class": "cloud_polling", "loggers": ["iso4217", "pyefergy"] diff --git a/homeassistant/components/efergy/sensor.py b/homeassistant/components/efergy/sensor.py index 21d4002bcdb..00a10b713d2 100644 --- a/homeassistant/components/efergy/sensor.py +++ b/homeassistant/components/efergy/sensor.py @@ -3,8 +3,10 @@ from __future__ import annotations import logging from re import sub +from typing import cast -from pyefergy import Efergy, exceptions +from pyefergy import Efergy +from pyefergy.exceptions import ConnectError, DataError, ServiceError from homeassistant.components.sensor import ( SensorDeviceClass, @@ -16,6 +18,7 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.const import ENERGY_KILO_WATT_HOUR, POWER_WATT from homeassistant.core import HomeAssistant from homeassistant.helpers import entity_platform +from homeassistant.helpers.typing import StateType from . import EfergyEntity from .const import CONF_CURRENT_VALUES, DATA_KEY_API, DOMAIN @@ -123,8 +126,8 @@ async def async_setup_entry( ) ) else: - description.entity_registry_enabled_default = len(api.info["sids"]) > 1 - for sid in api.info["sids"]: + description.entity_registry_enabled_default = len(api.sids) > 1 + for sid in api.sids: sensors.append( EfergySensor( api, @@ -146,14 +149,16 @@ class EfergySensor(EfergyEntity, SensorEntity): server_unique_id: str, period: str | None = None, currency: str | None = None, - sid: str = "", + sid: int | None = None, ) -> None: """Initialize the sensor.""" super().__init__(api, server_unique_id) self.entity_description = description if description.key == CONF_CURRENT_VALUES: - self._attr_name = f"{description.name}_{sid}" - self._attr_unique_id = f"{server_unique_id}/{description.key}_{sid}" + self._attr_name = f"{description.name}_{'' if sid is None else sid}" + self._attr_unique_id = ( + f"{server_unique_id}/{description.key}_{'' if sid is None else sid}" + ) if "cost" in description.key: self._attr_native_unit_of_measurement = currency self.sid = sid @@ -162,10 +167,11 @@ class EfergySensor(EfergyEntity, SensorEntity): async def async_update(self) -> None: """Get the Efergy monitor data from the web service.""" try: - self._attr_native_value = await self.api.async_get_reading( + data = await self.api.async_get_reading( self.entity_description.key, period=self.period, sid=self.sid ) - except (exceptions.DataError, exceptions.ConnectError) as ex: + self._attr_native_value = cast(StateType, data) + except (ConnectError, DataError, ServiceError) as ex: if self._attr_available: self._attr_available = False _LOGGER.error("Error getting data: %s", ex) diff --git a/requirements_all.txt b/requirements_all.txt index 6cb6cfe7e66..157acea0f53 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1491,7 +1491,7 @@ pyeconet==0.1.14 pyedimax==0.2.1 # homeassistant.components.efergy -pyefergy==0.1.5 +pyefergy==22.1.1 # homeassistant.components.eight_sleep pyeight==0.2.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 44b8d284982..07ce89ccd05 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -920,7 +920,7 @@ pydispatcher==2.0.5 pyeconet==0.1.14 # homeassistant.components.efergy -pyefergy==0.1.5 +pyefergy==22.1.1 # homeassistant.components.everlights pyeverlights==0.1.0 diff --git a/tests/components/efergy/__init__.py b/tests/components/efergy/__init__.py index 4c26e25e5f4..ddddc56f4e4 100644 --- a/tests/components/efergy/__init__.py +++ b/tests/components/efergy/__init__.py @@ -57,9 +57,9 @@ async def mock_responses( """Mock responses from Efergy.""" base_url = "https://engage.efergy.com/mobile_proxy/" api = Efergy( - token, session=async_get_clientsession(hass), utc_offset=hass.config.time_zone + token, session=async_get_clientsession(hass), utc_offset="America/New_York" ) - offset = api._utc_offset # pylint: disable=protected-access + assert api._utc_offset == 300 if error: aioclient_mock.get( f"{base_url}getInstant?token={token}", @@ -75,19 +75,19 @@ async def mock_responses( text=load_fixture("efergy/instant.json"), ) aioclient_mock.get( - f"{base_url}getEnergy?token={token}&offset={offset}&period=day", + f"{base_url}getEnergy?period=day", text=load_fixture("efergy/daily_energy.json"), ) aioclient_mock.get( - f"{base_url}getEnergy?token={token}&offset={offset}&period=week", + f"{base_url}getEnergy?period=week", text=load_fixture("efergy/weekly_energy.json"), ) aioclient_mock.get( - f"{base_url}getEnergy?token={token}&offset={offset}&period=month", + f"{base_url}getEnergy?period=month", text=load_fixture("efergy/monthly_energy.json"), ) aioclient_mock.get( - f"{base_url}getEnergy?token={token}&offset={offset}&period=year", + f"{base_url}getEnergy?period=year", text=load_fixture("efergy/yearly_energy.json"), ) aioclient_mock.get( @@ -95,19 +95,19 @@ async def mock_responses( text=load_fixture("efergy/budget.json"), ) aioclient_mock.get( - f"{base_url}getCost?token={token}&offset={offset}&period=day", + f"{base_url}getCost?period=day", text=load_fixture("efergy/daily_cost.json"), ) aioclient_mock.get( - f"{base_url}getCost?token={token}&offset={offset}&period=week", + f"{base_url}getCost?period=week", text=load_fixture("efergy/weekly_cost.json"), ) aioclient_mock.get( - f"{base_url}getCost?token={token}&offset={offset}&period=month", + f"{base_url}getCost?period=month", text=load_fixture("efergy/monthly_cost.json"), ) aioclient_mock.get( - f"{base_url}getCost?token={token}&offset={offset}&period=year", + f"{base_url}getCost?period=year", text=load_fixture("efergy/yearly_cost.json"), ) if token == TOKEN: