mirror of
https://github.com/home-assistant/core.git
synced 2025-04-25 01:38:02 +00:00
Update ovoenergy to 2.0.0 (#115921)
Co-authored-by: J. Nick Koston <nick@koston.org>
This commit is contained in:
parent
354e8e92f3
commit
6985d36f18
@ -7,13 +7,14 @@ from datetime import timedelta
|
||||
import logging
|
||||
|
||||
import aiohttp
|
||||
from ovoenergy import OVOEnergy
|
||||
from ovoenergy.models import OVODailyUsage
|
||||
from ovoenergy.ovoenergy import OVOEnergy
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME, Platform
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
|
||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
|
||||
from homeassistant.helpers.update_coordinator import (
|
||||
CoordinatorEntity,
|
||||
@ -32,29 +33,35 @@ PLATFORMS = [Platform.SENSOR]
|
||||
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
"""Set up OVO Energy from a config entry."""
|
||||
|
||||
client = OVOEnergy()
|
||||
client = OVOEnergy(
|
||||
client_session=async_get_clientsession(hass),
|
||||
)
|
||||
|
||||
if custom_account := entry.data.get(CONF_ACCOUNT) is not None:
|
||||
client.custom_account_id = custom_account
|
||||
|
||||
try:
|
||||
authenticated = await client.authenticate(
|
||||
if not await client.authenticate(
|
||||
entry.data[CONF_USERNAME],
|
||||
entry.data[CONF_PASSWORD],
|
||||
entry.data[CONF_ACCOUNT],
|
||||
)
|
||||
):
|
||||
raise ConfigEntryAuthFailed
|
||||
|
||||
await client.bootstrap_accounts()
|
||||
except aiohttp.ClientError as exception:
|
||||
_LOGGER.warning(exception)
|
||||
raise ConfigEntryNotReady from exception
|
||||
|
||||
if not authenticated:
|
||||
raise ConfigEntryAuthFailed
|
||||
|
||||
async def async_update_data() -> OVODailyUsage:
|
||||
"""Fetch data from OVO Energy."""
|
||||
if custom_account := entry.data.get(CONF_ACCOUNT) is not None:
|
||||
client.custom_account_id = custom_account
|
||||
|
||||
async with asyncio.timeout(10):
|
||||
try:
|
||||
authenticated = await client.authenticate(
|
||||
entry.data[CONF_USERNAME],
|
||||
entry.data[CONF_PASSWORD],
|
||||
entry.data[CONF_ACCOUNT],
|
||||
)
|
||||
except aiohttp.ClientError as exception:
|
||||
raise UpdateFailed(exception) from exception
|
||||
|
@ -6,11 +6,12 @@ from collections.abc import Mapping
|
||||
from typing import Any
|
||||
|
||||
import aiohttp
|
||||
from ovoenergy.ovoenergy import OVOEnergy
|
||||
from ovoenergy import OVOEnergy
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
|
||||
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
|
||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||
|
||||
from .const import CONF_ACCOUNT, DOMAIN
|
||||
|
||||
@ -41,13 +42,19 @@ class OVOEnergyFlowHandler(ConfigFlow, domain=DOMAIN):
|
||||
"""Handle a flow initiated by the user."""
|
||||
errors = {}
|
||||
if user_input is not None:
|
||||
client = OVOEnergy()
|
||||
client = OVOEnergy(
|
||||
client_session=async_get_clientsession(self.hass),
|
||||
)
|
||||
|
||||
if custom_account := user_input.get(CONF_ACCOUNT) is not None:
|
||||
client.custom_account_id = custom_account
|
||||
|
||||
try:
|
||||
authenticated = await client.authenticate(
|
||||
user_input[CONF_USERNAME],
|
||||
user_input[CONF_PASSWORD],
|
||||
user_input.get(CONF_ACCOUNT, None),
|
||||
)
|
||||
await client.bootstrap_accounts()
|
||||
except aiohttp.ClientError:
|
||||
errors["base"] = "cannot_connect"
|
||||
else:
|
||||
@ -86,10 +93,17 @@ class OVOEnergyFlowHandler(ConfigFlow, domain=DOMAIN):
|
||||
self.context["title_placeholders"] = {CONF_USERNAME: self.username}
|
||||
|
||||
if user_input is not None and user_input.get(CONF_PASSWORD) is not None:
|
||||
client = OVOEnergy()
|
||||
client = OVOEnergy(
|
||||
client_session=async_get_clientsession(self.hass),
|
||||
)
|
||||
|
||||
if self.account is not None:
|
||||
client.custom_account_id = self.account
|
||||
|
||||
try:
|
||||
authenticated = await client.authenticate(
|
||||
self.username, user_input[CONF_PASSWORD], self.account
|
||||
self.username,
|
||||
user_input[CONF_PASSWORD],
|
||||
)
|
||||
except aiohttp.ClientError:
|
||||
errors["base"] = "connection_error"
|
||||
|
@ -7,5 +7,5 @@
|
||||
"integration_type": "service",
|
||||
"iot_class": "cloud_polling",
|
||||
"loggers": ["ovoenergy"],
|
||||
"requirements": ["ovoenergy==1.3.1"]
|
||||
"requirements": ["ovoenergy==2.0.0"]
|
||||
}
|
||||
|
@ -7,8 +7,8 @@ import dataclasses
|
||||
from datetime import datetime, timedelta
|
||||
from typing import Final
|
||||
|
||||
from ovoenergy import OVOEnergy
|
||||
from ovoenergy.models import OVODailyUsage
|
||||
from ovoenergy.ovoenergy import OVOEnergy
|
||||
|
||||
from homeassistant.components.sensor import (
|
||||
SensorDeviceClass,
|
||||
|
@ -1495,7 +1495,7 @@ orvibo==1.1.2
|
||||
ourgroceries==1.5.4
|
||||
|
||||
# homeassistant.components.ovo_energy
|
||||
ovoenergy==1.3.1
|
||||
ovoenergy==2.0.0
|
||||
|
||||
# homeassistant.components.p1_monitor
|
||||
p1monitor==3.0.0
|
||||
|
@ -1189,7 +1189,7 @@ oralb-ble==0.17.6
|
||||
ourgroceries==1.5.4
|
||||
|
||||
# homeassistant.components.ovo_energy
|
||||
ovoenergy==1.3.1
|
||||
ovoenergy==2.0.0
|
||||
|
||||
# homeassistant.components.p1_monitor
|
||||
p1monitor==3.0.0
|
||||
|
@ -5,7 +5,7 @@ from unittest.mock import patch
|
||||
import aiohttp
|
||||
|
||||
from homeassistant import config_entries
|
||||
from homeassistant.components.ovo_energy.const import DOMAIN
|
||||
from homeassistant.components.ovo_energy.const import CONF_ACCOUNT, DOMAIN
|
||||
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.data_entry_flow import FlowResultType
|
||||
@ -13,7 +13,11 @@ from homeassistant.data_entry_flow import FlowResultType
|
||||
from tests.common import MockConfigEntry
|
||||
|
||||
FIXTURE_REAUTH_INPUT = {CONF_PASSWORD: "something1"}
|
||||
FIXTURE_USER_INPUT = {CONF_USERNAME: "example@example.com", CONF_PASSWORD: "something"}
|
||||
FIXTURE_USER_INPUT = {
|
||||
CONF_USERNAME: "example@example.com",
|
||||
CONF_PASSWORD: "something",
|
||||
CONF_ACCOUNT: "123456",
|
||||
}
|
||||
|
||||
UNIQUE_ID = "example@example.com"
|
||||
|
||||
@ -37,9 +41,14 @@ async def test_authorization_error(hass: HomeAssistant) -> None:
|
||||
assert result["type"] is FlowResultType.FORM
|
||||
assert result["step_id"] == "user"
|
||||
|
||||
with patch(
|
||||
"homeassistant.components.ovo_energy.config_flow.OVOEnergy.authenticate",
|
||||
return_value=False,
|
||||
with (
|
||||
patch(
|
||||
"homeassistant.components.ovo_energy.config_flow.OVOEnergy.authenticate",
|
||||
return_value=False,
|
||||
),
|
||||
patch(
|
||||
"homeassistant.components.ovo_energy.config_flow.OVOEnergy.bootstrap_accounts",
|
||||
),
|
||||
):
|
||||
result2 = await hass.config_entries.flow.async_configure(
|
||||
result["flow_id"],
|
||||
@ -88,6 +97,9 @@ async def test_full_flow_implementation(hass: HomeAssistant) -> None:
|
||||
"homeassistant.components.ovo_energy.config_flow.OVOEnergy.authenticate",
|
||||
return_value=True,
|
||||
),
|
||||
patch(
|
||||
"homeassistant.components.ovo_energy.config_flow.OVOEnergy.bootstrap_accounts",
|
||||
),
|
||||
patch(
|
||||
"homeassistant.components.ovo_energy.config_flow.OVOEnergy.username",
|
||||
"some_name",
|
||||
|
Loading…
x
Reference in New Issue
Block a user