eric7/PipInterface/Pip.py

branch
eric7
changeset 8972
54816b8f740f
parent 8970
188ff9ce8657
child 8973
ad4848b7fd9b
diff -r 0a846d71f27c -r 54816b8f740f eric7/PipInterface/Pip.py
--- a/eric7/PipInterface/Pip.py	Sat Mar 05 18:10:28 2022 +0100
+++ b/eric7/PipInterface/Pip.py	Sun Mar 06 19:53:19 2022 +0100
@@ -296,7 +296,7 @@
         
         @param packages list of packages to upgrade
         @type list of str
-        @return flag indicating to abort the upgrade attempt
+        @return flag indicating a PyQt upgrade
         @rtype bool
         """
         pyqtPackages = [
@@ -308,6 +308,21 @@
         ]
         return bool(pyqtPackages)
     
+    def __checkUpgradeEric(self, packages):
+        """
+        Private method to check, if an upgrade of the eric-ide package is
+        attempted.
+        
+        @param packages list of packages to upgrade
+        @type list of str
+        @return flag indicating an eric-ide upgrade
+        @rtype bool
+        """
+        ericPackages = [
+            p for p in packages if p.lower() == "eric-ide"
+        ]
+        return bool(ericPackages)
+    
     def upgradePackages(self, packages, venvName, userSite=False):
         """
         Public method to upgrade the given list of packages.
@@ -325,15 +340,20 @@
         if not venvName:
             return False
         
-        if (
-            self.getVirtualenvInterpreter(venvName) == sys.executable and
-            self.__checkUpgradePyQt(packages)
-        ):
-            try:
-                self.__ui.upgradePyQt()
-                return None     # should not be reached; play it safe
-            except AttributeError:
-                return False
+        if self.getVirtualenvInterpreter(venvName) == sys.executable:
+            upgradePyQt = self.__checkUpgradePyQt(packages)
+            upgradeEric = self.__checkUpgradeEric(packages)
+            if upgradeEric or upgradePyQt:
+                try:
+                    if upgradeEric and upgradePyQt:
+                        self.__ui.upgradeEricPyQt()
+                    elif upgradeEric:
+                        self.__ui.upgradeEric()
+                    elif upgradePyQt:
+                        self.__ui.upgradePyQt()
+                    return None     # should not be reached; play it safe
+                except AttributeError:
+                    return False
         
         interpreter = self.getVirtualenvInterpreter(venvName)
         if not interpreter:
@@ -663,6 +683,31 @@
            
         return packages
     
+    def checkPackageOutdated(self, packageStart, envName):
+        """
+        Public method to check, if a group of packages is outdated.
+        
+        @param packageStart start string for package names to be checked
+            (case insensitive)
+        @type str
+        @param envName name of the environment to get the packages for
+        @type str
+        @return tuple containing a flag indicating outdated packages and the
+            list of tuples containing the package name, installed version
+            and available version
+        @rtype tuple of (bool, (str, str, str))
+        """
+        filteredPackages = []
+        
+        if bool(envName) and bool(packageStart):
+            packages = self.getOutdatedPackages(envName)
+            filterStr = packageStart.lower()
+            filteredPackages = [
+                p for p in packages
+                if p[0].lower().startswith(filterStr)]
+        
+        return bool(filteredPackages), filteredPackages
+    
     def getPackageDetails(self, name, version):
         """
         Public method to get package details using the PyPI JSON interface.

eric ide

mercurial