diff --git a/homeassistant/components/demo/update.py b/homeassistant/components/demo/update.py index e0f5814c63d..648ad59bb55 100644 --- a/homeassistant/components/demo/update.py +++ b/homeassistant/components/demo/update.py @@ -31,7 +31,7 @@ async def async_setup_platform( unique_id="update_no_install", name="Demo Update No Install", title="Awesomesoft Inc.", - current_version="1.0.0", + installed_version="1.0.0", latest_version="1.0.1", release_summary="Awesome update, fixing everything!", release_url="https://www.example.com/release/1.0.1", @@ -41,14 +41,14 @@ async def async_setup_platform( unique_id="update_2_date", name="Demo No Update", title="AdGuard Home", - current_version="1.0.0", + installed_version="1.0.0", latest_version="1.0.0", ), DemoUpdate( unique_id="update_addon", name="Demo add-on", title="AdGuard Home", - current_version="1.0.0", + installed_version="1.0.0", latest_version="1.0.1", release_summary="Awesome update, fixing everything!", release_url="https://www.example.com/release/1.0.1", @@ -57,7 +57,7 @@ async def async_setup_platform( unique_id="update_light_bulb", name="Demo Living Room Bulb Update", title="Philips Lamps Firmware", - current_version="1.93.3", + installed_version="1.93.3", latest_version="1.94.2", release_summary="Added support for effects", release_url="https://www.example.com/release/1.93.3", @@ -67,7 +67,7 @@ async def async_setup_platform( unique_id="update_support_progress", name="Demo Update with Progress", title="Philips Lamps Firmware", - current_version="1.93.3", + installed_version="1.93.3", latest_version="1.94.2", support_progress=True, release_summary="Added support for effects", @@ -104,7 +104,7 @@ class DemoUpdate(UpdateEntity): unique_id: str, name: str, title: str | None, - current_version: str | None, + installed_version: str | None, latest_version: str | None, release_summary: str | None = None, release_url: str | None = None, @@ -114,7 +114,7 @@ class DemoUpdate(UpdateEntity): device_class: UpdateDeviceClass | None = None, ) -> None: """Initialize the Demo select entity.""" - self._attr_current_version = current_version + self._attr_installed_version = installed_version self._attr_device_class = device_class self._attr_latest_version = latest_version self._attr_name = name or DEVICE_DEFAULT_NAME @@ -149,7 +149,7 @@ class DemoUpdate(UpdateEntity): await _fake_install() self._attr_in_progress = False - self._attr_current_version = ( + self._attr_installed_version = ( version if version is not None else self.latest_version ) self.async_write_ha_state() diff --git a/homeassistant/components/hassio/update.py b/homeassistant/components/hassio/update.py index d2953a0f801..8af3d88088a 100644 --- a/homeassistant/components/hassio/update.py +++ b/homeassistant/components/hassio/update.py @@ -116,8 +116,8 @@ class SupervisorAddonUpdateEntity(HassioAddonEntity, UpdateEntity): return self._addon_data[ATTR_VERSION_LATEST] @property - def current_version(self) -> str | None: - """Version currently in use.""" + def installed_version(self) -> str | None: + """Version installed and in use.""" return self._addon_data[ATTR_VERSION] @property @@ -139,9 +139,12 @@ class SupervisorAddonUpdateEntity(HassioAddonEntity, UpdateEntity): if (notes := self._addon_data[ATTR_CHANGELOG]) is None: return None - if f"# {self.latest_version}" in notes and f"# {self.current_version}" in notes: + if ( + f"# {self.latest_version}" in notes + and f"# {self.installed_version}" in notes + ): # Split the release notes to only what is between the versions if we can - new_notes = notes.split(f"# {self.current_version}")[0] + new_notes = notes.split(f"# {self.installed_version}")[0] if f"# {self.latest_version}" in new_notes: # Make sure the latest version is still there. # This can be False if the order of the release notes are not correct @@ -182,7 +185,7 @@ class SupervisorOSUpdateEntity(HassioOSEntity, UpdateEntity): return self.coordinator.data[DATA_KEY_OS][ATTR_VERSION_LATEST] @property - def current_version(self) -> str: + def installed_version(self) -> str: """Return native value of entity.""" return self.coordinator.data[DATA_KEY_OS][ATTR_VERSION] @@ -226,7 +229,7 @@ class SupervisorSupervisorUpdateEntity(HassioSupervisorEntity, UpdateEntity): return self.coordinator.data[DATA_KEY_SUPERVISOR][ATTR_VERSION_LATEST] @property - def current_version(self) -> str: + def installed_version(self) -> str: """Return native value of entity.""" return self.coordinator.data[DATA_KEY_SUPERVISOR][ATTR_VERSION] @@ -271,7 +274,7 @@ class SupervisorCoreUpdateEntity(HassioCoreEntity, UpdateEntity): return self.coordinator.data[DATA_KEY_CORE][ATTR_VERSION_LATEST] @property - def current_version(self) -> str: + def installed_version(self) -> str: """Return native value of entity.""" return self.coordinator.data[DATA_KEY_CORE][ATTR_VERSION] diff --git a/homeassistant/components/pi_hole/update.py b/homeassistant/components/pi_hole/update.py index 14e6761f7c5..6bb424f15b1 100644 --- a/homeassistant/components/pi_hole/update.py +++ b/homeassistant/components/pi_hole/update.py @@ -22,7 +22,7 @@ from .const import DATA_KEY_API, DATA_KEY_COORDINATOR, DOMAIN class PiHoleUpdateEntityDescription(UpdateEntityDescription): """Describes PiHole update entity.""" - current_version: Callable[[dict], str | None] = lambda api: None + installed_version: Callable[[dict], str | None] = lambda api: None latest_version: Callable[[dict], str | None] = lambda api: None release_base_url: str | None = None title: str | None = None @@ -34,7 +34,7 @@ UPDATE_ENTITY_TYPES: tuple[PiHoleUpdateEntityDescription, ...] = ( name="Core Update Available", title="Pi-hole Core", entity_category=EntityCategory.DIAGNOSTIC, - current_version=lambda versions: versions.get("core_current"), + installed_version=lambda versions: versions.get("core_current"), latest_version=lambda versions: versions.get("core_latest"), release_base_url="https://github.com/pi-hole/pi-hole/releases/tag", ), @@ -43,7 +43,7 @@ UPDATE_ENTITY_TYPES: tuple[PiHoleUpdateEntityDescription, ...] = ( name="Web Update Available", title="Pi-hole Web interface", entity_category=EntityCategory.DIAGNOSTIC, - current_version=lambda versions: versions.get("web_current"), + installed_version=lambda versions: versions.get("web_current"), latest_version=lambda versions: versions.get("web_latest"), release_base_url="https://github.com/pi-hole/AdminLTE/releases/tag", ), @@ -52,7 +52,7 @@ UPDATE_ENTITY_TYPES: tuple[PiHoleUpdateEntityDescription, ...] = ( name="FTL Update Available", title="Pi-hole FTL DNS", entity_category=EntityCategory.DIAGNOSTIC, - current_version=lambda versions: versions.get("FTL_current"), + installed_version=lambda versions: versions.get("FTL_current"), latest_version=lambda versions: versions.get("FTL_latest"), release_base_url="https://github.com/pi-hole/FTL/releases/tag", ), @@ -100,10 +100,10 @@ class PiHoleUpdateEntity(PiHoleEntity, UpdateEntity): self._attr_title = description.title @property - def current_version(self) -> str | None: - """Version currently in use.""" + def installed_version(self) -> str | None: + """Version installed and in use.""" if isinstance(self.api.versions, dict): - return self.entity_description.current_version(self.api.versions) + return self.entity_description.installed_version(self.api.versions) return None @property diff --git a/homeassistant/components/synology_dsm/update.py b/homeassistant/components/synology_dsm/update.py index a4a958b8c1a..836468d6f50 100644 --- a/homeassistant/components/synology_dsm/update.py +++ b/homeassistant/components/synology_dsm/update.py @@ -55,15 +55,15 @@ class SynoDSMUpdateEntity(SynologyDSMBaseEntity, UpdateEntity): _attr_title = "Synology DSM" @property - def current_version(self) -> str | None: - """Version currently in use.""" + def installed_version(self) -> str | None: + """Version installed and in use.""" return self._api.information.version_string # type: ignore[no-any-return] @property def latest_version(self) -> str | None: """Latest version available for install.""" if not self._api.upgrade.update_available: - return self.current_version + return self.installed_version return self._api.upgrade.available_version # type: ignore[no-any-return] @property diff --git a/homeassistant/components/update/__init__.py b/homeassistant/components/update/__init__.py index 6b30f45b023..6d4b36e3411 100644 --- a/homeassistant/components/update/__init__.py +++ b/homeassistant/components/update/__init__.py @@ -28,8 +28,8 @@ from homeassistant.helpers.typing import ConfigType from .const import ( ATTR_AUTO_UPDATE, ATTR_BACKUP, - ATTR_CURRENT_VERSION, ATTR_IN_PROGRESS, + ATTR_INSTALLED_VERSION, ATTR_LATEST_VERSION, ATTR_RELEASE_SUMMARY, ATTR_RELEASE_URL, @@ -117,7 +117,8 @@ async def async_install(entity: UpdateEntity, service_call: ServiceCall) -> None """Service call wrapper to validate the call.""" # If version is not specified, but no update is available. if (version := service_call.data.get(ATTR_VERSION)) is None and ( - entity.current_version == entity.latest_version or entity.latest_version is None + entity.installed_version == entity.latest_version + or entity.latest_version is None ): raise HomeAssistantError(f"No update available for {entity.name}") @@ -165,7 +166,7 @@ class UpdateEntity(RestoreEntity): entity_description: UpdateEntityDescription _attr_auto_update: bool = False - _attr_current_version: str | None = None + _attr_installed_version: str | None = None _attr_device_class: UpdateDeviceClass | str | None _attr_in_progress: bool | int = False _attr_latest_version: str | None = None @@ -183,9 +184,9 @@ class UpdateEntity(RestoreEntity): return self._attr_auto_update @property - def current_version(self) -> str | None: - """Version currently in use.""" - return self._attr_current_version + def installed_version(self) -> str | None: + """Version installed and in use.""" + return self._attr_installed_version @property def device_class(self) -> UpdateDeviceClass | str | None: @@ -256,7 +257,7 @@ class UpdateEntity(RestoreEntity): """Skip the current offered version to update.""" if (latest_version := self.latest_version) is None: raise HomeAssistantError(f"Cannot skip an unknown version for {self.name}") - if self.current_version == latest_version: + if self.installed_version == latest_version: raise HomeAssistantError(f"No update available to skip for {self.name}") self.__skipped_version = latest_version self.async_write_ha_state() @@ -305,7 +306,7 @@ class UpdateEntity(RestoreEntity): @final def state(self) -> str | None: """Return the entity state.""" - if (current_version := self.current_version) is None or ( + if (installed_version := self.installed_version) is None or ( latest_version := self.latest_version ) is None: return None @@ -314,11 +315,11 @@ class UpdateEntity(RestoreEntity): return STATE_OFF try: - newer = AwesomeVersion(latest_version) > current_version + newer = AwesomeVersion(latest_version) > installed_version return STATE_ON if newer else STATE_OFF except AwesomeVersionCompareException: # Can't compare versions, fallback to exact match - return STATE_OFF if latest_version == current_version else STATE_ON + return STATE_OFF if latest_version == installed_version else STATE_ON @final @property @@ -334,17 +335,17 @@ class UpdateEntity(RestoreEntity): else: in_progress = self.__in_progress - # Clear skipped version in case it matches the current version or - # the latest version diverged. + # Clear skipped version in case it matches the current installed + # version or the latest version diverged. if ( - self.__skipped_version == self.current_version + self.__skipped_version == self.installed_version or self.__skipped_version != self.latest_version ): self.__skipped_version = None return { ATTR_AUTO_UPDATE: self.auto_update, - ATTR_CURRENT_VERSION: self.current_version, + ATTR_INSTALLED_VERSION: self.installed_version, ATTR_IN_PROGRESS: in_progress, ATTR_LATEST_VERSION: self.latest_version, ATTR_RELEASE_SUMMARY: release_summary, diff --git a/homeassistant/components/update/const.py b/homeassistant/components/update/const.py index 916d2cbaceb..aec3c183a63 100644 --- a/homeassistant/components/update/const.py +++ b/homeassistant/components/update/const.py @@ -22,7 +22,7 @@ SERVICE_SKIP: Final = "skip" ATTR_AUTO_UPDATE: Final = "auto_update" ATTR_BACKUP: Final = "backup" -ATTR_CURRENT_VERSION: Final = "current_version" +ATTR_INSTALLED_VERSION: Final = "installed_version" ATTR_IN_PROGRESS: Final = "in_progress" ATTR_LATEST_VERSION: Final = "latest_version" ATTR_RELEASE_SUMMARY: Final = "release_summary" diff --git a/homeassistant/components/update/significant_change.py b/homeassistant/components/update/significant_change.py index 400734f2e43..8b37d227a1f 100644 --- a/homeassistant/components/update/significant_change.py +++ b/homeassistant/components/update/significant_change.py @@ -5,7 +5,7 @@ from typing import Any from homeassistant.core import HomeAssistant, callback -from .const import ATTR_CURRENT_VERSION, ATTR_LATEST_VERSION +from .const import ATTR_INSTALLED_VERSION, ATTR_LATEST_VERSION @callback @@ -21,7 +21,7 @@ def async_check_significant_change( if old_state != new_state: return True - if old_attrs.get(ATTR_CURRENT_VERSION) != new_attrs.get(ATTR_CURRENT_VERSION): + if old_attrs.get(ATTR_INSTALLED_VERSION) != new_attrs.get(ATTR_INSTALLED_VERSION): return True if old_attrs.get(ATTR_LATEST_VERSION) != new_attrs.get(ATTR_LATEST_VERSION): diff --git a/homeassistant/components/wled/update.py b/homeassistant/components/wled/update.py index 098f2ca3831..f0fc532b3b3 100644 --- a/homeassistant/components/wled/update.py +++ b/homeassistant/components/wled/update.py @@ -44,8 +44,8 @@ class WLEDUpdateEntity(WLEDEntity, UpdateEntity): self._attr_unique_id = coordinator.data.info.mac_address @property - def current_version(self) -> str | None: - """Version currently in use.""" + def installed_version(self) -> str | None: + """Version currently installed and in use.""" if (version := self.coordinator.data.info.version) is None: return None return str(version) diff --git a/tests/components/demo/test_update.py b/tests/components/demo/test_update.py index 37e0ea903d1..ebee402049c 100644 --- a/tests/components/demo/test_update.py +++ b/tests/components/demo/test_update.py @@ -5,8 +5,8 @@ import pytest from homeassistant.components.update import DOMAIN, SERVICE_INSTALL, UpdateDeviceClass from homeassistant.components.update.const import ( - ATTR_CURRENT_VERSION, ATTR_IN_PROGRESS, + ATTR_INSTALLED_VERSION, ATTR_LATEST_VERSION, ATTR_RELEASE_SUMMARY, ATTR_RELEASE_URL, @@ -31,7 +31,7 @@ def test_setup_params(hass: HomeAssistant) -> None: assert state assert state.state == STATE_ON assert state.attributes[ATTR_TITLE] == "Awesomesoft Inc." - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.1" assert ( state.attributes[ATTR_RELEASE_SUMMARY] == "Awesome update, fixing everything!" @@ -42,7 +42,7 @@ def test_setup_params(hass: HomeAssistant) -> None: assert state assert state.state == STATE_OFF assert state.attributes[ATTR_TITLE] == "AdGuard Home" - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.0" assert state.attributes[ATTR_RELEASE_SUMMARY] is None assert state.attributes[ATTR_RELEASE_URL] is None @@ -51,7 +51,7 @@ def test_setup_params(hass: HomeAssistant) -> None: assert state assert state.state == STATE_ON assert state.attributes[ATTR_TITLE] == "AdGuard Home" - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.1" assert ( state.attributes[ATTR_RELEASE_SUMMARY] == "Awesome update, fixing everything!" @@ -62,7 +62,7 @@ def test_setup_params(hass: HomeAssistant) -> None: assert state assert state.state == STATE_ON assert state.attributes[ATTR_TITLE] == "Philips Lamps Firmware" - assert state.attributes[ATTR_CURRENT_VERSION] == "1.93.3" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.93.3" assert state.attributes[ATTR_LATEST_VERSION] == "1.94.2" assert state.attributes[ATTR_RELEASE_SUMMARY] == "Added support for effects" assert ( @@ -74,7 +74,7 @@ def test_setup_params(hass: HomeAssistant) -> None: assert state assert state.state == STATE_ON assert state.attributes[ATTR_TITLE] == "Philips Lamps Firmware" - assert state.attributes[ATTR_CURRENT_VERSION] == "1.93.3" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.93.3" assert state.attributes[ATTR_LATEST_VERSION] == "1.94.2" assert state.attributes[ATTR_RELEASE_SUMMARY] == "Added support for effects" assert ( diff --git a/tests/components/pi_hole/test_update.py b/tests/components/pi_hole/test_update.py index 375104a9ce0..8da4ec263d5 100644 --- a/tests/components/pi_hole/test_update.py +++ b/tests/components/pi_hole/test_update.py @@ -20,7 +20,7 @@ async def test_update(hass): state = hass.states.get("update.pi_hole_core_update_available") assert state.name == "Pi-Hole Core Update Available" assert state.state == STATE_ON - assert state.attributes["current_version"] == "v5.5" + assert state.attributes["installed_version"] == "v5.5" assert state.attributes["latest_version"] == "v5.6" assert ( state.attributes["release_url"] @@ -30,7 +30,7 @@ async def test_update(hass): state = hass.states.get("update.pi_hole_ftl_update_available") assert state.name == "Pi-Hole FTL Update Available" assert state.state == STATE_ON - assert state.attributes["current_version"] == "v5.10" + assert state.attributes["installed_version"] == "v5.10" assert state.attributes["latest_version"] == "v5.11" assert ( state.attributes["release_url"] @@ -40,7 +40,7 @@ async def test_update(hass): state = hass.states.get("update.pi_hole_web_update_available") assert state.name == "Pi-Hole Web Update Available" assert state.state == STATE_ON - assert state.attributes["current_version"] == "v5.7" + assert state.attributes["installed_version"] == "v5.7" assert state.attributes["latest_version"] == "v5.8" assert ( state.attributes["release_url"] @@ -61,20 +61,20 @@ async def test_update_no_versions(hass): state = hass.states.get("update.pi_hole_core_update_available") assert state.name == "Pi-Hole Core Update Available" assert state.state == STATE_UNKNOWN - assert state.attributes["current_version"] is None + assert state.attributes["installed_version"] is None assert state.attributes["latest_version"] is None assert state.attributes["release_url"] is None state = hass.states.get("update.pi_hole_ftl_update_available") assert state.name == "Pi-Hole FTL Update Available" assert state.state == STATE_UNKNOWN - assert state.attributes["current_version"] is None + assert state.attributes["installed_version"] is None assert state.attributes["latest_version"] is None assert state.attributes["release_url"] is None state = hass.states.get("update.pi_hole_web_update_available") assert state.name == "Pi-Hole Web Update Available" assert state.state == STATE_UNKNOWN - assert state.attributes["current_version"] is None + assert state.attributes["installed_version"] is None assert state.attributes["latest_version"] is None assert state.attributes["release_url"] is None diff --git a/tests/components/update/test_init.py b/tests/components/update/test_init.py index b8db7f24f4a..3a40b51cca2 100644 --- a/tests/components/update/test_init.py +++ b/tests/components/update/test_init.py @@ -17,8 +17,8 @@ from homeassistant.components.update import ( ) from homeassistant.components.update.const import ( ATTR_AUTO_UPDATE, - ATTR_CURRENT_VERSION, ATTR_IN_PROGRESS, + ATTR_INSTALLED_VERSION, ATTR_LATEST_VERSION, ATTR_RELEASE_SUMMARY, ATTR_RELEASE_URL, @@ -51,14 +51,14 @@ async def test_update(hass: HomeAssistant) -> None: update = MockUpdateEntity() update.hass = hass - update._attr_current_version = "1.0.0" + update._attr_installed_version = "1.0.0" update._attr_latest_version = "1.0.1" update._attr_release_summary = "Summary" update._attr_release_url = "https://example.com" update._attr_title = "Title" assert update.entity_category is EntityCategory.DIAGNOSTIC - assert update.current_version == "1.0.0" + assert update.installed_version == "1.0.0" assert update.latest_version == "1.0.1" assert update.release_summary == "Summary" assert update.release_url == "https://example.com" @@ -67,7 +67,7 @@ async def test_update(hass: HomeAssistant) -> None: assert update.state == STATE_ON assert update.state_attributes == { ATTR_AUTO_UPDATE: False, - ATTR_CURRENT_VERSION: "1.0.0", + ATTR_INSTALLED_VERSION: "1.0.0", ATTR_IN_PROGRESS: False, ATTR_LATEST_VERSION: "1.0.1", ATTR_RELEASE_SUMMARY: "Summary", @@ -77,27 +77,27 @@ async def test_update(hass: HomeAssistant) -> None: } # Test no update available - update._attr_current_version = "1.0.0" + update._attr_installed_version = "1.0.0" update._attr_latest_version = "1.0.0" assert update.state is STATE_OFF - # Test state becomes unknown if current version is unknown - update._attr_current_version = None + # Test state becomes unknown if installed version is unknown + update._attr_installed_version = None update._attr_latest_version = "1.0.0" assert update.state is None # Test state becomes unknown if latest version is unknown - update._attr_current_version = "1.0.0" + update._attr_installed_version = "1.0.0" update._attr_latest_version = None assert update.state is None # Test no update if new version is not an update - update._attr_current_version = "1.0.0" + update._attr_installed_version = "1.0.0" update._attr_latest_version = "0.9.0" assert update.state is STATE_OFF # Test update if new version is not considered a valid version - update._attr_current_version = "1.0.0" + update._attr_installed_version = "1.0.0" update._attr_latest_version = "awesome_update" assert update.state is STATE_ON @@ -159,7 +159,7 @@ async def test_entity_with_no_install( state = hass.states.get("update.update_no_install") assert state assert state.state == STATE_ON - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.1" # Should not be able to install as the entity doesn't support that @@ -175,7 +175,7 @@ async def test_entity_with_no_install( state = hass.states.get("update.update_no_install") assert state assert state.state == STATE_ON - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.1" assert state.attributes[ATTR_SKIPPED_VERSION] is None @@ -190,7 +190,7 @@ async def test_entity_with_no_install( state = hass.states.get("update.update_no_install") assert state assert state.state == STATE_OFF - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.1" assert state.attributes[ATTR_SKIPPED_VERSION] == "1.0.1" @@ -210,7 +210,7 @@ async def test_entity_with_no_updates( state = hass.states.get("update.no_update") assert state assert state.state == STATE_OFF - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.0" # Should not be able to skip when there is no update available @@ -259,7 +259,7 @@ async def test_entity_with_auto_update( state = hass.states.get("update.update_with_auto_update") assert state assert state.state == STATE_ON - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.1" assert state.attributes[ATTR_SKIPPED_VERSION] is None @@ -300,7 +300,7 @@ async def test_entity_with_updates_available( state = hass.states.get("update.update_available") assert state assert state.state == STATE_ON - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.1" assert state.attributes[ATTR_SKIPPED_VERSION] is None @@ -316,7 +316,7 @@ async def test_entity_with_updates_available( state = hass.states.get("update.update_available") assert state assert state.state == STATE_OFF - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.1" assert state.attributes[ATTR_SKIPPED_VERSION] == "1.0.1" @@ -332,7 +332,7 @@ async def test_entity_with_updates_available( state = hass.states.get("update.update_available") assert state assert state.state == STATE_OFF - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.1" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.1" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.1" assert state.attributes[ATTR_SKIPPED_VERSION] is None assert "Installed latest update" in caplog.text @@ -353,7 +353,7 @@ async def test_entity_with_unknown_version( state = hass.states.get("update.update_unknown") assert state assert state.state == STATE_UNKNOWN - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert state.attributes[ATTR_LATEST_VERSION] is None assert state.attributes[ATTR_SKIPPED_VERSION] is None @@ -391,7 +391,7 @@ async def test_entity_with_specific_version( state = hass.states.get("update.update_specific_version") assert state assert state.state == STATE_OFF - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.0" # Update to a specific version @@ -406,7 +406,7 @@ async def test_entity_with_specific_version( state = hass.states.get("update.update_specific_version") assert state assert state.state == STATE_ON - assert state.attributes[ATTR_CURRENT_VERSION] == "0.9.9" + assert state.attributes[ATTR_INSTALLED_VERSION] == "0.9.9" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.0" assert "Installed update with version: 0.9.9" in caplog.text @@ -421,7 +421,7 @@ async def test_entity_with_specific_version( state = hass.states.get("update.update_specific_version") assert state assert state.state == STATE_OFF - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.0" assert "Installed latest update" in caplog.text @@ -455,7 +455,7 @@ async def test_entity_with_backup_support( state = hass.states.get("update.update_backup") assert state assert state.state == STATE_ON - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.1" # Without a backup @@ -472,7 +472,7 @@ async def test_entity_with_backup_support( state = hass.states.get("update.update_backup") assert state assert state.state == STATE_OFF - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.1" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.1" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.1" assert "Creating backup before installing update" not in caplog.text assert "Installed latest update" in caplog.text @@ -493,7 +493,7 @@ async def test_entity_with_backup_support( state = hass.states.get("update.update_backup") assert state assert state.state == STATE_ON - assert state.attributes[ATTR_CURRENT_VERSION] == "0.9.8" + assert state.attributes[ATTR_INSTALLED_VERSION] == "0.9.8" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.1" assert "Creating backup before installing update" in caplog.text assert "Installed update with version: 0.9.8" in caplog.text @@ -514,7 +514,7 @@ async def test_entity_already_in_progress( state = hass.states.get("update.update_already_in_progress") assert state assert state.state == STATE_ON - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.1" assert state.attributes[ATTR_IN_PROGRESS] == 50 @@ -559,14 +559,14 @@ async def test_entity_without_progress_support( assert len(events) == 2 assert events[0].data.get("old_state").attributes[ATTR_IN_PROGRESS] is False - assert events[0].data.get("old_state").attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert events[0].data.get("old_state").attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert events[0].data.get("new_state").attributes[ATTR_IN_PROGRESS] is True - assert events[0].data.get("new_state").attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert events[0].data.get("new_state").attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert events[1].data.get("old_state").attributes[ATTR_IN_PROGRESS] is True - assert events[1].data.get("old_state").attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert events[1].data.get("old_state").attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert events[1].data.get("new_state").attributes[ATTR_IN_PROGRESS] is False - assert events[1].data.get("new_state").attributes[ATTR_CURRENT_VERSION] == "1.0.1" + assert events[1].data.get("new_state").attributes[ATTR_INSTALLED_VERSION] == "1.0.1" async def test_entity_without_progress_support_raising( @@ -602,14 +602,14 @@ async def test_entity_without_progress_support_raising( assert len(events) == 2 assert events[0].data.get("old_state").attributes[ATTR_IN_PROGRESS] is False - assert events[0].data.get("old_state").attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert events[0].data.get("old_state").attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert events[0].data.get("new_state").attributes[ATTR_IN_PROGRESS] is True - assert events[0].data.get("new_state").attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert events[0].data.get("new_state").attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert events[1].data.get("old_state").attributes[ATTR_IN_PROGRESS] is True - assert events[1].data.get("old_state").attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert events[1].data.get("old_state").attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert events[1].data.get("new_state").attributes[ATTR_IN_PROGRESS] is False - assert events[1].data.get("new_state").attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert events[1].data.get("new_state").attributes[ATTR_INSTALLED_VERSION] == "1.0.0" async def test_restore_state( @@ -638,7 +638,7 @@ async def test_restore_state( state = hass.states.get("update.update_available") assert state assert state.state == STATE_OFF - assert state.attributes[ATTR_CURRENT_VERSION] == "1.0.0" + assert state.attributes[ATTR_INSTALLED_VERSION] == "1.0.0" assert state.attributes[ATTR_LATEST_VERSION] == "1.0.1" assert state.attributes[ATTR_SKIPPED_VERSION] == "1.0.1" diff --git a/tests/components/update/test_recorder.py b/tests/components/update/test_recorder.py index 17ab7445b4b..6d4ec567182 100644 --- a/tests/components/update/test_recorder.py +++ b/tests/components/update/test_recorder.py @@ -6,8 +6,8 @@ from datetime import timedelta from homeassistant.components.recorder.models import StateAttributes, States from homeassistant.components.recorder.util import session_scope from homeassistant.components.update.const import ( - ATTR_CURRENT_VERSION, ATTR_IN_PROGRESS, + ATTR_INSTALLED_VERSION, ATTR_RELEASE_SUMMARY, DOMAIN, ) @@ -52,4 +52,4 @@ async def test_exclude_attributes( for state in states: assert ATTR_IN_PROGRESS not in state.attributes assert ATTR_RELEASE_SUMMARY not in state.attributes - assert ATTR_CURRENT_VERSION in state.attributes + assert ATTR_INSTALLED_VERSION in state.attributes diff --git a/tests/components/update/test_significant_change.py b/tests/components/update/test_significant_change.py index 699d3e60f57..35e601f4789 100644 --- a/tests/components/update/test_significant_change.py +++ b/tests/components/update/test_significant_change.py @@ -1,7 +1,7 @@ """Test the update significant change platform.""" from homeassistant.components.update.const import ( - ATTR_CURRENT_VERSION, ATTR_IN_PROGRESS, + ATTR_INSTALLED_VERSION, ATTR_LATEST_VERSION, ATTR_RELEASE_SUMMARY, ATTR_RELEASE_URL, @@ -23,7 +23,7 @@ async def test_significant_change(hass: HomeAssistant) -> None: assert not async_check_significant_change(hass, STATE_ON, {}, STATE_ON, {}) attrs = { - ATTR_CURRENT_VERSION: "1.0.0", + ATTR_INSTALLED_VERSION: "1.0.0", ATTR_IN_PROGRESS: False, ATTR_LATEST_VERSION: "1.0.1", ATTR_RELEASE_SUMMARY: "Fixes!", @@ -38,7 +38,7 @@ async def test_significant_change(hass: HomeAssistant) -> None: STATE_ON, attrs, STATE_ON, - attrs.copy() | {ATTR_CURRENT_VERSION: "1.0.1"}, + attrs.copy() | {ATTR_INSTALLED_VERSION: "1.0.1"}, ) assert async_check_significant_change( diff --git a/tests/components/wled/test_update.py b/tests/components/wled/test_update.py index fea6180048e..452aeba6a80 100644 --- a/tests/components/wled/test_update.py +++ b/tests/components/wled/test_update.py @@ -11,7 +11,7 @@ from homeassistant.components.update import ( UpdateEntityFeature, ) from homeassistant.components.update.const import ( - ATTR_CURRENT_VERSION, + ATTR_INSTALLED_VERSION, ATTR_LATEST_VERSION, ATTR_RELEASE_SUMMARY, ATTR_RELEASE_URL, @@ -46,7 +46,7 @@ async def test_update_available( assert state assert state.attributes.get(ATTR_DEVICE_CLASS) == UpdateDeviceClass.FIRMWARE assert state.state == STATE_ON - assert state.attributes[ATTR_CURRENT_VERSION] == "0.8.5" + assert state.attributes[ATTR_INSTALLED_VERSION] == "0.8.5" assert state.attributes[ATTR_LATEST_VERSION] == "0.12.0" assert state.attributes[ATTR_RELEASE_SUMMARY] is None assert ( @@ -79,7 +79,7 @@ async def test_update_information_available( assert state assert state.attributes.get(ATTR_DEVICE_CLASS) == UpdateDeviceClass.FIRMWARE assert state.state == STATE_UNKNOWN - assert state.attributes[ATTR_CURRENT_VERSION] is None + assert state.attributes[ATTR_INSTALLED_VERSION] is None assert state.attributes[ATTR_LATEST_VERSION] is None assert state.attributes[ATTR_RELEASE_SUMMARY] is None assert state.attributes[ATTR_RELEASE_URL] is None @@ -110,7 +110,7 @@ async def test_no_update_available( assert state assert state.state == STATE_OFF assert state.attributes.get(ATTR_DEVICE_CLASS) == UpdateDeviceClass.FIRMWARE - assert state.attributes[ATTR_CURRENT_VERSION] == "0.12.0-b2" + assert state.attributes[ATTR_INSTALLED_VERSION] == "0.12.0-b2" assert state.attributes[ATTR_LATEST_VERSION] == "0.12.0-b2" assert state.attributes[ATTR_RELEASE_SUMMARY] is None assert ( @@ -169,7 +169,7 @@ async def test_update_stay_stable( state = hass.states.get("update.wled_rgb_light_firmware") assert state assert state.state == STATE_ON - assert state.attributes[ATTR_CURRENT_VERSION] == "0.8.5" + assert state.attributes[ATTR_INSTALLED_VERSION] == "0.8.5" assert state.attributes[ATTR_LATEST_VERSION] == "0.12.0" await hass.services.async_call( @@ -198,7 +198,7 @@ async def test_update_beta_to_stable( state = hass.states.get("update.wled_rgbw_light_firmware") assert state assert state.state == STATE_ON - assert state.attributes[ATTR_CURRENT_VERSION] == "0.8.6b4" + assert state.attributes[ATTR_INSTALLED_VERSION] == "0.8.6b4" assert state.attributes[ATTR_LATEST_VERSION] == "0.8.6" await hass.services.async_call( @@ -226,7 +226,7 @@ async def test_update_stay_beta( state = hass.states.get("update.wled_rgb_light_firmware") assert state assert state.state == STATE_ON - assert state.attributes[ATTR_CURRENT_VERSION] == "0.8.6b1" + assert state.attributes[ATTR_INSTALLED_VERSION] == "0.8.6b1" assert state.attributes[ATTR_LATEST_VERSION] == "0.8.6b2" await hass.services.async_call( diff --git a/tests/testing_config/custom_components/test/update.py b/tests/testing_config/custom_components/test/update.py index fc5ee31246e..1840f076407 100644 --- a/tests/testing_config/custom_components/test/update.py +++ b/tests/testing_config/custom_components/test/update.py @@ -26,9 +26,9 @@ class MockUpdateEntity(MockEntity, UpdateEntity): return self._handle("auto_update") @property - def current_version(self) -> str | None: - """Version currently in use.""" - return self._handle("current_version") + def installed_version(self) -> str | None: + """Version currently installed and in use.""" + return self._handle("installed_version") @property def in_progress(self) -> bool | int | None: @@ -61,10 +61,10 @@ class MockUpdateEntity(MockEntity, UpdateEntity): _LOGGER.info("Creating backup before installing update") if version is not None: - self._values["current_version"] = version + self._values["installed_version"] = version _LOGGER.info(f"Installed update with version: {version}") else: - self._values["current_version"] = self.latest_version + self._values["installed_version"] = self.latest_version _LOGGER.info("Installed latest update") def release_notes(self) -> str | None: @@ -83,28 +83,28 @@ def init(empty=False): MockUpdateEntity( name="No Update", unique_id="no_update", - current_version="1.0.0", + installed_version="1.0.0", latest_version="1.0.0", supported_features=UpdateEntityFeature.INSTALL, ), MockUpdateEntity( name="Update Available", unique_id="update_available", - current_version="1.0.0", + installed_version="1.0.0", latest_version="1.0.1", supported_features=UpdateEntityFeature.INSTALL, ), MockUpdateEntity( name="Update Unknown", unique_id="update_unknown", - current_version="1.0.0", + installed_version="1.0.0", latest_version=None, supported_features=UpdateEntityFeature.INSTALL, ), MockUpdateEntity( name="Update Specific Version", unique_id="update_specific_version", - current_version="1.0.0", + installed_version="1.0.0", latest_version="1.0.0", supported_features=UpdateEntityFeature.INSTALL | UpdateEntityFeature.SPECIFIC_VERSION, @@ -112,7 +112,7 @@ def init(empty=False): MockUpdateEntity( name="Update Backup", unique_id="update_backup", - current_version="1.0.0", + installed_version="1.0.0", latest_version="1.0.1", supported_features=UpdateEntityFeature.INSTALL | UpdateEntityFeature.SPECIFIC_VERSION @@ -121,7 +121,7 @@ def init(empty=False): MockUpdateEntity( name="Update Already in Progress", unique_id="update_already_in_progres", - current_version="1.0.0", + installed_version="1.0.0", latest_version="1.0.1", in_progress=50, supported_features=UpdateEntityFeature.INSTALL @@ -130,20 +130,20 @@ def init(empty=False): MockUpdateEntity( name="Update No Install", unique_id="no_install", - current_version="1.0.0", + installed_version="1.0.0", latest_version="1.0.1", ), MockUpdateEntity( name="Update with release notes", unique_id="with_release_notes", - current_version="1.0.0", + installed_version="1.0.0", latest_version="1.0.1", supported_features=UpdateEntityFeature.RELEASE_NOTES, ), MockUpdateEntity( name="Update with auto update", unique_id="with_auto_update", - current_version="1.0.0", + installed_version="1.0.0", latest_version="1.0.1", auto_update=True, supported_features=UpdateEntityFeature.INSTALL,