From a668300c2e038b40b2ea6bbc51cb47598f4a5688 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Mon, 30 Aug 2021 14:11:07 +0200 Subject: [PATCH] Use AwesomeVersion for account link service check (#55449) --- .../components/cloud/account_link.py | 38 +++---------------- 1 file changed, 5 insertions(+), 33 deletions(-) diff --git a/homeassistant/components/cloud/account_link.py b/homeassistant/components/cloud/account_link.py index 5ad7ddcffed..5bb0db6d057 100644 --- a/homeassistant/components/cloud/account_link.py +++ b/homeassistant/components/cloud/account_link.py @@ -4,9 +4,10 @@ import logging from typing import Any import aiohttp +from awesomeversion import AwesomeVersion from hass_nabucasa import account_link -from homeassistant.const import MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION +from homeassistant.const import __version__ as HA_VERSION from homeassistant.core import HomeAssistant, callback from homeassistant.helpers import config_entry_oauth2_flow, event @@ -16,6 +17,8 @@ DATA_SERVICES = "cloud_account_link_services" CACHE_TIMEOUT = 3600 _LOGGER = logging.getLogger(__name__) +CURRENT_VERSION = AwesomeVersion(HA_VERSION) + @callback def async_setup(hass: HomeAssistant): @@ -30,43 +33,12 @@ async def async_provide_implementation(hass: HomeAssistant, domain: str): services = await _get_services(hass) for service in services: - if service["service"] == domain and _is_older(service["min_version"]): + if service["service"] == domain and CURRENT_VERSION >= service["min_version"]: return CloudOAuth2Implementation(hass, domain) return -@callback -def _is_older(version: str) -> bool: - """Test if a version is older than the current HA version.""" - version_parts = version.split(".") - - if len(version_parts) != 3: - return False - - try: - version_parts = [int(val) for val in version_parts] - except ValueError: - return False - - patch_number_str = "" - - for char in PATCH_VERSION: - if char.isnumeric(): - patch_number_str += char - else: - break - - try: - patch_number = int(patch_number_str) - except ValueError: - patch_number = 0 - - cur_version_parts = [MAJOR_VERSION, MINOR_VERSION, patch_number] - - return version_parts <= cur_version_parts - - async def _get_services(hass): """Get the available services.""" services = hass.data.get(DATA_SERVICES)