From 4cce359960ae16585aa1ec8a9df51298fb547e83 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Tue, 15 Nov 2022 13:39:30 +0100 Subject: [PATCH] Fix legacy scrape scan interval (#81764) * Fix legacy scrape scan interval * Adjust init * Adjust tests * Clearer default --- homeassistant/components/scrape/__init__.py | 9 ++------- homeassistant/components/scrape/const.py | 4 +++- homeassistant/components/scrape/sensor.py | 15 +++++++++++---- tests/components/scrape/test_init.py | 5 ++--- tests/components/scrape/test_sensor.py | 4 ++-- 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/homeassistant/components/scrape/__init__.py b/homeassistant/components/scrape/__init__.py index 25a734dbd24..5bc865dbb6c 100644 --- a/homeassistant/components/scrape/__init__.py +++ b/homeassistant/components/scrape/__init__.py @@ -60,13 +60,8 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: load_coroutines: list[Coroutine[Any, Any, None]] = [] for resource_config in scrape_config: rest = create_rest_data_from_config(hass, resource_config) - coordinator = ScrapeCoordinator( - hass, - rest, - timedelta( - seconds=resource_config.get(CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL) - ), - ) + scan_interval: timedelta = config.get(CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL) + coordinator = ScrapeCoordinator(hass, rest, scan_interval) sensors: list[ConfigType] = resource_config.get(SENSOR_DOMAIN, []) if sensors: diff --git a/homeassistant/components/scrape/const.py b/homeassistant/components/scrape/const.py index 26926729309..fc433ebb6f0 100644 --- a/homeassistant/components/scrape/const.py +++ b/homeassistant/components/scrape/const.py @@ -1,12 +1,14 @@ """Constants for Scrape integration.""" from __future__ import annotations +from datetime import timedelta + from homeassistant.const import Platform DOMAIN = "scrape" DEFAULT_NAME = "Web scrape" DEFAULT_VERIFY_SSL = True -DEFAULT_SCAN_INTERVAL = 60 * 10 +DEFAULT_SCAN_INTERVAL = timedelta(minutes=10) PLATFORMS = [Platform.SENSOR] diff --git a/homeassistant/components/scrape/sensor.py b/homeassistant/components/scrape/sensor.py index b606f00aaa7..61f0b9711b1 100644 --- a/homeassistant/components/scrape/sensor.py +++ b/homeassistant/components/scrape/sensor.py @@ -22,6 +22,7 @@ from homeassistant.const import ( CONF_NAME, CONF_PASSWORD, CONF_RESOURCE, + CONF_SCAN_INTERVAL, CONF_UNIQUE_ID, CONF_UNIT_OF_MEASUREMENT, CONF_USERNAME, @@ -43,13 +44,18 @@ from homeassistant.helpers.template_entity import ( from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.update_coordinator import CoordinatorEntity -from .const import CONF_INDEX, CONF_SELECT, DEFAULT_NAME, DEFAULT_VERIFY_SSL, DOMAIN +from .const import ( + CONF_INDEX, + CONF_SELECT, + DEFAULT_NAME, + DEFAULT_SCAN_INTERVAL, + DEFAULT_VERIFY_SSL, + DOMAIN, +) from .coordinator import ScrapeCoordinator _LOGGER = logging.getLogger(__name__) -SCAN_INTERVAL = timedelta(minutes=10) - PLATFORM_SCHEMA = PARENT_PLATFORM_SCHEMA.extend( { # Linked to the loading of the page (can be linked to RestData) @@ -98,7 +104,8 @@ async def async_setup_platform( resource_config = vol.Schema(RESOURCE_SCHEMA, extra=vol.REMOVE_EXTRA)(config) rest = create_rest_data_from_config(hass, resource_config) - coordinator = ScrapeCoordinator(hass, rest, SCAN_INTERVAL) + scan_interval: timedelta = config.get(CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL) + coordinator = ScrapeCoordinator(hass, rest, scan_interval) sensors_config = [ vol.Schema(TEMPLATE_SENSOR_BASE_SCHEMA.schema, extra=vol.ALLOW_EXTRA)( diff --git a/tests/components/scrape/test_init.py b/tests/components/scrape/test_init.py index e66b9a65fd4..17803cc30c2 100644 --- a/tests/components/scrape/test_init.py +++ b/tests/components/scrape/test_init.py @@ -6,8 +6,7 @@ from unittest.mock import patch import pytest -from homeassistant.components.scrape.const import DOMAIN -from homeassistant.components.scrape.sensor import SCAN_INTERVAL +from homeassistant.components.scrape.const import DEFAULT_SCAN_INTERVAL, DOMAIN from homeassistant.core import HomeAssistant from homeassistant.helpers import entity_registry as er from homeassistant.setup import async_setup_component @@ -67,7 +66,7 @@ async def test_setup_no_data_fails_with_recovery( assert "Platform scrape not ready yet" in caplog.text mocker.payload = "test_scrape_sensor" - async_fire_time_changed(hass, datetime.utcnow() + SCAN_INTERVAL) + async_fire_time_changed(hass, datetime.utcnow() + DEFAULT_SCAN_INTERVAL) await hass.async_block_till_done() state = hass.states.get("sensor.ha_version") diff --git a/tests/components/scrape/test_sensor.py b/tests/components/scrape/test_sensor.py index 2d0c7b4c61d..23c558a72af 100644 --- a/tests/components/scrape/test_sensor.py +++ b/tests/components/scrape/test_sensor.py @@ -6,7 +6,7 @@ from unittest.mock import patch import pytest -from homeassistant.components.scrape.sensor import SCAN_INTERVAL +from homeassistant.components.scrape.const import DEFAULT_SCAN_INTERVAL from homeassistant.components.sensor import ( CONF_STATE_CLASS, DOMAIN as SENSOR_DOMAIN, @@ -298,7 +298,7 @@ async def test_scrape_sensor_no_data_refresh(hass: HomeAssistant) -> None: assert state.state == "Current Version: 2021.12.10" mocker.payload = "test_scrape_sensor_no_data" - async_fire_time_changed(hass, datetime.utcnow() + SCAN_INTERVAL) + async_fire_time_changed(hass, datetime.utcnow() + DEFAULT_SCAN_INTERVAL) await hass.async_block_till_done() state = hass.states.get("sensor.ha_version")