src/eric7/PipInterface/Pip.py

Wed, 06 Dec 2023 16:33:04 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 06 Dec 2023 16:33:04 +0100
branch
eric7
changeset 10392
ef315a1fdd4a
parent 10390
226a771db7aa
child 10393
434e1b0bc49e
permissions
-rw-r--r--

Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.

6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9649
diff changeset
3 # Copyright (c) 2015 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Package implementing the pip GUI logic.
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9470
diff changeset
10 import contextlib
10209
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
11 import functools
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9470
diff changeset
12 import json
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 import os
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 import sys
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9470
diff changeset
16 from PyQt6.QtCore import QCoreApplication, QObject, QProcess, QThread, QUrl, pyqtSlot
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9470
diff changeset
17 from PyQt6.QtNetwork import QNetworkAccessManager, QNetworkReply, QNetworkRequest
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8314
diff changeset
18 from PyQt6.QtWidgets import QDialog, QInputDialog, QLineEdit
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9586
diff changeset
20 from eric7 import Preferences
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9470
diff changeset
21 from eric7.EricNetwork.EricNetworkProxyFactory import proxyAuthenticationRequired
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9323
diff changeset
22 from eric7.EricWidgets import EricMessageBox
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9323
diff changeset
23 from eric7.EricWidgets.EricApplication import ericApp
10390
226a771db7aa Corrected an issue in Pip.upgradePackages() causing the process to determine if the venv to be upgraded is the venv eric is run from to fail on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10387
diff changeset
24 from eric7.SystemUtilities import FileSystemUtilities, OSUtilities, PythonUtilities
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
25 from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
27 try:
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9323
diff changeset
28 from eric7.EricNetwork.EricSslErrorHandler import EricSslErrorHandler
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
29
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
30 SSL_AVAILABLE = True
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
31 except ImportError:
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
32 SSL_AVAILABLE = False
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
33
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 from .PipDialog import PipDialog
8977
663521af48b2 Started implementing a vulnerability checker based on the data of the Safety DB.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8976
diff changeset
35 from .PipVulnerabilityChecker import PipVulnerabilityChecker
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 class Pip(QObject):
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 Class implementing the pip GUI logic.
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
42
6793
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
43 DefaultPyPiUrl = "https://pypi.org"
8090
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
44 DefaultIndexUrlPypi = DefaultPyPiUrl + "/pypi"
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
45 DefaultIndexUrlSimple = DefaultPyPiUrl + "/simple"
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
46 DefaultIndexUrlSearch = DefaultPyPiUrl + "/search/"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
47
6785
058d63c537a4 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6782
diff changeset
48 def __init__(self, parent=None):
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
51
8970
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8943
diff changeset
52 @param parent reference to the user interface object
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
53 @type QObject
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8152
diff changeset
55 super().__init__(parent)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
56
8970
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8943
diff changeset
57 self.__ui = parent
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
58
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
59 # attributes for the network objects
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
60 self.__networkManager = QNetworkAccessManager(self)
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
61 self.__networkManager.proxyAuthenticationRequired.connect(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
62 proxyAuthenticationRequired
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
63 )
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
64 if SSL_AVAILABLE:
8354
12ebd3934fef Renamed 'E5Utilities' to 'EricUtilities' and 'E5Network' to 'EricNetwork'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
65 self.__sslErrorHandler = EricSslErrorHandler(self)
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
66 self.__networkManager.sslErrors.connect(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
67 self.__sslErrorHandler.sslErrorsReply
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
68 )
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
69 self.__replies = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
70
8977
663521af48b2 Started implementing a vulnerability checker based on the data of the Safety DB.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8976
diff changeset
71 self.__vulnerabilityChecker = PipVulnerabilityChecker(self, self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
72
8085
f6db8b3ecea9 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
73 def getNetworkAccessManager(self):
f6db8b3ecea9 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
74 """
f6db8b3ecea9 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
75 Public method to get a reference to the network access manager object.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
76
8085
f6db8b3ecea9 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
77 @return reference to the network access manager object
f6db8b3ecea9 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
78 @rtype QNetworkAccessManager
f6db8b3ecea9 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
79 """
f6db8b3ecea9 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
80 return self.__networkManager
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
81
8977
663521af48b2 Started implementing a vulnerability checker based on the data of the Safety DB.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8976
diff changeset
82 def getVulnerabilityChecker(self):
663521af48b2 Started implementing a vulnerability checker based on the data of the Safety DB.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8976
diff changeset
83 """
663521af48b2 Started implementing a vulnerability checker based on the data of the Safety DB.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8976
diff changeset
84 Public method to get a reference to the vulnerability checker object.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
85
8977
663521af48b2 Started implementing a vulnerability checker based on the data of the Safety DB.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8976
diff changeset
86 @return reference to the vulnerability checker object
8983
46eaed7bf3cb Updated source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8977
diff changeset
87 @rtype PipVulnerabilityChecker
8977
663521af48b2 Started implementing a vulnerability checker based on the data of the Safety DB.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8976
diff changeset
88 """
663521af48b2 Started implementing a vulnerability checker based on the data of the Safety DB.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8976
diff changeset
89 return self.__vulnerabilityChecker
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
90
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 ##########################################################################
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 ## Methods below implement some utility functions
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 ##########################################################################
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
94
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
95 def runProcess(self, args, interpreter):
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 Public method to execute the current pip with the given arguments.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
98
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 The selected pip executable is called with the given arguments and
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 waited for its end.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
101
6257
4523c5e6dd43 Added more code to properly override the PyPi index URL used by pip.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
102 @param args list of command line arguments
4523c5e6dd43 Added more code to properly override the PyPi index URL used by pip.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
103 @type list of str
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
104 @param interpreter path of the Python interpreter to be used
6257
4523c5e6dd43 Added more code to properly override the PyPi index URL used by pip.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
105 @type str
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 @return tuple containing a flag indicating success and the output
6257
4523c5e6dd43 Added more code to properly override the PyPi index URL used by pip.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
107 of the process
4523c5e6dd43 Added more code to properly override the PyPi index URL used by pip.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
108 @rtype tuple of (bool, str)
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 ioEncoding = Preferences.getSystem("IOEncoding")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
111
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 process = QProcess()
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
113 process.start(interpreter, args)
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 procStarted = process.waitForStarted()
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 if procStarted:
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 finished = process.waitForFinished(30000)
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 if finished:
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 if process.exitCode() == 0:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
119 output = str(process.readAllStandardOutput(), ioEncoding, "replace")
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 return True, output
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 else:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
122 return (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
123 False,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
124 self.tr("python exited with an error ({0}).").format(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
125 process.exitCode()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
126 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
127 )
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 else:
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 process.terminate()
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 process.waitForFinished(2000)
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 process.kill()
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 process.waitForFinished(3000)
10372
1444b4bee64b Fixed some code style issue related to implicitly and explicitly concatenated strings.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10209
diff changeset
133 return False, self.tr("python did not finish within 30 seconds.")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
134
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
135 return False, self.tr("python could not be started.")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
136
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
137 def getUserConfig(self):
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 """
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
139 Public method to get the name of the user configuration file.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
140
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
141 @return path of the user configuration file
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
142 @rtype str
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 # Unix: ~/.config/pip/pip.conf
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 # OS X: ~/Library/Application Support/pip/pip.conf
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 # Windows: %APPDATA%\pip\pip.ini
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 # Environment: $PIP_CONFIG_FILE
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
148
8240
93b8a353c4bf Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8234
diff changeset
149 with contextlib.suppress(KeyError):
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 return os.environ["PIP_CONFIG_FILE"]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
151
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9586
diff changeset
152 if OSUtilities.isWindowsPlatform():
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 config = os.path.join(os.environ["APPDATA"], "pip", "pip.ini")
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9586
diff changeset
154 elif OSUtilities.isMacPlatform():
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
155 config = os.path.expanduser("~/Library/Application Support/pip/pip.conf")
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 else:
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 config = os.path.expanduser("~/.config/pip/pip.conf")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
158
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 return config
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
160
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
161 def getVirtualenvConfig(self, venvName):
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 """
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
163 Public method to get the name of the virtualenv configuration file.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
164
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
165 @param venvName name of the environment to get config file path for
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
166 @type str
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
167 @return path of the virtualenv configuration file
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
168 @rtype str
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 # Unix, OS X: $VIRTUAL_ENV/pip.conf
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 # Windows: %VIRTUAL_ENV%\pip.ini
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
172
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9586
diff changeset
173 pip = "pip.ini" if OSUtilities.isWindowsPlatform() else "pip.conf"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
174
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8354
diff changeset
175 venvManager = ericApp().getObject("VirtualEnvManager")
8259
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
176 venvDirectory = (
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
177 os.path.dirname(self.getUserConfig())
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
178 if venvManager.isGlobalEnvironment(venvName)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
179 else venvManager.getVirtualenvDirectory(venvName)
8259
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
180 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
181
8234
fcb6b4b96274 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8222
diff changeset
182 config = os.path.join(venvDirectory, pip) if venvDirectory else ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
183
6785
058d63c537a4 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6782
diff changeset
184 return config
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
185
6619
1d34365c082c pip Interface: added an entry to select the virtual environment of the current project if it has one defined.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6394
diff changeset
186 def getProjectEnvironmentString(self):
1d34365c082c pip Interface: added an entry to select the virtual environment of the current project if it has one defined.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6394
diff changeset
187 """
1d34365c082c pip Interface: added an entry to select the virtual environment of the current project if it has one defined.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6394
diff changeset
188 Public method to get the string for the project environment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
189
6619
1d34365c082c pip Interface: added an entry to select the virtual environment of the current project if it has one defined.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6394
diff changeset
190 @return string for the project environment
1d34365c082c pip Interface: added an entry to select the virtual environment of the current project if it has one defined.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6394
diff changeset
191 @rtype str
1d34365c082c pip Interface: added an entry to select the virtual environment of the current project if it has one defined.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6394
diff changeset
192 """
10084
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9851
diff changeset
193 try:
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9851
diff changeset
194 project = ericApp().getObject("Project")
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9851
diff changeset
195 if project.isOpen():
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9851
diff changeset
196 return self.tr("<project>")
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9851
diff changeset
197 else:
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9851
diff changeset
198 return ""
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9851
diff changeset
199 except KeyError:
6619
1d34365c082c pip Interface: added an entry to select the virtual environment of the current project if it has one defined.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6394
diff changeset
200 return ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
201
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
202 def getVirtualenvInterpreter(self, venvName):
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
203 """
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
204 Public method to get the interpreter for a virtual environment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
205
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
206 @param venvName logical name for the virtual environment
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
207 @type str
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
208 @return interpreter path
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
209 @rtype str
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
210 """
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
211 interpreter = (
9056
af7c8c7b7c62 Added a few more API calls to the Project object to
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
212 ericApp().getObject("Project").getProjectInterpreter()
9649
102a1734aff5 Fixed an issue in the pip interface determining the Python interpreter for a project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9624
diff changeset
213 if venvName in (self.getProjectEnvironmentString(), "<project>")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
214 else ericApp()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
215 .getObject("VirtualEnvManager")
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
216 .getVirtualenvInterpreter(venvName)
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
217 )
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
218 if not interpreter:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8354
diff changeset
219 EricMessageBox.critical(
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
220 None,
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
221 self.tr("Interpreter for Virtual Environment"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
222 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
223 """No interpreter configured for the selected"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
224 """ virtual environment."""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
225 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
226 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
227
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
228 return interpreter
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
229
7726
b1ade4fcf05f Pip Interface: added an option to not show 'conda' managed environments in the selector.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7628
diff changeset
230 def getVirtualenvNames(self, noRemote=False, noConda=False):
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
231 """
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
232 Public method to get a sorted list of virtual environment names.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
233
6975
3325bf3e7b2c Pip, PipPackagesWidget, VirtualenvManager: fixed an issue causing environments for remote debugging being shown in the selection list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
234 @param noRemote flag indicating to exclude environments for remote
3325bf3e7b2c Pip, PipPackagesWidget, VirtualenvManager: fixed an issue causing environments for remote debugging being shown in the selection list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
235 debugging
3325bf3e7b2c Pip, PipPackagesWidget, VirtualenvManager: fixed an issue causing environments for remote debugging being shown in the selection list.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
236 @type bool
7726
b1ade4fcf05f Pip Interface: added an option to not show 'conda' managed environments in the selector.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7628
diff changeset
237 @param noConda flag indicating to exclude Conda environments
b1ade4fcf05f Pip Interface: added an option to not show 'conda' managed environments in the selector.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7628
diff changeset
238 @type bool
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
239 @return sorted list of virtual environment names
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
240 @rtype list of str
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
241 """
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
242 return sorted(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
243 ericApp()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
244 .getObject("VirtualEnvManager")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
245 .getVirtualenvNames(noRemote=noRemote, noConda=noConda)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
246 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
247
6795
6e2ed2aac325 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6793
diff changeset
248 def installPip(self, venvName, userSite=False):
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 """
6795
6e2ed2aac325 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6793
diff changeset
250 Public method to install pip.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
251
6795
6e2ed2aac325 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6793
diff changeset
252 @param venvName name of the environment to install pip into
6e2ed2aac325 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6793
diff changeset
253 @type str
6331
758b1cb7a2e6 pip Interface: continued adding support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6327
diff changeset
254 @param userSite flag indicating an install to the user install
758b1cb7a2e6 pip Interface: continued adding support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6327
diff changeset
255 directory
758b1cb7a2e6 pip Interface: continued adding support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6327
diff changeset
256 @type bool
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 """
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
258 interpreter = self.getVirtualenvInterpreter(venvName)
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
259 if not interpreter:
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
260 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
261
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
262 dia = PipDialog(self.tr("Install PIP"))
8259
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
263 commands = (
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
264 [(interpreter, ["-m", "ensurepip", "--user"])]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
265 if userSite
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
266 else [(interpreter, ["-m", "ensurepip"])]
8259
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
267 )
6785
058d63c537a4 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6782
diff changeset
268 if Preferences.getPip("PipSearchIndex"):
058d63c537a4 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6782
diff changeset
269 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
270 args = ["-m", "pip", "install", "--index-url", indexUrl, "--upgrade"]
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
271 else:
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
272 args = ["-m", "pip", "install", "--upgrade"]
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
273 if userSite:
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
274 args.append("--user")
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
275 args.append("pip")
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
276 commands.append((interpreter, args[:]))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
277
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
278 res = dia.startProcesses(commands)
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
279 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
280 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
281
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 @pyqtSlot()
6795
6e2ed2aac325 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6793
diff changeset
283 def repairPip(self, venvName):
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 """
6795
6e2ed2aac325 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6793
diff changeset
285 Public method to repair the pip installation.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
286
6795
6e2ed2aac325 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6793
diff changeset
287 @param venvName name of the environment to install pip into
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 @type str
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 """
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
290 interpreter = self.getVirtualenvInterpreter(venvName)
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
291 if not interpreter:
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
292 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
293
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
294 # python -m pip install --ignore-installed pip
6785
058d63c537a4 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6782
diff changeset
295 if Preferences.getPip("PipSearchIndex"):
058d63c537a4 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6782
diff changeset
296 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
297 args = [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
298 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
299 "pip",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
300 "install",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
301 "--index-url",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
302 indexUrl,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
303 "--ignore-installed",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
304 ]
6257
4523c5e6dd43 Added more code to properly override the PyPi index URL used by pip.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
305 else:
6331
758b1cb7a2e6 pip Interface: continued adding support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6327
diff changeset
306 args = ["-m", "pip", "install", "--ignore-installed"]
758b1cb7a2e6 pip Interface: continued adding support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6327
diff changeset
307 args.append("pip")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
308
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
309 dia = PipDialog(self.tr("Repair PIP"))
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
310 res = dia.startProcess(interpreter, args)
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
312 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
313
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 def __checkUpgradePyQt(self, packages):
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 Private method to check, if an upgrade of PyQt packages is attempted.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
317
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 @param packages list of packages to upgrade
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 @type list of str
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
320 @return flag indicating a PyQt upgrade
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 @rtype bool
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 """
8459
0ae07748dbe8 Changed quite a few PyQt5 references to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
323 pyqtPackages = [
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
324 p
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
325 for p in packages
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
326 if p.lower()
10392
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
327 in (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
328 "pyqt6",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
329 "pyqt6-sip",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
330 "pyqt6-webengine",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
331 "pyqt6-charts",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
332 "pyqt6-qscintilla",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
333 "pyqt6-qt6",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
334 "pyqt6-webengine-qt6",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
335 "pyqt6-charts-qt6",
10392
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
336 )
8459
0ae07748dbe8 Changed quite a few PyQt5 references to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
337 ]
8970
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8943
diff changeset
338 return bool(pyqtPackages)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
339
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
340 def __checkUpgradeEric(self, packages):
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
341 """
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
342 Private method to check, if an upgrade of the eric-ide package is
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
343 attempted.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
344
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
345 @param packages list of packages to upgrade
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
346 @type list of str
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
347 @return flag indicating an eric-ide upgrade
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
348 @rtype bool
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
349 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
350 ericPackages = [p for p in packages if p.lower() == "eric-ide"]
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
351 return bool(ericPackages)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
352
10392
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
353 def __filterUpgradePackages(self, packages):
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
354 """
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
355 Private method to filter out the packages that cannot be upgraded without
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
356 stopping eric first.
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
357
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
358 @param packages list of packages to upgrade
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
359 @type list of str
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
360 @return list of packages that can be upgraded
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
361 @rtype list of str
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
362 """
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
363 return [
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
364 p
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
365 for p in packages
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
366 if p.lower() not in (
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
367 "eric-ide",
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
368 "pyqt6",
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
369 "pyqt6-sip",
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
370 "pyqt6-webengine",
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
371 "pyqt6-charts",
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
372 "pyqt6-qscintilla",
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
373 "pyqt6-qt6",
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
374 "pyqt6-webengine-qt6",
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
375 "pyqt6-charts-qt6",
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
376 )
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
377 ]
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
378
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
379 def upgradePackages(self, packages, venvName, userSite=False):
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 Public method to upgrade the given list of packages.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
382
6327
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
383 @param packages list of packages to upgrade
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
384 @type list of str
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
385 @param venvName name of the virtual environment to be used
6327
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
386 @type str
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
387 @param userSite flag indicating an install to the user install
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
388 directory
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
389 @type bool
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
390 @return flag indicating a successful execution
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
391 @rtype bool
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 """
8655
e8dd241cbfef Pip Interface: improved the upgrade of PyQt6 packages to only fire for the environment used by eric itself.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8605
diff changeset
393 if not venvName:
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
395
10387
8cf53170e290 Some code optimization in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
396 interpreter = self.getVirtualenvInterpreter(venvName)
8cf53170e290 Some code optimization in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
397 if not interpreter:
8cf53170e290 Some code optimization in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
398 return False
8cf53170e290 Some code optimization in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
399
10390
226a771db7aa Corrected an issue in Pip.upgradePackages() causing the process to determine if the venv to be upgraded is the venv eric is run from to fail on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10387
diff changeset
400 if FileSystemUtilities.samefilepath(interpreter, sys.executable):
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
401 upgradePyQt = self.__checkUpgradePyQt(packages)
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
402 upgradeEric = self.__checkUpgradeEric(packages)
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
403 if upgradeEric or upgradePyQt:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
404 try:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
405 if upgradeEric and upgradePyQt:
10392
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
406 res = self.__ui.upgradeEricPyQt()
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
407 elif upgradeEric:
10392
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
408 res = self.__ui.upgradeEric()
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
409 elif upgradePyQt:
10392
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
410 res = self.__ui.upgradePyQt()
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
411 else:
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
412 return None # should not be reached; play it safe
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
413
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
414 if not res:
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
415 # user rejected PyQt6 and/or eric-ide/eric7 update
ef315a1fdd4a Enhanced Pip.upgradePackages() in order to continue a self-upgrade in case the user rejected a PyQt6 and/or eric-ide upgrade.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10390
diff changeset
416 packages = self.__filterUpgradePackages(packages)
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
417 except AttributeError:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
418 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
419
6785
058d63c537a4 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6782
diff changeset
420 if Preferences.getPip("PipSearchIndex"):
058d63c537a4 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6782
diff changeset
421 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
422 args = ["-m", "pip", "install", "--index-url", indexUrl, "--upgrade"]
6257
4523c5e6dd43 Added more code to properly override the PyPi index URL used by pip.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
423 else:
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
424 args = ["-m", "pip", "install", "--upgrade"]
6327
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
425 if userSite:
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
426 args.append("--user")
6257
4523c5e6dd43 Added more code to properly override the PyPi index URL used by pip.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
427 args += packages
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
428 dia = PipDialog(self.tr("Upgrade Packages"))
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
429 res = dia.startProcess(interpreter, args)
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
431 dia.exec()
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 return res
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
433
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
434 def installPackages(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
435 self,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
436 packages,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
437 venvName="",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
438 userSite=False,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
439 interpreter="",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
440 forceReinstall=False,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
441 ):
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
443 Public method to install the given list of packages.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
444
6327
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
445 @param packages list of packages to install
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
446 @type list of str
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
447 @param venvName name of the virtual environment to be used
6327
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
448 @type str
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
449 @param userSite flag indicating an install to the user install
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
450 directory
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
451 @type bool
6828
bb6667ea9ae7 Changed the Google Mail interface to not use obsoleted packages anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6819
diff changeset
452 @param interpreter interpreter to be used for execution
bb6667ea9ae7 Changed the Google Mail interface to not use obsoleted packages anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6819
diff changeset
453 @type str
8152
0c740fcffd34 Pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
454 @param forceReinstall flag indicating to force a reinstall of
0c740fcffd34 Pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
455 the packages
0c740fcffd34 Pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
456 @type bool
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457 """
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
458 if venvName:
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
459 interpreter = self.getVirtualenvInterpreter(venvName)
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
460 if not interpreter:
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
461 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
462
6828
bb6667ea9ae7 Changed the Google Mail interface to not use obsoleted packages anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6819
diff changeset
463 if interpreter:
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
464 if Preferences.getPip("PipSearchIndex"):
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
465 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
466 args = ["-m", "pip", "install", "--index-url", indexUrl]
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
467 else:
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
468 args = ["-m", "pip", "install"]
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
469 if userSite:
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
470 args.append("--user")
8152
0c740fcffd34 Pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
471 if forceReinstall:
0c740fcffd34 Pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
472 args.append("--force-reinstall")
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
473 args += packages
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
474 dia = PipDialog(self.tr("Install Packages"))
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
475 res = dia.startProcess(interpreter, args)
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
476 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
477 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
478
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
479 def installRequirements(self, venvName):
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
480 """
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
481 Public method to install packages as given in a requirements file.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
482
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
483 @param venvName name of the virtual environment to be used
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
484 @type str
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485 """
6294
58f82c179d2b pip Interface: added an action to install a locally available package/wheel
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6290
diff changeset
486 from .PipFileSelectionDialog import PipFileSelectionDialog
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
487
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
488 dlg = PipFileSelectionDialog(self, "requirements")
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8090
diff changeset
489 if dlg.exec() == QDialog.DialogCode.Accepted:
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
490 requirements, user = dlg.getData()
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 if requirements and os.path.exists(requirements):
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
492 interpreter = self.getVirtualenvInterpreter(venvName)
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
493 if not interpreter:
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
494 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
495
6785
058d63c537a4 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6782
diff changeset
496 if Preferences.getPip("PipSearchIndex"):
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
497 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
498 args = ["-m", "pip", "install", "--index-url", indexUrl]
6257
4523c5e6dd43 Added more code to properly override the PyPi index URL used by pip.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
499 else:
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
500 args = ["-m", "pip", "install"]
6327
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
501 if user:
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
502 args.append("--user")
6257
4523c5e6dd43 Added more code to properly override the PyPi index URL used by pip.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
503 args += ["--requirement", requirements]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
504 dia = PipDialog(self.tr("Install Packages from Requirements"))
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
505 res = dia.startProcess(interpreter, args)
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
507 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
508
9323
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
509 def installEditableProject(self, interpreter, projectPath):
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
510 """
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
511 Public method to install a project in development mode.
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
512
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
513 @param interpreter interpreter to be used for execution
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
514 @type str
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
515 @param projectPath path of the project
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
516 @type str
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
517 """
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
518 if interpreter and projectPath:
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
519 args = ["-m", "pip", "install"]
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
520 if Preferences.getPip("PipSearchIndex"):
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
521 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
522 args += ["--index-url", indexUrl]
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
523 args += ["--editable", projectPath]
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
524
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
525 dia = PipDialog(self.tr("Install Project"))
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
526 res = dia.startProcess(interpreter, args)
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
527 if res:
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
528 dia.exec()
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
529
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
530 def uninstallPackages(self, packages, venvName):
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
531 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
532 Public method to uninstall the given list of packages.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
533
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
534 @param packages list of packages to uninstall
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
535 @type list of str
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
536 @param venvName name of the virtual environment to be used
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
537 @type str
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
538 @return flag indicating a successful execution
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
539 @rtype bool
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
540 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
541 res = False
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
542 if packages and venvName:
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543 dlg = DeleteFilesConfirmationDialog(
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544 self.parent(),
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545 self.tr("Uninstall Packages"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
546 self.tr("Do you really want to uninstall these packages?"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
547 packages,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
548 )
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8090
diff changeset
549 if dlg.exec() == QDialog.DialogCode.Accepted:
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
550 interpreter = self.getVirtualenvInterpreter(venvName)
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
551 if not interpreter:
6891
93f82da09f22 Fixed some code style issues detected by the new 'return' checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6828
diff changeset
552 return False
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
553 args = ["-m", "pip", "uninstall", "--yes"] + packages
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
554 dia = PipDialog(self.tr("Uninstall Packages"))
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
555 res = dia.startProcess(interpreter, args)
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
556 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
557 dia.exec()
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
558 return res
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
559
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
560 def uninstallRequirements(self, venvName):
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
561 """
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
562 Public method to uninstall packages as given in a requirements file.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
563
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
564 @param venvName name of the virtual environment to be used
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
565 @type str
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
566 """
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
567 from .PipFileSelectionDialog import PipFileSelectionDialog
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
568
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
569 if venvName:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
570 dlg = PipFileSelectionDialog(self, "requirements", install=False)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8090
diff changeset
571 if dlg.exec() == QDialog.DialogCode.Accepted:
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
572 requirements, _user = dlg.getData()
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
573 if requirements and os.path.exists(requirements):
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
574 try:
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7780
diff changeset
575 with open(requirements, "r") as f:
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7780
diff changeset
576 reqs = f.read().splitlines()
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7785
diff changeset
577 except OSError:
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
578 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
579
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
580 dlg = DeleteFilesConfirmationDialog(
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
581 self.parent(),
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
582 self.tr("Uninstall Packages"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
583 self.tr("Do you really want to uninstall these packages?"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
584 reqs,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
585 )
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8090
diff changeset
586 if dlg.exec() == QDialog.DialogCode.Accepted:
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
587 interpreter = self.getVirtualenvInterpreter(venvName)
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
588 if not interpreter:
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
589 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
590
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
591 args = ["-m", "pip", "uninstall", "--requirement", requirements]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
592 dia = PipDialog(self.tr("Uninstall Packages from Requirements"))
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
593 res = dia.startProcess(interpreter, args)
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
594 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
595 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
596
6793
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
597 def getIndexUrl(self):
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
598 """
6793
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
599 Public method to get the index URL for PyPI.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
600
6793
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
601 @return index URL for PyPI
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
602 @rtype str
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603 """
8259
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
604 indexUrl = (
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
605 Preferences.getPip("PipSearchIndex") + "/simple"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
606 if Preferences.getPip("PipSearchIndex")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
607 else Pip.DefaultIndexUrlSimple
8259
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
608 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
609
6793
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
610 return indexUrl
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
611
8090
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
612 def getIndexUrlPypi(self):
6793
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
613 """
8090
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
614 Public method to get the index URL for PyPI API calls.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
615
6793
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
616 @return index URL for XML RPC calls
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
617 @rtype str
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
618 """
8259
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
619 indexUrl = (
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
620 Preferences.getPip("PipSearchIndex") + "/pypi"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
621 if Preferences.getPip("PipSearchIndex")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
622 else Pip.DefaultIndexUrlPypi
8259
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
623 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
624
8090
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
625 return indexUrl
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
626
8090
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
627 def getIndexUrlSearch(self):
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
628 """
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
629 Public method to get the index URL for PyPI API calls.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
630
8090
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
631 @return index URL for XML RPC calls
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
632 @rtype str
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
633 """
8259
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
634 indexUrl = (
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
635 Preferences.getPip("PipSearchIndex") + "/search/"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
636 if Preferences.getPip("PipSearchIndex")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
637 else Pip.DefaultIndexUrlSearch
8259
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
638 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
639
6793
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
640 return indexUrl
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
641
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
642 def getInstalledPackages(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
643 self, envName, localPackages=True, notRequired=False, usersite=False
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
644 ):
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
645 """
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
646 Public method to get the list of installed packages.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
647
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
648 @param envName name of the environment to get the packages for
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
649 @type str
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
650 @param localPackages flag indicating to get local packages only
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
651 @type bool
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
652 @param notRequired flag indicating to list packages that are not
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
653 dependencies of installed packages as well
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
654 @type bool
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
655 @param usersite flag indicating to only list packages installed
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
656 in user-site
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
657 @type bool
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
658 @return list of tuples containing the package name and version
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
659 @rtype list of tuple of (str, str)
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
660 """
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
661 packages = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
662
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
663 if envName:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
664 interpreter = self.getVirtualenvInterpreter(envName)
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
665 if interpreter:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
666 args = [
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
667 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
668 "pip",
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
669 "list",
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
670 "--format=json",
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
671 ]
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
672 if localPackages:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
673 args.append("--local")
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
674 if notRequired:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
675 args.append("--not-required")
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
676 if usersite:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
677 args.append("--user")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
678
8090
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
679 if Preferences.getPip("PipSearchIndex"):
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
680 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
681 args += ["--index-url", indexUrl]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
682
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
683 proc = QProcess()
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
684 proc.start(interpreter, args)
8222
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
685 if proc.waitForStarted(15000) and proc.waitForFinished(30000):
10167
0a62a4bf749c Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10156
diff changeset
686 output = str(
0a62a4bf749c Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10156
diff changeset
687 proc.readAllStandardOutput(),
0a62a4bf749c Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10156
diff changeset
688 Preferences.getSystem("IOEncoding"),
0a62a4bf749c Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10156
diff changeset
689 "replace",
0a62a4bf749c Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10156
diff changeset
690 ).strip()
10156
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
691 if output:
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
692 output = output.splitlines()[0]
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
693 try:
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
694 jsonList = json.loads(output)
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
695 except Exception:
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
696 jsonList = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
697
10156
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
698 for package in jsonList:
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
699 if isinstance(package, dict):
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
700 packages.append(
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
701 (
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
702 package["name"],
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
703 package["version"],
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
704 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
705 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
706
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
707 return packages
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
708
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
709 def getOutdatedPackages(
9586
2750e76fc366 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9580
diff changeset
710 self,
2750e76fc366 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9580
diff changeset
711 envName,
2750e76fc366 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9580
diff changeset
712 localPackages=True,
2750e76fc366 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9580
diff changeset
713 notRequired=False,
2750e76fc366 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9580
diff changeset
714 usersite=False,
2750e76fc366 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9580
diff changeset
715 interpreter=None,
10209
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
716 callback=None,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
717 ):
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
718 """
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
719 Public method to get the list of outdated packages.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
720
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
721 @param envName name of the environment to get the packages for
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
722 @type str
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
723 @param localPackages flag indicating to get local packages only
9578
bbe0a4b0832e Change the code checking for eric-ide and PyQt6 updates in order to always use the right interpreter (see issue463).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
724 (defaults to False)
bbe0a4b0832e Change the code checking for eric-ide and PyQt6 updates in order to always use the right interpreter (see issue463).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
725 @type bool (optional)
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
726 @param notRequired flag indicating to list packages that are not
9578
bbe0a4b0832e Change the code checking for eric-ide and PyQt6 updates in order to always use the right interpreter (see issue463).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
727 dependencies of installed packages as well (defaults to False)
bbe0a4b0832e Change the code checking for eric-ide and PyQt6 updates in order to always use the right interpreter (see issue463).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
728 @type bool (optional)
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
729 @param usersite flag indicating to only list packages installed
9578
bbe0a4b0832e Change the code checking for eric-ide and PyQt6 updates in order to always use the right interpreter (see issue463).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
730 in user-site (defaults to False)
bbe0a4b0832e Change the code checking for eric-ide and PyQt6 updates in order to always use the right interpreter (see issue463).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
731 @type bool (optional)
bbe0a4b0832e Change the code checking for eric-ide and PyQt6 updates in order to always use the right interpreter (see issue463).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
732 @param interpreter path of an interpreter executable. If this is not
bbe0a4b0832e Change the code checking for eric-ide and PyQt6 updates in order to always use the right interpreter (see issue463).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
733 None, it will override the given environment name (defaults to None)
bbe0a4b0832e Change the code checking for eric-ide and PyQt6 updates in order to always use the right interpreter (see issue463).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
734 @type str (optional)
10209
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
735 @param callback method accepting a list of tuples containing the
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
736 package name, installed version and available version
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
737 @type function
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
738 @return list of tuples containing the package name, installed version
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
739 and available version
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
740 @rtype list of tuple of (str, str, str)
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
741 """
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
742 packages = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
743
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
744 if envName:
9578
bbe0a4b0832e Change the code checking for eric-ide and PyQt6 updates in order to always use the right interpreter (see issue463).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
745 if interpreter is None:
bbe0a4b0832e Change the code checking for eric-ide and PyQt6 updates in order to always use the right interpreter (see issue463).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
746 interpreter = self.getVirtualenvInterpreter(envName)
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
747 if interpreter:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
748 args = [
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
749 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
750 "pip",
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
751 "list",
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
752 "--outdated",
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
753 "--format=json",
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
754 ]
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
755 if localPackages:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
756 args.append("--local")
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
757 if notRequired:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
758 args.append("--not-required")
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
759 if usersite:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
760 args.append("--user")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
761
8090
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
762 if Preferences.getPip("PipSearchIndex"):
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
763 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
764 args += ["--index-url", indexUrl]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
765
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
766 proc = QProcess()
10209
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
767 if callback:
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
768 self.__outdatedProc = proc
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
769 proc.finished.connect(
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
770 functools.partial(self.__outdatedFinished, callback, proc)
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
771 )
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
772 proc.start(interpreter, args)
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
773 return None
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
774
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
775 proc.start(interpreter, args)
8222
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
776 if proc.waitForStarted(15000) and proc.waitForFinished(30000):
10209
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
777 packages = self.__extractOutdatedPackages(proc)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
778
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
779 return packages
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
780
10209
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
781 def __extractOutdatedPackages(self, proc):
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
782 """
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
783 Private method to extract the outdated packages list out of the process output.
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
784
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
785 @param proc reference to the process
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
786 @type QProcess
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
787 @return list of tuples containing the package name, installed version
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
788 and available version
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
789 @rtype list of tuple of (str, str, str)
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
790 """
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
791 packages = []
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
792
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
793 output = str(
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
794 proc.readAllStandardOutput(),
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
795 Preferences.getSystem("IOEncoding"),
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
796 "replace",
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
797 ).strip()
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
798 if output:
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
799 output = output.splitlines()[0]
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
800 try:
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
801 jsonList = json.loads(output)
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
802 except Exception:
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
803 jsonList = []
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
804
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
805 for package in jsonList:
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
806 if isinstance(package, dict):
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
807 packages.append(
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
808 (
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
809 package["name"],
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
810 package["version"],
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
811 package["latest_version"],
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
812 )
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
813 )
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
814
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
815 return packages
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
816
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
817 def __outdatedFinished(self, callback, proc, exitCode, exitStatus):
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
818 """
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
819 Private method to handle the process finished signal.
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
820
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
821 @param callback reference to the function to be called with the list of
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
822 outdated packages
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
823 @type function
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
824 @param proc reference to the process
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
825 @type QProcess
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
826 @param exitCode exit code of the process
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
827 @type int
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
828 @param exitStatus exit status of the process
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
829 @type QProcess.ExitStatus
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
830 """
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
831 packages = (
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
832 self.__extractOutdatedPackages(proc)
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
833 if exitStatus == QProcess.ExitStatus.NormalExit and exitCode == 0
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
834 else []
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
835 )
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
836 callback(packages)
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
837 self.__outdatedProc = None
8bb763e85937 Modified the Pip.getOutdatedPackages() method to keep the UI responsive while pip accesses the internet for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10177
diff changeset
838
9580
123a7eadc798 Changed the code of the pip interface to speed up the check for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9578
diff changeset
839 def checkPackagesOutdated(self, packageStarts, envName, interpreter=None):
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
840 """
9580
123a7eadc798 Changed the code of the pip interface to speed up the check for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9578
diff changeset
841 Public method to check, if groups of packages are outdated.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
842
9580
123a7eadc798 Changed the code of the pip interface to speed up the check for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9578
diff changeset
843 @param packageStarts list of start strings for package names to be checked
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
844 (case insensitive)
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
845 @type str
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
846 @param envName name of the environment to get the packages for
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
847 @type str
9578
bbe0a4b0832e Change the code checking for eric-ide and PyQt6 updates in order to always use the right interpreter (see issue463).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
848 @param interpreter path of an interpreter executable. If this is not
bbe0a4b0832e Change the code checking for eric-ide and PyQt6 updates in order to always use the right interpreter (see issue463).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
849 None, it will override the given environment name (defaults to None)
bbe0a4b0832e Change the code checking for eric-ide and PyQt6 updates in order to always use the right interpreter (see issue463).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9482
diff changeset
850 @type str (optional)
9580
123a7eadc798 Changed the code of the pip interface to speed up the check for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9578
diff changeset
851 @return list of tuples containing the package name, installed version
123a7eadc798 Changed the code of the pip interface to speed up the check for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9578
diff changeset
852 and available version of outdated packages
123a7eadc798 Changed the code of the pip interface to speed up the check for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9578
diff changeset
853 @rtype tuple of (str, str, str)
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
854 """
9580
123a7eadc798 Changed the code of the pip interface to speed up the check for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9578
diff changeset
855 if (bool(envName) or bool(interpreter)) and any(bool(p) for p in packageStarts):
123a7eadc798 Changed the code of the pip interface to speed up the check for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9578
diff changeset
856 packages = self.getOutdatedPackages(envName, interpreter=interpreter)
123a7eadc798 Changed the code of the pip interface to speed up the check for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9578
diff changeset
857 filterStrings = tuple(
123a7eadc798 Changed the code of the pip interface to speed up the check for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9578
diff changeset
858 start.lower() for start in packageStarts if bool(start)
123a7eadc798 Changed the code of the pip interface to speed up the check for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9578
diff changeset
859 )
123a7eadc798 Changed the code of the pip interface to speed up the check for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9578
diff changeset
860 filteredPackages = [
123a7eadc798 Changed the code of the pip interface to speed up the check for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9578
diff changeset
861 p for p in packages if p[0].lower().startswith(filterStrings)
123a7eadc798 Changed the code of the pip interface to speed up the check for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9578
diff changeset
862 ]
123a7eadc798 Changed the code of the pip interface to speed up the check for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9578
diff changeset
863 else:
123a7eadc798 Changed the code of the pip interface to speed up the check for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9578
diff changeset
864 filteredPackages = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
865
9580
123a7eadc798 Changed the code of the pip interface to speed up the check for outdated packages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9578
diff changeset
866 return filteredPackages
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
867
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
868 def getPackageDetails(self, name, version):
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
869 """
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
870 Public method to get package details using the PyPI JSON interface.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
871
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
872 @param name package name
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
873 @type str
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
874 @param version package version
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
875 @type str
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
876 @return dictionary containing PyPI package data
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
877 @rtype dict
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
878 """
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
879 result = {}
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
880
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
881 if name and version:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
882 url = "{0}/{1}/{2}/json".format(self.getIndexUrlPypi(), name, version)
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
883 request = QNetworkRequest(QUrl(url))
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
884 reply = self.__networkManager.get(request)
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
885 while not reply.isFinished():
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
886 QCoreApplication.processEvents()
8943
23f9c7b9e18e Implemented some performance improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
887 QThread.msleep(100)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
888
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
889 reply.deleteLater()
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8090
diff changeset
890 if reply.error() == QNetworkReply.NetworkError.NoError:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
891 data = str(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
892 reply.readAll(), Preferences.getSystem("IOEncoding"), "replace"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
893 )
9462
e65379fdbd97 Changed code to resolve or acknowledge some potential security issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
894 with contextlib.suppress(json.JSONDecodeError):
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
895 result = json.loads(data)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
896
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
897 return result
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
898
8973
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
899 def getPackageVersions(self, name):
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
900 """
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
901 Public method to get a list of versions available for the given
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
902 package.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
903
8973
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
904 @param name package name
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
905 @type str
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
906 @return list of available versions
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
907 @rtype list of str
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
908 """
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
909 result = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
910
8973
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
911 if name:
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
912 url = "{0}/{1}/json".format(self.getIndexUrlPypi(), name)
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
913 request = QNetworkRequest(QUrl(url))
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
914 reply = self.__networkManager.get(request)
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
915 while not reply.isFinished():
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
916 QCoreApplication.processEvents()
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
917 QThread.msleep(100)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
918
8973
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
919 reply.deleteLater()
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
920 if reply.error() == QNetworkReply.NetworkError.NoError:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
921 dataStr = str(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
922 reply.readAll(), Preferences.getSystem("IOEncoding"), "replace"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
923 )
9462
e65379fdbd97 Changed code to resolve or acknowledge some potential security issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
924 with contextlib.suppress(json.JSONDecodeError, KeyError):
8973
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
925 data = json.loads(dataStr)
10373
093dcebe5ecb Corrected some uses of dict.keys(), dict.values() and dict.items().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10372
diff changeset
926 result = list(data["releases"])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
927
8973
ad4848b7fd9b Changed the automatic upgrade check to check against the eric-ide package of PyPI.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8972
diff changeset
928 return result
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
929
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
930 def getFrozenPackages(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
931 self, envName, localPackages=True, usersite=False, requirement=None
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
932 ):
8976
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
933 """
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
934 Public method to get the list of package specifiers to freeze them.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
935
8976
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
936 @param envName name of the environment to get the package specifiers
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
937 for
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
938 @type str
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
939 @param localPackages flag indicating to get package specifiers for
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
940 local packages only
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
941 @type bool
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
942 @param usersite flag indicating to get package specifiers for packages
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
943 installed in user-site only
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
944 @type bool
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
945 @param requirement name of a requirements file
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
946 @type str
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
947 @return list of package specifiers
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
948 @rtype list of str
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
949 """
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
950 specifiers = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
951
8976
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
952 if envName:
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
953 interpreter = self.getVirtualenvInterpreter(envName)
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
954 if interpreter:
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
955 args = [
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
956 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
957 "pip",
8976
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
958 "freeze",
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
959 ]
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
960 if localPackages:
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
961 args.append("--local")
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
962 if usersite:
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
963 args.append("--user")
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
964 if requirement and os.path.exists(requirement):
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
965 args.append("--requirement")
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
966 args.append(requirement)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
967
8976
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
968 success, output = self.runProcess(args, interpreter)
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
969 if success and output:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
970 specifiers = [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
971 spec.strip() for spec in output.splitlines() if spec.strip()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
972 ]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
973
8976
ca442cd49b9e Refactored the 'pip freeze' functionality and moved it to the main pip interface module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8973
diff changeset
974 return specifiers
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
975
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
976 #######################################################################
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
977 ## Cache handling methods below
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
978 #######################################################################
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
979
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
980 def showCacheInfo(self, venvName):
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
981 """
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
982 Public method to show some information about the pip cache.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
983
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
984 @param venvName name of the virtual environment to be used
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
985 @type str
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
986 """
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
987 if venvName:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
988 interpreter = self.getVirtualenvInterpreter(venvName)
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
989 if interpreter:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
990 args = ["-m", "pip", "cache", "info"]
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
991 dia = PipDialog(self.tr("Cache Info"))
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
992 res = dia.startProcess(interpreter, args, showArgs=False)
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
993 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
994 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
995
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
996 def cacheList(self, venvName):
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
997 """
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
998 Public method to list files contained in the pip cache.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
999
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1000 @param venvName name of the virtual environment to be used
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1001 @type str
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1002 """
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1003 if venvName:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1004 interpreter = self.getVirtualenvInterpreter(venvName)
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1005 if interpreter:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1006 pattern, ok = QInputDialog.getText(
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1007 None,
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1008 self.tr("List Cached Files"),
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1009 self.tr("Enter a file pattern (empty for all):"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1010 QLineEdit.EchoMode.Normal,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1011 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1012
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1013 if ok:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1014 args = ["-m", "pip", "cache", "list"]
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1015 if pattern.strip():
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1016 args.append(pattern.strip())
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1017 dia = PipDialog(self.tr("List Cached Files"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1018 res = dia.startProcess(interpreter, args, showArgs=False)
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1019 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
1020 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1021
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1022 def cacheRemove(self, venvName):
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1023 """
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1024 Public method to remove files from the pip cache.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1025
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1026 @param venvName name of the virtual environment to be used
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1027 @type str
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1028 """
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1029 if venvName:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1030 interpreter = self.getVirtualenvInterpreter(venvName)
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1031 if interpreter:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1032 pattern, ok = QInputDialog.getText(
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1033 None,
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1034 self.tr("Remove Cached Files"),
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1035 self.tr("Enter a file pattern:"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1036 QLineEdit.EchoMode.Normal,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1037 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1038
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1039 if ok and pattern.strip():
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1040 args = ["-m", "pip", "cache", "remove", pattern.strip()]
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1041 dia = PipDialog(self.tr("Remove Cached Files"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1042 res = dia.startProcess(interpreter, args, showArgs=False)
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1043 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
1044 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1045
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1046 def cachePurge(self, venvName):
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1047 """
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1048 Public method to remove all files from the pip cache.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1049
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1050 @param venvName name of the virtual environment to be used
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1051 @type str
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1052 """
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1053 if venvName:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1054 interpreter = self.getVirtualenvInterpreter(venvName)
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1055 if interpreter:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8354
diff changeset
1056 ok = EricMessageBox.yesNo(
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1057 None,
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1058 self.tr("Purge Cache"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1059 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1060 "Do you really want to purge the pip cache? All"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1061 " files need to be downloaded again."
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1062 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1063 )
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1064 if ok:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1065 args = ["-m", "pip", "cache", "purge"]
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1066 dia = PipDialog(self.tr("Purge Cache"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1067 res = dia.startProcess(interpreter, args, showArgs=False)
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1068 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
1069 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1070
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1071 #######################################################################
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1072 ## Dependency tree handling methods below
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1073 #######################################################################
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1074
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1075 def getDependencyTree(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1076 self, envName, localPackages=True, usersite=False, reverse=False
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1077 ):
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1078 """
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1079 Public method to get the dependency tree of installed packages.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1080
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1081 @param envName name of the environment to get the packages for
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1082 @type str
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1083 @param localPackages flag indicating to get the tree for local
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1084 packages only
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1085 @type bool
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1086 @param usersite flag indicating to get the tree for packages
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1087 installed in user-site directory only
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1088 @type bool
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1089 @param reverse flag indicating to get the dependency tree in
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1090 reverse order (i.e. list packages needed by other)
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1091 @type bool
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1092 @return list of nested dictionaries resembling the requested
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1093 dependency tree
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1094 @rtype list of dict
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1095 """
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1096 dependencies = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1097
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1098 if envName:
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1099 interpreter = self.getVirtualenvInterpreter(envName)
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1100 if interpreter:
10177
27a6e35c64ed Changed the included 'pipdeptree' to an external dependency.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10167
diff changeset
1101 args = ["-m", "pipdeptree", "--python", interpreter, "--json-tree"]
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1102 if localPackages:
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1103 args.append("--local-only")
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1104 if usersite:
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1105 args.append("--user-only")
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1106 if reverse:
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1107 args.append("--reverse")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1108
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1109 proc = QProcess()
10177
27a6e35c64ed Changed the included 'pipdeptree' to an external dependency.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10167
diff changeset
1110 proc.start(PythonUtilities.getPythonExecutable(), args)
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1111 if proc.waitForStarted(15000) and proc.waitForFinished(30000):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1112 output = str(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1113 proc.readAllStandardOutput(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1114 Preferences.getSystem("IOEncoding"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1115 "replace",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1116 ).strip()
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1117 with contextlib.suppress(json.JSONDecodeError):
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1118 dependencies = json.loads(output)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1119
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1120 return dependencies
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1121
9002
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1122 #######################################################################
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1123 ## License handling methods below
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1124 #######################################################################
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1125
9851
ec12090e9cd9 Modified the pip licenses dialog to show the license data for packages contained in the packages list only.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9850
diff changeset
1126 def getLicenses(self, envName):
9002
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1127 """
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1128 Public method to get the licenses per package for a given environment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1129
9002
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1130 @param envName name of the environment to get the licenses for
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1131 @type str
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1132 @return list of dictionaries containing the license and version per
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1133 package
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1134 @rtype dict
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1135 """
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1136 licenses = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1137
9002
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1138 if envName:
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1139 interpreter = self.getVirtualenvInterpreter(envName)
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1140 if interpreter:
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1141 args = [
9309
60ee3f038f52 Corrected an issue causing the pip dependency tree and the pip licenses dialogs to not show anything on Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9278
diff changeset
1142 os.path.join(os.path.dirname(__file__), "piplicenses.py"),
9002
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1143 "--from",
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1144 "mixed",
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1145 "--with-system",
9101
1c708303e85a Extended the list of data returned by 'piplicenses'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9056
diff changeset
1146 "--with-authors",
1c708303e85a Extended the list of data returned by 'piplicenses'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9056
diff changeset
1147 "--with-urls",
1c708303e85a Extended the list of data returned by 'piplicenses'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9056
diff changeset
1148 "--with-description",
9002
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1149 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1150
9002
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1151 proc = QProcess()
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1152 proc.start(interpreter, args)
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1153 if proc.waitForStarted(15000) and proc.waitForFinished(30000):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1154 output = str(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1155 proc.readAllStandardOutput(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1156 Preferences.getSystem("IOEncoding"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1157 "replace",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1158 ).strip()
9002
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1159 with contextlib.suppress(json.JSONDecodeError):
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1160 licenses = json.loads(output)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1161
9002
31a7decd3393 Started to implement a license lister for pip installed packages based on pip-licenses.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8998
diff changeset
1162 return licenses

eric ide

mercurial