From 42aec9cd918a9807faf31c61193e27e00d0cd942 Mon Sep 17 00:00:00 2001 From: Simone Chemelli Date: Thu, 4 Sep 2025 19:21:32 +0200 Subject: [PATCH 1/8] Remove attributes from all Shelly entities (#140386) --- .../components/shelly/binary_sensor.py | 2 -- homeassistant/components/shelly/entity.py | 9 ------- homeassistant/components/shelly/sensor.py | 6 ----- homeassistant/components/shelly/strings.json | 24 ------------------- tests/components/shelly/test_binary_sensor.py | 6 ++--- 5 files changed, 2 insertions(+), 45 deletions(-) diff --git a/homeassistant/components/shelly/binary_sensor.py b/homeassistant/components/shelly/binary_sensor.py index e7d7b46b322530..7bec1ab1686ca0 100644 --- a/homeassistant/components/shelly/binary_sensor.py +++ b/homeassistant/components/shelly/binary_sensor.py @@ -132,8 +132,6 @@ def __init__( device_class=BinarySensorDeviceClass.GAS, translation_key="gas", value=lambda value: value in ["mild", "heavy"], - # Deprecated, remove in 2025.10 - extra_state_attributes=lambda block: {"detected": block.gas}, ), ("sensor", "smoke"): BlockBinarySensorDescription( key="sensor|smoke", name="Smoke", device_class=BinarySensorDeviceClass.SMOKE diff --git a/homeassistant/components/shelly/entity.py b/homeassistant/components/shelly/entity.py index 97946ddd8f36a3..e5deaf33142813 100644 --- a/homeassistant/components/shelly/entity.py +++ b/homeassistant/components/shelly/entity.py @@ -290,7 +290,6 @@ class BlockEntityDescription(EntityDescription): available: Callable[[Block], bool] | None = None # Callable (settings, block), return true if entity should be removed removal_condition: Callable[[dict, Block], bool] | None = None - extra_state_attributes: Callable[[Block], dict | None] | None = None @dataclass(frozen=True, kw_only=True) @@ -494,14 +493,6 @@ def available(self) -> bool: return self.entity_description.available(self.block) - @property - def extra_state_attributes(self) -> dict[str, Any] | None: - """Return the state attributes.""" - if self.entity_description.extra_state_attributes is None: - return None - - return self.entity_description.extra_state_attributes(self.block) - class ShellyRestAttributeEntity(CoordinatorEntity[ShellyBlockCoordinator]): """Class to load info from REST.""" diff --git a/homeassistant/components/shelly/sensor.py b/homeassistant/components/shelly/sensor.py index 49e3d4773c7f76..b5cbeb3da5f4ea 100644 --- a/homeassistant/components/shelly/sensor.py +++ b/homeassistant/components/shelly/sensor.py @@ -382,10 +382,6 @@ def __init__( translation_key="lamp_life", value=get_shelly_air_lamp_life, suggested_display_precision=1, - # Deprecated, remove in 2025.10 - extra_state_attributes=lambda block: { - "Operational hours": round(cast(int, block.totalWorkTime) / 3600, 1) - }, entity_category=EntityCategory.DIAGNOSTIC, ), ("adc", "adc"): BlockSensorDescription( @@ -403,8 +399,6 @@ def __init__( options=["warmup", "normal", "fault"], translation_key="operation", value=lambda value: None if value == "unknown" else value, - # Deprecated, remove in 2025.10 - extra_state_attributes=lambda block: {"self_test": block.selfTest}, ), ("valve", "valve"): BlockSensorDescription( key="valve|valve", diff --git a/homeassistant/components/shelly/strings.json b/homeassistant/components/shelly/strings.json index 2bb5cd73bfd869..e1f817ba1a8c72 100644 --- a/homeassistant/components/shelly/strings.json +++ b/homeassistant/components/shelly/strings.json @@ -118,20 +118,6 @@ } }, "entity": { - "binary_sensor": { - "gas": { - "state_attributes": { - "detected": { - "state": { - "none": "None", - "mild": "Mild", - "heavy": "Heavy", - "test": "Test" - } - } - } - } - }, "event": { "input": { "state_attributes": { @@ -178,16 +164,6 @@ "warmup": "Warm-up", "normal": "[%key:common::state::normal%]", "fault": "[%key:common::state::fault%]" - }, - "state_attributes": { - "self_test": { - "state": { - "not_completed": "[%key:component::shelly::entity::sensor::self_test::state::not_completed%]", - "completed": "[%key:component::shelly::entity::sensor::self_test::state::completed%]", - "running": "[%key:component::shelly::entity::sensor::self_test::state::running%]", - "pending": "[%key:component::shelly::entity::sensor::self_test::state::pending%]" - } - } } }, "self_test": { diff --git a/tests/components/shelly/test_binary_sensor.py b/tests/components/shelly/test_binary_sensor.py index f67e0bbb5649df..061c22cf51231e 100644 --- a/tests/components/shelly/test_binary_sensor.py +++ b/tests/components/shelly/test_binary_sensor.py @@ -53,26 +53,24 @@ async def test_block_binary_sensor( assert entry.unique_id == "123456789ABC-relay_0-overpower" -async def test_block_binary_sensor_extra_state_attr( +async def test_block_binary_gas_sensor_creation( hass: HomeAssistant, mock_block_device: Mock, monkeypatch: pytest.MonkeyPatch, entity_registry: EntityRegistry, ) -> None: - """Test block binary sensor extra state attributes.""" + """Test block binary gas sensor creation.""" entity_id = f"{BINARY_SENSOR_DOMAIN}.test_name_gas" await init_integration(hass, 1) assert (state := hass.states.get(entity_id)) assert state.state == STATE_ON - assert state.attributes.get("detected") == "mild" monkeypatch.setattr(mock_block_device.blocks[SENSOR_BLOCK_ID], "gas", "none") mock_block_device.mock_update() assert (state := hass.states.get(entity_id)) assert state.state == STATE_OFF - assert state.attributes.get("detected") == "none" assert (entry := entity_registry.async_get(entity_id)) assert entry.unique_id == "123456789ABC-sensor_0-gas" From a475ecb342e187eb554a25ee1538ab7071ddfc22 Mon Sep 17 00:00:00 2001 From: flonou <10209267+flonou@users.noreply.github.com> Date: Thu, 4 Sep 2025 19:22:07 +0200 Subject: [PATCH 2/8] Shelly cover position update when moving (#139008) Co-authored-by: Shay Levy --- homeassistant/components/shelly/const.py | 3 + homeassistant/components/shelly/cover.py | 30 +++++ tests/components/shelly/__init__.py | 6 +- tests/components/shelly/test_cover.py | 139 ++++++++++++++++++++++- 4 files changed, 175 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/shelly/const.py b/homeassistant/components/shelly/const.py index 60fc5b03d13e54..c93b67a56d914e 100644 --- a/homeassistant/components/shelly/const.py +++ b/homeassistant/components/shelly/const.py @@ -44,6 +44,9 @@ # min RPC light transition time in seconds (max=10800, limited by light entity to 6553) RPC_MIN_TRANSITION_TIME_SEC = 0.5 +# time in seconds between two cover state updates when moving +RPC_COVER_UPDATE_TIME_SEC = 1.0 + RGBW_MODELS: Final = ( MODEL_BULB, MODEL_RGBW2, diff --git a/homeassistant/components/shelly/cover.py b/homeassistant/components/shelly/cover.py index d603636644b781..bdca7cee921058 100644 --- a/homeassistant/components/shelly/cover.py +++ b/homeassistant/components/shelly/cover.py @@ -2,6 +2,7 @@ from __future__ import annotations +import asyncio from typing import Any, cast from aioshelly.block_device import Block @@ -17,6 +18,7 @@ from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback +from .const import RPC_COVER_UPDATE_TIME_SEC from .coordinator import ShellyBlockCoordinator, ShellyConfigEntry, ShellyRpcCoordinator from .entity import ShellyBlockEntity, ShellyRpcEntity from .utils import get_device_entry_gen, get_rpc_key_ids @@ -158,6 +160,7 @@ def __init__(self, coordinator: ShellyRpcCoordinator, id_: int) -> None: """Initialize rpc cover.""" super().__init__(coordinator, f"cover:{id_}") self._id = id_ + self._update_task: asyncio.Task | None = None if self.status["pos_control"]: self._attr_supported_features |= CoverEntityFeature.SET_POSITION if coordinator.device.config[f"cover:{id_}"].get("slat", {}).get("enable"): @@ -199,6 +202,33 @@ def is_opening(self) -> bool: """Return if the cover is opening.""" return cast(bool, self.status["state"] == "opening") + def launch_update_task(self) -> None: + """Launch the update position task if needed.""" + if not self._update_task or self._update_task.done(): + self._update_task = ( + self.coordinator.config_entry.async_create_background_task( + self.hass, + self.update_position(), + f"Shelly cover update [{self._id} - {self.name}]", + ) + ) + + async def update_position(self) -> None: + """Update the cover position every second.""" + try: + while self.is_closing or self.is_opening: + await self.coordinator.device.update_status() + self.async_write_ha_state() + await asyncio.sleep(RPC_COVER_UPDATE_TIME_SEC) + finally: + self._update_task = None + + def _update_callback(self) -> None: + """Handle device update. Use a task when opening/closing is in progress.""" + super()._update_callback() + if self.is_closing or self.is_opening: + self.launch_update_task() + async def async_close_cover(self, **kwargs: Any) -> None: """Close cover.""" await self.call_rpc("Cover.Close", {"id": self._id}) diff --git a/tests/components/shelly/__init__.py b/tests/components/shelly/__init__.py index a333e55560f7a1..210d4453370c2b 100644 --- a/tests/components/shelly/__init__.py +++ b/tests/components/shelly/__init__.py @@ -100,10 +100,12 @@ async def mock_rest_update( async def mock_polling_rpc_update( - hass: HomeAssistant, freezer: FrozenDateTimeFactory + hass: HomeAssistant, + freezer: FrozenDateTimeFactory, + seconds: float = RPC_SENSORS_POLLING_INTERVAL, ) -> None: """Move time to create polling RPC sensors update event.""" - freezer.tick(timedelta(seconds=RPC_SENSORS_POLLING_INTERVAL)) + freezer.tick(timedelta(seconds=seconds)) async_fire_time_changed(hass) await hass.async_block_till_done() diff --git a/tests/components/shelly/test_cover.py b/tests/components/shelly/test_cover.py index 4f8e8a7650d840..7d194b1b005a00 100644 --- a/tests/components/shelly/test_cover.py +++ b/tests/components/shelly/test_cover.py @@ -3,6 +3,7 @@ from copy import deepcopy from unittest.mock import Mock +from freezegun.api import FrozenDateTimeFactory import pytest from homeassistant.components.cover import ( @@ -21,11 +22,12 @@ SERVICE_STOP_COVER_TILT, CoverState, ) +from homeassistant.components.shelly.const import RPC_COVER_UPDATE_TIME_SEC from homeassistant.const import ATTR_ENTITY_ID from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_registry import EntityRegistry -from . import init_integration, mutate_rpc_device_status +from . import init_integration, mock_polling_rpc_update, mutate_rpc_device_status ROLLER_BLOCK_ID = 1 @@ -280,3 +282,138 @@ async def test_rpc_cover_tilt( assert (state := hass.states.get(entity_id)) assert state.attributes[ATTR_CURRENT_TILT_POSITION] == 10 + + +async def test_update_position_closing( + hass: HomeAssistant, + freezer: FrozenDateTimeFactory, + mock_rpc_device: Mock, + monkeypatch: pytest.MonkeyPatch, +) -> None: + """Test update_position while the cover is closing.""" + entity_id = "cover.test_name_test_cover_0" + await init_integration(hass, 2) + + # Set initial state to closing + mutate_rpc_device_status( + monkeypatch, mock_rpc_device, "cover:0", "state", "closing" + ) + mutate_rpc_device_status(monkeypatch, mock_rpc_device, "cover:0", "current_pos", 40) + mock_rpc_device.mock_update() + + assert (state := hass.states.get(entity_id)) + assert state.state == CoverState.CLOSING + assert state.attributes[ATTR_CURRENT_POSITION] == 40 + + # Simulate position decrement + async def simulated_update(*args, **kwargs): + pos = mock_rpc_device.status["cover:0"]["current_pos"] + if pos > 0: + mutate_rpc_device_status( + monkeypatch, mock_rpc_device, "cover:0", "current_pos", pos - 10 + ) + else: + mutate_rpc_device_status( + monkeypatch, mock_rpc_device, "cover:0", "current_pos", 0 + ) + mutate_rpc_device_status( + monkeypatch, mock_rpc_device, "cover:0", "state", "closed" + ) + + # Patching the mock update_status method + monkeypatch.setattr(mock_rpc_device, "update_status", simulated_update) + + # Simulate position updates during closing + for position in range(40, -1, -10): + assert (state := hass.states.get(entity_id)) + assert state.attributes[ATTR_CURRENT_POSITION] == position + assert state.state == CoverState.CLOSING + await mock_polling_rpc_update(hass, freezer, RPC_COVER_UPDATE_TIME_SEC) + + # Final state should be closed + assert (state := hass.states.get(entity_id)) + assert state.state == CoverState.CLOSED + assert state.attributes[ATTR_CURRENT_POSITION] == 0 + + +async def test_update_position_opening( + hass: HomeAssistant, + freezer: FrozenDateTimeFactory, + mock_rpc_device: Mock, + monkeypatch: pytest.MonkeyPatch, +) -> None: + """Test update_position while the cover is opening.""" + entity_id = "cover.test_name_test_cover_0" + await init_integration(hass, 2) + + # Set initial state to opening at 60 + mutate_rpc_device_status( + monkeypatch, mock_rpc_device, "cover:0", "state", "opening" + ) + mutate_rpc_device_status(monkeypatch, mock_rpc_device, "cover:0", "current_pos", 60) + mock_rpc_device.mock_update() + + assert (state := hass.states.get(entity_id)) + assert state.state == CoverState.OPENING + assert state.attributes[ATTR_CURRENT_POSITION] == 60 + + # Simulate position increment + async def simulated_update(*args, **kwargs): + pos = mock_rpc_device.status["cover:0"]["current_pos"] + if pos < 100: + mutate_rpc_device_status( + monkeypatch, mock_rpc_device, "cover:0", "current_pos", pos + 10 + ) + else: + mutate_rpc_device_status( + monkeypatch, mock_rpc_device, "cover:0", "current_pos", 100 + ) + mutate_rpc_device_status( + monkeypatch, mock_rpc_device, "cover:0", "state", "open" + ) + + # Patching the mock update_status method + monkeypatch.setattr(mock_rpc_device, "update_status", simulated_update) + + # Check position updates during opening + for position in range(60, 101, 10): + assert (state := hass.states.get(entity_id)) + assert state.attributes[ATTR_CURRENT_POSITION] == position + assert state.state == CoverState.OPENING + await mock_polling_rpc_update(hass, freezer, RPC_COVER_UPDATE_TIME_SEC) + + # Final state should be open + assert (state := hass.states.get(entity_id)) + assert state.state == CoverState.OPEN + assert state.attributes[ATTR_CURRENT_POSITION] == 100 + + +async def test_update_position_no_movement( + hass: HomeAssistant, mock_rpc_device: Mock, monkeypatch: pytest.MonkeyPatch +) -> None: + """Test update_position when the cover is not moving.""" + entity_id = "cover.test_name_test_cover_0" + await init_integration(hass, 2) + + # Set initial state to open + mutate_rpc_device_status(monkeypatch, mock_rpc_device, "cover:0", "state", "open") + mutate_rpc_device_status( + monkeypatch, mock_rpc_device, "cover:0", "current_pos", 100 + ) + mock_rpc_device.mock_update() + + assert (state := hass.states.get(entity_id)) + assert state.state == CoverState.OPEN + assert state.attributes[ATTR_CURRENT_POSITION] == 100 + + # Call update_position and ensure no changes occur + await hass.services.async_call( + COVER_DOMAIN, + SERVICE_OPEN_COVER, + {ATTR_ENTITY_ID: entity_id}, + blocking=True, + ) + + assert (state := hass.states.get(entity_id)) + assert state.state == CoverState.OPEN + assert state.attributes[ATTR_CURRENT_POSITION] == 100 From 80d26b8d2e3886f32259451101d6f59d54aebc15 Mon Sep 17 00:00:00 2001 From: Marc Mueller <30130371+cdce8p@users.noreply.github.com> Date: Thu, 4 Sep 2025 20:52:48 +0200 Subject: [PATCH 3/8] Update pytest to 8.4.2 (#151706) --- requirements_test.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements_test.txt b/requirements_test.txt index 9df62168b1960a..bb2596d1f7fadb 100644 --- a/requirements_test.txt +++ b/requirements_test.txt @@ -30,7 +30,7 @@ pytest-timeout==2.4.0 pytest-unordered==0.7.0 pytest-picked==0.5.1 pytest-xdist==3.8.0 -pytest==8.4.1 +pytest==8.4.2 requests-mock==1.12.1 respx==0.22.0 syrupy==4.9.1 From 4fcd02bc5d1e94ec35fefa7a9f9936fd4ca4abf8 Mon Sep 17 00:00:00 2001 From: Marc Mueller <30130371+cdce8p@users.noreply.github.com> Date: Thu, 4 Sep 2025 20:53:16 +0200 Subject: [PATCH 4/8] Update requests to 2.32.5 (#151705) --- homeassistant/package_constraints.txt | 2 +- pyproject.toml | 2 +- requirements.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index 97777f0975519d..4c469b01d86139 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -60,7 +60,7 @@ pyspeex-noise==1.0.2 python-slugify==8.0.4 PyTurboJPEG==1.8.0 PyYAML==6.0.2 -requests==2.32.4 +requests==2.32.5 securetar==2025.2.1 SQLAlchemy==2.0.41 standard-aifc==3.13.0 diff --git a/pyproject.toml b/pyproject.toml index 5b027b636f79db..da23dd508d1c2c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,7 +66,7 @@ dependencies = [ "psutil-home-assistant==0.0.1", "python-slugify==8.0.4", "PyYAML==6.0.2", - "requests==2.32.4", + "requests==2.32.5", "securetar==2025.2.1", "SQLAlchemy==2.0.41", "standard-aifc==3.13.0", diff --git a/requirements.txt b/requirements.txt index d1de18296ff539..a0ec58b144a116 100644 --- a/requirements.txt +++ b/requirements.txt @@ -38,7 +38,7 @@ packaging>=23.1 psutil-home-assistant==0.0.1 python-slugify==8.0.4 PyYAML==6.0.2 -requests==2.32.4 +requests==2.32.5 securetar==2025.2.1 SQLAlchemy==2.0.41 standard-aifc==3.13.0 From b111a33b8c49d99e3cbdbf5f34145aa374d62758 Mon Sep 17 00:00:00 2001 From: Marc Mueller <30130371+cdce8p@users.noreply.github.com> Date: Thu, 4 Sep 2025 20:54:49 +0200 Subject: [PATCH 5/8] Update ciso8601 to 2.3.3 (#151704) --- homeassistant/package_constraints.txt | 2 +- pyproject.toml | 2 +- requirements.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index 4c469b01d86139..507c4a39a518c5 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -27,7 +27,7 @@ bluetooth-auto-recovery==1.5.2 bluetooth-data-tools==1.28.2 cached-ipaddress==0.10.0 certifi>=2021.5.30 -ciso8601==2.3.2 +ciso8601==2.3.3 cronsim==2.6 cryptography==45.0.3 dbus-fast==2.44.3 diff --git a/pyproject.toml b/pyproject.toml index da23dd508d1c2c..0b5288955e11e4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,7 @@ dependencies = [ "awesomeversion==25.5.0", "bcrypt==4.3.0", "certifi>=2021.5.30", - "ciso8601==2.3.2", + "ciso8601==2.3.3", "cronsim==2.6", "fnv-hash-fast==1.5.0", # hass-nabucasa is imported by helpers which don't depend on the cloud diff --git a/requirements.txt b/requirements.txt index a0ec58b144a116..69c27b5bf2698a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -19,7 +19,7 @@ audioop-lts==0.2.1 awesomeversion==25.5.0 bcrypt==4.3.0 certifi>=2021.5.30 -ciso8601==2.3.2 +ciso8601==2.3.3 cronsim==2.6 fnv-hash-fast==1.5.0 hass-nabucasa==1.1.0 From 447c7b64a94ddc5d0346af49fbd3502f05f9f4ea Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Thu, 4 Sep 2025 22:40:08 +0200 Subject: [PATCH 6/8] Update cryptography to 45.0.7 (#151715) --- homeassistant/package_constraints.txt | 2 +- pyproject.toml | 2 +- requirements.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/package_constraints.txt b/homeassistant/package_constraints.txt index 507c4a39a518c5..34fc6e0e03f2c8 100644 --- a/homeassistant/package_constraints.txt +++ b/homeassistant/package_constraints.txt @@ -29,7 +29,7 @@ cached-ipaddress==0.10.0 certifi>=2021.5.30 ciso8601==2.3.3 cronsim==2.6 -cryptography==45.0.3 +cryptography==45.0.7 dbus-fast==2.44.3 fnv-hash-fast==1.5.0 go2rtc-client==0.2.1 diff --git a/pyproject.toml b/pyproject.toml index 0b5288955e11e4..9d2118372e89d8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -57,7 +57,7 @@ dependencies = [ "lru-dict==1.3.0", "PyJWT==2.10.1", # PyJWT has loose dependency. We want the latest one. - "cryptography==45.0.3", + "cryptography==45.0.7", "Pillow==11.3.0", "propcache==0.3.2", "pyOpenSSL==25.1.0", diff --git a/requirements.txt b/requirements.txt index 69c27b5bf2698a..0041fe685158be 100644 --- a/requirements.txt +++ b/requirements.txt @@ -29,7 +29,7 @@ ifaddr==0.2.0 Jinja2==3.1.6 lru-dict==1.3.0 PyJWT==2.10.1 -cryptography==45.0.3 +cryptography==45.0.7 Pillow==11.3.0 propcache==0.3.2 pyOpenSSL==25.1.0 From bb9c65bc4bce8626282e34f5bdb2982dc91a6f04 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Thu, 4 Sep 2025 23:17:58 +0200 Subject: [PATCH 7/8] Update debugpy to v1.8.16 (#151716) --- homeassistant/components/debugpy/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/debugpy/manifest.json b/homeassistant/components/debugpy/manifest.json index 0b9f8ea55f5bf7..8b52ae9aa02805 100644 --- a/homeassistant/components/debugpy/manifest.json +++ b/homeassistant/components/debugpy/manifest.json @@ -6,5 +6,5 @@ "integration_type": "service", "iot_class": "local_push", "quality_scale": "internal", - "requirements": ["debugpy==1.8.14"] + "requirements": ["debugpy==1.8.16"] } diff --git a/requirements_all.txt b/requirements_all.txt index f4a62ba55af988..675cb1c371afca 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -768,7 +768,7 @@ datapoint==0.12.1 dbus-fast==2.44.3 # homeassistant.components.debugpy -debugpy==1.8.14 +debugpy==1.8.16 # homeassistant.components.decora_wifi decora-wifi==1.4 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 7ee496142ffe6c..0626b1941bc609 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -671,7 +671,7 @@ datapoint==0.12.1 dbus-fast==2.44.3 # homeassistant.components.debugpy -debugpy==1.8.14 +debugpy==1.8.16 # homeassistant.components.decora # decora==0.6 From b25708cec2b5d6f86070f1da1a2860c0c4f3710d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hjelseth=20H=C3=B8yer?= Date: Thu, 4 Sep 2025 23:21:26 +0200 Subject: [PATCH 8/8] Update Tibber library 0.31.7 (#151711) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel Hjelseth Høyer --- homeassistant/components/tibber/manifest.json | 2 +- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/tibber/manifest.json b/homeassistant/components/tibber/manifest.json index db08f422500df3..ea1701b77a4019 100644 --- a/homeassistant/components/tibber/manifest.json +++ b/homeassistant/components/tibber/manifest.json @@ -7,5 +7,5 @@ "documentation": "https://www.home-assistant.io/integrations/tibber", "iot_class": "cloud_polling", "loggers": ["tibber"], - "requirements": ["pyTibber==0.31.6"] + "requirements": ["pyTibber==0.31.7"] } diff --git a/requirements_all.txt b/requirements_all.txt index 675cb1c371afca..c0d8e4770d4b38 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1819,7 +1819,7 @@ pyRFXtrx==0.31.1 pySDCP==1 # homeassistant.components.tibber -pyTibber==0.31.6 +pyTibber==0.31.7 # homeassistant.components.dlink pyW215==0.8.0 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 0626b1941bc609..600e7c79ffd2ce 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1530,7 +1530,7 @@ pyHomee==1.2.10 pyRFXtrx==0.31.1 # homeassistant.components.tibber -pyTibber==0.31.6 +pyTibber==0.31.7 # homeassistant.components.dlink pyW215==0.8.0