src/eric7/CodeFormatting/BlackFormattingDialog.py

Wed, 21 Sep 2022 10:38:52 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 21 Sep 2022 10:38:52 +0200
branch
eric7
changeset 9344
52990830b13f
parent 9292
a5c8a0213fe3
child 9348
f61d71d95cb1
permissions
-rw-r--r--

Code Formatting
- added the capability to format the source code after a diff or check
run from within the results dialog

9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2022 Detlev Offenbach <detlev@die-offenbachs.de>
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog showing the code formatting progress and the result.
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import copy
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import datetime
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
12 import multiprocessing
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 import pathlib
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
15 from dataclasses import dataclass
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
16
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 import black
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
19 from PyQt6.QtCore import pyqtSignal, pyqtSlot, Qt, QCoreApplication, QObject
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 from PyQt6.QtWidgets import (
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 QAbstractButton,
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 QDialog,
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 QDialogButtonBox,
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 QHeaderView,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
25 QTreeWidgetItem,
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 )
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 from EricWidgets import EricMessageBox
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 from .Ui_BlackFormattingDialog import Ui_BlackFormattingDialog
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 from . import BlackUtilities
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 from .BlackDiffWidget import BlackDiffWidget
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 from .BlackFormattingAction import BlackFormattingAction
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 import Utilities
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
37 import Preferences
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 class BlackFormattingDialog(QDialog, Ui_BlackFormattingDialog):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 Class implementing a dialog showing the code formatting progress and the result.
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
44
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 DataTypeRole = Qt.ItemDataRole.UserRole
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 DataRole = Qt.ItemDataRole.UserRole + 1
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
47
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
48 StatusColumn = 0
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
49 FileNameColumn = 1
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
50
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
51 def __init__(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
52 self,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
53 configuration,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
54 filesList,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
55 project=None,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
56 action=BlackFormattingAction.Format,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
57 parent=None,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
58 ):
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
61
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 @param configuration dictionary containing the configuration parameters
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 @type dict
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 @param filesList list of absolute file paths to be processed
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 @type list of str
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 @param project reference to the project object (defaults to None)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 @type Project (optional)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 @param action action to be performed (defaults to BlackFormattingAction.Format)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 @type BlackFormattingAction (optional)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 @param parent reference to the parent widget (defaults to None)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 @type QWidget (optional)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 super().__init__(parent)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 self.setupUi(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
75
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 self.progressBar.setMaximum(len(filesList))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
77
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 self.resultsList.header().setSortIndicator(1, Qt.SortOrder.AscendingOrder)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
79
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 self.__config = copy.deepcopy(configuration)
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
81 self.__config["__action__"] = action # needed by the workers
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 self.__project = project
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
83
9344
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
84 self.__filesList = filesList[:]
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
85
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 self.__diffDialog = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
87
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
88 self.__allFilter = self.tr("<all>")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
89
9344
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
90 self.__formatButton = self.buttonBox.addButton(
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
91 self.tr("Format Code"), QDialogButtonBox.ButtonRole.ActionRole
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
92 )
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
93 self.__formatButton.setVisible(False)
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
94
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
95 self.show()
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
96 QCoreApplication.processEvents()
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
97
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
98 self.__performAction()
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
99
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
100 def __performAction(self):
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
101 """
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
102 Private method to exceute the requested formatting action.
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
103 """
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
104 self.progressBar.setValue(0)
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
105
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
106 self.statisticsGroup.setVisible(False)
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
107 self.__statistics = BlackStatistics()
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
108
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
109 self.__cancelled = False
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
110
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
111 self.statusFilterComboBox.clear()
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
112 self.resultsList.clear()
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
113
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setEnabled(True)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(False)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setDefault(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
117
9344
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
118 files = self.__filterFiles(self.__filesList)
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
119 if len(files) > 1:
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
120 self.__formatManyFiles(files)
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
121 elif len(files) == 1:
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
122 self.__formatOneFile(files[0])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
123
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 def __filterFiles(self, filesList):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 Private method to filter the given list of files according the
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 configuration parameters.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
128
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 @param filesList list of files
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 @type list of str
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 @return list of filtered files
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 @rtype list of str
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 filterRegExps = [
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 BlackUtilities.compileRegExp(self.__config[k])
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 for k in ["force-exclude", "extend-exclude", "exclude"]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
137 if k in self.__config
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
138 and bool(self.__config[k])
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 and BlackUtilities.validateRegExp(self.__config[k])[0]
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
141
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 files = []
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 for file in filesList:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 file = Utilities.fromNativeSeparators(file)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 for filterRegExp in filterRegExps:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 filterMatch = filterRegExp.search(file)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 if filterMatch and filterMatch.group(0):
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
148 self.__handleBlackFormattingResult("ignored", file, "")
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 break
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 else:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 files.append(file)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
152
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 return files
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
154
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 def __resort(self):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 Private method to resort the result list.
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 self.resultsList.sortItems(
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 self.resultsList.sortColumn(),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
161 self.resultsList.header().sortIndicatorOrder(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
162 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
163
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 def __resizeColumns(self):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 Private method to resize the columns of the result list.
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 self.resultsList.header().resizeSections(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
169 QHeaderView.ResizeMode.ResizeToContents
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
170 )
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 self.resultsList.header().setStretchLastSection(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
172
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
173 def __populateStatusFilterCombo(self):
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
174 """
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
175 Private method to populate the status filter combo box with allowed selections.
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
176 """
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
177 allowedSelections = set()
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
178 for row in range(self.resultsList.topLevelItemCount()):
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
179 allowedSelections.add(
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
180 self.resultsList.topLevelItem(row).text(
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
181 BlackFormattingDialog.StatusColumn
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
182 )
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
183 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
184
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
185 self.statusFilterComboBox.addItem(self.__allFilter)
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
186 self.statusFilterComboBox.addItems(sorted(allowedSelections))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
187
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 def __finish(self):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 Private method to perform some actions after the run was performed or canceled.
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 self.__resort()
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 self.__resizeColumns()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
194
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setEnabled(False)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(True)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setDefault(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
198
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 self.progressBar.setVisible(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
200
9344
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
201 self.__formatButton.setVisible(
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
202 self.__config["__action__"] is not BlackFormattingAction.Format
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
203 and self.__statistics.changeCount > 0
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
204 )
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
205
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 self.__updateStatistics()
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
207 self.__populateStatusFilterCombo()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
208
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 def __updateStatistics(self):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 """
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
211 Private method to update the statistics about the recent formatting run and
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
212 make them visible.
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 self.reformattedLabel.setText(
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
215 self.tr("Reformatted:")
9344
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
216 if self.__config["__action__"] is BlackFormattingAction.Format
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
217 else self.tr("Would Reformat:")
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
219
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 total = self.progressBar.maximum()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
221
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 self.totalCountLabel.setText("{0:n}".format(total))
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
223 self.excludedCountLabel.setText("{0:n}".format(self.__statistics.ignoreCount))
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
224 self.failuresCountLabel.setText("{0:n}".format(self.__statistics.failureCount))
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
225 self.processedCountLabel.setText(
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
226 "{0:n}".format(self.__statistics.processedCount)
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
227 )
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
228 self.reformattedCountLabel.setText(
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
229 "{0:n}".format(self.__statistics.changeCount)
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
230 )
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
231 self.unchangedCountLabel.setText("{0:n}".format(self.__statistics.sameCount))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
232
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
233 self.statisticsGroup.setVisible(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
234
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 @pyqtSlot(QAbstractButton)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 def on_buttonBox_clicked(self, button):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 Private slot to handle button presses of the dialog buttons.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
239
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 @param button reference to the pressed button
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 @type QAbstractButton
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 if button == self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 self.__cancelled = True
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 elif button == self.buttonBox.button(QDialogButtonBox.StandardButton.Close):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 self.accept()
9344
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
247 elif button is self.__formatButton:
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
248 self.__formatButtonClicked()
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
249
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
250 @pyqtSlot()
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
251 def __formatButtonClicked(self):
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
252 """
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
253 Private slot handling the selection of the 'Format Code' button.
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
254 """
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
255 self.__config["__action__"] = BlackFormattingAction.Format
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
256
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
257 self.__performAction()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
258
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 @pyqtSlot(QTreeWidgetItem, int)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 def on_resultsList_itemDoubleClicked(self, item, column):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 Private slot handling a double click of a result item.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
263
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 @param item reference to the double clicked item
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 @type QTreeWidgetItem
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 @param column column number that was double clicked
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 @type int
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 dataType = item.data(0, BlackFormattingDialog.DataTypeRole)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 if dataType == "error":
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 EricMessageBox.critical(
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 self,
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 self.tr("Formatting Failure"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
274 self.tr("<p>Formatting failed due to this error.</p><p>{0}</p>").format(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
275 item.data(0, BlackFormattingDialog.DataRole)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
276 ),
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 )
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 elif dataType == "diff":
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 if self.__diffDialog is None:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 self.__diffDialog = BlackDiffWidget()
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 self.__diffDialog.showDiff(item.data(0, BlackFormattingDialog.DataRole))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
282
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
283 def __formatManyFiles(self, files):
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
284 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
285 Private method to format the list of files according the configuration using
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
286 multiple processes in parallel.
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
287
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
288 @param files list of files to be processed
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
289 @type list of str
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
290 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
291 maxProcesses = Preferences.getUI("BackgroundServiceProcesses")
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
292 if maxProcesses == 0:
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
293 # determine based on CPU count
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
294 try:
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
295 NumberOfProcesses = multiprocessing.cpu_count()
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
296 if NumberOfProcesses >= 1:
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
297 NumberOfProcesses -= 1
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
298 except NotImplementedError:
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
299 NumberOfProcesses = 1
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
300 else:
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
301 NumberOfProcesses = maxProcesses
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
302
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
303 # Create queues
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
304 taskQueue = multiprocessing.Queue()
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
305 doneQueue = multiprocessing.Queue()
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
306
9289
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
307 # Submit tasks (initially two times the number of processes)
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
308 tasks = len(files)
9292
a5c8a0213fe3 Fixed an issue in the multiprocessing usage causing a traceback when then number of tasks is smaller than the number of worker processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9289
diff changeset
309 initialTasks = min(2 * NumberOfProcesses, tasks)
9289
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
310 for _ in range(initialTasks):
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
311 file = files.pop(0)
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
312 relSrc = self.__project.getRelativePath(str(file)) if self.__project else ""
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
313 taskQueue.put((file, relSrc))
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
314
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
315 # Start worker processes
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
316 workers = [
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
317 multiprocessing.Process(
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
318 target=self.formattingWorkerTask,
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
319 args=(taskQueue, doneQueue, self.__config),
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
320 )
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
321 for _ in range(NumberOfProcesses)
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
322 ]
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
323 for worker in workers:
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
324 worker.start()
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
325
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
326 # Get the results from the worker tasks
9289
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
327 for _ in range(tasks):
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
328 result = doneQueue.get()
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
329 self.__handleBlackFormattingResult(
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
330 result.status, result.filename, result.data
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
331 )
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
332
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
333 if self.__cancelled:
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
334 break
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
335
9289
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
336 if files:
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
337 file = files.pop(0)
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
338 relSrc = (
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
339 self.__project.getRelativePath(str(file)) if self.__project else ""
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
340 )
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
341 taskQueue.put((file, relSrc))
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
342
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
343 # Tell child processes to stop
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
344 for _ in range(NumberOfProcesses):
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
345 taskQueue.put("STOP")
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
346
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
347 for worker in workers:
9344
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
348 worker.join(2) # 2 seconds timeout just in case
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
349 # TODO: monitor this change
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
350 if worker.exitcode is None:
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
351 worker.terminate()
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
352 worker.close()
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
353
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
354 taskQueue.close()
9344
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
355 ## doneQueue.close()
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
356 # TODO: monitor this change
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
357
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
358 self.__finish()
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
359
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
360 @staticmethod
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
361 def formattingWorkerTask(inputQueue, outputQueue, config):
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
362 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
363 Static method acting as the parallel worker for the formatting task.
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
364
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
365 @param inputQueue input queue
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
366 @type multiprocessing.Queue
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
367 @param outputQueue output queue
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
368 @type multiprocessing.Queue
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
369 @param config dictionary containing the configuration parameters
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
370 @type dict
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
371 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
372 report = BlackMultiprocessingReport(outputQueue)
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
373 report.check = config["__action__"] is BlackFormattingAction.Check
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
374 report.diff = config["__action__"] is BlackFormattingAction.Diff
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
375
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
376 versions = (
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
377 {black.TargetVersion[target.upper()] for target in config["target-version"]}
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
378 if config["target-version"]
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
379 else set()
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
380 )
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
381
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
382 mode = black.Mode(
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
383 target_versions=versions,
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
384 line_length=int(config["line-length"]),
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
385 string_normalization=not config["skip-string-normalization"],
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
386 magic_trailing_comma=not config["skip-magic-trailing-comma"],
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
387 )
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
388
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
389 if config["__action__"] is BlackFormattingAction.Diff:
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
390 for file, relSrc in iter(inputQueue.get, "STOP"):
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
391 BlackFormattingDialog.__diffFormatFile(
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
392 pathlib.Path(file),
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
393 fast=False,
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
394 mode=mode,
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
395 report=report,
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
396 relSrc=relSrc,
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
397 )
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
398 else:
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
399 writeBack = black.WriteBack.from_configuration(
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
400 check=config["__action__"] is BlackFormattingAction.Check,
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
401 diff=config["__action__"] is BlackFormattingAction.Diff,
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
402 )
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
403
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
404 for file, _relSrc in iter(inputQueue.get, "STOP"):
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
405 black.reformat_one(
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
406 pathlib.Path(file),
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
407 fast=False,
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
408 write_back=writeBack,
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
409 mode=mode,
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
410 report=report,
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
411 )
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
412
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
413 def __formatOneFile(self, file):
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 Private method to format the list of files according the configuration.
9284
3b3a4f659782 "Blacked" the sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9283
diff changeset
416
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
417 @param file name of the file to be processed
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
418 @type str
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 """
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
420 report = BlackReport(self)
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
421 report.check = self.__config["__action__"] is BlackFormattingAction.Check
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
422 report.diff = self.__config["__action__"] is BlackFormattingAction.Diff
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
423 report.result.connect(self.__handleBlackFormattingResult)
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
424
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
425 writeBack = black.WriteBack.from_configuration(
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
426 check=self.__config["__action__"] is BlackFormattingAction.Check,
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
427 diff=self.__config["__action__"] is BlackFormattingAction.Diff,
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
429
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 versions = (
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431 {
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 black.TargetVersion[target.upper()]
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 for target in self.__config["target-version"]
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 }
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
435 if self.__config["target-version"]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
436 else set()
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
438
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439 mode = black.Mode(
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 target_versions=versions,
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 line_length=int(self.__config["line-length"]),
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 string_normalization=not self.__config["skip-string-normalization"],
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
443 magic_trailing_comma=not self.__config["skip-magic-trailing-comma"],
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
445
9344
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
446 if self.__config["__action__"] is BlackFormattingAction.Diff:
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
447 relSrc = self.__project.getRelativePath(str(file)) if self.__project else ""
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
448 self.__diffFormatFile(
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
449 pathlib.Path(file), fast=False, mode=mode, report=report, relSrc=relSrc
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
450 )
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
451 else:
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
452 black.reformat_one(
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
453 pathlib.Path(file),
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
454 fast=False,
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
455 write_back=writeBack,
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
456 mode=mode,
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
457 report=report,
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
458 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
459
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 self.__finish()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
461
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
462 @staticmethod
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
463 def __diffFormatFile(src, fast, mode, report, relSrc=""):
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 """
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
465 Static method to check, if the given files need to be reformatted, and generate
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466 a unified diff.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
467
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468 @param src path of file to be checked
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469 @type pathlib.Path
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
470 @param fast flag indicating fast operation
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471 @type bool
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 @param mode code formatting options
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473 @type black.Mode
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 @param report reference to the report object
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 @type BlackReport
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
476 @param relSrc name of the file relative to the project (defaults to "")
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
477 @type str (optional)
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479 then = datetime.datetime.utcfromtimestamp(src.stat().st_mtime)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
480 with open(src, "rb") as buf:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
481 srcContents, _, _ = black.decode_bytes(buf.read())
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
482 try:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
483 dstContents = black.format_file_contents(srcContents, fast=fast, mode=mode)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484 except black.NothingChanged:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485 report.done(src, black.Changed.NO)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
486 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
487
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
488 fileName = relSrc if bool(relSrc) else str(src)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
489
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
490 now = datetime.datetime.utcnow()
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 srcName = f"{fileName}\t{then} +0000"
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
492 dstName = f"{fileName}\t{now} +0000"
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
493 diffContents = black.diff(srcContents, dstContents, srcName, dstName)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494 report.done(src, black.Changed.YES, diff=diffContents)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
495
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
496 def closeEvent(self, evt):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
498 Protected slot implementing a close event handler.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
499
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 @param evt reference to the close event
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 @type QCloseEvent
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503 if self.__diffDialog is not None:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 self.__diffDialog.close()
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 evt.accept()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
506
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
507 @pyqtSlot(str)
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
508 def on_statusFilterComboBox_currentTextChanged(self, status):
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
509 """
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
510 Private slot handling the selection of a status for items to be shown.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
511
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
512 @param status selected status
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
513 @type str
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
514 """
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
515 for row in range(self.resultsList.topLevelItemCount()):
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
516 itm = self.resultsList.topLevelItem(row)
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
517 itm.setHidden(
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
518 status != self.__allFilter
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
519 and itm.text(BlackFormattingDialog.StatusColumn) != status
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
520 )
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
521
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
522 @pyqtSlot(str, str, str)
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
523 def __handleBlackFormattingResult(self, status, filename, data):
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
524 """
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
525 Private slot to handle the result of a black reformatting action.
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
526
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
527 @param status status of the performed action (one of 'changed', 'unchanged',
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
528 'unmodified', 'failed' or 'ignored')
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
529 @type str
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
530 @param filename name of the processed file
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
531 @type str
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
532 @param data action data (error message or unified diff)
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
533 @type str
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
534 """
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
535 isError = False
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
536
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
537 if status == "changed":
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
538 statusMsg = (
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
539 self.tr("would reformat")
9344
52990830b13f Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9292
diff changeset
540 if self.__config["__action__"]
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
541 in (BlackFormattingAction.Check, BlackFormattingAction.Diff)
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
542 else self.tr("reformatted")
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
543 )
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
544 self.__statistics.changeCount += 1
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
545
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
546 elif status == "unchanged":
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
547 statusMsg = self.tr("unchanged")
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
548 self.__statistics.sameCount += 1
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
549
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
550 elif status == "unmodified":
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
551 statusMsg = self.tr("unmodified")
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
552 self.__statistics.sameCount += 1
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
553
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
554 elif status == "ignored":
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
555 statusMsg = self.tr("ignored")
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
556 self.__statistics.ignoreCount += 1
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
557
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
558 elif status == "failed":
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
559 statusMsg = self.tr("failed")
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
560 self.__statistics.failureCount += 1
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
561 isError = True
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
562
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
563 else:
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
564 statusMsg = self.tr("invalid status ({0})").format(status)
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
565 self.__statistics.failureCount += 1
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
566 isError = True
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
567
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
568 if status != "ignored":
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
569 self.__statistics.processedCount += 1
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
570
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
571 if self.__project:
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
572 filename = self.__project.getRelativePath(filename)
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
573
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
574 itm = QTreeWidgetItem(self.resultsList, [statusMsg, filename])
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
575 if data:
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
576 itm.setData(
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
577 0, BlackFormattingDialog.DataTypeRole, "error" if isError else "diff"
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
578 )
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
579 itm.setData(0, BlackFormattingDialog.DataRole, data)
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
580
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
581 self.progressBar.setValue(self.progressBar.value() + 1)
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
582
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
583 QCoreApplication.processEvents()
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
584
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
585
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
586 @dataclass
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
587 class BlackStatistics:
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
588 """
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
589 Class containing the reformatting statistic data.
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
590 """
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
591
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
592 ignoreCount: int = 0
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
593 changeCount: int = 0
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
594 sameCount: int = 0
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
595 failureCount: int = 0
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
596 processedCount: int = 0
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
597
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
598
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
599 class BlackReport(QObject, black.Report):
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
600 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
601 Class extending the black Report to work with our dialog.
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
602
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
603 @signal result(status, file name, data) emitted to signal the reformatting result
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
604 as three strings giving the status (one of 'changed', 'unchanged', 'unmodified',
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
605 'failed' or 'ignored'), the file name and data related to the result
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
607
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
608 result = pyqtSignal(str, str, str)
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
609
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
610 def __init__(self, parent=None):
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
612 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
613
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
614 @param parent reference to the parent object (defaults to None
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
615 @type QObject (optional)
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
616 """
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
617 QObject.__init__(self, parent)
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
618 black.Report.__init__(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
619
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
620 def done(self, src, changed, diff=""):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
621 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
622 Public method to handle the end of a reformat.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
623
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
624 @param src name of the processed file
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
625 @type pathlib.Path
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
626 @param changed change status
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
627 @type black.Changed
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
628 @param diff unified diff of potential changes (defaults to "")
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
629 @type str
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
630 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
631 if changed is black.Changed.YES:
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
632 status = "changed"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
633
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
634 elif changed is black.Changed.NO:
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
635 status = "unchanged"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
636
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
637 elif changed is black.Changed.CACHED:
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
638 status = "unmodified"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
639
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
640 self.result.emit(status, str(src), diff)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
641
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
642 def failed(self, src, message):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
643 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
644 Public method to handle a reformat failure.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
645
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
646 @param src name of the processed file
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
647 @type pathlib.Path
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
648 @param message error message
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
649 @type str
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
650 """
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
651 self.result.emit("failed", str(src), message)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
652
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
653 def path_ignored(self, src, message=""):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
654 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
655 Public method handling an ignored path.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
656
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
657 @param src name of the processed file
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
658 @type pathlib.Path or str
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
659 @param message ignore message (default to "")
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
660 @type str (optional)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
661 """
9281
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
662 self.result.emit("ignored", str(src), "")
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
663
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
664
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
665 @dataclass
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
666 class BlackMultiprocessingResult:
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
667 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
668 Class containing the reformatting result data.
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
669
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
670 This class is used when reformatting multiple files in parallel using processes.
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
671 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
672
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
673 status: str = ""
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
674 filename: str = ""
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
675 data: str = ""
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
676
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
677
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
678 class BlackMultiprocessingReport(black.Report):
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
679 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
680 Class extending the black Report to work with multiprocessing.
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
681 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
682
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
683 def __init__(self, resultQueue):
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
684 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
685 Constructor
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
686
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
687 @param resultQueue reference to the queue to put the results into
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
688 @type multiprocessing.Queue
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
689 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
690 super().__init__()
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
691
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
692 self.__queue = resultQueue
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
693
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
694 def done(self, src, changed, diff=""):
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
695 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
696 Public method to handle the end of a reformat.
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
697
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
698 @param src name of the processed file
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
699 @type pathlib.Path
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
700 @param changed change status
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
701 @type black.Changed
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
702 @param diff unified diff of potential changes (defaults to "")
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
703 @type str
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
704 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
705 if changed is black.Changed.YES:
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
706 status = "changed"
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
707
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
708 elif changed is black.Changed.NO:
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
709 status = "unchanged"
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
710
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
711 elif changed is black.Changed.CACHED:
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
712 status = "unmodified"
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
713
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
714 self.__queue.put(
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
715 BlackMultiprocessingResult(status=status, filename=str(src), data=diff)
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
716 )
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
717
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
718 def failed(self, src, message):
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
719 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
720 Public method to handle a reformat failure.
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
721
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
722 @param src name of the processed file
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
723 @type pathlib.Path
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
724 @param message error message
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
725 @type str
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
726 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
727 self.__queue.put(
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
728 BlackMultiprocessingResult(status="failed", filename=str(src), data=message)
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
729 )
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
730
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
731 def path_ignored(self, src, message=""):
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
732 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
733 Public method handling an ignored path.
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
734
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
735 @param src name of the processed file
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
736 @type pathlib.Path or str
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
737 @param message ignore message (default to "")
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
738 @type str (optional)
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
739 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
740 self.__queue.put(
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
741 BlackMultiprocessingResult(status="ignored", filename=str(src), data="")
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
742 )

eric ide

mercurial