src/eric7/PipInterface/Pip.py

Sun, 22 Dec 2024 14:15:44 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 22 Dec 2024 14:15:44 +0100
branch
eric7
changeset 11112
f96a04843ed4
parent 11091
3a1ba42ac50a
child 11118
967a88a16a21
child 11129
bf4ee956dea6
permissions
-rw-r--r--

Implemented a little enhancement in the pip interface.

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

eric ide

mercurial