src/eric7/CodeFormatting/BlackFormattingDialog.py

Sun, 07 Aug 2022 17:31:26 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 07 Aug 2022 17:31:26 +0200
branch
eric7
changeset 9283
0e9d2c4e379e
parent 9281
76caf27cb8a8
child 9284
3b3a4f659782
permissions
-rw-r--r--

Changed the code reformatting dialog such, that it uses multiple processes to reformat files.

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
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
275 # Submit tasks
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
276 for file in 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
277 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
278 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
279
0e9d2c4e379e 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 # 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
281 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
282 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
283 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
284 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
285 )
0e9d2c4e379e 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 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
287 ]
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
288 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
289 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
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 # Get the results from the worker tasks
0e9d2c4e379e 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 for _ in range(len(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
293 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
294 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
295 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
296 )
0e9d2c4e379e 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
0e9d2c4e379e 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 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
299 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
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 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
303 worker.terminate()
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
304 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
305 # Tell child processes to 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
306 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
307 taskQueue.put("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
308
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
309 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
310 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
311 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
312
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
313 taskQueue.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
314 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
315
0e9d2c4e379e 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 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
317
0e9d2c4e379e 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 @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
319 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
320 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
321 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
322
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
323 @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
324 @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
325 @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
326 @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
327 @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
328 @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
329 """
0e9d2c4e379e 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 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
331 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
332 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
333
0e9d2c4e379e 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 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
335 {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
336 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
337 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
338 )
0e9d2c4e379e 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 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
341 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
342 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
343 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
344 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
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
0e9d2c4e379e 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 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
348 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
349 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
350 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
351 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
352 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
353 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
354 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
355 )
0e9d2c4e379e 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 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
357 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
358 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
359 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
360 )
0e9d2c4e379e 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 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
363 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
364 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
365 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
366 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
367 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
368 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
369 )
0e9d2c4e379e 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
0e9d2c4e379e 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 def __formatOneFile(self, file):
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 Private method to format the list of files according the 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
374
0e9d2c4e379e 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 @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
376 @type str
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 """
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
378 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
379 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
380 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
381 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
382
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 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
384 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
385 diff=self.__config["__action__"] is BlackFormattingAction.Diff,
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
387
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 versions = (
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 {
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 black.TargetVersion[target.upper()]
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 for target in self.__config["target-version"]
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 if self.__config["target-version"]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
394 else set()
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
396
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397 mode = black.Mode(
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398 target_versions=versions,
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399 line_length=int(self.__config["line-length"]),
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 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
401 magic_trailing_comma=not self.__config["skip-magic-trailing-comma"],
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
402 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
403
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
404 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
405 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
406 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
407 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
408 )
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
409 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
410 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
411 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
412 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
413 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
414 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
415 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
416 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
417
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 self.__finish()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
419
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
420 @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
421 def __diffFormatFile(src, fast, mode, report, relSrc=""):
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
422 """
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
423 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
424 a unified diff.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
425
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
426 @param src path of file to be checked
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
427 @type pathlib.Path
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 @param fast flag indicating fast operation
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429 @type bool
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 @param mode code formatting options
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431 @type black.Mode
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 @param report reference to the report object
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 @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
434 @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
435 @type str (optional)
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437 then = datetime.datetime.utcfromtimestamp(src.stat().st_mtime)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
438 with open(src, "rb") as buf:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439 srcContents, _, _ = black.decode_bytes(buf.read())
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 try:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 dstContents = black.format_file_contents(srcContents, fast=fast, mode=mode)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 except black.NothingChanged:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
443 report.done(src, black.Changed.NO)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
445
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
446 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
447
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448 now = datetime.datetime.utcnow()
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449 srcName = f"{fileName}\t{then} +0000"
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450 dstName = f"{fileName}\t{now} +0000"
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451 diffContents = black.diff(srcContents, dstContents, srcName, dstName)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
452 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
453
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 def closeEvent(self, evt):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456 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
457
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 @param evt reference to the close event
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459 @type QCloseEvent
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461 if self.__diffDialog is not None:
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462 self.__diffDialog.close()
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 evt.accept()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
464
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
465 @pyqtSlot(str)
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
466 def on_statusFilterComboBox_currentTextChanged(self, status):
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
467 """
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
468 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
469
9220
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
470 @param status selected status
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
471 @type str
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
472 """
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
473 for row in range(self.resultsList.topLevelItemCount()):
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
474 itm = self.resultsList.topLevelItem(row)
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
475 itm.setHidden(
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
476 status != self.__allFilter
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
477 and itm.text(BlackFormattingDialog.StatusColumn) != status
e9e7eca7efee Black Formatting Dialog
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9214
diff changeset
478 )
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479
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
480 @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
481 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
482 """
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
483 Private slot to handle the result of a black reformatting action.
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484
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
485 @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
486 '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
487 @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
488 @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
489 @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
490 @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
491 @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
492 """
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 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
494
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 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
496 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
497 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
498 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
499 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
500 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
501 )
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 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
503
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 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
505 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
506 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
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 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
509 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
510 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
511
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 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
513 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
514 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
515
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 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
517 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
518 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
519 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
520
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 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
522 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
523 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
524 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
525
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
526 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
527 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
528
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
529 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
530 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
531
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
532 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
533 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
534 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
535 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
536 )
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
537 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
538
76caf27cb8a8 Changed the code reformatting dialog to work with signals and slots and do the statistics calculation in the dialog class (prepare for multi processing).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
539 self.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
540
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 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
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
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 @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
545 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
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 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
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 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
551 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
552 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
553 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
554 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
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
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 class BlackReport(QObject, black.Report):
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
558 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
559 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
560
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 @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
562 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
563 '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
564 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
565
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 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
567
9283
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
568 def __init__(self, parent=None):
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
570 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
571
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
572 @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
573 @type QObject (optional)
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
574 """
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
575 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
576 black.Report.__init__(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
577
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
578 def done(self, src, changed, diff=""):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
579 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
580 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
581
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
582 @param src name of the processed file
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
583 @type pathlib.Path
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
584 @param changed change status
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585 @type black.Changed
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586 @param diff unified diff of potential changes (defaults to "")
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587 @type str
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
589 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
590 status = "changed"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
591
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
592 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
593 status = "unchanged"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
594
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
595 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
596 status = "unmodified"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9220
diff changeset
597
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
598 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
599
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
600 def failed(self, src, message):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
601 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
602 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
603
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
604 @param src name of the processed file
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
605 @type pathlib.Path
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606 @param message error message
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
607 @type str
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
608 """
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
609 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
610
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611 def path_ignored(self, src, message=""):
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
612 """
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
613 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
614
9214
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
615 @param src name of the processed file
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
616 @type pathlib.Path or str
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
617 @param message ignore message (default to "")
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
618 @type str (optional)
bd28e56047d7 Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
619 """
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
620 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
621
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
622
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
623 @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
624 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
625 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
626 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
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 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
629 """
0e9d2c4e379e 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
0e9d2c4e379e 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 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
632 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
633 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
634
0e9d2c4e379e 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 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
637 """
0e9d2c4e379e 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 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
639 """
0e9d2c4e379e 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 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
642 """
0e9d2c4e379e 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 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
644
0e9d2c4e379e 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 @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
646 @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
647 """
0e9d2c4e379e 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 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
649
0e9d2c4e379e 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 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
651
0e9d2c4e379e 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 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
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 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
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 @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
657 @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
658 @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
659 @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
660 @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
661 @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
662 """
0e9d2c4e379e 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 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
664 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
665
0e9d2c4e379e 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 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
667 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
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 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
670 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
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 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
673 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
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
0e9d2c4e379e 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 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
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 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
679
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
680 @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
681 @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
682 @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
683 @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
684 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
685 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
686 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
687 )
0e9d2c4e379e 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
0e9d2c4e379e 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 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
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 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
692
0e9d2c4e379e 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 @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
694 @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
695 @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
696 @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
697 """
0e9d2c4e379e Changed the code reformatting dialog such, that it uses multiple processes to reformat files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9281
diff changeset
698 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
699 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
700 )

eric ide

mercurial