src/eric7/CodeFormatting/IsortFormattingDialog.py

Tue, 10 Dec 2024 15:46:34 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 10 Dec 2024 15:46:34 +0100
branch
eric7
changeset 11090
f5f5f5803935
parent 11006
a671918232f3
permissions
-rw-r--r--

Updated copyright for 2025.

9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
3 # Copyright (c) 2022 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog showing the isort code formatting progress and the results.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
9475
5c09d70e9290 Replaced a custom function by use of standard functions from contextlib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
10 import contextlib
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import copy
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 import io
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 import multiprocessing
9475
5c09d70e9290 Replaced a custom function by use of standard functions from contextlib.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
14 import os
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 import pathlib
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from dataclasses import dataclass
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
9468
a4d8091cd8f7 Changed the isort formatting dialog to ensure the cached isort config data is cleared.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9465
diff changeset
19 from isort import settings
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 from isort.api import check_file, sort_file
10136
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
21 from isort.exceptions import ISortError
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9472
diff changeset
22 from PyQt6.QtCore import QCoreApplication, Qt, pyqtSlot
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 from PyQt6.QtWidgets import (
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 QAbstractButton,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 QDialog,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 QDialogButtonBox,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 QHeaderView,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 QTreeWidgetItem,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 from eric7 import Preferences
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 from eric7.EricWidgets import EricMessageBox
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 from .FormattingDiffWidget import FormattingDiffWidget
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 from .IsortFormattingAction import IsortFormattingAction
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 from .Ui_IsortFormattingDialog import Ui_IsortFormattingDialog
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 class IsortFormattingDialog(QDialog, Ui_IsortFormattingDialog):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 Class implementing a dialog showing the isort code formatting progress and the
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 results.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
9460
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
45 DataRole = Qt.ItemDataRole.UserRole
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
46 DataTypeRole = Qt.ItemDataRole.UserRole + 1
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
47 FileNameRole = Qt.ItemDataRole.UserRole + 2
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
48 StatusRole = Qt.ItemDataRole.UserRole + 3
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
9460
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
50 FileNameColumn = 1
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 StatusColumn = 0
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 def __init__(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 configuration,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 filesList,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 project=None,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 action=IsortFormattingAction.Sort,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 parent=None,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 ):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 Constructor
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 @param configuration dictionary containing the configuration parameters
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 @type dict
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 @param filesList list of absolute file paths to be processed
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 @type list of str
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 @param project reference to the project object (defaults to None)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 @type Project (optional)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 @param action action to be performed (defaults to IsortFormattingAction.Sort)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 @type IsortFormattingAction (optional)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 @param parent reference to the parent widget (defaults to None)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 @type QWidget (optional)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 super().__init__(parent)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 self.setupUi(self)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 self.resultsList.header().setSortIndicator(1, Qt.SortOrder.AscendingOrder)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79
9465
8a020c34dce2 Fine tuned the isort support so the configuration will default to project specific config files overwritten by data entered via the dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9460
diff changeset
80 self.__project = project
8a020c34dce2 Fine tuned the isort support so the configuration will default to project specific config files overwritten by data entered via the dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9460
diff changeset
81
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 self.__config = copy.deepcopy(configuration)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 self.__config["quiet"] = True # we don't want extra output
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 self.__config["overwrite_in_place"] = True # we want to overwrite the files
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 if "config_source" in self.__config:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 del self.__config["config_source"]
9465
8a020c34dce2 Fine tuned the isort support so the configuration will default to project specific config files overwritten by data entered via the dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9460
diff changeset
87
8a020c34dce2 Fine tuned the isort support so the configuration will default to project specific config files overwritten by data entered via the dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9460
diff changeset
88 # Create an isort Config object and pre-load it with parameters contained in
8a020c34dce2 Fine tuned the isort support so the configuration will default to project specific config files overwritten by data entered via the dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9460
diff changeset
89 # project specific configuration files (like pyproject.toml). The configuration
8a020c34dce2 Fine tuned the isort support so the configuration will default to project specific config files overwritten by data entered via the dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9460
diff changeset
90 # given as a dictionary (i.e. data entered in the configuration dialog)
8a020c34dce2 Fine tuned the isort support so the configuration will default to project specific config files overwritten by data entered via the dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9460
diff changeset
91 # overwrites these. If the project is not passed, the isort config is based on
8a020c34dce2 Fine tuned the isort support so the configuration will default to project specific config files overwritten by data entered via the dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9460
diff changeset
92 # the isort defaults.
9468
a4d8091cd8f7 Changed the isort formatting dialog to ensure the cached isort config data is cleared.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9465
diff changeset
93 if project:
10409
8d888f38bf89 Fixed an issue in the "isort" interface caused by a change in isort >= 5.13.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10136
diff changeset
94 with contextlib.suppress(AttributeError):
8d888f38bf89 Fixed an issue in the "isort" interface caused by a change in isort >= 5.13.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10136
diff changeset
95 # for isort < 5.13.0
8d888f38bf89 Fixed an issue in the "isort" interface caused by a change in isort >= 5.13.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10136
diff changeset
96 # clear the caches in order to force a re-read of config files
8d888f38bf89 Fixed an issue in the "isort" interface caused by a change in isort >= 5.13.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10136
diff changeset
97 settings._get_config_data.cache_clear()
8d888f38bf89 Fixed an issue in the "isort" interface caused by a change in isort >= 5.13.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10136
diff changeset
98 settings._find_config.cache_clear()
9468
a4d8091cd8f7 Changed the isort formatting dialog to ensure the cached isort config data is cleared.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9465
diff changeset
99 try:
a4d8091cd8f7 Changed the isort formatting dialog to ensure the cached isort config data is cleared.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9465
diff changeset
100 self.__isortConfig = (
a4d8091cd8f7 Changed the isort formatting dialog to ensure the cached isort config data is cleared.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9465
diff changeset
101 settings.Config(settings_path=project.getProjectPath(), **self.__config)
a4d8091cd8f7 Changed the isort formatting dialog to ensure the cached isort config data is cleared.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9465
diff changeset
102 if project
a4d8091cd8f7 Changed the isort formatting dialog to ensure the cached isort config data is cleared.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9465
diff changeset
103 else settings.Config(**self.__config)
a4d8091cd8f7 Changed the isort formatting dialog to ensure the cached isort config data is cleared.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9465
diff changeset
104 )
a4d8091cd8f7 Changed the isort formatting dialog to ensure the cached isort config data is cleared.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9465
diff changeset
105 except KeyError:
a4d8091cd8f7 Changed the isort formatting dialog to ensure the cached isort config data is cleared.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9465
diff changeset
106 # invalid configuration entry found in some config file; use just the dialog
a4d8091cd8f7 Changed the isort formatting dialog to ensure the cached isort config data is cleared.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9465
diff changeset
107 # parameters
a4d8091cd8f7 Changed the isort formatting dialog to ensure the cached isort config data is cleared.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9465
diff changeset
108 self.__isortConfig = settings.Config(**self.__config)
9465
8a020c34dce2 Fine tuned the isort support so the configuration will default to project specific config files overwritten by data entered via the dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9460
diff changeset
109
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 self.__config["__action__"] = action # needed by the workers
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 self.__filesList = filesList[:]
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 self.__diffDialog = None
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 self.__allFilter = self.tr("<all>")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 self.__sortImportsButton = self.buttonBox.addButton(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 self.tr("Sort Imports"), QDialogButtonBox.ButtonRole.ActionRole
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 self.__sortImportsButton.setVisible(False)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 self.show()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 QCoreApplication.processEvents()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 self.__performAction()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 def __performAction(self):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 """
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
130 Private method to execute the requested sorting action.
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 """
9472
5798ee4a8807 Corrected a little glitch in the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9468
diff changeset
132 self.progressBar.setMaximum(len(self.__filesList))
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 self.progressBar.setValue(0)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 self.progressBar.setVisible(True)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 self.statisticsGroup.setVisible(False)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 self.__statistics = IsortStatistics()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 self.__cancelled = False
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 self.statusFilterComboBox.clear()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 self.resultsList.clear()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setEnabled(True)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(False)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setDefault(True)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 files = self.__filterFiles(self.__filesList)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 if len(files) > 1:
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
150 self.__sortManyFiles(files)
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 elif len(files) == 1:
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
152 self.__sortOneFile(files[0])
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 def __filterFiles(self, filesList):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 Private method to filter the given list of files according the
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 configuration parameters.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 @param filesList list of files
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 @type list of str
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 @return list of filtered files
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 @rtype list of str
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 files = []
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 for file in filesList:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 if not self.__isortConfig.is_supported_filetype(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 file
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 ) or self.__isortConfig.is_skipped(pathlib.Path(file)):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 self.__handleIsortResult(file, "skipped")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 else:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 files.append(file)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 return files
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 def __resort(self):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 Private method to resort the result list.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 self.resultsList.sortItems(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 self.resultsList.sortColumn(),
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 self.resultsList.header().sortIndicatorOrder(),
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 def __resizeColumns(self):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 Private method to resize the columns of the result list.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 self.resultsList.header().resizeSections(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 QHeaderView.ResizeMode.ResizeToContents
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 self.resultsList.header().setStretchLastSection(True)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 def __populateStatusFilterCombo(self):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 Private method to populate the status filter combo box with allowed selections.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 allowedSelections = set()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 for row in range(self.resultsList.topLevelItemCount()):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 allowedSelections.add(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 self.resultsList.topLevelItem(row).text(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 IsortFormattingDialog.StatusColumn
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 self.statusFilterComboBox.addItem(self.__allFilter)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 self.statusFilterComboBox.addItems(sorted(allowedSelections))
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 def __finish(self):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 Private method to perform some actions after the run was performed or canceled.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 self.__resort()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 self.__resizeColumns()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setEnabled(False)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(True)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setDefault(True)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 self.progressBar.setVisible(False)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 self.__sortImportsButton.setVisible(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 self.__config["__action__"] is not IsortFormattingAction.Sort
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 and self.__statistics.changeCount > 0
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 self.__updateStatistics()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 self.__populateStatusFilterCombo()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 def __updateStatistics(self):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 """
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
231 Private method to update the statistics about the recent sorting run and
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 make them visible.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 self.reformattedLabel.setText(
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
235 self.tr("Resorted:")
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 if self.__config["__action__"] is IsortFormattingAction.Sort
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
237 else self.tr("Would Resort:")
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 total = self.progressBar.maximum()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 self.totalCountLabel.setText("{0:n}".format(total))
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 self.skippedCountLabel.setText("{0:n}".format(self.__statistics.skippedCount))
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 self.failuresCountLabel.setText("{0:n}".format(self.__statistics.failureCount))
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 self.processedCountLabel.setText(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 "{0:n}".format(self.__statistics.processedCount)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 self.reformattedCountLabel.setText(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 "{0:n}".format(self.__statistics.changeCount)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 self.unchangedCountLabel.setText("{0:n}".format(self.__statistics.sameCount))
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 self.statisticsGroup.setVisible(True)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 @pyqtSlot(QAbstractButton)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 def on_buttonBox_clicked(self, button):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 Private slot to handle button presses of the dialog buttons.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 @param button reference to the pressed button
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 @type QAbstractButton
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 if button == self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 self.__cancelled = True
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 elif button == self.buttonBox.button(QDialogButtonBox.StandardButton.Close):
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10689
diff changeset
266 if self.__diffDialog is not None:
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10689
diff changeset
267 self.__diffDialog.close()
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10689
diff changeset
268 self.__diffDialog = None
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 self.accept()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 elif button is self.__sortImportsButton:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 self.__sortImportsButtonClicked()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 @pyqtSlot()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 def __sortImportsButtonClicked(self):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 Private slot handling the selection of the 'Sort Imports' button.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 """
9460
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
278 files = []
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
279 for row in range(self.resultsList.topLevelItemCount()):
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
280 itm = self.resultsList.topLevelItem(row)
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
281 if itm.data(0, IsortFormattingDialog.StatusRole) == "changed":
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
282 files.append(itm.data(0, IsortFormattingDialog.FileNameRole))
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
283 if files:
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
284 self.__filesList = files
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
285
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 self.__config["__action__"] = IsortFormattingAction.Sort
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 self.__performAction()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 @pyqtSlot(QTreeWidgetItem, int)
10689
3ede487187f2 Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10621
diff changeset
290 def on_resultsList_itemDoubleClicked(self, item, _column):
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 Private slot handling a double click of a result item.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 @param item reference to the double clicked item
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 @type QTreeWidgetItem
10689
3ede487187f2 Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10621
diff changeset
296 @param _column column number that was double clicked (unused)
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 @type int
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 dataType = item.data(0, IsortFormattingDialog.DataTypeRole)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 if dataType == "error":
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 EricMessageBox.critical(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 self,
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
303 self.tr("Imports Sorting Failure"),
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
304 self.tr(
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
305 "<p>Imports sorting failed due to this error.</p><p>{0}</p>"
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
306 ).format(item.data(0, IsortFormattingDialog.DataRole)),
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 elif dataType == "diff":
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 if self.__diffDialog is None:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 self.__diffDialog = FormattingDiffWidget()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 self.__diffDialog.showDiff(item.data(0, IsortFormattingDialog.DataRole))
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 @pyqtSlot(str)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 def on_statusFilterComboBox_currentTextChanged(self, status):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 Private slot handling the selection of a status for items to be shown.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 @param status selected status
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 @type str
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 for row in range(self.resultsList.topLevelItemCount()):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 itm = self.resultsList.topLevelItem(row)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 itm.setHidden(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 status != self.__allFilter
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 and itm.text(IsortFormattingDialog.StatusColumn) != status
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 def closeEvent(self, evt):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 Protected slot implementing a close event handler.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 @param evt reference to the close event
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 @type QCloseEvent
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 if self.__diffDialog is not None:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 self.__diffDialog.close()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 evt.accept()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 def __handleIsortResult(self, filename, status, data=""):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 """
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
341 Private method to handle an isort sorting result.
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 @param filename name of the processed file
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 @type str
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 @param status status of the performed action (one of 'changed', 'failed',
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 'skipped' or 'unchanged')
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 @type str
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 @param data action data (error message or unified diff) (defaults to "")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 @type str (optional)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
351 isError = False
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 if status == "changed":
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 statusMsg = (
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 self.tr("would resort")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 if self.__config["__action__"]
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 in (IsortFormattingAction.Check, IsortFormattingAction.Diff)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 else self.tr("resorted")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 self.__statistics.changeCount += 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 elif status == "unchanged":
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 statusMsg = self.tr("unchanged")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 self.__statistics.sameCount += 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 elif status == "skipped":
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 statusMsg = self.tr("skipped")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 self.__statistics.skippedCount += 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 elif status == "failed":
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 statusMsg = self.tr("failed")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 self.__statistics.failureCount += 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 isError = True
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 elif status == "unsupported":
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 statusMsg = self.tr("error")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 data = self.tr("Unsupported 'isort' action ({0}) given.").format(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 self.__config["__action__"]
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 self.__statistics.failureCount += 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 isError = True
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 else:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 statusMsg = self.tr("invalid status ({0})").format(status)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 self.__statistics.failureCount += 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 isError = True
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 if status != "skipped":
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 self.__statistics.processedCount += 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390
9460
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
391 itm = QTreeWidgetItem(
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
392 self.resultsList,
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
393 [
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
394 statusMsg,
10621
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
395 (
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
396 self.__project.getRelativePath(filename)
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
397 if self.__project
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
398 else filename
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
399 ),
9460
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
400 ],
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
401 )
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
402 itm.setData(0, IsortFormattingDialog.StatusRole, status)
0d1b5d0fd815 Modified the Black and Isort dialogs such, that only files that need a change are processed after a diff or check run by pressing the relevant button.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9455
diff changeset
403 itm.setData(0, IsortFormattingDialog.FileNameRole, filename)
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404 if data:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
405 itm.setData(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406 0, IsortFormattingDialog.DataTypeRole, "error" if isError else "diff"
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408 itm.setData(0, IsortFormattingDialog.DataRole, data)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410 self.progressBar.setValue(self.progressBar.value() + 1)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
411
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
412 QCoreApplication.processEvents()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
414 def __sortManyFiles(self, files):
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 """
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
416 Private method to sort imports of the list of files according the configuration
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
417 using multiple processes in parallel.
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 @param files list of files to be processed
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
420 @type list of str
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
421 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
422 maxProcesses = Preferences.getUI("BackgroundServiceProcesses")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
423 if maxProcesses == 0:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
424 # determine based on CPU count
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
425 try:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
426 NumberOfProcesses = multiprocessing.cpu_count()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
427 if NumberOfProcesses >= 1:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 NumberOfProcesses -= 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429 except NotImplementedError:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 NumberOfProcesses = 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431 else:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 NumberOfProcesses = maxProcesses
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 # Create queues
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435 taskQueue = multiprocessing.Queue()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 doneQueue = multiprocessing.Queue()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
438 # Submit tasks (initially two times the number of processes)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439 tasks = len(files)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 initialTasks = min(2 * NumberOfProcesses, tasks)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 for _ in range(initialTasks):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 file = files.pop(0)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
443 taskQueue.put((file, self.__config["__action__"]))
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445 # Start worker processes
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446 workers = [
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 multiprocessing.Process(
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
448 target=self.sortingWorkerTask,
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449 args=(taskQueue, doneQueue, self.__isortConfig),
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451 for _ in range(NumberOfProcesses)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
452 ]
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453 for worker in workers:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 worker.start()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456 # Get the results from the worker tasks
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457 for _ in range(tasks):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 result = doneQueue.get()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459 self.__handleIsortResult(result.filename, result.status, data=result.data)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461 if self.__cancelled:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462 break
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 if files:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465 file = files.pop(0)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466 taskQueue.put((file, self.__config["__action__"]))
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468 # Tell child processes to stop
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469 for _ in range(NumberOfProcesses):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
470 taskQueue.put("STOP")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 for worker in workers:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473 worker.join()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 worker.close()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
476 taskQueue.close()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477 doneQueue.close()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479 self.__finish()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
480
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
481 @staticmethod
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
482 def sortingWorkerTask(inputQueue, outputQueue, isortConfig):
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
483 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484 Static method acting as the parallel worker for the formatting task.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
486 @param inputQueue input queue
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487 @type multiprocessing.Queue
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488 @param outputQueue output queue
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 @type multiprocessing.Queue
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
490 @param isortConfig config object for isort
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 @type isort.Config
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
492 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
493 for file, action in iter(inputQueue.get, "STOP"):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494 if action == IsortFormattingAction.Diff:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
495 result = IsortFormattingDialog.__isortCheckFile(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
496 file,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497 isortConfig,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
498 withDiff=True,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 elif action == IsortFormattingAction.Sort:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 result = IsortFormattingDialog.__isortSortFile(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503 file,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 isortConfig,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
507 else:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508 result = IsortResult(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509 status="unsupported",
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
510 filename=file,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
511 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
512
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513 outputQueue.put(result)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
514
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
515 def __sortOneFile(self, file):
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
516 """
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
517 Private method to sort the imports of the list of files according the
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
518 configuration.
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
519
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
520 @param file name of the file to be processed
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
521 @type str
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
522 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
523 if self.__config["__action__"] == IsortFormattingAction.Diff:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
524 result = IsortFormattingDialog.__isortCheckFile(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
525 file,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
526 self.__isortConfig,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
527 withDiff=True,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
528 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
529
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
530 elif self.__config["__action__"] == IsortFormattingAction.Sort:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
531 result = IsortFormattingDialog.__isortSortFile(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
532 file,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
533 self.__isortConfig,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
534 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
535
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
536 else:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
537 result = IsortResult(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
538 status="unsupported",
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
539 filename=file,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
540 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
541
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542 self.__handleIsortResult(result.filename, result.status, data=result.data)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544 self.__finish()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546 @staticmethod
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 def __isortCheckFile(filename, isortConfig, withDiff=True):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 Static method to check, if a file's import statements need to be changed.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
551 @param filename name of the file to be processed
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552 @type str
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
553 @param isortConfig config object for isort
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554 @type isort.Config
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
555 @param withDiff flag indicating to return a unified diff, if the file needs to
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
556 be changed (defaults to True)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
557 @type bool (optional)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
558 @return result object
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
559 @rtype IsortResult
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
560 """
10136
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
561 try:
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
562 diffIO = io.StringIO() if withDiff else False
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
563 with open(os.devnull, "w") as devnull, contextlib.redirect_stderr(devnull):
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
564 ok = check_file(
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
565 filename,
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
566 show_diff=diffIO,
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
567 config=isortConfig,
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
568 )
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
569 if withDiff:
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
570 data = "" if ok else diffIO.getvalue()
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
571 diffIO.close()
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
572 else:
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
573 data = ""
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
574
10136
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
575 status = "unchanged" if ok else "changed"
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
576 except ISortError as err:
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
577 status = "failed"
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
578 data = str(err)
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
579
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
580 return IsortResult(status=status, filename=filename, data=data)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
581
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
582 @staticmethod
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
583 def __isortSortFile(filename, isortConfig):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
584 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585 Static method to sort the import statements of a file.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587 @param filename name of the file to be processed
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588 @type str
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
589 @param isortConfig config object for isort
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
590 @type isort.Config
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
591 @return result object
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
592 @rtype IsortResult
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
593 """
10136
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
594 try:
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
595 with open(os.devnull, "w") as devnull, contextlib.redirect_stderr(devnull):
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
596 ok = sort_file(
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
597 filename,
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
598 config=isortConfig,
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
599 ask_to_apply=False,
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
600 write_to_stdout=False,
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
601 show_diff=False,
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
602 )
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603
10136
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
604 status = "changed" if ok else "unchanged"
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
605 data = ""
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
606 except ISortError as err:
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
607 status = "failed"
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
608 data = str(err)
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
609
10136
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
610 return IsortResult(status=status, filename=filename, data=data)
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
612
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
613 @dataclass
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
614 class IsortStatistics:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
615 """
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
616 Class containing the isort statistic data.
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
617 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
618
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
619 skippedCount: int = 0
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
620 changeCount: int = 0
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
621 sameCount: int = 0
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
622 failureCount: int = 0
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
623 processedCount: int = 0
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
624
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
625
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
626 @dataclass
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
627 class IsortResult:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
628 """
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
629 Class containing the isort result data.
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
630 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
631
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
632 status: str = ""
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
633 filename: str = ""
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
634 data: str = ""

eric ide

mercurial