src/eric7/PipInterface/Pip.py

Sat, 01 Mar 2025 15:52:40 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 01 Mar 2025 15:52:40 +0100
branch
eric7-maintenance
changeset 11155
e1843b6efa73
parent 11118
967a88a16a21
parent 11148
15e30f0c76a8
permissions
-rw-r--r--

Merged with branch 'eric7'.

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
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
3 # Copyright (c) 2015 - 2025 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
10620
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
14 import re
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 import sys
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
10620
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
17 import tomlkit
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
18
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9470
diff changeset
19 from PyQt6.QtCore import QCoreApplication, QObject, QProcess, QThread, QUrl, pyqtSlot
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
20 from PyQt6.QtNetwork import (
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
21 QNetworkAccessManager,
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
22 QNetworkProxyFactory,
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
23 QNetworkReply,
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
24 QNetworkRequest,
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
25 )
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
26 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
27
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9586
diff changeset
28 from eric7 import Preferences
10928
46651e194fbe Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10919
diff changeset
29 from eric7.EricCore import EricPreferences
10919
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
30 from eric7.EricCore.EricProcess import EricProcess
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
31 from eric7.EricNetwork.EricNetworkProxyFactory import (
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
32 EricNetworkProxyFactory,
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
33 proxyAuthenticationRequired,
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
34 )
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
35 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
36 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
37 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
38 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
39
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
40 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
41 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
42
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
43 SSL_AVAILABLE = True
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
44 except ImportError:
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
45 SSL_AVAILABLE = False
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
46
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 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
48 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
49
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 class Pip(QObject):
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 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
54 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
55
6793
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
56 DefaultPyPiUrl = "https://pypi.org"
8090
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
57 DefaultIndexUrlPypi = DefaultPyPiUrl + "/pypi"
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
58 DefaultIndexUrlSimple = DefaultPyPiUrl + "/simple"
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
59 DefaultIndexUrlSearch = DefaultPyPiUrl + "/search/"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
60
6785
058d63c537a4 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6782
diff changeset
61 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
62 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
64
8970
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8943
diff changeset
65 @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
66 @type QObject
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 """
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
68 super().__init__(parent)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
69
8970
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8943
diff changeset
70 self.__ui = parent
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
71
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
72 # attributes for the network objects
10928
46651e194fbe Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10919
diff changeset
73 if EricPreferences.getNetworkProxy("UseSystemProxy"):
10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
74 QNetworkProxyFactory.setUseSystemConfiguration(True)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
75 else:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
76 self.__proxyFactory = EricNetworkProxyFactory()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
77 QNetworkProxyFactory.setApplicationProxyFactory(self.__proxyFactory)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
78 QNetworkProxyFactory.setUseSystemConfiguration(False)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
79
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
80 self.__networkManager = QNetworkAccessManager(self)
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
81 self.__networkManager.proxyAuthenticationRequired.connect(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
82 proxyAuthenticationRequired
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
83 )
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
84 if SSL_AVAILABLE:
10928
46651e194fbe Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10919
diff changeset
85 self.__sslErrorHandler = EricSslErrorHandler(
46651e194fbe Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10919
diff changeset
86 Preferences.getSettings(), self
46651e194fbe Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10919
diff changeset
87 )
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
88 self.__networkManager.sslErrors.connect(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
89 self.__sslErrorHandler.sslErrorsReply
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
90 )
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
91 self.__replies = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
92
10919
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
93 self.__outdatedProc = None
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
94
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
95 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
96
8085
f6db8b3ecea9 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
97 def getNetworkAccessManager(self):
f6db8b3ecea9 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
98 """
f6db8b3ecea9 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
99 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
100
8085
f6db8b3ecea9 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
101 @return reference to the network access manager object
f6db8b3ecea9 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
102 @rtype QNetworkAccessManager
f6db8b3ecea9 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
103 """
f6db8b3ecea9 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
104 return self.__networkManager
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
105
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
106 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
107 """
663521af48b2 Started implementing a vulnerability checker based on the data of the Safety DB.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8976
diff changeset
108 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
109
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
110 @return reference to the vulnerability checker object
8983
46eaed7bf3cb Updated source code documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8977
diff changeset
111 @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
112 """
663521af48b2 Started implementing a vulnerability checker based on the data of the Safety DB.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8976
diff changeset
113 return self.__vulnerabilityChecker
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
114
10919
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
115 def shutdown(self):
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
116 """
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
117 Public method to perform shutdown actions.
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
118 """
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
119 if self.__outdatedProc is not None:
11129
bf4ee956dea6 Added code to get rid of spurious runtime issues when shutting down the IDE.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11112
diff changeset
120 self.__outdatedProc.finished.disconnect()
10919
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
121 self.__outdatedProc.kill() # end the process forcefully
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
122 self.__outdatedProc = None
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
123
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 ##########################################################################
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 ## 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
126 ##########################################################################
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
127
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
128 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
129 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 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
131
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 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
133 waited for its end.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
134
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
135 @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
136 @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
137 @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
138 @type str
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 @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
140 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
141 @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
142 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 ioEncoding = Preferences.getSystem("IOEncoding")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
144
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 process = QProcess()
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
146 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
147 procStarted = process.waitForStarted()
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 if procStarted:
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 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
150 if finished:
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 if process.exitCode() == 0:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
152 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
153 return True, output
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 else:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
155 return (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
156 False,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
157 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
158 process.exitCode()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
159 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
160 )
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 else:
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 process.terminate()
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 process.waitForFinished(2000)
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 process.kill()
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 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
166 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
167
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
168 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
169
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
170 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
171 """
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
172 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
173
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
174 @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
175 @rtype str
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 # 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
178 # 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
179 # 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
180 # Environment: $PIP_CONFIG_FILE
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
181
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
182 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
183 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
184
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9586
diff changeset
185 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
186 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
187 elif OSUtilities.isMacPlatform():
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
188 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
189 else:
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 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
191
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 return config
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
193
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
194 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
195 """
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
196 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
197
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
198 @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
199 @type str
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
200 @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
201 @rtype str
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 # 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
204 # 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
205
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9586
diff changeset
206 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
207
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
208 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
209 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
210 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
211 if venvManager.isGlobalEnvironment(venvName)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
212 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
213 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
214
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
215 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
216
6785
058d63c537a4 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6782
diff changeset
217 return config
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
218
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
219 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
220 """
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
221 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
222
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
223 @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
224 @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
225 """
10084
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9851
diff changeset
226 try:
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9851
diff changeset
227 project = ericApp().getObject("Project")
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9851
diff changeset
228 if project.isOpen():
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9851
diff changeset
229 return self.tr("<project>")
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9851
diff changeset
230 else:
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9851
diff changeset
231 return ""
125166c6b66c pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9851
diff changeset
232 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
233 return ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
234
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
235 def getVirtualenvInterpreter(self, venvName):
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
236 """
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
237 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
238
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
239 @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
240 @type str
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
241 @return interpreter path
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
242 @rtype str
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
243 """
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
244 interpreter = (
9056
af7c8c7b7c62 Added a few more API calls to the Project object to
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
245 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
246 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
247 else ericApp()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
248 .getObject("VirtualEnvManager")
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
249 .getVirtualenvInterpreter(venvName)
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
250 )
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
251 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
252 EricMessageBox.critical(
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
253 None,
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
254 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
255 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
256 """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
257 """ virtual environment."""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
258 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
259 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
260
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
261 return interpreter
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
262
10766
d35d6f96c24b Extended the use of eric-ide server environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10742
diff changeset
263 def getVirtualenvNames(
d35d6f96c24b Extended the use of eric-ide server environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10742
diff changeset
264 self, noRemote=False, noConda=False, noGlobals=False, noServer=False
d35d6f96c24b Extended the use of eric-ide server environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10742
diff changeset
265 ):
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
266 """
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
267 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
268
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
269 @param noRemote flag indicating to exclude environments for remote
10742
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10740
diff changeset
270 debugging (defaults to False)
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10740
diff changeset
271 @type bool (optional)
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10740
diff changeset
272 @param noConda flag indicating to exclude Conda environments (defaults to False)
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10740
diff changeset
273 @type bool (optional)
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10740
diff changeset
274 @param noGlobals flag indicating to exclude global environments
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10740
diff changeset
275 (defaults to False)
7aa41173b44b pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10740
diff changeset
276 @type bool (optional)
10766
d35d6f96c24b Extended the use of eric-ide server environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10742
diff changeset
277 @param noServer flag indicating to exclued eric-ide server environments
d35d6f96c24b Extended the use of eric-ide server environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10742
diff changeset
278 (defaults to False)
d35d6f96c24b Extended the use of eric-ide server environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10742
diff changeset
279 @type bool (optional)
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
280 @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
281 @rtype list of str
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
282 """
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
283 return sorted(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
284 ericApp()
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
285 .getObject("VirtualEnvManager")
10766
d35d6f96c24b Extended the use of eric-ide server environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10742
diff changeset
286 .getVirtualenvNames(
d35d6f96c24b Extended the use of eric-ide server environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10742
diff changeset
287 noRemote=noRemote,
d35d6f96c24b Extended the use of eric-ide server environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10742
diff changeset
288 noConda=noConda,
d35d6f96c24b Extended the use of eric-ide server environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10742
diff changeset
289 noGlobals=noGlobals,
d35d6f96c24b Extended the use of eric-ide server environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10742
diff changeset
290 noServer=noServer,
d35d6f96c24b Extended the use of eric-ide server environments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10742
diff changeset
291 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
292 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
293
6795
6e2ed2aac325 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6793
diff changeset
294 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
295 """
6795
6e2ed2aac325 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6793
diff changeset
296 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
297
6795
6e2ed2aac325 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6793
diff changeset
298 @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
299 @type str
6331
758b1cb7a2e6 pip Interface: continued adding support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6327
diff changeset
300 @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
301 directory
758b1cb7a2e6 pip Interface: continued adding support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6327
diff changeset
302 @type bool
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 """
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
304 interpreter = self.getVirtualenvInterpreter(venvName)
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
305 if not interpreter:
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
306 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
307
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
308 dia = PipDialog(self.tr("Install PIP"), parent=self.__ui)
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
309 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
310 [(interpreter, ["-m", "ensurepip", "--user"])]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
311 if userSite
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
312 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
313 )
6785
058d63c537a4 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6782
diff changeset
314 if Preferences.getPip("PipSearchIndex"):
058d63c537a4 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6782
diff changeset
315 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
316 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
317 else:
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
318 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
319 if userSite:
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
320 args.append("--user")
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
321 args.append("pip")
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
322 commands.append((interpreter, args[:]))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
323
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
324 res = dia.startProcesses(commands)
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
325 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
326 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
327
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 @pyqtSlot()
6795
6e2ed2aac325 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6793
diff changeset
329 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
330 """
6795
6e2ed2aac325 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6793
diff changeset
331 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
332
6795
6e2ed2aac325 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6793
diff changeset
333 @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
334 @type str
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 """
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
336 interpreter = self.getVirtualenvInterpreter(venvName)
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
337 if not interpreter:
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
338 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
339
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
340 # 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
341 if Preferences.getPip("PipSearchIndex"):
058d63c537a4 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6782
diff changeset
342 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
343 args = [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
344 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
345 "pip",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
346 "install",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
347 "--index-url",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
348 indexUrl,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
349 "--ignore-installed",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
350 ]
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
351 else:
6331
758b1cb7a2e6 pip Interface: continued adding support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6327
diff changeset
352 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
353 args.append("pip")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
354
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
355 dia = PipDialog(self.tr("Repair PIP"), parent=self.__ui)
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
356 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
357 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
358 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
359
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 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
361 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 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
363
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 @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
365 @type list of str
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
366 @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
367 @rtype bool
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 """
8459
0ae07748dbe8 Changed quite a few PyQt5 references to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
369 pyqtPackages = [
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
370 p
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
371 for p in packages
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
372 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
373 in (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
374 "pyqt6",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
375 "pyqt6-sip",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
376 "pyqt6-webengine",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
377 "pyqt6-charts",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
378 "pyqt6-qscintilla",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
379 "pyqt6-qt6",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
380 "pyqt6-webengine-qt6",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
381 "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
382 )
8459
0ae07748dbe8 Changed quite a few PyQt5 references to PyQt6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
383 ]
8970
188ff9ce8657 Added capability to upgrade PyQt packages eric depends on from within eric.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8943
diff changeset
384 return bool(pyqtPackages)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
385
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
386 def __checkUpgradeEric(self, packages):
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
387 """
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
388 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
389 attempted.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
390
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
391 @param packages list of packages to upgrade
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
392 @type list of str
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
393 @return flag indicating an eric-ide upgrade
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
394 @rtype bool
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
395 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
396 ericPackages = [p for p in packages if p.lower() == "eric-ide"]
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
397 return bool(ericPackages)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
398
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
399 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
400 """
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
401 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
402 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
403
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
404 @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
405 @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
406 @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
407 @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
408 """
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
409 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
410 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
411 for p in packages
10394
056d1b2cd3c4 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10393
diff changeset
412 if p.lower()
056d1b2cd3c4 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10393
diff changeset
413 not in (
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
414 "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
415 "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
416 "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
417 "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
418 "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
419 "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
420 "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
421 "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
422 "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
423 )
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
424 ]
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
425
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
426 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
427 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 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
429
6327
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
430 @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
431 @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
432 @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
433 @type str
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
434 @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
435 directory
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
436 @type bool
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
437 @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
438 @rtype bool
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439 """
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
440 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
441 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
442
10387
8cf53170e290 Some code optimization in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
443 interpreter = self.getVirtualenvInterpreter(venvName)
8cf53170e290 Some code optimization in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
444 if not interpreter:
8cf53170e290 Some code optimization in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
445 return False
8cf53170e290 Some code optimization in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10373
diff changeset
446
10393
434e1b0bc49e Extended functionality in FileSystemUtilities.py and modified the doc strings to the newer format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10392
diff changeset
447 if FileSystemUtilities.samefilepath(
434e1b0bc49e Extended functionality in FileSystemUtilities.py and modified the doc strings to the newer format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10392
diff changeset
448 interpreter, sys.executable, followSymlinks=False
434e1b0bc49e Extended functionality in FileSystemUtilities.py and modified the doc strings to the newer format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10392
diff changeset
449 ):
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
450 upgradePyQt = self.__checkUpgradePyQt(packages)
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
451 upgradeEric = self.__checkUpgradeEric(packages)
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
452 if upgradeEric or upgradePyQt:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
453 try:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
454 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
455 res = self.__ui.upgradeEricPyQt()
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
456 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
457 res = self.__ui.upgradeEric()
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
458 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
459 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
460 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
461 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
462
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
463 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
464 # 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
465 packages = self.__filterUpgradePackages(packages)
10990
31677cc3713e Corrected a little glitch in the pip interface package upgrade function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
466 if not packages:
31677cc3713e Corrected a little glitch in the pip interface package upgrade function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
467 EricMessageBox.information(
31677cc3713e Corrected a little glitch in the pip interface package upgrade function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
468 None,
31677cc3713e Corrected a little glitch in the pip interface package upgrade function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
469 self.tr("Upgrade Packages"),
31677cc3713e Corrected a little glitch in the pip interface package upgrade function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
470 self.tr(
31677cc3713e Corrected a little glitch in the pip interface package upgrade function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
471 "There are no packages except 'eric-ide' or 'PyQt6'"
31677cc3713e Corrected a little glitch in the pip interface package upgrade function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
472 " left for upgrade."
31677cc3713e Corrected a little glitch in the pip interface package upgrade function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
473 ),
31677cc3713e Corrected a little glitch in the pip interface package upgrade function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
474 )
31677cc3713e Corrected a little glitch in the pip interface package upgrade function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10928
diff changeset
475 return False
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
476 except AttributeError:
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
477 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
478
6785
058d63c537a4 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6782
diff changeset
479 if Preferences.getPip("PipSearchIndex"):
058d63c537a4 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6782
diff changeset
480 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
481 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
482 else:
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
483 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
484 if userSite:
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
485 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
486 args += packages
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
487 dia = PipDialog(self.tr("Upgrade Packages"), parent=self.__ui)
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
488 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
489 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
490 dia.exec()
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 return res
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
492
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
493 def installPackages(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
494 self,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
495 packages,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
496 venvName="",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
497 userSite=False,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
498 interpreter="",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
499 forceReinstall=False,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
500 ):
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 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
503
6327
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
504 @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
505 @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
506 @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
507 @type str
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
508 @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
509 directory
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
510 @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
511 @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
512 @type str
8152
0c740fcffd34 Pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
513 @param forceReinstall flag indicating to force a reinstall of
0c740fcffd34 Pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
514 the packages
0c740fcffd34 Pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
515 @type bool
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
516 """
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
517 if venvName:
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
518 interpreter = self.getVirtualenvInterpreter(venvName)
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
519 if not interpreter:
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
520 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
521
6828
bb6667ea9ae7 Changed the Google Mail interface to not use obsoleted packages anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6819
diff changeset
522 if interpreter:
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
523 if Preferences.getPip("PipSearchIndex"):
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
524 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
525 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
526 else:
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
527 args = ["-m", "pip", "install"]
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
528 if userSite:
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
529 args.append("--user")
8152
0c740fcffd34 Pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
530 if forceReinstall:
0c740fcffd34 Pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
531 args.append("--force-reinstall")
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
532 args += packages
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
533 dia = PipDialog(self.tr("Install Packages"), parent=self.__ui)
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
534 res = dia.startProcess(interpreter, args)
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
535 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
536 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
537
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
538 def installRequirements(self, venvName):
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
539 """
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
540 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
541
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
542 @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
543 @type str
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544 """
6294
58f82c179d2b pip Interface: added an action to install a locally available package/wheel
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6290
diff changeset
545 from .PipFileSelectionDialog import PipFileSelectionDialog
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
546
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
547 dlg = PipFileSelectionDialog("requirements", parent=self.__ui)
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
548 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
549 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
550 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
551 interpreter = self.getVirtualenvInterpreter(venvName)
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
552 if not interpreter:
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
553 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
554
6785
058d63c537a4 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6782
diff changeset
555 if Preferences.getPip("PipSearchIndex"):
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
556 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
557 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
558 else:
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
559 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
560 if user:
a1716d9210f4 pip Interface: started to add support for the '--user' option.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6301
diff changeset
561 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
562 args += ["--requirement", requirements]
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
563 dia = PipDialog(
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
564 self.tr("Install Packages from Requirements"), parent=self.__ui
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
565 )
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
566 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
567 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
568 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
569
9323
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
570 def installEditableProject(self, interpreter, projectPath):
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
571 """
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
572 Public method to install a project in development mode.
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
573
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
574 @param interpreter interpreter to be used for execution
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
575 @type str
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
576 @param projectPath path of the project
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
577 @type str
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
578 """
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
579 if interpreter and projectPath:
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
580 args = ["-m", "pip", "install"]
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
581 if Preferences.getPip("PipSearchIndex"):
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
582 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
583 args += ["--index-url", indexUrl]
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
584 args += ["--editable", projectPath]
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
585
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
586 dia = PipDialog(self.tr("Install Project"), parent=self.__ui)
9323
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
587 res = dia.startProcess(interpreter, args)
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
588 if res:
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
589 dia.exec()
6ae7193558ac Project
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9310
diff changeset
590
10620
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
591 def installPyprojectDependencies(self, venvName):
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
592 """
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
593 Public method to install the dependencies listed in a pyproject.toml file.
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
594
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
595 @param venvName name of the virtual environment to be used
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
596 @type str
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
597 """
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
598 from .PipFileSelectionDialog import PipFileSelectionDialog
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
599
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
600 dlg = PipFileSelectionDialog("pyproject", parent=self.__ui)
10620
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
601 if dlg.exec() == QDialog.DialogCode.Accepted:
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
602 pyproject, user = dlg.getData()
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
603 if pyproject and os.path.exists(pyproject):
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
604 try:
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
605 with open(pyproject, "r", encoding="utf-8") as f:
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
606 data = tomlkit.load(f)
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
607 dependencies = data.get("project", {}).get("dependencies", [])
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
608 if not dependencies:
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
609 EricMessageBox.warning(
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
610 None,
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
611 self.tr("Install 'pyproject' Dependencies"),
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
612 self.tr(
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
613 "The selected 'pyproject.toml' file does not contain"
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
614 " a 'project.dependencies' section. Aborting..."
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
615 ),
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
616 )
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
617 return
10622
eb5303a42b4b Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10620
diff changeset
618 except (OSError, tomlkit.exceptions.ParseError) as err:
10620
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
619 EricMessageBox.warning(
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
620 None,
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
621 self.tr("Install 'pyproject' Dependencies"),
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
622 self.tr(
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
623 "<p>The selected 'pyproject.toml' file could not be read."
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
624 "</p><p>Reason: {0}</p>"
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
625 ).format(str(err)),
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
626 )
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
627 return
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
628
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
629 interpreter = self.getVirtualenvInterpreter(venvName)
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
630 if not interpreter:
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
631 return
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
632
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
633 if Preferences.getPip("PipSearchIndex"):
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
634 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
635 args = ["-m", "pip", "install", "--index-url", indexUrl]
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
636 else:
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
637 args = ["-m", "pip", "install"]
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
638 if user:
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
639 args.append("--user")
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
640 args += dependencies
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
641 dia = PipDialog(
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
642 self.tr("Install Packages from 'pyproject.toml'"), parent=self.__ui
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
643 )
10620
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
644 res = dia.startProcess(interpreter, args)
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
645 if res:
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
646 dia.exec()
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
647
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
648 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
649 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
650 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
651
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
652 @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
653 @type list of str
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
654 @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
655 @type str
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
656 @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
657 @rtype bool
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
658 """
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
659 res = False
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
660 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
661 dlg = DeleteFilesConfirmationDialog(
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
662 self.parent(),
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
663 self.tr("Uninstall Packages"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
664 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
665 packages,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
666 )
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
667 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
668 interpreter = self.getVirtualenvInterpreter(venvName)
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
669 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
670 return False
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
671 args = ["-m", "pip", "uninstall", "--yes"] + packages
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
672 dia = PipDialog(self.tr("Uninstall Packages"), parent=self.__ui)
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
673 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
674 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
675 dia.exec()
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
676 return res
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
677
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
678 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
679 """
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
680 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
681
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
682 @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
683 @type str
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
684 """
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
685 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
686
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
687 if venvName:
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
688 dlg = PipFileSelectionDialog(
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
689 "requirements", install=False, parent=self.__ui
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
690 )
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
691 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
692 requirements, _user = dlg.getData()
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
693 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
694 try:
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7780
diff changeset
695 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
696 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
697 except OSError:
6342
c79ecba9cde7 pip Interface: changed to use the new VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6331
diff changeset
698 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
699
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
700 dlg = DeleteFilesConfirmationDialog(
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
701 self.parent(),
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
702 self.tr("Uninstall Packages"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
703 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
704 reqs,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
705 )
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
706 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
707 interpreter = self.getVirtualenvInterpreter(venvName)
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
708 if not interpreter:
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
709 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
710
10620
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
711 args = [
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
712 "-m",
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
713 "pip",
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
714 "uninstall",
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
715 "--yes",
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
716 "--requirement",
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
717 requirements,
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
718 ]
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
719 dia = PipDialog(
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
720 self.tr("Uninstall Packages from Requirements"),
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
721 parent=self.__ui,
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
722 )
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
723 res = dia.startProcess(interpreter, args)
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
724 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
725 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
726
10620
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
727 def uninstallPyprojectDependencies(self, venvName):
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
728 """
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
729 Public method to uninstall the dependencies listed in a pyproject.toml file.
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
730
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
731 @param venvName name of the virtual environment to be used
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
732 @type str
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
733 """
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
734 from .PipFileSelectionDialog import PipFileSelectionDialog
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
735
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
736 if venvName:
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
737 dlg = PipFileSelectionDialog("pyproject", install=False, parent=self.__ui)
10620
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
738 if dlg.exec() == QDialog.DialogCode.Accepted:
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
739 pyproject, _user = dlg.getData()
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
740 if pyproject and os.path.exists(pyproject):
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
741 try:
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
742 with open(pyproject, "r", encoding="utf-8") as f:
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
743 data = tomlkit.load(f)
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
744 dependencies = data.get("project", {}).get("dependencies", [])
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
745 if not dependencies:
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
746 EricMessageBox.warning(
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
747 None,
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
748 self.tr("Uninstall 'pyproject' Dependencies"),
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
749 self.tr(
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
750 "The selected 'pyproject.toml' file does not"
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
751 " contain a 'project.dependencies' section."
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
752 " Aborting..."
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
753 ),
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
754 )
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
755 return
10622
eb5303a42b4b Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10620
diff changeset
756 except (OSError, tomlkit.exceptions.ParseError) as err:
10620
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
757 EricMessageBox.warning(
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
758 None,
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
759 self.tr("Uninstall 'pyproject' Dependencies"),
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
760 self.tr(
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
761 "<p>The selected 'pyproject.toml' file could not be"
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
762 " read. </p><p>Reason: {0}</p>"
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
763 ).format(str(err)),
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
764 )
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
765 return
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
766
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
767 # Do not uninstall pip.
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
768 pipre = re.compile(r"^pip\s*(~=|==|!=|<=|>=|<|>|===)")
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
769 for dependency in dependencies:
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
770 if pipre.search(dependency):
11148
15e30f0c76a8 Adjusted the code to the modified issue codes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11129
diff changeset
771 dependencies.remove(dependency) # noqa: M-569
10620
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
772 break
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
773
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
774 dlg = DeleteFilesConfirmationDialog(
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
775 self.parent(),
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
776 self.tr("Uninstall Packages"),
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
777 self.tr("Do you really want to uninstall these packages?"),
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
778 dependencies,
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
779 )
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
780 if dlg.exec() == QDialog.DialogCode.Accepted:
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
781 interpreter = self.getVirtualenvInterpreter(venvName)
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
782 if not interpreter:
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
783 return
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
784
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
785 args = ["-m", "pip", "uninstall", "--yes"] + dependencies
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
786 dia = PipDialog(
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
787 self.tr("Uninstall Packages from 'pyproject.toml'"),
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
788 parent=self.__ui,
10620
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
789 )
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
790 res = dia.startProcess(interpreter, args)
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
791 if res:
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
792 dia.exec()
699b5ceb39aa pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10518
diff changeset
793
6793
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
794 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
795 """
6793
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
796 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
797
6793
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
798 @return index URL for PyPI
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
799 @rtype str
6011
e6af0dcfbb35 Added the pip interface plug-in to the core plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
800 """
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
801 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
802 Preferences.getPip("PipSearchIndex") + "/simple"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
803 if Preferences.getPip("PipSearchIndex")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
804 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
805 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
806
6793
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
807 return indexUrl
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
808
8090
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
809 def getIndexUrlPypi(self):
6793
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
810 """
8090
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
811 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
812
6793
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
813 @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
814 @rtype str
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
815 """
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
816 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
817 Preferences.getPip("PipSearchIndex") + "/pypi"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
818 if Preferences.getPip("PipSearchIndex")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
819 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
820 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
821
8090
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
822 return indexUrl
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
823
8090
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
824 def getIndexUrlSearch(self):
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
825 """
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
826 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
827
8090
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
828 @return index URL for XML RPC calls
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
829 @rtype str
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
830 """
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
831 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
832 Preferences.getPip("PipSearchIndex") + "/search/"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
833 if Preferences.getPip("PipSearchIndex")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
834 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
835 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
836
6793
cca6a35f3ad2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6792
diff changeset
837 return indexUrl
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
838
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
839 def getInstalledPackages(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
840 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
841 ):
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
842 """
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
843 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
844
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
845 @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
846 @type str
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
847 @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
848 @type bool
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
849 @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
850 dependencies of installed packages as well
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
851 @type bool
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
852 @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
853 in user-site
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
854 @type bool
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
855 @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
856 @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
857 """
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
858 packages = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
859
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
860 if envName:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
861 interpreter = self.getVirtualenvInterpreter(envName)
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
862 if interpreter:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
863 args = [
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
864 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
865 "pip",
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
866 "list",
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
867 "--format=json",
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
868 ]
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
869 if localPackages:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
870 args.append("--local")
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
871 if notRequired:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
872 args.append("--not-required")
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
873 if usersite:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
874 args.append("--user")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
875
8090
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
876 if Preferences.getPip("PipSearchIndex"):
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
877 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
878 args += ["--index-url", indexUrl]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
879
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
880 proc = QProcess()
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
881 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
882 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
883 output = str(
0a62a4bf749c Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10156
diff changeset
884 proc.readAllStandardOutput(),
0a62a4bf749c Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10156
diff changeset
885 Preferences.getSystem("IOEncoding"),
0a62a4bf749c Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10156
diff changeset
886 "replace",
0a62a4bf749c Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10156
diff changeset
887 ).strip()
10156
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
888 if output:
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
889 output = output.splitlines()[0]
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
890 try:
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
891 jsonList = json.loads(output)
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
892 except Exception:
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
893 jsonList = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
894
10156
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
895 for package in jsonList:
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
896 if isinstance(package, dict):
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
897 packages.append(
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
898 (
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
899 package["name"],
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
900 package["version"],
e72868c86d84 Corrected a glitch in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10084
diff changeset
901 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
902 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
903
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
904 return packages
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
905
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
906 def getOutdatedPackages(
9586
2750e76fc366 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9580
diff changeset
907 self,
2750e76fc366 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9580
diff changeset
908 envName,
2750e76fc366 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9580
diff changeset
909 localPackages=True,
2750e76fc366 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9580
diff changeset
910 notRequired=False,
2750e76fc366 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9580
diff changeset
911 usersite=False,
2750e76fc366 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9580
diff changeset
912 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
913 callback=None,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
914 ):
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
915 """
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
916 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
917
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
918 @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
919 @type str
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
920 @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
921 (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
922 @type bool (optional)
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
923 @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
924 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
925 @type bool (optional)
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
926 @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
927 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
928 @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
929 @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
930 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
931 @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
932 @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
933 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
934 @type function
10736
0d213bb8b7f0 Optimized the pip packages widget a bit for speed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
935 @return dictionary with the package name as key and a tuple containing the
0d213bb8b7f0 Optimized the pip packages widget a bit for speed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
936 installed and available version as the value
0d213bb8b7f0 Optimized the pip packages widget a bit for speed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
937 @rtype dict of [str: (str, str)]
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
938 """
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
939 packages = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
940
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
941 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
942 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
943 interpreter = self.getVirtualenvInterpreter(envName)
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
944 if interpreter:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
945 args = [
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
946 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
947 "pip",
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
948 "list",
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
949 "--outdated",
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
950 "--format=json",
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
951 ]
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
952 if localPackages:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
953 args.append("--local")
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
954 if notRequired:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
955 args.append("--not-required")
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
956 if usersite:
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
957 args.append("--user")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
958
8090
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
959 if Preferences.getPip("PipSearchIndex"):
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
960 indexUrl = Preferences.getPip("PipSearchIndex") + "/simple"
c53117374255 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8085
diff changeset
961 args += ["--index-url", indexUrl]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
962
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
963 if callback:
10919
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
964 if self.__outdatedProc is not None:
11112
f96a04843ed4 Implemented a little enhancement in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11091
diff changeset
965 self.__outdatedProc.finished.disconnect()
10919
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
966 self.__outdatedProc.kill() # end the process forcefully
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
967 self.__outdatedProc = None
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
968
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
969 proc = EricProcess(timeout=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
970 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
971 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
972 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
973 )
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
974 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
975 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
976
11112
f96a04843ed4 Implemented a little enhancement in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11091
diff changeset
977 else:
f96a04843ed4 Implemented a little enhancement in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11091
diff changeset
978 proc = QProcess()
f96a04843ed4 Implemented a little enhancement in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11091
diff changeset
979 proc.start(interpreter, args)
f96a04843ed4 Implemented a little enhancement in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11091
diff changeset
980 if proc.waitForStarted(15000) and proc.waitForFinished(30000):
f96a04843ed4 Implemented a little enhancement in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11091
diff changeset
981 packages = self.__extractOutdatedPackages(proc)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
982
6792
9dd854f05c83 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6785
diff changeset
983 return packages
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
984
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
985 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
986 """
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
987 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
988
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
989 @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
990 @type QProcess
10736
0d213bb8b7f0 Optimized the pip packages widget a bit for speed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
991 @return dictionary with the package name as key and a tuple containing the
0d213bb8b7f0 Optimized the pip packages widget a bit for speed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
992 installed and available version as the value
0d213bb8b7f0 Optimized the pip packages widget a bit for speed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
993 @rtype dict of [str: (str, str)]
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
994 """
10736
0d213bb8b7f0 Optimized the pip packages widget a bit for speed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
995 packages = {}
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
996
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
997 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
998 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
999 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
1000 "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
1001 ).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
1002 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
1003 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
1004 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
1005 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
1006 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
1007 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
1008
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
1009 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
1010 if isinstance(package, dict):
10736
0d213bb8b7f0 Optimized the pip packages widget a bit for speed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
1011 packages[package["name"]] = (
0d213bb8b7f0 Optimized the pip packages widget a bit for speed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
1012 package["version"],
0d213bb8b7f0 Optimized the pip packages widget a bit for speed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10690
diff changeset
1013 package["latest_version"],
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
1014 )
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
1015
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
1016 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
1017
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
1018 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
1019 """
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
1020 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
1021
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
1022 @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
1023 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
1024 @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
1025 @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
1026 @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
1027 @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
1028 @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
1029 @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
1030 @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
1031 """
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
1032 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
1033 self.__extractOutdatedPackages(proc)
10919
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
1034 if (
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
1035 not proc.timedOut()
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
1036 and exitStatus == QProcess.ExitStatus.NormalExit
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
1037 and exitCode == 0
4e4c8ee38c45 Added a QProcess derived class with timeout and changed the pip interface to use that class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10799
diff changeset
1038 )
10740
2f76bfb902bc Corrected an issue in the pip interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10736
diff changeset
1039 else {}
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
1040 )
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
1041 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
1042 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
1043
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
1044 def checkPackagesOutdated(self, packageStarts, envName, interpreter=None):
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
1045 """
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
1046 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
1047
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
1048 @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
1049 (case insensitive)
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
1050 @type str
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
1051 @param envName name of the environment to get the packages for
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
1052 @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
1053 @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
1054 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
1055 @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
1056 @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
1057 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
1058 @rtype tuple of (str, str, str)
8972
54816b8f740f General
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8970
diff changeset
1059 """
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
1060 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
1061 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
1062 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
1063 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
1064 )
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
1065 filteredPackages = [
10799
7f5228900da5 Corrected an issue in the pip interface module causing a check for outdated packages to fail.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10766
diff changeset
1066 (p, packages[p][0], packages[p][1])
7f5228900da5 Corrected an issue in the pip interface module causing a check for outdated packages to fail.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10766
diff changeset
1067 for p in packages
7f5228900da5 Corrected an issue in the pip interface module causing a check for outdated packages to fail.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10766
diff changeset
1068 if p.lower().startswith(filterStrings)
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
1069 ]
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
1070 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
1071 filteredPackages = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1072
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
1073 return filteredPackages
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1074
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1075 def getPackageDetails(self, name, version):
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1076 """
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1077 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
1078
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1079 @param name package name
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1080 @type str
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1081 @param version package version
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1082 @type str
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1083 @return dictionary containing PyPI package data
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1084 @rtype dict
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1085 """
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1086 result = {}
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1087
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1088 if name and version:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1089 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
1090 request = QNetworkRequest(QUrl(url))
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1091 reply = self.__networkManager.get(request)
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1092 while not reply.isFinished():
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1093 QCoreApplication.processEvents()
8943
23f9c7b9e18e Implemented some performance improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
1094 QThread.msleep(100)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1095
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1096 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
1097 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
1098 data = str(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1099 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
1100 )
9462
e65379fdbd97 Changed code to resolve or acknowledge some potential security issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
1101 with contextlib.suppress(json.JSONDecodeError):
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1102 result = json.loads(data)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1103
6798
3985c1a67fa2 PipInterface: continued with the pip interface widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6795
diff changeset
1104 return result
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1105
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
1106 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
1107 """
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
1108 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
1109 package.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1110
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
1111 @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
1112 @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
1113 @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
1114 @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
1115 """
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
1116 result = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1117
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
1118 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
1119 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
1120 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
1121 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
1122 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
1123 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
1124 QThread.msleep(100)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1125
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
1126 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
1127 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
1128 dataStr = str(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1129 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
1130 )
9462
e65379fdbd97 Changed code to resolve or acknowledge some potential security issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
1131 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
1132 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
1133 result = list(data["releases"])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1134
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
1135 return result
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1136
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1137 def getFrozenPackages(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1138 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
1139 ):
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
1140 """
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
1141 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
1142
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
1143 @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
1144 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
1145 @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
1146 @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
1147 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
1148 @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
1149 @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
1150 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
1151 @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
1152 @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
1153 @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
1154 @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
1155 @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
1156 """
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
1157 specifiers = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1158
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
1159 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
1160 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
1161 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
1162 args = [
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1163 "-m",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1164 "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
1165 "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
1166 ]
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
1167 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
1168 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
1169 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
1170 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
1171 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
1172 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
1173 args.append(requirement)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1174
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
1175 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
1176 if success and output:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1177 specifiers = [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1178 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
1179 ]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1180
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
1181 return specifiers
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1182
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1183 #######################################################################
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1184 ## Cache handling methods below
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1185 #######################################################################
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1186
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1187 def showCacheInfo(self, venvName):
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1188 """
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1189 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
1190
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1191 @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
1192 @type str
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1193 """
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1194 if venvName:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1195 interpreter = self.getVirtualenvInterpreter(venvName)
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1196 if interpreter:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1197 args = ["-m", "pip", "cache", "info"]
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
1198 dia = PipDialog(self.tr("Cache Info"), parent=self.__ui)
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1199 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
1200 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
1201 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1202
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1203 def cacheList(self, venvName):
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1204 """
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1205 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
1206
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1207 @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
1208 @type str
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1209 """
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1210 if venvName:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1211 interpreter = self.getVirtualenvInterpreter(venvName)
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1212 if interpreter:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1213 pattern, ok = QInputDialog.getText(
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1214 None,
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1215 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
1216 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
1217 QLineEdit.EchoMode.Normal,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1218 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1219
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1220 if ok:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1221 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
1222 if pattern.strip():
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1223 args.append(pattern.strip())
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
1224 dia = PipDialog(self.tr("List Cached Files"), parent=self.__ui)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1225 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
1226 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
1227 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1228
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1229 def cacheRemove(self, venvName):
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1230 """
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1231 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
1232
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1233 @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
1234 @type str
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1235 """
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1236 if venvName:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1237 interpreter = self.getVirtualenvInterpreter(venvName)
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1238 if interpreter:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1239 pattern, ok = QInputDialog.getText(
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1240 None,
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1241 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
1242 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
1243 QLineEdit.EchoMode.Normal,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1244 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1245
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1246 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
1247 args = ["-m", "pip", "cache", "remove", pattern.strip()]
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
1248 dia = PipDialog(self.tr("Remove Cached Files"), parent=self.__ui)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1249 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
1250 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
1251 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1252
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1253 def cachePurge(self, venvName):
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1254 """
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1255 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
1256
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1257 @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
1258 @type str
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1259 """
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1260 if venvName:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1261 interpreter = self.getVirtualenvInterpreter(venvName)
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1262 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
1263 ok = EricMessageBox.yesNo(
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1264 None,
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1265 self.tr("Purge Cache"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1266 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1267 "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
1268 " 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
1269 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1270 )
7626
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1271 if ok:
7f643d41464e pip Interface: added menu action for pip cache management.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
1272 args = ["-m", "pip", "cache", "purge"]
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10990
diff changeset
1273 dia = PipDialog(self.tr("Purge Cache"), parent=self.__ui)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1274 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
1275 if res:
7759
51aa6c6b66f7 Changed calls to exec_() into exec() (remainder of Python2 elimination).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7726
diff changeset
1276 dia.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1277
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1278 #######################################################################
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1279 ## Dependency tree handling methods below
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1280 #######################################################################
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1281
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1282 def getDependencyTree(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1283 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
1284 ):
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1285 """
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1286 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
1287
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1288 @param envName name of the environment to get the packages for
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1289 @type str
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1290 @param localPackages flag indicating to get the tree for local
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1291 packages only
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1292 @type bool
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1293 @param usersite flag indicating to get the tree for packages
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1294 installed in user-site directory only
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1295 @type bool
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1296 @param reverse flag indicating to get the dependency tree in
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1297 reverse order (i.e. list packages needed by other)
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1298 @type bool
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1299 @return list of nested dictionaries resembling the requested
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1300 dependency tree
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1301 @rtype list of dict
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1302 """
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1303 dependencies = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1304
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1305 if envName:
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1306 interpreter = self.getVirtualenvInterpreter(envName)
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1307 if interpreter:
10177
27a6e35c64ed Changed the included 'pipdeptree' to an external dependency.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10167
diff changeset
1308 args = ["-m", "pipdeptree", "--python", interpreter, "--json-tree"]
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1309 if localPackages:
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1310 args.append("--local-only")
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1311 if usersite:
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1312 args.append("--user-only")
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1313 if reverse:
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1314 args.append("--reverse")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1315
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1316 proc = QProcess()
10177
27a6e35c64ed Changed the included 'pipdeptree' to an external dependency.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10167
diff changeset
1317 proc.start(PythonUtilities.getPythonExecutable(), args)
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1318 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
1319 output = str(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1320 proc.readAllStandardOutput(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1321 Preferences.getSystem("IOEncoding"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1322 "replace",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1323 ).strip()
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1324 with contextlib.suppress(json.JSONDecodeError):
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1325 dependencies = json.loads(output)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1326
8997
d8946c2a22b5 pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8983
diff changeset
1327 return dependencies
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1328
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
1329 #######################################################################
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
1330 ## 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
1331 #######################################################################
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1332
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
1333 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
1334 """
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
1335 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
1336
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
1337 @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
1338 @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
1339 @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
1340 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
1341 @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
1342 """
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
1343 licenses = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1344
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
1345 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
1346 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
1347 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
1348 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
1349 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
1350 "--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
1351 "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
1352 "--with-system",
9101
1c708303e85a Extended the list of data returned by 'piplicenses'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9056
diff changeset
1353 "--with-authors",
1c708303e85a Extended the list of data returned by 'piplicenses'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9056
diff changeset
1354 "--with-urls",
1c708303e85a Extended the list of data returned by 'piplicenses'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9056
diff changeset
1355 "--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
1356 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1357
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
1358 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
1359 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
1360 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
1361 output = str(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1362 proc.readAllStandardOutput(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1363 Preferences.getSystem("IOEncoding"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1364 "replace",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1365 ).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
1366 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
1367 licenses = json.loads(output)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9218
diff changeset
1368
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
1369 return licenses
11091
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1370
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1371 #######################################################################
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1372 ## Cleanup of the site-packages directory in case pip updated or
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1373 ## removed packages currently in use.
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1374 #######################################################################
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1375
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1376 def runCleanup(self, envName):
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1377 """
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1378 Public method to perform a cleanup run for a given environment.
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1379
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1380 @param envName name of the environment to get the licenses for
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1381 @type str
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1382 @return flag indicating a successful removal. A missing environment
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1383 name or an undefined Python interpreter is treated as success
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1384 (i.e. nothing to do).
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1385 @rtype bool
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1386 """
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1387 if envName:
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1388 interpreter = self.getVirtualenvInterpreter(envName)
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1389 if interpreter:
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1390 args = [os.path.join(os.path.dirname(__file__), "pipcleanup.py")]
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1391
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1392 proc = QProcess()
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1393 proc.start(interpreter, args)
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1394 if proc.waitForStarted(15000) and proc.waitForFinished(30000):
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1395 return proc.exitCode() == 0
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1396
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1397 return False
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1398
3a1ba42ac50a pip Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1399 return True

eric ide

mercurial