BonPrinter v1.2.0
Thermal Printer tool
Loading...
Searching...
No Matches
Source.Model.update_service Namespace Reference

Functions

bool compare_versions (str current_version, str latest_version)
 Compare version for newer status.
str|None get_newest_tool_version ()
 Get newest tool version.
str|None get_tool_update_status ()
 Get tool update status.

Variables

int I_TIMEOUT = 5
 log = logging.getLogger(__title__)
str S_UPDATE_URL = f"https://github.com/{__owner__}/{__repo__}/releases/latest"
str S_UPDATE_URL_API = f"https://api.github.com/repos/{__owner__}/{__repo__}/releases/latest"

Detailed Description


Function Documentation

◆ compare_versions()

bool compare_versions ( str current_version,
str latest_version )

Compare version for newer status.

Parameters
current_version: current version
latest_version: latest version
Returns
status if newer version

Definition at line 20 of file update_service.py.

20def compare_versions(current_version: str, latest_version: str) -> bool:
21 """!
22 @brief Compare version for newer status
23 @param current_version : current version
24 @param latest_version : latest version
25 @return status if newer version
26 """
27 newer_version = None
28 l_current_version = current_version.split('.')
29 l_latest_version = latest_version.split('.')
30 try:
31 _all_int = all(isinstance(int(x), int) for x in (l_current_version + l_latest_version))
32 except ValueError:
33 newer_version = False
34 log.debug("Version not int; current: %s; latest: %s", current_version, latest_version)
35 else:
36 current_parts = list(map(int, l_current_version))
37 latest_parts = list(map(int, l_latest_version))
38 if current_parts == latest_parts:
39 newer_version = False
40 log.debug("Current and latest versions are same")
41 else:
42 for current, latest in zip(current_parts, latest_parts):
43 if current > latest:
44 newer_version = False
45 break
46 if latest > current:
47 newer_version = True
48 break
49 if newer_version is None:
50 newer_version = len(latest_parts) > len(current_parts)
51 return newer_version
52
53

◆ get_newest_tool_version()

str | None get_newest_tool_version ( )

Get newest tool version.

Returns
latest version

Definition at line 54 of file update_service.py.

54def get_newest_tool_version() -> str | None:
55 """!
56 @brief Get newest tool version
57 @return latest version
58 """
59 latest_release = None
60 try:
61 response = requests.get(S_UPDATE_URL_API, timeout=I_TIMEOUT)
62 except requests.Timeout:
63 pass # timeout
64 except requests.RequestException:
65 pass # request exception
66 else:
67 if response.status_code == 200:
68 latest_release = response.json().get("tag_name", "")
69 latest_release = "".join(c for c in latest_release if c.isdigit() or c == ".")
70 return latest_release
71
72

◆ get_tool_update_status()

str | None get_tool_update_status ( )

Get tool update status.

Returns
tool status: None: not update required or no connection; else newest version

Definition at line 73 of file update_service.py.

73def get_tool_update_status() -> str | None:
74 """!
75 @brief Get tool update status
76 @return tool status: None: not update required or no connection; else newest version
77 """
78 current_version = __version__
79 latest_release = get_newest_tool_version()
80 if latest_release is not None:
81 b_newer_version = compare_versions(current_version, latest_release)
82 update_to_version = latest_release if b_newer_version else None
83 else:
84 update_to_version = None
85 return update_to_version

Variable Documentation

◆ I_TIMEOUT

int I_TIMEOUT = 5

Definition at line 15 of file update_service.py.

◆ log

log = logging.getLogger(__title__)

Definition at line 13 of file update_service.py.

◆ S_UPDATE_URL

str S_UPDATE_URL = f"https://github.com/{__owner__}/{__repo__}/releases/latest"

Definition at line 16 of file update_service.py.

◆ S_UPDATE_URL_API

str S_UPDATE_URL_API = f"https://api.github.com/repos/{__owner__}/{__repo__}/releases/latest"

Definition at line 17 of file update_service.py.