From 5c0884facbbbf622f2628beaabc4a7de09cff80f 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]. Also update required Python version for Debian to 3.12 or newer. [1] https://peps.python.org/pep-0632/#migration-advice --- debian/control | 6 +++--- safeeyes/model.py | 5 +++-- safeeyes/utility.py | 4 ++-- setup.py | 1 + 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/debian/control b/debian/control index 33a81af7..246f29ed 100644 --- a/debian/control +++ b/debian/control @@ -2,14 +2,14 @@ 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 Standards-Version: 3.9.6 -X-Python3-Version: >= 3.5 +X-Python3-Version: >= 3.12 Homepage: https://github.com/slgobinath/SafeEyes/ Package: safeeyes Architecture: all -Depends: ${misc:Depends}, ${python3:Depends}, gir1.2-ayatanaappindicator3-0.1, python3 (>= 3.5.0), python3-xlib, python3-dbus, gir1.2-notify-0.7, python3-babel, x11-utils, xprintidle, alsa-utils, python3-psutil, python3-croniter +Depends: ${misc:Depends}, ${python3:Depends}, gir1.2-ayatanaappindicator3-0.1, python3 (>= 3.12.0), python3-xlib, python3-dbus, gir1.2-notify-0.7, python3-babel, x11-utils, xprintidle, alsa-utils, python3-psutil, python3-croniter Description: Safe Eyes Safe Eyes is a simple tool to remind you to take periodic breaks for your eyes. This is essential for anyone spending more time on the computer to avoid eye strain and other physical problems. . 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' ]