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 17:29 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-11-25 17:29 +0000
1import datetime 1a
2from functools import lru_cache 1a
4import requests 1a
6_LAST_RESET: datetime.datetime | None = None 1a
9@lru_cache(maxsize=1) 1a
10def get_latest_github_release() -> str: 1a
11 """
12 Gets the latest release from GitHub.
14 Returns:
15 str: The latest release from GitHub.
16 """
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"]
24def get_latest_version() -> str: 1a
25 """
26 Gets the latest release version.
28 Returns:
29 str: The latest release version.
30 """
31 MAX_DAYS_OLD = 1 # reset cache after 1 day
33 global _LAST_RESET
35 now = datetime.datetime.now(datetime.UTC)
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()
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"