src/eric7/CodeFormatting/BlackFormattingDialog.py

Tue, 16 Aug 2022 19:07:16 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 16 Aug 2022 19:07:16 +0200
branch
eric7
changeset 9289
ba49c41e8f63
parent 9284
3b3a4f659782
child 9292
a5c8a0213fe3
permissions
-rw-r--r--

Did some optimizations in the multiprocessing code.

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))
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 self.progressBar.setValue(0)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
78
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 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
80
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
81 self.statisticsGroup.setVisible(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
82
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
83 self.__statistics = 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
84
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 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
86 self.__config["__action__"] = action # needed by the workers
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 self.__project = project
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 self.__action = action
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
89
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 self.__cancelled = False
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 self.__diffDialog = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
92
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
93 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
94
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setEnabled(True)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(False)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 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
98
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 self.show()
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 QCoreApplication.processEvents()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
101
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
102 files = self.__filterFiles(filesList)
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
103 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
104 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
105 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
106 self.__formatOneFile(files[0])
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
107
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 def __filterFiles(self, filesList):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 Private method to filter the given list of files according the
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 configuration parameters.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
112
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 @param filesList list of files
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 @type list of str
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 @return list of filtered files
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 @rtype list of str
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 filterRegExps = [
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 BlackUtilities.compileRegExp(self.__config[k])
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 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
121 if k in self.__config
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
122 and bool(self.__config[k])
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 and BlackUtilities.validateRegExp(self.__config[k])[0]
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
125
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 files = []
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 for file in filesList:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 file = Utilities.fromNativeSeparators(file)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 for filterRegExp in filterRegExps:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 filterMatch = filterRegExp.search(file)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 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
132 self.__handleBlackFormattingResult("ignored", file, "")
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 break
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 else:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 files.append(file)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
136
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 return files
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
138
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 def __resort(self):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 Private method to resort the result list.
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 self.resultsList.sortItems(
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 self.resultsList.sortColumn(),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
145 self.resultsList.header().sortIndicatorOrder(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
146 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
147
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 def __resizeColumns(self):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 Private method to resize the columns of the result list.
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 self.resultsList.header().resizeSections(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
153 QHeaderView.ResizeMode.ResizeToContents
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 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
156
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
157 def __populateStatusFilterCombo(self):
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
158 """
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
159 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
160 """
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
161 allowedSelections = set()
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
162 for row in range(self.resultsList.topLevelItemCount()):
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
163 allowedSelections.add(
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
164 self.resultsList.topLevelItem(row).text(
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
165 BlackFormattingDialog.StatusColumn
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
166 )
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
167 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
168
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
169 self.statusFilterComboBox.addItem(self.__allFilter)
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
170 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
171
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 def __finish(self):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 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
175 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 self.__resort()
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 self.__resizeColumns()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
178
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setEnabled(False)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(True)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 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
182
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 self.progressBar.setVisible(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
184
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 self.__updateStatistics()
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
186 self.__populateStatusFilterCombo()
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 __updateStatistics(self):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 """
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
190 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
191 make them visible.
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 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
194 self.tr("Reformatted:")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
195 if self.__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
196 else self.tr("Would Reformat:")
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 )
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 total = self.progressBar.maximum()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
200
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 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
202 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
203 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
204 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
205 "{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
206 )
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
207 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
208 "{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
209 )
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
210 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
211
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
212 self.statisticsGroup.setVisible(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
213
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 @pyqtSlot(QAbstractButton)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 def on_buttonBox_clicked(self, button):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 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
218
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 @param button reference to the pressed button
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 @type QAbstractButton
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 if button == self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 self.__cancelled = True
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 elif button == self.buttonBox.button(QDialogButtonBox.StandardButton.Close):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 self.accept()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
226
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 @pyqtSlot(QTreeWidgetItem, int)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 def on_resultsList_itemDoubleClicked(self, item, column):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 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
231
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 @param item reference to the double clicked item
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 @type QTreeWidgetItem
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 @param column column number that was double clicked
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 @type int
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 dataType = item.data(0, BlackFormattingDialog.DataTypeRole)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 if dataType == "error":
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 EricMessageBox.critical(
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 self,
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 self.tr("Formatting Failure"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
242 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
243 item.data(0, BlackFormattingDialog.DataRole)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
244 ),
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 )
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 elif dataType == "diff":
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 if self.__diffDialog is None:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 self.__diffDialog = BlackDiffWidget()
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 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
250
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
251 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
252 """
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
253 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
254 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
255
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
256 @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
257 @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
258 """
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
259 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
260 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
261 # 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
262 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
263 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
264 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
265 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
266 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
267 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
268 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
269 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
270
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
271 # 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
272 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
273 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
274
9289
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
275 # 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
276 tasks = len(files)
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
277 initialTasks = 2 * NumberOfProcesses
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
278 for _ in range(initialTasks):
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
279 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
280 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
281 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
282
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 # 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
284 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
285 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
286 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
287 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
288 )
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 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
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 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
292 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
293
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 # 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
295 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
296 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
297 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
298 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
299 )
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
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 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
302 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
303
9289
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
304 if files:
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
305 file = files.pop(0)
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
306 relSrc = (
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
307 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
308 )
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
309 taskQueue.put((file, relSrc))
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
310
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
311 # Tell child processes to stop
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
312 for _ in range(NumberOfProcesses):
ba49c41e8f63 Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9284
diff changeset
313 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
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 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
316 worker.join()
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 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
318
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 taskQueue.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
320 doneQueue.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
321
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 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
323
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 @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
325 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
326 """
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
327 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
328
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 @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
330 @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
331 @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
332 @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
333 @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
334 @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
335 """
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
336 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
337 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
338 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
339
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
340 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
341 {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
342 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
343 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
344 )
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
345
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 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
347 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
348 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
349 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
350 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
351 )
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
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 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
354 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
355 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
356 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
357 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
358 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
359 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
360 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
361 )
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 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
363 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
364 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
365 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
366 )
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
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 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
369 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
370 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
371 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
372 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
373 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
374 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
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
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 def __formatOneFile(self, file):
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 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
380
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
381 @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
382 @type str
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 """
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
384 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
385 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
386 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
387 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
388
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 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
390 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
391 diff=self.__config["__action__"] is BlackFormattingAction.Diff,
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
393
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 versions = (
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395 {
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
396 black.TargetVersion[target.upper()]
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397 for target in self.__config["target-version"]
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398 }
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
399 if self.__config["target-version"]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
400 else set()
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
401 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
402
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
403 mode = black.Mode(
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404 target_versions=versions,
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
405 line_length=int(self.__config["line-length"]),
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406 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
407 magic_trailing_comma=not self.__config["skip-magic-trailing-comma"],
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
409
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
410 if self.__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
411 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
412 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
413 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
414 )
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
415 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
416 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
417 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
418 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
419 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
420 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
421 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
422 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
423
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
424 self.__finish()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
425
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 @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
427 def __diffFormatFile(src, fast, mode, report, relSrc=""):
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 """
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
429 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
430 a unified diff.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
431
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 @param src path of file to be checked
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 @type pathlib.Path
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 @param fast flag indicating fast operation
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435 @type bool
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 @param mode code formatting options
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437 @type black.Mode
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
438 @param report reference to the report object
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439 @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
440 @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
441 @type str (optional)
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
443 then = datetime.datetime.utcfromtimestamp(src.stat().st_mtime)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444 with open(src, "rb") as buf:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445 srcContents, _, _ = black.decode_bytes(buf.read())
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446 try:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 dstContents = black.format_file_contents(srcContents, fast=fast, mode=mode)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448 except black.NothingChanged:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449 report.done(src, black.Changed.NO)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
451
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
452 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
453
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 now = datetime.datetime.utcnow()
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455 srcName = f"{fileName}\t{then} +0000"
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456 dstName = f"{fileName}\t{now} +0000"
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457 diffContents = black.diff(srcContents, dstContents, srcName, dstName)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 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
459
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 def closeEvent(self, evt):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462 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
463
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 @param evt reference to the close event
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465 @type QCloseEvent
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 if self.__diffDialog is not None:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468 self.__diffDialog.close()
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469 evt.accept()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
470
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
471 @pyqtSlot(str)
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
472 def on_statusFilterComboBox_currentTextChanged(self, status):
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
473 """
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
474 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
475
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
476 @param status selected status
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
477 @type str
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
478 """
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
479 for row in range(self.resultsList.topLevelItemCount()):
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
480 itm = self.resultsList.topLevelItem(row)
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
481 itm.setHidden(
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
482 status != self.__allFilter
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
483 and itm.text(BlackFormattingDialog.StatusColumn) != status
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
484 )
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485
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
486 @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
487 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
488 """
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
489 Private slot to handle the result of a black reformatting action.
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
490
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
491 @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
492 '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
493 @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
494 @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
495 @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
496 @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
497 @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
498 """
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
499 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
500
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
501 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
502 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
503 self.tr("would reformat")
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
504 if self.__action
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
505 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
506 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
507 )
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
508 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
509
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
510 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
511 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
512 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
513
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
514 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
515 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
516 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
517
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
518 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
519 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
520 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
521
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 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
523 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
524 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
525 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
526
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 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
528 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
529 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
530 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
531
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
532 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
533 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
534
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
535 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
536 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
537
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 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
539 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
540 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
541 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
542 )
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 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
544
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 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
546
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 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
548
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 @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
551 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
552 """
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 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
554 """
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
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 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
557 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
558 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
559 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
560 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
561
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 class BlackReport(QObject, black.Report):
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 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
566
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 @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
568 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
569 '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
570 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
571
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
572 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
573
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
574 def __init__(self, parent=None):
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
575 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
576 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
577
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
578 @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
579 @type QObject (optional)
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
580 """
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
581 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
582 black.Report.__init__(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
583
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
584 def done(self, src, changed, diff=""):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586 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
587
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588 @param src name of the processed file
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
589 @type pathlib.Path
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
590 @param changed change status
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
591 @type black.Changed
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
592 @param diff unified diff of potential changes (defaults to "")
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
593 @type str
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
594 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
595 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
596 status = "changed"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
597
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
598 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
599 status = "unchanged"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
600
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
601 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
602 status = "unmodified"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
603
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
604 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
605
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606 def failed(self, src, message):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
607 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
608 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
609
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
610 @param src name of the processed file
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611 @type pathlib.Path
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
612 @param message error message
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
613 @type str
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
614 """
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
615 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
616
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
617 def path_ignored(self, src, message=""):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
618 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
619 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
620
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
621 @param src name of the processed file
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
622 @type pathlib.Path or str
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
623 @param message ignore message (default to "")
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
624 @type str (optional)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
625 """
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
626 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
627
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
628
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
629 @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
630 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
631 """
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
632 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
633
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
634 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
635 """
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
636
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
637 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
638 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
639 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
640
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
641
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
642 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
643 """
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
644 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
645 """
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
646
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
647 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
648 """
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
649 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
650
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
651 @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
652 @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
653 """
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
654 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
655
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
656 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
657
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
658 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
659 """
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
660 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
661
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
662 @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
663 @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
664 @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
665 @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
666 @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
667 @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
668 """
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 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
670 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
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 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
673 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
674
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 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
676 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
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 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
679 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
680 )
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 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
683 """
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 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
685
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 @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
687 @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
688 @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
689 @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
690 """
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 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
692 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
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
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 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
696 """
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 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
698
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 @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
700 @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
701 @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
702 @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
703 """
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 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
705 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
706 )

eric ide

mercurial