From 5fe921af84c3327d629e8d02399b224b9fab98ff Mon Sep 17 00:00:00 2001 From: lovetox <philipp@hoerist.com> Date: Sat, 18 Apr 2020 12:45:16 +0200 Subject: [PATCH] Refactor get_os_info() --- gajim/common/app.py | 2 -- gajim/common/helpers.py | 22 +++++++++++----------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/gajim/common/app.py b/gajim/common/app.py index 783381c25d..531d6bda1d 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 73c1f6895d..031c98d28a 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): -- GitLab