Change the code checking for eric-ide and PyQt6 updates in order to always use the right interpreter (see issue463). eric7

Tue, 06 Dec 2022 19:46:18 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 06 Dec 2022 19:46:18 +0100
branch
eric7
changeset 9578
bbe0a4b0832e
parent 9577
a0600d883f9e
child 9579
7c5d443a2544

Change the code checking for eric-ide and PyQt6 updates in order to always use the right interpreter (see issue463).

src/eric7/PipInterface/Pip.py file | annotate | diff | comparison | revisions
src/eric7/UI/VersionsDialog.py file | annotate | diff | comparison | revisions
--- a/src/eric7/PipInterface/Pip.py	Tue Dec 06 17:42:24 2022 +0100
+++ b/src/eric7/PipInterface/Pip.py	Tue Dec 06 19:46:18 2022 +0100
@@ -675,7 +675,8 @@
         return packages
 
     def getOutdatedPackages(
-        self, envName, localPackages=True, notRequired=False, usersite=False
+        self, envName, localPackages=True, notRequired=False, usersite=False,
+        interpreter=None
     ):
         """
         Public method to get the list of outdated packages.
@@ -683,13 +684,17 @@
         @param envName name of the environment to get the packages for
         @type str
         @param localPackages flag indicating to get local packages only
-        @type bool
+            (defaults to False)
+        @type bool (optional)
         @param notRequired flag indicating to list packages that are not
-            dependencies of installed packages as well
-        @type bool
+            dependencies of installed packages as well (defaults to False)
+        @type bool (optional)
         @param usersite flag indicating to only list packages installed
-            in user-site
-        @type bool
+            in user-site (defaults to False)
+        @type bool (optional)
+        @param interpreter path of an interpreter executable. If this is not
+            None, it will override the given environment name (defaults to None)
+        @type str (optional)
         @return list of tuples containing the package name, installed version
             and available version
         @rtype list of tuple of (str, str, str)
@@ -697,7 +702,8 @@
         packages = []
 
         if envName:
-            interpreter = self.getVirtualenvInterpreter(envName)
+            if interpreter is None:
+                interpreter = self.getVirtualenvInterpreter(envName)
             if interpreter:
                 args = [
                     "-m",
@@ -746,7 +752,7 @@
 
         return packages
 
-    def checkPackageOutdated(self, packageStart, envName):
+    def checkPackageOutdated(self, packageStart, envName, interpreter=None):
         """
         Public method to check, if a group of packages is outdated.
 
@@ -755,6 +761,9 @@
         @type str
         @param envName name of the environment to get the packages for
         @type str
+        @param interpreter path of an interpreter executable. If this is not
+            None, it will override the given environment name (defaults to None)
+        @type str (optional)
         @return tuple containing a flag indicating outdated packages and the
             list of tuples containing the package name, installed version
             and available version
@@ -763,7 +772,7 @@
         filteredPackages = []
 
         if bool(envName) and bool(packageStart):
