Changed code converting a version string into a version tuple to use the 'semver' package. eric7

Mon, 06 Feb 2023 17:15:20 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 06 Feb 2023 17:15:20 +0100
branch
eric7
changeset 9744
92fbd6bdba84
parent 9743
741c61c2cfca
child 9745
2c706ccc2b42

Changed code converting a version string into a version tuple to use the 'semver' package.

pyproject.toml file | annotate | diff | comparison | revisions
scripts/install.py file | annotate | diff | comparison | revisions
src/eric7/Documentation/Help/source.qch file | annotate | diff | comparison | revisions
src/eric7/Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
src/eric7/Documentation/Source/eric7.Globals.__init__.html file | annotate | diff | comparison | revisions
src/eric7/Documentation/Source/eric7.Project.Project.html file | annotate | diff | comparison | revisions
src/eric7/Globals/__init__.py file | annotate | diff | comparison | revisions
src/eric7/Project/Project.py file | annotate | diff | comparison | revisions
--- a/pyproject.toml	Mon Feb 06 15:03:54 2023 +0100
+++ b/pyproject.toml	Mon Feb 06 17:15:20 2023 +0100
@@ -80,6 +80,7 @@
     "black>=22.6.0",
     "isort>=5.10.0",
     "coverage>=6.5.0",
+    "semver",
     "pywin32>=1.0;platform_system=='Windows'",
 ]
 dynamic = ["version"]
--- a/scripts/install.py	Mon Feb 06 15:03:54 2023 +0100
+++ b/scripts/install.py	Mon Feb 06 17:15:20 2023 +0100
@@ -1711,6 +1711,7 @@
         "black": ("black", ">=22.6.0"),
         "isort": ("isort", ">=5.10.0"),
         "coverage": ("coverage", ">=6.5.0"),
