src/eric7/PipInterface/Pip.py

Sun, 20 Apr 2025 15:41:59 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 20 Apr 2025 15:41:59 +0200
branch
eric7
changeset 11228
7d9e5c627e60
parent 11218
43dfc40728d2
child 11230
8a15b05eeee3
permissions
-rw-r--r--

Corrected some issues related to instantiating plugin manager objects or pip objects with a UI reference that does not contain the shutdown signal.

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

eric ide

mercurial