Coverage for opt/mealie/lib/python3.12/site-packages/mealie/core/release_checker.py: 27%

24 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-11-25 15:48 +0000

1import datetime 1a

2from functools import lru_cache 1a

3 

4import requests 1a

5 

6_LAST_RESET: datetime.datetime | None = None 1a

7 

8 

9@lru_cache(maxsize=1) 1a

10def get_latest_github_release() -> str: 1a

11 """ 

12 Gets the latest release from GitHub. 

13 

14 Returns: 

15 str: The latest release from GitHub. 

16 """ 

17 

18 url = "https://api.github.com/repos/mealie-recipes/mealie/releases/latest" 

19 response = requests.get(url) 

20 response.raise_for_status() 

21 return response.json()["tag_name"] 

22 

23 

24def get_latest_version() -> str: 1a

25 """ 

26 Gets the latest release version. 

27 

28 Returns: 

29 str: The latest release version. 

30 """ 

31 MAX_DAYS_OLD = 1 # reset cache after 1 day 

32 

33 global _LAST_RESET 

34 

35 now = datetime.datetime.now(datetime.UTC) 

36 

37 if not _LAST_RESET or now - _LAST_RESET > datetime.timedelta(days=MAX_DAYS_OLD): 

38 _LAST_RESET = now 

39 get_latest_github_release.cache_clear() 

40 

41 try: 

42 return get_latest_github_release() 

43 except requests.RequestException: 

44 return "error fetching version" 

45 except KeyError: 

46 return "error parsing response" 

47 except Exception: 

48 return "unknown error"