src/eric7/VirtualEnv/VirtualenvUpgradeExecDialog.py

Fri, 04 Nov 2022 13:52:26 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 04 Nov 2022 13:52:26 +0100
branch
eric7
changeset 9473
3f23dbf37dbe
parent 9413
80c06d472826
child 9573
9960d19d66b5
permissions
-rw-r--r--

Resorted the import statements using isort.

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
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2022 Detlev Offenbach <detlev@die-offenbachs.de>
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
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 from PyQt6.QtCore import QProcess, QTimer
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
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
16 from eric7.Globals import getPythonExecutable
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 [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
55 getPythonExecutable(),
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
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 def __finish(self, exitCode, exitStatus, giveUp=False):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 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
113
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 It is called when the process finished or
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 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
116
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 @param exitCode exit code of the process (integer)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 @param exitStatus exit status of the process (QProcess.ExitStatus)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 @param giveUp flag indicating to not start another attempt (boolean)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 if (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
122 self.__process is not None
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
123 and self.__process.state() != QProcess.ProcessState.NotRunning
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 ):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 self.__process.terminate()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 QTimer.singleShot(2000, self.__process.kill)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 self.__process.waitForFinished(3000)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
128
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
129 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
130 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
131 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
132
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 if not giveUp:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 if exitCode != 0:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 self.__logOutput(self.tr("Failed\n\n"))
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 if len(self.errors.toPlainText().splitlines()) == 1:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 self.errors.clear()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 self.errorGroup.hide()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 self.__nextAttempt()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
141
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 self.__process = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
143
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
144 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
145
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 if self.__createLog:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 self.__writeLogFile()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
148
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 self.__changeVirtualEnvironmentInterpreter()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
150
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 def __nextAttempt(self):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 Private method to start another attempt.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 self.__callIndex += 1
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 if self.__callIndex < len(self.__progs):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 self.start(self.__callArgs)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 else:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 self.__logError(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
160 self.tr("No suitable pyvenv program could be" " started.\n")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
161 )
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 self.__cmd = ""
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 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
164
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 def __readStdout(self):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 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
168
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 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
170 the contents pane.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 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
173
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 while self.__process.canReadLine():
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
175 s = str(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
176 self.__process.readLine(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
177 Preferences.getSystem("IOEncoding"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
178 "replace",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
179 )
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 self.__logOutput(s)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
181
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 def __readStderr(self):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 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
185
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 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
187 error pane.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 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
190
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 while self.__process.canReadLine():
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
192 s = str(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
193 self.__process.readLine(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
194 Preferences.getSystem("IOEncoding"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
195 "replace",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
196 )
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 self.__logError(s)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
198
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 def __logOutput(self, s):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 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
202
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 @param s output string to log (string)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 self.contents.insertPlainText(s)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 self.contents.ensureCursorVisible()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
207
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 def __logError(self, s):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 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
211
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 @param s error string to log (string)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 self.errorGroup.show()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 self.errors.insertPlainText(s)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 self.errors.ensureCursorVisible()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
217
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 def __writeLogFile(self):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 Private method to write a log file to the virtualenv directory.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 outtxt = self.contents.toPlainText()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 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
224 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
225
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 try:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 with open(logFile, "w", encoding="utf-8") as f:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 f.write(self.tr("Output:\n"))
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 f.write(outtxt)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 errtxt = self.errors.toPlainText()
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 if errtxt:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 f.write("\n")
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 f.write(self.tr("Errors:\n"))
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 f.write(errtxt)
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 except OSError as err:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 self.__logError(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
237 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
238 """The logfile '{0}' could not be written.\n""" """Reason: {1}\n"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
239 ).format(logFile, str(err))
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
240 )
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 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
242
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 def __changeVirtualEnvironmentInterpreter(self):
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 Private method to change the interpreter of the upgraded virtual
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 environment.
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 """
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 from .VirtualenvInterpreterSelectionDialog import (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
249 VirtualenvInterpreterSelectionDialog,
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
251
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 venvInterpreter = ""
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 dlg = VirtualenvInterpreterSelectionDialog(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
254 self.__venvName, self.__venvDirectory
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
255 )
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 if dlg.exec() == QDialog.DialogCode.Accepted:
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 venvInterpreter = dlg.getData()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
258
9144
135240382a3e Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 if venvInterpreter:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
260 self.__manager.setVirtualEnvInterpreter(self.__venvName, venvInterpreter)

eric ide

mercurial