diff --git a/gajim/common/app.py b/gajim/common/app.py index 783381c25dbe3607c97c041fb4dca1eade0dba19..531d6bda1d55e1b7e95ae6630341158cabf990f5 100644 --- a/gajim/common/app.py +++ b/gajim/common/app.py @@ -71,8 +71,6 @@ css_config = None -os_info = None # used to cache os information - transport_type = {} # type: Dict[str, str] # dict of time of the latest incoming message per jid diff --git a/gajim/common/helpers.py b/gajim/common/helpers.py index 73c1f6895db792e87f4053e593dfd59d6aec9dc2..031c98d28a24fef46baf9a2befa836d242941dde 100644 --- a/gajim/common/helpers.py +++ b/gajim/common/helpers.py @@ -45,6 +45,8 @@ import json import copy import collections +import platform +import functools from collections import defaultdict import random import weakref @@ -702,21 +704,19 @@ def get_random_string(count=16): allowed = string.ascii_uppercase + string.digits return ''.join(random.choice(allowed) for char in range(count)) +@functools.lru_cache(maxsize=1) def get_os_info(): - if app.os_info: - return app.os_info - app.os_info = 'N/A' - if os.name == 'nt' or sys.platform == 'darwin': - import platform - app.os_info = platform.system() + " " + platform.release() - elif os.name == 'posix': + info = 'N/A' + if sys.platform in ('win32', 'darwin'): + info = f'{platform.system()} {platform.release()}' + + elif sys.platform == 'linux': try: import distro - app.os_info = distro.name(pretty=True) + info = distro.name(pretty=True) except ImportError: - import platform - app.os_info = platform.system() - return app.os_info + info = platform.system() + return info def allow_showing_notification(account, type_='notify_on_new_message', is_first_message=True):