src/eric7/PipInterface/Pip.py

branch
eric7-maintenance
changeset 11118
967a88a16a21
parent 11019
27cd57e98461
parent 11112
f96a04843ed4
child 11155
e1843b6efa73
--- a/src/eric7/PipInterface/Pip.py	Sat Nov 30 11:09:02 2024 +0100
+++ b/src/eric7/PipInterface/Pip.py	Tue Jan 14 17:29:56 2025 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2024 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
@@ -961,6 +961,7 @@
 
                 if callback:
                     if self.__outdatedProc is not None:
+                        self.__outdatedProc.finished.disconnect()
                         self.__outdatedProc.kill()  # end the process forcefully
                         self.__outdatedProc = None
 
@@ -972,10 +973,11 @@
                     proc.start(interpreter, args)
                     return None
 
-                proc = QProcess()
-                proc.start(interpreter, args)
-                if proc.waitForStarted(15000) and proc.waitForFinished(30000):
-                    packages = self.__extractOutdatedPackages(proc)
+                else:
+                    proc = QProcess()
+                    proc.start(interpreter, args)
+                    if proc.waitForStarted(15000) and proc.waitForFinished(30000):
+                        packages = self.__extractOutdatedPackages(proc)
 
         return packages
 
@@ -1364,3 +1366,33 @@
                         licenses = json.loads(output)
 
         return licenses
+
+    #######################################################################
+    ## Cleanup of the site-packages directory in case pip updated or
+    ## removed packages currently in use.
+    #######################################################################
+
+    def runCleanup(self, envName):
+        """
+        Public method to perform a cleanup run for a given environment.
+
+        @param envName name of the environment to get the licenses for
+        @type str
+        @return flag indicating a successful removal. A missing environment
+            name or an undefined Python interpreter is treated as success
+            (i.e. nothing to do).
+        @rtype bool
+        """
+        if envName:
+            interpreter = self.getVirtualenvInterpreter(envName)
+            if interpreter:
+                args = [os.path.join(os.path.dirname(__file__), "pipcleanup.py")]
+
+                proc = QProcess()
+                proc.start(interpreter, args)
+                if proc.waitForStarted(15000) and proc.waitForFinished(30000):
+                    return proc.exitCode() == 0
+
+                return False
+
+        return True

eric ide

mercurial