src/eric7/PipInterface/Pip.py

branch
eric7-maintenance
changeset 9654
7328efba128b
parent 9549
67295777d9fe
parent 9653
e67609152c5e
child 9832
3885b9d7bd31
diff -r 88f10deec960 -r 7328efba128b src/eric7/PipInterface/Pip.py
--- a/src/eric7/PipInterface/Pip.py	Thu Dec 01 10:18:07 2022 +0100
+++ b/src/eric7/PipInterface/Pip.py	Mon Jan 02 11:16:03 2023 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
@@ -16,10 +16,11 @@
 from PyQt6.QtNetwork import QNetworkAccessManager, QNetworkReply, QNetworkRequest
 from PyQt6.QtWidgets import QDialog, QInputDialog, QLineEdit
 
-from eric7 import Globals, Preferences
+from eric7 import Preferences
 from eric7.EricNetwork.EricNetworkProxyFactory import proxyAuthenticationRequired
 from eric7.EricWidgets import EricMessageBox
 from eric7.EricWidgets.EricApplication import ericApp
+from eric7.SystemUtilities import OSUtilities, PythonUtilities
 from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog
 
 try:
@@ -147,9 +148,9 @@
         with contextlib.suppress(KeyError):
             return os.environ["PIP_CONFIG_FILE"]
 
-        if Globals.isWindowsPlatform():
+        if OSUtilities.isWindowsPlatform():
             config = os.path.join(os.environ["APPDATA"], "pip", "pip.ini")
-        elif Globals.isMacPlatform():
+        elif OSUtilities.isMacPlatform():
             config = os.path.expanduser("~/Library/Application Support/pip/pip.conf")
         else:
             config = os.path.expanduser("~/.config/pip/pip.conf")
@@ -168,7 +169,7 @@
         # Unix, OS X:   $VIRTUAL_ENV/pip.conf
         # Windows:      %VIRTUAL_ENV%\pip.ini
 
-        pip = "pip.ini" if Globals.isWindowsPlatform() else "pip.conf"
+        pip = "pip.ini" if OSUtilities.isWindowsPlatform() else "pip.conf"
 
         venvManager = ericApp().getObject("VirtualEnvManager")
         venvDirectory = (
@@ -204,7 +205,7 @@
         """
         interpreter = (
             ericApp().getObject("Project").getProjectInterpreter()
-            if venvName == self.getProjectEnvironmentString()
+            if venvName in (self.getProjectEnvironmentString(), "<project>")
             else ericApp()
             .getObject("VirtualEnvManager")
             .getVirtualenvInterpreter(venvName)
@@ -363,7 +364,7 @@
 
         if self.getVirtualenvInterpreter(venvName) in (
             sys.executable,
-            Globals.getPythonExecutable(),
+            PythonUtilities.getPythonExecutable(),
         ):
             upgradePyQt = self.__checkUpgradePyQt(packages)
             upgradeEric = self.__checkUpgradeEric(packages)
@@ -675,7 +676,12 @@
         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 +689,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 +707,8 @@
         packages = []
 
         if envName:
-            interpreter = self.getVirtualenvInterpreter(envName)
+            if interpreter is None:
+                interpreter = self.getVirtualenvInterpreter(envName)
             if interpreter:
                 args = [
                     "-m",
@@ -746,30 +757,34 @@
 
         return packages
 
-    def checkPackageOutdated(self, packageStart, envName):
+    def checkPackagesOutdated(self, packageStarts, envName, interpreter=None):
         """
-        Public method to check, if a group of packages is outdated.
+        Public method to check, if groups of packages are outdated.
 
-        @param packageStart start string for package names to be checked
+        @param packageStarts list of start strings 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))
+        @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 of outdated packages
+        @rtype tuple of (str, str, str)
         """
-        filteredPackages = []
+        if (bool(envName) or bool(interpreter)) and any(bool(p) for p in packageStarts):
+            packages = self.getOutdatedPackages(envName, interpreter=interpreter)
+            filterStrings = tuple(
+                start.lower() for start in packageStarts if bool(start)
+            )
+            filteredPackages = [
+                p for p in packages if p[0].lower().startswith(filterStrings)
+            ]
+        else:
+            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
+        return filteredPackages
 
     def getPackageDetails(self, name, version):
         """

eric ide

mercurial