From d1eadd380d19fe2b8863a8f7bcfac04204b04262 Mon Sep 17 00:00:00 2001 From: Tero Paloheimo Date: Sat, 30 Dec 2023 19:42:32 +0200 Subject: [PATCH] Remove use of distutils As of Python 3.12 setuptools is no longer installed by default and if setuptools is not installed distutils is not found and SafeEyes fails to start. Furthermore distutils is deprecated and should thus not be used anymore. The packaging module provides a replacement for LooseVersion and it is added in this commit. --- safeeyes/model.py | 5 +++-- safeeyes/utility.py | 4 ++-- setup.py | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/safeeyes/model.py b/safeeyes/model.py index 453761d..c43dc57 100644 --- a/safeeyes/model.py +++ b/safeeyes/model.py @@ -22,9 +22,10 @@ This module contains the entity classes used by Safe Eyes and its plugins. import logging import random -from distutils.version import LooseVersion from enum import Enum +from packaging.version import parse + from safeeyes import utility @@ -323,7 +324,7 @@ class Config: else: user_config_version = str( meta_obj.get('config_version', '0.0.0')) - if LooseVersion(user_config_version) != LooseVersion(system_config_version): + if parse(user_config_version) != parse(system_config_version): # Update the user config self.__merge_dictionary( self.__user_config, self.__system_config) diff --git a/safeeyes/utility.py b/safeeyes/utility.py index 3976140..7d4b8d6 100644 --- a/safeeyes/utility.py +++ b/safeeyes/utility.py @@ -32,7 +32,6 @@ import sys import shutil import subprocess import threading -from distutils.version import LooseVersion from logging.handlers import RotatingFileHandler from pathlib import Path @@ -43,6 +42,7 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk from gi.repository import GLib from gi.repository import GdkPixbuf +from packaging.version import parse gi.require_version('Gdk', '3.0') @@ -559,7 +559,7 @@ def __update_plugin_config(plugin, plugin_config, config): if plugin_config is None: config['plugins'].remove(plugin) else: - if LooseVersion(plugin.get('version', '0.0.0')) != LooseVersion(plugin_config['meta']['version']): + if parse(plugin.get('version', '0.0.0')) != parse(plugin_config['meta']['version']): # Update the configuration plugin['version'] = plugin_config['meta']['version'] setting_ids = [] diff --git a/setup.py b/setup.py index c7bc490..7d3de5d 100644 --- a/setup.py +++ b/setup.py @@ -8,6 +8,7 @@ requires = [ 'psutil', 'croniter', 'PyGObject', + 'packaging', 'python-xlib' ]