Mon, 06 Feb 2023 17:15:20 +0100
Changed code converting a version string into a version tuple to use the 'semver' package.
--- 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
--- 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: