src/eric7/PipInterface/Pip.py

branch
eric7
changeset 10392
ef315a1fdd4a
parent 10390
226a771db7aa
child 10393
434e1b0bc49e
diff -r 66e67cc6b161 -r ef315a1fdd4a src/eric7/PipInterface/Pip.py
--- a/src/eric7/PipInterface/Pip.py	Wed Dec 06 15:49:54 2023 +0100
+++ b/src/eric7/PipInterface/Pip.py	Wed Dec 06 16:33:04 2023 +0100
@@ -324,7 +324,7 @@
             p
             for p in packages
             if p.lower()
-            in [
+            in (
                 "pyqt6",
                 "pyqt6-sip",
                 "pyqt6-webengine",
@@ -333,7 +333,7 @@
                 "pyqt6-qt6",
                 "pyqt6-webengine-qt6",
                 "pyqt6-charts-qt6",
-            ]
+            )
         ]
         return bool(pyqtPackages)
 
@@ -350,6 +350,32 @@
         ericPackages = [p for p in packages if p.lower() == "eric-ide"]
         return bool(ericPackages)
 
+    def __filterUpgradePackages(self, packages):
+        """
+        Private method to filter out the packages that cannot be upgraded without
+        stopping eric first.
+
+        @param packages list of packages to upgrade
+        @type list of str
+        @return list of packages that can be upgraded
+        @rtype list of str
+        """
+        return [
+            p
+            for p in packages
+            if p.lower() not in (
+                "eric-ide",
+                "pyqt6",
+                "pyqt6-sip",
+                "pyqt6-webengine",
+                "pyqt6-charts",
+                "pyqt6-qscintilla",
+                "pyqt6-qt6",
+                "pyqt6-webengine-qt6",
+                "pyqt6-charts-qt6",
+            )
+        ]
+
     def upgradePackages(self, packages, venvName, userSite=False):
         """
         Public method to upgrade the given list of packages.
@@ -377,12 +403,17 @@
             if upgradeEric or upgradePyQt:
                 try:
                     if upgradeEric and upgradePyQt:
-                        self.__ui.upgradeEricPyQt()
+                        res = self.__ui.upgradeEricPyQt()
                     elif upgradeEric:
-                        self.__ui.upgradeEric()
+                        res = self.__ui.upgradeEric()
                     elif upgradePyQt:
-                        self.__ui.upgradePyQt()
-                    return None  # should not be reached; play it safe
+                        res = self.__ui.upgradePyQt()
+                    else:
+                        return None  # should not be reached; play it safe
+
+                    if not res:
+                        # user rejected PyQt6 and/or eric-ide/eric7 update
+                        packages = self.__filterUpgradePackages(packages)
                 except AttributeError:
                     return False
 

eric ide

mercurial