-            packages = self.getOutdatedPackages(envName)
+            packages = self.getOutdatedPackages(envName, interpreter=interpreter)
             filterStr = packageStart.lower()
             filteredPackages = [
                 p for p in packages if p[0].lower().startswith(filterStr)
--- a/src/eric7/UI/VersionsDialog.py	Tue Dec 06 17:42:24 2022 +0100
+++ b/src/eric7/UI/VersionsDialog.py	Tue Dec 06 19:46:18 2022 +0100
@@ -78,59 +78,51 @@
 
         msg = ""
 
-        pip = ericApp().getObject("Pip")
-        venvManager = ericApp().getObject("VirtualEnvManager")
+        with EricOverrideCursor():
+            pip = ericApp().getObject("Pip")
+            pyqtUpdateAvailable, pyqtVersionsData = pip.checkPackageOutdated(
+                "pyqt6", "system>", interpreter=sys.executable
+            )
+            ericUpdateAvailable, ericVersionsData = pip.checkPackageOutdated(
+                "eric-ide", "system>", interpreter=sys.executable
+            )
+
+        if pyqtUpdateAvailable or ericUpdateAvailable:
+            self.buttonBox.removeButton(self.__checkUpdateButton)
+            self.__checkUpdateButton = None
+        else:
+            msg = self.tr("No upgrades available.")
 
-        environmentName = (
-            venvManager.environmentForInterpreter(sys.executable)[0]
-            # just the name is needed
+        if ericUpdateAvailable:
+            self.__upgradeEricButton = self.buttonBox.addButton(
+                upgradeButtonTemplate.format("eric7"),
+                QDialogButtonBox.ButtonRole.ActionRole,
+            )
+            self.__upgradeEricButton.clicked.connect(self.__ui.upgradeEric)
+            msg += headerTemplate.format("eric7")
+            msg += tableTemplate.format(entryTemplate.format(*ericVersionsData[0]))
+
+        if pyqtUpdateAvailable:
+            self.__upgradePyQtButton = self.buttonBox.addButton(
+                upgradeButtonTemplate.format("PyQt6"),
+                QDialogButtonBox.ButtonRole.ActionRole,
+            )
+            self.__upgradePyQtButton.clicked.connect(self.__ui.upgradePyQt)
+            msg += headerTemplate.format("PyQt6")
+            msg += tableTemplate.format(
+                "".join(entryTemplate.format(*v) for v in pyqtVersionsData)
+            )
+
+        if ericUpdateAvailable and pyqtUpdateAvailable:
+            self.__upgradeBothButton = self.buttonBox.addButton(
+                upgradeButtonTemplate.format(self.tr("Both")),
+                QDialogButtonBox.ButtonRole.ActionRole,
+            )
+            self.__upgradeBothButton.clicked.connect(self.__ui.upgradeEricPyQt)
+
+        self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setDefault(True)
+        self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setFocus(
+            Qt.FocusReason.OtherFocusReason
         )
 
-        if environmentName:
-            with EricOverrideCursor():
-                pyqtUpdateAvailable, pyqtVersionsData = pip.checkPackageOutdated(
-                    "pyqt6", environmentName
-                )
-                ericUpdateAvailable, ericVersionsData = pip.checkPackageOutdated(
-                    "eric-ide", environmentName
-                )
-
-            if pyqtUpdateAvailable or ericUpdateAvailable:
-                self.buttonBox.removeButton(self.__checkUpdateButton)
-                self.__checkUpdateButton = None
-            else:
-                msg = self.tr("No upgrades available.")
-
-            if ericUpdateAvailable:
-                self.__upgradeEricButton = self.buttonBox.addButton(
-                    upgradeButtonTemplate.format("eric7"),
-                    QDialogButtonBox.ButtonRole.ActionRole,
-                )
-                self.__upgradeEricButton.clicked.connect(self.__ui.upgradeEric)
-                msg += headerTemplate.format("eric7")
-                msg += tableTemplate.format(entryTemplate.format(*ericVersionsData[0]))
-
-            if pyqtUpdateAvailable:
-                self.__upgradePyQtButton = self.buttonBox.addButton(
-                    upgradeButtonTemplate.format("PyQt6"),
-                    QDialogButtonBox.ButtonRole.ActionRole,
-                )
-                self.__upgradePyQtButton.clicked.connect(self.__ui.upgradePyQt)
-                msg += headerTemplate.format("PyQt6")
-                msg += tableTemplate.format(
-                    "".join(entryTemplate.format(*v) for v in pyqtVersionsData)
-                )
-
-            if ericUpdateAvailable and pyqtUpdateAvailable:
-                self.__upgradeBothButton = self.buttonBox.addButton(
-                    upgradeButtonTemplate.format(self.tr("Both")),
-                    QDialogButtonBox.ButtonRole.ActionRole,
-                )
-                self.__upgradeBothButton.clicked.connect(self.__ui.upgradeEricPyQt)
-
-            self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setDefault(True)
-            self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setFocus(
-                Qt.FocusReason.OtherFocusReason
-            )
-
-            EricMessageBox.information(self, self.tr("Check for Upgrades"), msg)
+        EricMessageBox.information(self, self.tr("Check for Upgrades"), msg)

eric ide

mercurial