import platform import logging import os from borgmatic.borg import version as borg_version try: import importlib_metadata except ModuleNotFoundError: # pragma: nocover import importlib.metadata as importlib_metadata logger = logging.Logger(__name__) def log_versions(): # pragma: nocover ''' Logs the platform and the architecture on debug. Also logs the version of borgmatic and python. ''' logging.debug(f'Borgmatic version: {importlib_metadata.version("borgmatic")}') logging.debug(f'Architecture: {platform.machine()}') logging.debug(f'Python: {platform.python_implementation()} {platform.python_version()}') if platform.system() == 'Linux': logging.debug('Operating system: Linux') logging.debug(f'Kernel: {os.uname()[2]}') try: os_release = platform.freedesktop_os_release() if 'PRETTY_NAME' in os_release: logging.debug(f'Distribution: {os_release["PRETTY_NAME"]}') elif 'NAME' in os_release: logging.debug(f'Distribution name: {os_release["NAME"]}') if 'VERSION' in os_release: logging.debug(f'Distribution version: {os_release["VERSION"]}') except OSError: logging.debug('Cannot determine linux distribution: /etc/os-release and /usr/lib/os-release not accessible') elif platform.system() == 'Darwin': logging.debug('Operating system: MacOS') logging.debug(f'Operating system version: {platform.mac_ver()[0]}') elif platform.system() == 'Windows': logging.debug('Operating system: Windows') logging.debug(f'Operating system version: {platform.win32_edition()[0]}') else: logging.debug(f'Operating system: {platform.system()}')