src/eric7/PipInterface/Pip.py

Thu, 10 Apr 2025 18:39:29 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 10 Apr 2025 18:39:29 +0200
branch
eric7
changeset 11215
d07c71a34adf
parent 11212
c8fc753176c6
child 11218
43dfc40728d2
permissions
-rw-r--r--

Changed the application shutdown code to use a signal to indicate the shutdown.

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

eric ide

mercurial