src/eric7/VirtualEnv/VirtualenvUpgradeExecDialog.py

Thu, 25 May 2023 19:51:47 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 25 May 2023 19:51:47 +0200
branch
eric7
changeset 10069
435cc5875135
parent 9653
e67609152c5e
child 10433
328f3ec4b77a
permissions
-rw-r--r--

Corrected and checked some code style issues (unused function arguments).

9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9624
diff changeset
3 # Copyright (c) 2022 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the virtualenv upgrade execution dialog.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
12 from PyQt6.QtCore import QProcess, QTimer, pyqtSlot
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from PyQt6.QtWidgets import QDialog, QDialogButtonBox
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
15 from eric7 import Preferences
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
16 from eric7.SystemUtilities import PythonUtilities
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
18 from .Ui_VirtualenvExecDialog import Ui_VirtualenvExecDialog
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 class VirtualenvUpgradeExecDialog(QDialog, Ui_VirtualenvExecDialog):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 Class implementing the virtualenv upgrade execution dialog.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
25
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
26 def __init__(self, venvName, interpreter, createLog, venvManager, parent=None):
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
29
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 @param venvName name of the virtual environment to be upgraded
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 @type str
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 @param interpreter interpreter to be used for the upgrade
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @type str
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param createLog flag indicating to create a log file for the upgrade
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @type bool
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @param venvManager reference to the virtual environment manager
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @type VirtualenvManager
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @param parent reference to the parent widget
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @type QWidget
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 super().__init__(parent)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 self.setupUi(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
43
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
44 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(False)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
45 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setDefault(True)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
46
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.__process = None
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 self.__cmd = ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
49
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.__progs = []
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 if interpreter:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.__progs.append(interpreter)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
53 self.__progs.extend(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
54 [
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
55 PythonUtilities.getPythonExecutable(),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
56 "python3",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
57 "python",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
58 ]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
59 )
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.__callIndex = 0
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.__callArgs = []
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
62
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.__venvName = venvName
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 self.__venvDirectory = ""
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.__createLog = createLog
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.__manager = venvManager
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
67
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 def start(self, arguments):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 Public slot to start the virtualenv command.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
71
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 @param arguments commandline arguments for virtualenv/pyvenv program
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 (list of strings)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 if self.__callIndex == 0:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 # first attempt, add a given python interpreter and do
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 # some other setup
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 self.errorGroup.hide()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 self.contents.clear()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 self.errors.clear()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
81
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 self.__process = QProcess()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 self.__process.readyReadStandardOutput.connect(self.__readStdout)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 self.__process.readyReadStandardError.connect(self.__readStderr)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 self.__process.finished.connect(self.__finish)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
86
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 self.__callArgs = arguments
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 self.__venvDirectory = arguments[-1]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
89
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 prog = self.__progs[self.__callIndex]
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 self.__cmd = "{0} {1}".format(prog, " ".join(arguments))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
92 self.__logOutput(self.tr("Executing: {0}\n").format(self.__cmd))
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 self.__process.start(prog, arguments)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 procStarted = self.__process.waitForStarted(5000)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 if not procStarted:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 self.__logOutput(self.tr("Failed\n\n"))
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 self.__nextAttempt()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
98
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 def on_buttonBox_clicked(self, button):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 Private slot called by a button of the button box clicked.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
102
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 @param button button that was clicked (QAbstractButton)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
105 if button == self.buttonBox.button(QDialogButtonBox.StandardButton.Close):
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 self.accept()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
107 elif button == self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel):
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 self.__finish(0, 0, giveUp=True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
109
10069
435cc5875135 Corrected and checked some code style issues (unused function arguments).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
110 @pyqtSlot(int, QProcess.ExitStatus)
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 def __finish(self, exitCode, exitStatus, giveUp=False):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 Private slot called when the process finished.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
114
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 It is called when the process finished or
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 the user pressed the button.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
117
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 @param exitCode exit code of the process (integer)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 @param exitStatus exit status of the process (QProcess.ExitStatus)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 @param giveUp flag indicating to not start another attempt (boolean)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 if (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
123 self.__process is not None
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
124 and self.__process.state() != QProcess.ProcessState.NotRunning
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 ):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 self.__process.terminate()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 QTimer.singleShot(2000, self.__process.kill)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 self.__process.waitForFinished(3000)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
129
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
130 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(True)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
131 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setEnabled(False)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
132 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setDefault(True)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
133
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 if not giveUp:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 if exitCode != 0:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 self.__logOutput(self.tr("Failed\n\n"))
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 if len(self.errors.toPlainText().splitlines()) == 1:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 self.errors.clear()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 self.errorGroup.hide()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 self.__nextAttempt()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
142
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 self.__process = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
144
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
145 self.__logOutput(self.tr("\npyvenv finished.\n"))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
146
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 if self.__createLog:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 self.__writeLogFile()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
149
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 self.__changeVirtualEnvironmentInterpreter()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
151
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 def __nextAttempt(self):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 Private method to start another attempt.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 self.__callIndex += 1
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 if self.__callIndex < len(self.__progs):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 self.start(self.__callArgs)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 else:
9576
be9f8e7e42e0 Corrected some 'wrong' string quotes caused by the Black line merging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9573
diff changeset
160 self.__logError(self.tr("No suitable pyvenv program could be started.\n"))
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 self.__cmd = ""
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 self.__finish(0, 0, giveUp=True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
163
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 def __readStdout(self):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 Private slot to handle the readyReadStandardOutput signal.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
167
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 It reads the output of the process, formats it and inserts it into
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 the contents pane.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 self.__process.setReadChannel(QProcess.ProcessChannel.StandardOutput)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
172
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 while self.__process.canReadLine():
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
174 s = str(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
175 self.__process.readLine(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
176 Preferences.getSystem("IOEncoding"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
177 "replace",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
178 )
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 self.__logOutput(s)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
180
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 def __readStderr(self):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 Private slot to handle the readyReadStandardError signal.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
184
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 It reads the error output of the process and inserts it into the
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 error pane.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 self.__process.setReadChannel(QProcess.ProcessChannel.StandardError)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
189
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 while self.__process.canReadLine():
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
191 s = str(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
192 self.__process.readLine(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
193 Preferences.getSystem("IOEncoding"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
194 "replace",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
195 )
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 self.__logError(s)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
197
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 def __logOutput(self, s):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 Private method to log some output.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
201
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 @param s output string to log (string)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 self.contents.insertPlainText(s)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 self.contents.ensureCursorVisible()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
206
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 def __logError(self, s):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 Private method to log an error.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
210
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 @param s error string to log (string)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 self.errorGroup.show()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 self.errors.insertPlainText(s)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 self.errors.ensureCursorVisible()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
216
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 def __writeLogFile(self):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 Private method to write a log file to the virtualenv directory.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 outtxt = self.contents.toPlainText()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 logFile = os.path.join(self.__venvDirectory, "pyvenv_upgrade.log")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
223 self.__logOutput(self.tr("\nWriting log file '{0}'.\n").format(logFile))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
224
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 try:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 with open(logFile, "w", encoding="utf-8") as f:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 f.write(self.tr("Output:\n"))
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 f.write(outtxt)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 errtxt = self.errors.toPlainText()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 if errtxt:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 f.write("\n")
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 f.write(self.tr("Errors:\n"))
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 f.write(errtxt)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 except OSError as err:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 self.__logError(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
236 self.tr(
9573
9960d19d66b5 Corrected some 'wrong' string quotes caused by the Black line merging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
237 """The logfile '{0}' could not be written.\nReason: {1}\n"""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
238 ).format(logFile, str(err))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
239 )
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 self.__logOutput(self.tr("Done.\n"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
241
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 def __changeVirtualEnvironmentInterpreter(self):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 Private method to change the interpreter of the upgraded virtual
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 environment.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 from .VirtualenvInterpreterSelectionDialog import (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
248 VirtualenvInterpreterSelectionDialog,
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
250
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 venvInterpreter = ""
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 dlg = VirtualenvInterpreterSelectionDialog(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
253 self.__venvName, self.__venvDirectory
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
254 )
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 if dlg.exec() == QDialog.DialogCode.Accepted:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 venvInterpreter = dlg.getData()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
257
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 if venvInterpreter:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
259 self.__manager.setVirtualEnvInterpreter(self.__venvName, venvInterpreter)

eric ide

mercurial