+        "semver": ("semver", ""),
     }
     optionalModulesList = {
         # key is pip project name
Binary file src/eric7/Documentation/Help/source.qch has changed
--- a/src/eric7/Documentation/Help/source.qhp	Mon Feb 06 15:03:54 2023 +0100
+++ b/src/eric7/Documentation/Help/source.qhp	Mon Feb 06 17:15:20 2023 +0100
@@ -12356,7 +12356,6 @@
       <keyword name="Project.__pluginCreatePkgList" id="Project.__pluginCreatePkgList" ref="eric7.Project.Project.html#Project.__pluginCreatePkgList" />
       <keyword name="Project.__pluginCreateSnapshotArchives" id="Project.__pluginCreateSnapshotArchives" ref="eric7.Project.Project.html#Project.__pluginCreateSnapshotArchives" />
       <keyword name="Project.__pluginExtractVersion" id="Project.__pluginExtractVersion" ref="eric7.Project.Project.html#Project.__pluginExtractVersion" />
-      <keyword name="Project.__pluginVersionToTuple" id="Project.__pluginVersionToTuple" ref="eric7.Project.Project.html#Project.__pluginVersionToTuple" />
       <keyword name="Project.__readDebugProperties" id="Project.__readDebugProperties" ref="eric7.Project.Project.html#Project.__readDebugProperties" />
       <keyword name="Project.__readProject" id="Project.__readProject" ref="eric7.Project.Project.html#Project.__readProject" />
       <keyword name="Project.__readSession" id="Project.__readSession" ref="eric7.Project.Project.html#Project.__readSession" />
--- a/src/eric7/Documentation/Source/eric7.Globals.__init__.html	Mon Feb 06 15:03:54 2023 +0100
+++ b/src/eric7/Documentation/Source/eric7.Globals.__init__.html	Mon Feb 06 17:15:20 2023 +0100
@@ -398,13 +398,13 @@
 <dl>
 <dt>Return:</dt>
 <dd>
-version tuple without the suffix
+version named tuple containing the version parts
 </dd>
 </dl>
 <dl>
 <dt>Return Type:</dt>
 <dd>
-tuple of int
+semver.VersionInfo
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/src/eric7/Documentation/Source/eric7.Project.Project.html	Mon Feb 06 15:03:54 2023 +0100
+++ b/src/eric7/Documentation/Source/eric7.Project.Project.html	Mon Feb 06 17:15:20 2023 +0100
@@ -367,10 +367,6 @@
 <td>Private method to extract the version number entry.</td>
 </tr>
 <tr>
-<td><a href="#Project.__pluginVersionToTuple">__pluginVersionToTuple</a></td>
-<td>Private method to convert a plug-in version string into a version tuple.</td>
-</tr>
-<tr>
 <td><a href="#Project.__readDebugProperties">__readDebugProperties</a></td>
 <td>Private method to read in the project debugger properties file (.edj or .e4d).</td>
 </tr>
@@ -1661,33 +1657,6 @@
 version string (string)
 </dd>
 </dl>
-<a NAME="Project.__pluginVersionToTuple" ID="Project.__pluginVersionToTuple"></a>
-<h4>Project.__pluginVersionToTuple</h4>
-<b>__pluginVersionToTuple</b>(<i>versionStr</i>)
-
-<p>
-        Private method to convert a plug-in version string into a version
-        tuple.
-</p>
-<dl>
-
-<dt><i>versionStr</i> (str)</dt>
-<dd>
-version string to be converted
-</dd>
-</dl>
-<dl>
-<dt>Return:</dt>
-<dd>
-version info as a tuple
-</dd>
-</dl>
-<dl>
-<dt>Return Type:</dt>
-<dd>
-tuple of int and str
-</dd>
-</dl>
 <a NAME="Project.__readDebugProperties" ID="Project.__readDebugProperties"></a>
 <h4>Project.__readDebugProperties</h4>
 <b>__readDebugProperties</b>(<i>quiet=False</i>)
--- a/src/eric7/Globals/__init__.py	Mon Feb 06 15:03:54 2023 +0100
+++ b/src/eric7/Globals/__init__.py	Mon Feb 06 17:15:20 2023 +0100
@@ -11,9 +11,9 @@
 # Note: Do not import any eric stuff in here!!!!!!!
 #
 
-import contextlib
 import os
-import re
+
+import semver
 
 from PyQt6.QtCore import QByteArray, QCoreApplication, QProcess, qVersion
 
@@ -135,19 +135,13 @@
     @type str
     @param length desired length of the version tuple
     @type int
-    @return version tuple without the suffix
-    @rtype tuple of int
+    @return version named tuple containing the version parts
+    @rtype semver.VersionInfo
     """
-    versionParts = []
-
-    # step 1: extract suffix
-    version = re.split(r"[^\d.]", version)[0]
-    for part in version.split("."):
-        with contextlib.suppress(ValueError):
-            versionParts.append(int(part.strip()))
-    versionParts.extend([0] * length)
-
-    return tuple(versionParts[:length])
+    if semver.VersionInfo.isvalid(version):
+        return semver.VersionInfo.parse(version)
+    else:
+        return semver.VersionInfo(0, 0, 0)
 
 
 ###############################################################################
--- a/src/eric7/Project/Project.py	Mon Feb 06 15:03:54 2023 +0100
+++ b/src/eric7/Project/Project.py	Mon Feb 06 17:15:20 2023 +0100
@@ -33,7 +33,7 @@
 from PyQt6.QtGui import QAction, QKeySequence
 from PyQt6.QtWidgets import QDialog, QInputDialog, QLineEdit, QMenu, QToolBar
 
-from eric7 import Preferences, Utilities
+from eric7 import Globals, Preferences, Utilities
 from eric7.CodeFormatting.BlackFormattingAction import BlackFormattingAction
 from eric7.CodeFormatting.BlackUtilities import aboutBlack
 from eric7.CodeFormatting.IsortFormattingAction import IsortFormattingAction
@@ -6108,32 +6108,6 @@
     ## Below are the plugin development related methods
     #########################################################################
 
-    def __pluginVersionToTuple(self, versionStr):
-        """
-        Private method to convert a plug-in version string into a version
-        tuple.
-
-        @param versionStr version string to be converted
-        @type str
-        @return version info as a tuple
-        @rtype tuple of int and str
-        """
-        vParts = []
-        if "-" in versionStr:
-            versionStr, additional = versionStr.split("-", 1)
-        else:
-            additional = ""
-        for part in versionStr.split("."):
-            try:
-                vParts.append(int(part))
-            except ValueError:
-                vParts.append(part)
-
-        if additional:
-            vParts.append(additional)
-
-        return tuple(vParts)
-
     def __pluginCreatePkgList(self):
         """
         Private slot to create a PKGLIST file needed for archive file creation.
@@ -6363,8 +6337,8 @@
                                     os.path.join(self.ppath, self.__pdata["MAINSCRIPT"])
                                 )
                                 if archiveVersion and (
-                                    self.__pluginVersionToTuple(version)
-                                    < self.__pluginVersionToTuple(archiveVersion)
+                                    Globals.versionToTuple(version)
+                                    < Globals.versionToTuple(archiveVersion)
                                 ):
                                     version = archiveVersion
                     except OSError as why:

eric ide

mercurial