11"""Evaluation class for Core version."""
22
33from datetime import datetime , timedelta
4+ import logging
45
56from awesomeversion import (
67 AwesomeVersion ,
1415from ..const import UnsupportedReason
1516from .base import EvaluateBase
1617
18+ _LOGGER : logging .Logger = logging .getLogger (__name__ )
19+
1720
1821def setup (coresys : CoreSys ) -> EvaluateBase :
1922 """Initialize evaluation-setup function."""
@@ -40,9 +43,7 @@ def states(self) -> list[CoreState]:
4043
4144 async def evaluate (self ) -> bool :
4245 """Run evaluation."""
43- if not (current := self .sys_homeassistant .version ) or not (
44- latest := self .sys_homeassistant .latest_version
45- ):
46+ if not (current := self .sys_homeassistant .version ):
4647 return False
4748
4849 # Skip evaluation for landingpage version
@@ -53,10 +54,7 @@ async def evaluate(self) -> bool:
5354 # Calculate if the current version was released more than 2 years ago
5455 # Home Assistant releases happen monthly, so approximately 24 versions per 2 years
5556 # However, we'll be more precise and check based on actual version numbers
56- # Home Assistant follows a versioning scheme like 2024.1, 2024.2, etc.
57-
58- # Extract year from current version
59- current_year = int (str (current ).split ("." )[0 ])
57+ # Home Assistant uses CalVer versioning scheme like 2024.1, 2024.2, etc.
6058
6159 # Calculate 2 years ago from now
6260 two_years_ago = datetime .now () - timedelta (days = 730 ) # 2 years = 730 days
@@ -72,13 +70,13 @@ async def evaluate(self) -> bool:
7270 # Compare current version with the cutoff
7371 return current < cutoff_version
7472
75- except ( AwesomeVersionException , ValueError , IndexError ) :
76- # If we can't parse the version format, fall back to conservative approach
77- # Consider unsupported if current is significantly behind latest
78- try :
79- # If latest version is from current year and current is from 2+ years ago
80- latest_year = int ( str ( latest ). split ( "." )[ 0 ])
81- current_year = int ( str ( current ). split ( "." )[ 0 ])
82- return ( latest_year - current_year ) >= 2
83- except ( ValueError , IndexError ):
84- return False
73+ except AwesomeVersionException as err :
74+ # This is run regularly, avoid log spam by logging at debug level
75+ _LOGGER . debug (
76+ "Failed to parse Home Assistant version '%s' or cutoff version '%s': %s" ,
77+ current ,
78+ cutoff_version ,
79+ err ,
80+ )
81+ # Consider non-parseable versions as unsupported
82+ return True
0 commit comments