src/eric7/CodeFormatting/IsortFormattingDialog.py

Fri, 15 Dec 2023 14:07:43 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 15 Dec 2023 14:07:43 +0100
branch
eric7
changeset 10409
8d888f38bf89
parent 10136
ae09a4a9b0d1
child 10439
21c28b0f9e41
permissions
-rw-r--r--

Fixed an issue in the "isort" interface caused by a change in isort >= 5.13.0.

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
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9481
diff changeset
3 # Copyright (c) 2022 - 2023 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):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 self.accept()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 elif button is self.__sortImportsButton:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 self.__sortImportsButtonClicked()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 @pyqtSlot()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 def __sortImportsButtonClicked(self):
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 Private slot handling the selection of the 'Sort Imports' button.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 """
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
275 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
276 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
277 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
278 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
279 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
280 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
281 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
282
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 self.__config["__action__"] = IsortFormattingAction.Sort
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 self.__performAction()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 @pyqtSlot(QTreeWidgetItem, int)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 def on_resultsList_itemDoubleClicked(self, item, column):
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 Private slot handling a double click of a result item.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 @param item reference to the double clicked item
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 @type QTreeWidgetItem
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 @param column column number that was double clicked
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 @type int
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 dataType = item.data(0, IsortFormattingDialog.DataTypeRole)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 if dataType == "error":
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 EricMessageBox.critical(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 self,
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
300 self.tr("Imports Sorting Failure"),
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
301 self.tr(
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
302 "<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
303 ).format(item.data(0, IsortFormattingDialog.DataRole)),
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 elif dataType == "diff":
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 if self.__diffDialog is None:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 self.__diffDialog = FormattingDiffWidget()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 self.__diffDialog.showDiff(item.data(0, IsortFormattingDialog.DataRole))
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 @pyqtSlot(str)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 def on_statusFilterComboBox_currentTextChanged(self, status):
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 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
314
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 @param status selected status
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 @type str
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 for row in range(self.resultsList.topLevelItemCount()):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 itm = self.resultsList.topLevelItem(row)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 itm.setHidden(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 status != self.__allFilter
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 and itm.text(IsortFormattingDialog.StatusColumn) != status
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 def closeEvent(self, evt):
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 Protected slot implementing a close event handler.
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 @param evt reference to the close event
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 @type QCloseEvent
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 if self.__diffDialog is not None:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 self.__diffDialog.close()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 evt.accept()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 def __handleIsortResult(self, filename, status, data=""):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 """
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
338 Private method to handle an isort sorting result.
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 @param filename name of the processed file
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 @type str
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 @param status status of the performed action (one of 'changed', 'failed',
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 'skipped' or 'unchanged')
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 data action data (error message or unified diff) (defaults to "")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 @type str (optional)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 isError = False
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 if status == "changed":
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
351 statusMsg = (
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 self.tr("would resort")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 if self.__config["__action__"]
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 in (IsortFormattingAction.Check, IsortFormattingAction.Diff)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 else self.tr("resorted")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 self.__statistics.changeCount += 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 elif status == "unchanged":
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 statusMsg = self.tr("unchanged")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 self.__statistics.sameCount += 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 elif status == "skipped":
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 statusMsg = self.tr("skipped")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365 self.__statistics.skippedCount += 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 elif status == "failed":
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 statusMsg = self.tr("failed")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 self.__statistics.failureCount += 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 isError = True
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 elif status == "unsupported":
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 statusMsg = self.tr("error")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 data = self.tr("Unsupported 'isort' action ({0}) given.").format(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 self.__config["__action__"]
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 self.__statistics.failureCount += 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 isError = True
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 else:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 statusMsg = self.tr("invalid status ({0})").format(status)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 self.__statistics.failureCount += 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 isError = True
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 if status != "skipped":
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 self.__statistics.processedCount += 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387
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
388 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
389 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
390 [
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 statusMsg,
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.__project.getRelativePath(filename)
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 if self.__project
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 else filename,
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
395 ],
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
396 )
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
397 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
398 itm.setData(0, IsortFormattingDialog.FileNameRole, filename)
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399 if data:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 itm.setData(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
401 0, IsortFormattingDialog.DataTypeRole, "error" if isError else "diff"
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
402 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
403 itm.setData(0, IsortFormattingDialog.DataRole, data)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
405 self.progressBar.setValue(self.progressBar.value() + 1)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 QCoreApplication.processEvents()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
409 def __sortManyFiles(self, files):
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410 """
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
411 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
412 using multiple processes in parallel.
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414 @param files list of files to be processed
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 @type list of str
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
416 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 maxProcesses = Preferences.getUI("BackgroundServiceProcesses")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 if maxProcesses == 0:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 # determine based on CPU count
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
420 try:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
421 NumberOfProcesses = multiprocessing.cpu_count()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
422 if NumberOfProcesses >= 1:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
423 NumberOfProcesses -= 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
424 except NotImplementedError:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
425 NumberOfProcesses = 1
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
426 else:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
427 NumberOfProcesses = maxProcesses
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429 # Create queues
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 taskQueue = multiprocessing.Queue()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431 doneQueue = multiprocessing.Queue()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 # Submit tasks (initially two times the number of processes)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 tasks = len(files)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435 initialTasks = min(2 * NumberOfProcesses, tasks)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 for _ in range(initialTasks):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437 file = files.pop(0)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
438 taskQueue.put((file, self.__config["__action__"]))
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 # Start worker processes
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 workers = [
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 multiprocessing.Process(
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
443 target=self.sortingWorkerTask,
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444 args=(taskQueue, doneQueue, self.__isortConfig),
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446 for _ in range(NumberOfProcesses)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 ]
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448 for worker in workers:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449 worker.start()
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 # Get the results from the worker tasks
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
452 for _ in range(tasks):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453 result = doneQueue.get()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 self.__handleIsortResult(result.filename, result.status, data=result.data)
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 if self.__cancelled:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457 break
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459 if files:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 file = files.pop(0)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461 taskQueue.put((file, self.__config["__action__"]))
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 # Tell child processes to stop
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 for _ in range(NumberOfProcesses):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465 taskQueue.put("STOP")
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 for worker in workers:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468 worker.join()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469 worker.close()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
470
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471 taskQueue.close()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 doneQueue.close()
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 self.__finish()
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 @staticmethod
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
477 def sortingWorkerTask(inputQueue, outputQueue, isortConfig):
9453
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 Static method acting as the parallel worker for the formatting task.
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 @param inputQueue input queue
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
482 @type multiprocessing.Queue
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
483 @param outputQueue output queue
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484 @type multiprocessing.Queue
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485 @param isortConfig config object for isort
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
486 @type isort.Config
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488 for file, action in iter(inputQueue.get, "STOP"):
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 if action == IsortFormattingAction.Diff:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
490 result = IsortFormattingDialog.__isortCheckFile(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 file,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
492 isortConfig,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
493 withDiff=True,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
495
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
496 elif action == IsortFormattingAction.Sort:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497 result = IsortFormattingDialog.__isortSortFile(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
498 file,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499 isortConfig,
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
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 else:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503 result = IsortResult(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 status="unsupported",
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 filename=file,
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
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508 outputQueue.put(result)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
510 def __sortOneFile(self, file):
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
511 """
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
512 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
513 configuration.
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
514
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
515 @param file name of the file to be processed
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
516 @type str
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
517 """
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
518 if self.__config["__action__"] == IsortFormattingAction.Diff:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
519 result = IsortFormattingDialog.__isortCheckFile(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
520 file,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
521 self.__isortConfig,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
522 withDiff=True,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
523 )
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
524
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
525 elif self.__config["__action__"] == IsortFormattingAction.Sort:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
526 result = IsortFormattingDialog.__isortSortFile(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
527 file,
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
528 self.__isortConfig,
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
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
531 else:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
532 result = IsortResult(
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
533 status="unsupported",
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
534 filename=file,
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
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
537 self.__handleIsortResult(result.filename, result.status, data=result.data)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
538
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
539 self.__finish()
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 @staticmethod
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542 def __isortCheckFile(filename, isortConfig, withDiff=True):
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 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
545
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546 @param filename name of the file to be processed
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 @type str
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548 @param isortConfig config object for isort
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 @type isort.Config
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550 @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
551 be changed (defaults to True)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
552 @type bool (optional)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
553 @return result object
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554 @rtype IsortResult
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
555 """
10136
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
556 try:
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
557 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
558 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
559 ok = check_file(
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
560 filename,
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
561 show_diff=diffIO,
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
562 config=isortConfig,
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
563 )
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
564 if withDiff:
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
565 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
566 diffIO.close()
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
567 else:
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
568 data = ""
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569
10136
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
570 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
571 except ISortError as err:
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
572 status = "failed"
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
573 data = str(err)
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
574
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
575 return IsortResult(status=status, filename=filename, data=data)
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
576
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
577 @staticmethod
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
578 def __isortSortFile(filename, isortConfig):
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 Static method to sort the import statements of a file.
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 @param filename name of the file to be processed
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
583 @type str
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
584 @param isortConfig config object for isort
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
585 @type isort.Config
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586 @return result object
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587 @rtype IsortResult
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588 """
10136
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
589 try:
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
590 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
591 ok = sort_file(
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
592 filename,
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
593 config=isortConfig,
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
594 ask_to_apply=False,
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
595 write_to_stdout=False,
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
596 show_diff=False,
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
597 )
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
598
10136
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
599 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
600 data = ""
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
601 except ISortError as err:
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
602 status = "failed"
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
603 data = str(err)
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
604
10136
ae09a4a9b0d1 Improved the error handling of the isort formatting dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
605 return IsortResult(status=status, filename=filename, data=data)
9453
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
607
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
608 @dataclass
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
609 class IsortStatistics:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
610 """
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
611 Class containing the isort statistic data.
9453
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
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
614 skippedCount: int = 0
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
615 changeCount: int = 0
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
616 sameCount: int = 0
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
617 failureCount: int = 0
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
618 processedCount: int = 0
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
619
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
620
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
621 @dataclass
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
622 class IsortResult:
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
623 """
9455
5f138ee215a5 Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9453
diff changeset
624 Class containing the isort result data.
9453
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
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
627 status: str = ""
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
628 filename: str = ""
e5065dde905d Code Formatting
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
629 data: str = ""

eric ide

mercurial