From 1844649e31ad897daa1a5ab411ebd4d3a1ba8541 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 also recommended by PEP 632 [1]. [1] https://peps.python.org/pep-0632/#migration-advice --- debian/control | 2 +- safeeyes/model.py | 5 +++-- safeeyes/utility.py | 4 ++-- setup.py | 1 + 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/debian/control b/debian/control index 33a81af7..119f666c 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: safeeyes Section: utils Priority: optional Maintainer: Gobinath Loganathan -Build-Depends: debhelper (>= 10), dh-python, python3, python3-setuptools +Build-Depends: debhelper (>= 10), dh-python, python3, python3-packaging, python3-setuptools Standards-Version: 3.9.6 X-Python3-Version: >= 3.5 Homepage: https://github.com/slgobinath/SafeEyes/ diff --git a/safeeyes/model.py b/safeeyes/model.py index 453761df..c43dc570 100644 --- a/safeeyes/model.py +++ b/safeeyes/model.py @@ -22,9 +22,10 @@ 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 @@ def __init__(self, init=True): 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 8006dd42..fb487f10 100644 --- a/safeeyes/utility.py +++ b/safeeyes/utility.py @@ -32,7 +32,6 @@ import shutil import subprocess import threading -from distutils.version import LooseVersion from logging.handlers import RotatingFileHandler from pathlib import Path @@ -43,6 +42,7 @@ 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') @@ -547,7 +547,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 07a314b9..4dda0231 100644 --- a/setup.py +++ b/setup.py @@ -8,6 +8,7 @@ 'psutil', 'croniter', 'PyGObject', + 'packaging', 'python-xlib' ]