[X2Go-Commits] [python-x2go] 01/03: Python 3.12 compatibility: Switch from distutils.version to looseversion (with fallback to packaging.version).

git-admin at x2go.org git-admin at x2go.org
Sat Jan 6 21:08:46 CET 2024


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository python-x2go.

commit e1d6a99dc005aac0bab6327edb3b3008cac5b2f9
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Wed Jan 3 11:23:57 2024 +0100

    Python 3.12 compatibility: Switch from distutils.version to looseversion (with fallback to packaging.version).
---
 docs/source/conf.py | 16 ++++++++++++----
 x2go/utils.py       | 23 +++++++++++++++++------
 2 files changed, 29 insertions(+), 10 deletions(-)

diff --git a/docs/source/conf.py b/docs/source/conf.py
index a4bc82b..d4c9770 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -20,12 +20,20 @@ import os
 import sys
 sys.path.insert(0, os.path.abspath('../../'))
 import x2go
-import distutils.version
+try:
+    from looseversion import LooseVersion
+except ImportError:
+    try:
+        from distutils.version import LooseVersion
+    except ImportError:
+        # PEP-440 is not a replacement for formerly available distutils.version.LooseVersion,
+        # but we need to live with it until LooseVersion is available everywhere.
+        from packaging.version import Version as LooseVersion
 import sphinx
 
 from datetime import date
 
-sphinxver = distutils.version.LooseVersion(sphinx.__version__)
+sphinxver = LooseVersion(sphinx.__version__)
 
 # -- General configuration ------------------------------------------------
 
@@ -40,7 +48,7 @@ extensions = [
     'sphinx.ext.autodoc',
     'sphinx.ext.todo',
 ]
-sphinx_want_ver = distutils.version.LooseVersion('1.0')
+sphinx_want_ver = LooseVersion('1.0')
 if sphinxver >= sphinx_want_ver:
     extensions.append('sphinx.ext.viewcode')
 
@@ -132,7 +140,7 @@ todo_include_todos = True
 # The theme to use for HTML and HTML Help pages.  See the documentation for
 # a list of builtin themes.
 #
-sphinx_want_ver = distutils.version.LooseVersion('1.0')
+sphinx_want_ver = LooseVersion('1.0')
 if sphinxver >= sphinx_want_ver:
     html_theme = 'haiku'
 else:
diff --git a/x2go/utils.py b/x2go/utils.py
index 088901b..562c090 100644
--- a/x2go/utils.py
+++ b/x2go/utils.py
@@ -36,7 +36,15 @@ import socket
 import gevent
 import string
 import subprocess
-import distutils.version
+try:
+    from looseversion import LooseVersion
+except ImportError:
+    try:
+        from distutils.version import LooseVersion
+    except ImportError:
+        # PEP-440 is not a replacement for formerly available distutils.version.LooseVersion,
+        # but we need to live with it until LooseVersion is available everywhere.
+        from packaging.version import Version as LooseVersion
 import paramiko
 
 # Python X2Go modules
@@ -780,9 +788,12 @@ def merge_ordered_lists(l1, l2):
 
 def compare_versions(version_a, op, version_b):
     """\
-    Compare <version_a> with <version_b> using operator <op>.
-    In the background ``distutils.version.LooseVersion`` is
-    used for the comparison operation.
+    Compare <version_a> with <version_b> using operator <op>. In the
+    background ``LooseVersion`` from ``looseversion`` or ``distutils.version`` is
+    used for the comparison operation. (If none of those modules is
+    available the code uses ``Version`` from
+    ``packaging.version.Version`` (PEP-440) which is an insufficient
+    replacement and thus only a workaround.
 
     :param version_a: a version string
     :type version_a: ``str``
@@ -795,8 +806,8 @@ def compare_versions(version_a, op, version_b):
 
     ### FIXME: this comparison is not reliable with beta et al. version strings
 
-    ver_a = distutils.version.LooseVersion(version_a)
-    ver_b = distutils.version.LooseVersion(version_b)
+    ver_a = LooseVersion(version_a)
+    ver_b = LooseVersion(version_b)
 
     return eval("ver_a %s ver_b" % op)
 

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/python-x2go.git


More information about the x2go-commits mailing list