src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py

branch
eric7
changeset 9458
3b41bb7d1623
parent 9413
80c06d472826
child 9473
3f23dbf37dbe
--- a/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py	Mon Oct 31 17:54:41 2022 +0100
+++ b/src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py	Tue Nov 01 16:46:35 2022 +0100
@@ -39,6 +39,7 @@
 
 from .Miscellaneous.MiscellaneousDefaults import MiscellaneousCheckerDefaultArgs
 from .Annotations.AnnotationsCheckerDefaults import AnnotationsCheckerDefaultArgs
+from .Security.SecurityDefaults import SecurityDefaults
 
 
 class CodeStyleCheckerDialog(QDialog, Ui_CodeStyleCheckerDialog):
@@ -151,6 +152,9 @@
         self.ecHighRiskCombo.addItems(CodeStyleCheckerDialog.cryptoBitSelectionsEc)
         self.ecMediumRiskCombo.addItems(CodeStyleCheckerDialog.cryptoBitSelectionsEc)
 
+        self.sortOrderComboBox.addItem("Natural", "natural")
+        self.sortOrderComboBox.addItem("Native Python", "native")
+
         self.statisticsButton.setEnabled(False)
         self.showButton.setEnabled(False)
         self.cancelButton.setEnabled(True)
@@ -417,142 +421,56 @@
         else:
             self.allowAllButton.setChecked(True)
 
-    def prepare(self, fileList, project):
+    def getDefaults(self):
         """
-        Public method to prepare the dialog with a list of filenames.
-
-        @param fileList list of filenames
-        @type list of str
-        @param project reference to the project object
-        @type Project
-        """
-        self.__fileOrFileList = fileList[:]
-        self.__project = project
-        self.__forProject = True
-
-        self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(True)
-        self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setDefault(True)
-        self.cancelButton.setEnabled(False)
+        Public method to get a dictionary containing the default values.
 
-        self.__data = self.__project.getData("CHECKERSPARMS", "Pep8Checker")
-        if self.__data is None or len(self.__data) < 6:
-            # initialize the data structure
-            self.__data = {
-                "ExcludeFiles": "",
-                "ExcludeMessages": pycodestyle.DEFAULT_IGNORE,
-                "IncludeMessages": "",
-                "RepeatMessages": False,
-                "FixCodes": "",
-                "FixIssues": False,
-            }
-        if "EnabledCheckerCategories" not in self.__data:
-            self.__data["EnabledCheckerCategories"] = ",".join(
+        @return dictionary containing the default values
+        @rtype dict
+        """
+        defaults = {
+            # General
+            "ExcludeFiles": "",
+            "ExcludeMessages": pycodestyle.DEFAULT_IGNORE,
+            "IncludeMessages": "",
+            "RepeatMessages": False,
+            "FixCodes": "",
+            "FixIssues": False,
+            "EnabledCheckerCategories": ",".join(
                 CodeStyleCheckerDialog.checkCategories.keys()
-            )
-        if "MaxLineLength" not in self.__data:
-            self.__data["MaxLineLength"] = 88
+            ),
+            "MaxLineLength": 88,
             # better code formatting than pycodestyle.MAX_LINE_LENGTH
             # see the Black tool
-        if "MaxDocLineLength" not in self.__data:
-            self.__data["MaxDocLineLength"] = 88
-        if "BlankLines" not in self.__data:
-            self.__data["BlankLines"] = (2, 1)
-            # top level, method
-        if "HangClosing" not in self.__data:
-            self.__data["HangClosing"] = False
-        if "NoFixCodes" not in self.__data:
-            self.__data["NoFixCodes"] = "E501"
-        if "DocstringType" not in self.__data:
-            self.__data["DocstringType"] = "pep257"
-        if "ShowIgnored" not in self.__data:
-            self.__data["ShowIgnored"] = False
-        if "MaxCodeComplexity" not in self.__data:
-            self.__data["MaxCodeComplexity"] = 10
-        if "LineComplexity" not in self.__data:
-            self.__data["LineComplexity"] = 15
-        if "LineComplexityScore" not in self.__data:
-            self.__data["LineComplexityScore"] = 10
-        if "ValidEncodings" not in self.__data:
-            self.__data["ValidEncodings"] = MiscellaneousCheckerDefaultArgs[
-                "CodingChecker"
-            ]
-        if (
-            "CopyrightMinFileSize" not in self.__data
-            or "CopyrightAuthor" not in self.__data
-        ):
-            self.__data["CopyrightMinFileSize"] = MiscellaneousCheckerDefaultArgs[
-                "CopyrightChecker"
-            ]["MinFilesize"]
-            self.__data["CopyrightAuthor"] = MiscellaneousCheckerDefaultArgs[
-                "CopyrightChecker"
-            ]["Author"]
-        if "FutureChecker" not in self.__data:
-            self.__data["FutureChecker"] = ""
-        if "BuiltinsChecker" not in self.__data:
-            self.__data["BuiltinsChecker"] = copy.deepcopy(
+            "MaxDocLineLength": 88,
+            "BlankLines": (2, 1),  # top level, method
+            "HangClosing": False,
+            "NoFixCodes": "E501",
+            "DocstringType": "pep257",
+            "ShowIgnored": False,
+            # Complexity
+            "MaxCodeComplexity": 10,
+            "LineComplexity": 15,
+            "LineComplexityScore": 10,
+            # Miscellaneous
+            "ValidEncodings": MiscellaneousCheckerDefaultArgs["CodingChecker"],
+            "CopyrightMinFileSize": MiscellaneousCheckerDefaultArgs["CopyrightChecker"][
+                "MinFilesize"
+            ],
+            "CopyrightAuthor": MiscellaneousCheckerDefaultArgs["CopyrightChecker"][
+                "Author"
+            ],
+            "FutureChecker": "",
+            "BuiltinsChecker": copy.deepcopy(
                 MiscellaneousCheckerDefaultArgs["BuiltinsChecker"]
-            )
-
-        if "CommentedCodeChecker" not in self.__data:
-            self.__data["CommentedCodeChecker"] = copy.deepcopy(
+            ),
+            "CommentedCodeChecker": copy.deepcopy(
                 MiscellaneousCheckerDefaultArgs["CommentedCodeChecker"]
-            )
-        if "WhiteList" not in self.__data["CommentedCodeChecker"]:
-            self.__data["CommentedCodeChecker"][
-                "WhiteList"
-            ] = MiscellaneousCheckerDefaultArgs["CommentedCodeChecker"]["WhiteList"][:]
-
-        if "AnnotationsChecker" not in self.__data:
-            self.__data["AnnotationsChecker"] = copy.deepcopy(
-                AnnotationsCheckerDefaultArgs
-            )
-        else:
-            # We are upgrading from an older data structure
-            if "MaximumLength" not in self.__data["AnnotationsChecker"]:
-                # MaximumLength is the sentinel for the first extension
-                self.__data["AnnotationsChecker"].update(
-                    {
-                        "MaximumLength": AnnotationsCheckerDefaultArgs["MaximumLength"],
-                        "SuppressNoneReturning": AnnotationsCheckerDefaultArgs[
-                            "SuppressNoneReturning"
-                        ],
-                        "SuppressDummyArgs": AnnotationsCheckerDefaultArgs[
-                            "SuppressDummyArgs"
-                        ],
-                        "AllowUntypedDefs": AnnotationsCheckerDefaultArgs[
-                            "AllowUntypedDefs"
-                        ],
-                        "AllowUntypedNested": AnnotationsCheckerDefaultArgs[
-                            "AllowUntypedNested"
-                        ],
-                        "MypyInitReturn": AnnotationsCheckerDefaultArgs[
-                            "MypyInitReturn"
-                        ],
-                        "DispatchDecorators": AnnotationsCheckerDefaultArgs[
-                            "DispatchDecorators"
-                        ],
-                        "OverloadDecorators": AnnotationsCheckerDefaultArgs[
-                            "OverloadDecorators"
-                        ],
-                    }
-                )
-            if "AllowStarArgAny" not in self.__data["AnnotationsChecker"]:
-                # AllowStarArgAny is the sentinel for the second extension
-                self.__data["AnnotationsChecker"].update(
-                    {
-                        "AllowStarArgAny": AnnotationsCheckerDefaultArgs[
-                            "AllowStarArgAny"
-                        ],
-                        "ForceFutureAnnotations": AnnotationsCheckerDefaultArgs[
-                            "ForceFutureAnnotations"
-                        ],
-                    }
-                )
-
-        if "SecurityChecker" not in self.__data:
-            from .Security.SecurityDefaults import SecurityDefaults
-
-            self.__data["SecurityChecker"] = {
+            ),
+            # Annotations
+            "AnnotationsChecker": copy.deepcopy(AnnotationsCheckerDefaultArgs),
+            # Security
+            "SecurityChecker": {
                 "HardcodedTmpDirectories": SecurityDefaults[
                     "hardcoded_tmp_directories"
                 ],
@@ -571,14 +489,105 @@
                 "WeakKeySizeEcHigh": str(SecurityDefaults["weak_key_size_ec_high"]),
                 "WeakKeySizeEcMedium": str(SecurityDefaults["weak_key_size_ec_medium"]),
                 "CheckTypedException": SecurityDefaults["check_typed_exception"],
-            }
-
-        if "ImportsChecker" not in self.__data:
-            self.__data["ImportsChecker"] = {
+            },
+            # Imports
+            "ImportsChecker": {
                 "ApplicationPackageNames": [],
                 "BannedModules": [],
                 "BanRelativeImports": "",
-            }
+                "SortOrder": "natural",
+                "SortCaseSensitive": False,
+            },
+        }
+
+        return defaults
+
+    def prepare(self, fileList, project):
+        """
+        Public method to prepare the dialog with a list of filenames.
+
+        @param fileList list of filenames
+        @type list of str
+        @param project reference to the project object
+        @type Project
+        """
+        self.__fileOrFileList = fileList[:]
+        self.__project = project
+        self.__forProject = True
+
+        self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setEnabled(True)
+        self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setDefault(True)
+        self.cancelButton.setEnabled(False)
+
+        defaultParameters = self.getDefaults()
+        self.__data = self.__project.getData("CHECKERSPARMS", "Pep8Checker")
+        if self.__data is None or len(self.__data) < 6:
+            # initialize the data structure
+            self.__data = defaultParameters
+        else:
+            for key in defaultParameters:
+                if key not in self.__data:
+                    self.__data[key] = defaultParameters[key]
+
+            if "WhiteList" not in self.__data["CommentedCodeChecker"]:
+                self.__data["CommentedCodeChecker"]["WhiteList"] = defaultParameters[
+                    "CommentedCodeChecker"
+                ]["WhiteList"][:]
+
+            # Upgrading AnnotationsChecker from older data structures
+            if "MaximumLength" not in self.__data["AnnotationsChecker"]:
+                # MaximumLength is the sentinel for the first extension
+                self.__data["AnnotationsChecker"].update(
+                    {
+                        "MaximumLength": defaultParameters["AnnotationsChecker"][
+                            "MaximumLength"
+                        ],
+                        "SuppressNoneReturning": defaultParameters[
+                            "AnnotationsChecker"
+                        ]["SuppressNoneReturning"],
+                        "SuppressDummyArgs": defaultParameters["AnnotationsChecker"][
+                            "SuppressDummyArgs"
+                        ],
+                        "AllowUntypedDefs": defaultParameters["AnnotationsChecker"][
+                            "AllowUntypedDefs"
+                        ],
+                        "AllowUntypedNested": defaultParameters["AnnotationsChecker"][
+                            "AllowUntypedNested"
+                        ],
+                        "MypyInitReturn": defaultParameters["AnnotationsChecker"][
+                            "MypyInitReturn"
+                        ],
+                        "DispatchDecorators": defaultParameters["AnnotationsChecker"][
+                            "DispatchDecorators"
+                        ],
+                        "OverloadDecorators": defaultParameters["AnnotationsChecker"][
+                            "OverloadDecorators"
+                        ],
+                    }
+                )
+            if "AllowStarArgAny" not in self.__data["AnnotationsChecker"]:
+                # AllowStarArgAny is the sentinel for the second extension
+                self.__data["AnnotationsChecker"].update(
+                    {
+                        "AllowStarArgAny": defaultParameters["AnnotationsChecker"][
+                            "AllowStarArgAny"
+                        ],
+                        "ForceFutureAnnotations": defaultParameters[
+                            "AnnotationsChecker"
+                        ]["ForceFutureAnnotations"],
+                    }
+                )
+
+            # Upgrading ImportsChecker from older data structures
+            if "SortOrder" not in self.__data["ImportsChecker"]:
+                self.__data["ImportsChecker"].update(
+                    {
+                        "SortOrder": defaultParameters["ImportsChecker"]["SortOrder"],
+                        "SortCaseSensitive": defaultParameters["ImportsChecker"][
+                            "SortCaseSensitive"
+                        ],
+                    }
+                )
 
         self.__initCategoriesList(self.__data["EnabledCheckerCategories"])
         self.excludeFilesEdit.setText(self.__data["ExcludeFiles"])
@@ -682,6 +691,23 @@
             self.__data["SecurityChecker"]["CheckTypedException"]
         )
 
+        # ImportsChecker
+        self.appPackagesEdit.setPlainText(
+            " ".join(sorted(self.__data["ImportsChecker"]["ApplicationPackageNames"]))
+        )
+        self.bannedModulesEdit.setPlainText(
+            " ".join(sorted(self.__data["ImportsChecker"]["BannedModules"]))
+        )
+        self.__setBanRelativeImports(
+            self.__data["ImportsChecker"]["BanRelativeImports"]
+        )
+        self.sortOrderComboBox.setCurrentIndex(
+            self.sortOrderComboBox.findData(self.__data["ImportsChecker"]["SortOrder"])
+        )
+        self.sortCaseSensitiveCheckBox.setChecked(
+            self.__data["ImportsChecker"]["SortCaseSensitive"]
+        )
+
         self.__cleanupData()
 
     def __prepareProgress(self):
@@ -858,6 +884,8 @@
                 ),
                 "BannedModules": sorted(self.bannedModulesEdit.toPlainText().split()),
                 "BanRelativeImports": self.__getBanRelativeImportsValue(),
+                "SortOrder": self.sortOrderComboBox.currentData(),
+                "SortCaseSensitive": self.sortCaseSensitiveCheckBox.isChecked(),
             }
 
             self.__options = [
@@ -1297,6 +1325,8 @@
                         self.bannedModulesEdit.toPlainText().split()
                     ),
                     "BanRelativeImports": self.__getBanRelativeImportsValue(),
+                    "SortOrder": self.sortOrderComboBox.currentData(),
+                    "SortCaseSensitive": self.sortCaseSensitiveCheckBox.isChecked(),
                 },
             }
             if json.dumps(data, sort_keys=True) != json.dumps(
@@ -1473,118 +1503,143 @@
         """
         Private slot to load the default configuration values.
         """
+        defaultParameters = self.getDefaults()
+        settings = Preferences.getSettings()
+
         self.__initCategoriesList(
-            Preferences.getSettings().value(
+            settings.value(
                 "PEP8/EnabledCheckerCategories",
-                ",".join(CodeStyleCheckerDialog.checkCategories.keys()),
+                defaultParameters["EnabledCheckerCategories"],
             )
         )
         self.excludeFilesEdit.setText(
-            Preferences.getSettings().value("PEP8/ExcludeFilePatterns", "")
+            settings.value(
+                "PEP8/ExcludeFilePatterns", defaultParameters["ExcludeFiles"]
+            )
         )
         self.excludeMessagesEdit.setText(
-            Preferences.getSettings().value(
-                "PEP8/ExcludeMessages", pycodestyle.DEFAULT_IGNORE
-            )
+            settings.value("PEP8/ExcludeMessages", defaultParameters["ExcludeMessages"])
         )
         self.includeMessagesEdit.setText(
-            Preferences.getSettings().value("PEP8/IncludeMessages", "")
+            settings.value("PEP8/IncludeMessages", defaultParameters["IncludeMessages"])
         )
         self.repeatCheckBox.setChecked(
             Preferences.toBool(
-                Preferences.getSettings().value("PEP8/RepeatMessages", False)
+                settings.value(
+                    "PEP8/RepeatMessages", defaultParameters["RepeatMessages"]
+                )
             )
         )
-        self.fixIssuesEdit.setText(Preferences.getSettings().value("PEP8/FixCodes", ""))
+        self.fixIssuesEdit.setText(
+            settings.value("PEP8/FixCodes", defaultParameters["FixCodes"])
+        )
         self.noFixIssuesEdit.setText(
-            Preferences.getSettings().value("PEP8/NoFixCodes", "E501")
+            settings.value("PEP8/NoFixCodes", defaultParameters["NoFixCodes"])
         )
         self.fixIssuesCheckBox.setChecked(
-            Preferences.toBool(Preferences.getSettings().value("PEP8/FixIssues", False))
+            Preferences.toBool(
+                settings.value("PEP8/FixIssues", defaultParameters["FixIssues"])
+            )
         )
         self.ignoredCheckBox.setChecked(
             Preferences.toBool(
-                Preferences.getSettings().value("PEP8/ShowIgnored", False)
+                settings.value("PEP8/ShowIgnored", defaultParameters["ShowIgnored"])
             )
         )
         self.lineLengthSpinBox.setValue(
-            int(Preferences.getSettings().value("PEP8/MaxLineLength", 88))
+            int(
+                settings.value("PEP8/MaxLineLength", defaultParameters["MaxLineLength"])
+            )
         )
         self.docLineLengthSpinBox.setValue(
-            int(Preferences.getSettings().value("PEP8/MaxDocLineLength", 88))
+            int(
+                settings.value(
+                    "PEP8/MaxDocLineLength", defaultParameters["MaxDocLineLength"]
+                )
+            )
         )
         self.blankBeforeTopLevelSpinBox.setValue(
-            int(Preferences.getSettings().value("PEP8/BlankLinesBeforeTopLevel", 2))
+            int(
+                settings.value(
+                    "PEP8/BlankLinesBeforeTopLevel", defaultParameters["BlankLines"][0]
+                )
+            )
         )
         self.blankBeforeMethodSpinBox.setValue(
-            int(Preferences.getSettings().value("PEP8/BlankLinesBeforeMethod", 1))
+            int(
+                settings.value(
+                    "PEP8/BlankLinesBeforeMethod", defaultParameters["BlankLines"][1]
+                )
+            )
         )
         self.hangClosingCheckBox.setChecked(
             Preferences.toBool(
-                Preferences.getSettings().value("PEP8/HangClosing", False)
+                settings.value("PEP8/HangClosing", defaultParameters["HangClosing"])
             )
         )
         self.docTypeComboBox.setCurrentIndex(
             self.docTypeComboBox.findData(
-                Preferences.getSettings().value("PEP8/DocstringType", "pep257")
+                settings.value("PEP8/DocstringType", defaultParameters["DocstringType"])
             )
         )
         self.complexitySpinBox.setValue(
-            int(Preferences.getSettings().value("PEP8/MaxCodeComplexity", 10))
+            int(
+                settings.value(
+                    "PEP8/MaxCodeComplexity", defaultParameters["MaxCodeComplexity"]
+                )
+            )
         )
         self.lineComplexitySpinBox.setValue(
-            int(Preferences.getSettings().value("PEP8/LineComplexity", 15))
+            int(
+                settings.value(
+                    "PEP8/LineComplexity", defaultParameters["LineComplexity"]
+                )
+            )
         )
         self.lineComplexityScoreSpinBox.setValue(
-            int(Preferences.getSettings().value("PEP8/LineComplexityScore", 10))
+            int(
+                settings.value(
+                    "PEP8/LineComplexityScore", defaultParameters["LineComplexityScore"]
+                )
+            )
         )
         self.encodingsEdit.setText(
-            Preferences.getSettings().value(
-                "PEP8/ValidEncodings", MiscellaneousCheckerDefaultArgs["CodingChecker"]
-            )
+            settings.value("PEP8/ValidEncodings", defaultParameters["ValidEncodings"])
         )
         self.copyrightFileSizeSpinBox.setValue(
             int(
-                Preferences.getSettings().value(
+                settings.value(
                     "PEP8/CopyrightMinFileSize",
-                    MiscellaneousCheckerDefaultArgs["CopyrightChecker"]["MinFilesize"],
+                    defaultParameters["CopyrightMinFileSize"],
                 )
             )
         )
         self.copyrightAuthorEdit.setText(
-            Preferences.getSettings().value(
-                "PEP8/CopyrightAuthor",
-                MiscellaneousCheckerDefaultArgs["CopyrightChecker"]["Author"],
-            )
+            settings.value("PEP8/CopyrightAuthor", defaultParameters["CopyrightAuthor"])
         )
         self.__initFuturesList(
-            Preferences.getSettings().value("PEP8/FutureChecker", "")
+            settings.value("PEP8/FutureChecker", defaultParameters["FutureChecker"])
         )
         self.__initBuiltinsIgnoreList(
             Preferences.toDict(
-                Preferences.getSettings().value(
-                    "PEP8/BuiltinsChecker",
-                    MiscellaneousCheckerDefaultArgs["BuiltinsChecker"],
+                settings.value(
+                    "PEP8/BuiltinsChecker", defaultParameters["BuiltinsChecker"]
                 )
             )
         )
         self.aggressiveCheckBox.setChecked(
             Preferences.toBool(
-                Preferences.getSettings().value(
+                settings.value(
                     "PEP8/AggressiveSearch",
-                    MiscellaneousCheckerDefaultArgs["CommentedCodeChecker"][
-                        "Aggressive"
-                    ],
+                    defaultParameters["CommentedCodeChecker"]["Aggressive"],
                 )
             )
         )
         self.__initCommentedCodeCheckerWhiteList(
             Preferences.toList(
-                Preferences.getSettings().value(
+                settings.value(
                     "PEP8/CommentedCodeWhitelist",
-                    MiscellaneousCheckerDefaultArgs["CommentedCodeChecker"][
-                        "WhiteList"
-                    ],
+                    defaultParameters["CommentedCodeChecker"]["WhiteList"],
                 )
             )
         )
@@ -1592,90 +1647,90 @@
         # Type Annotations Checker
         self.minAnnotationsCoverageSpinBox.setValue(
             int(
-                Preferences.getSettings().value(
+                settings.value(
                     "PEP8/MinimumAnnotationsCoverage",
-                    AnnotationsCheckerDefaultArgs["MinimumCoverage"],
+                    defaultParameters["AnnotationsChecker"]["MinimumCoverage"],
                 )
             )
         )
         self.maxAnnotationsComplexitySpinBox.setValue(
             int(
-                Preferences.getSettings().value(
+                settings.value(
                     "PEP8/MaximumAnnotationComplexity",
-                    AnnotationsCheckerDefaultArgs["MaximumComplexity"],
+                    defaultParameters["AnnotationsChecker"]["MaximumComplexity"],
                 )
             )
         )
         self.maxAnnotationsLengthSpinBox.setValue(
             int(
-                Preferences.getSettings().value(
+                settings.value(
                     "PEP8/MaximumAnnotationLength",
-                    AnnotationsCheckerDefaultArgs["MaximumLength"],
+                    defaultParameters["AnnotationsChecker"]["MaximumLength"],
                 )
             )
         )
         self.suppressNoneReturningCheckBox.setChecked(
             Preferences.toBool(
-                Preferences.getSettings().value(
+                settings.value(
                     "PEP8/SuppressNoneReturning",
-                    AnnotationsCheckerDefaultArgs["SuppressNoneReturning"],
+                    defaultParameters["AnnotationsChecker"]["SuppressNoneReturning"],
                 )
             )
         )
         self.suppressDummyArgsCheckBox.setChecked(
             Preferences.toBool(
-                Preferences.getSettings().value(
+                settings.value(
                     "PEP8/SuppressDummyArgs",
-                    AnnotationsCheckerDefaultArgs["SuppressDummyArgs"],
+                    defaultParameters["AnnotationsChecker"]["SuppressDummyArgs"],
                 )
             )
         )
         self.allowUntypedDefsCheckBox.setChecked(
             Preferences.toBool(
-                Preferences.getSettings().value(
+                settings.value(
                     "PEP8/AllowUntypedDefs",
-                    AnnotationsCheckerDefaultArgs["AllowUntypedDefs"],
+                    defaultParameters["AnnotationsChecker"]["AllowUntypedDefs"],
                 )
             )
         )
         self.allowUntypedNestedCheckBox.setChecked(
             Preferences.toBool(
-                Preferences.getSettings().value(
+                settings.value(
                     "PEP8/AllowUntypedNested",
-                    AnnotationsCheckerDefaultArgs["AllowUntypedNested"],
+                    defaultParameters["AnnotationsChecker"]["AllowUntypedNested"],
                 )
             )
         )
         self.mypyInitReturnCheckBox.setChecked(
             Preferences.toBool(
-                Preferences.getSettings().value(
+                settings.value(
                     "PEP8/MypyInitReturn",
-                    AnnotationsCheckerDefaultArgs["MypyInitReturn"],
+                    defaultParameters["AnnotationsChecker"]["MypyInitReturn"],
                 )
             )
         )
         self.allowStarArgAnyCheckBox.setChecked(
             Preferences.toBool(
-                Preferences.getSettings().value(
+                settings.value(
                     "PEP8/AllowStarArgAny",
-                    AnnotationsCheckerDefaultArgs["AllowStarArgAny"],
+                    defaultParameters["AnnotationsChecker"]["AllowStarArgAny"],
                 )
             )
         )
         self.forceFutureAnnotationsCheckBox.setChecked(
             Preferences.toBool(
-                Preferences.getSettings().value(
+                settings.value(
                     "PEP8/ForceFutureAnnotations",
-                    AnnotationsCheckerDefaultArgs["ForceFutureAnnotations"],
+                    defaultParameters["AnnotationsChecker"]["ForceFutureAnnotations"],
                 )
             )
         )
         self.dispatchDecoratorEdit.setText(
             ", ".join(
                 Preferences.toList(
-                    Preferences.getSettings().value(
+                    settings.value(
                         "PEP8/DispatchDecorators",
-                        AnnotationsCheckerDefaultArgs["DispatchDecorators"],
+                        defaultParameters["AnnotationsChecker"]["DispatchDecorators"],
                     )
                 )
             )
@@ -1683,23 +1738,21 @@
         self.overloadDecoratorEdit.setText(
             ", ".join(
                 Preferences.toList(
-                    Preferences.getSettings().value(
+                    settings.value(
                         "PEP8/OverloadDecorators",
-                        AnnotationsCheckerDefaultArgs["OverloadDecorators"],
+                        defaultParameters["AnnotationsChecker"]["OverloadDecorators"],
                     )
                 )
             )
         )
 
         # Security Checker
-        from .Security.SecurityDefaults import SecurityDefaults
-
         self.tmpDirectoriesEdit.setPlainText(
             "\n".join(
                 Preferences.toList(
-                    Preferences.getSettings().value(
+                    settings.value(
                         "PEP8/HardcodedTmpDirectories",
-                        SecurityDefaults["hardcoded_tmp_directories"],
+                        defaultParameters["SecurityChecker"]["HardcodedTmpDirectories"],
                     )
                 )
             )
@@ -1707,8 +1760,9 @@
         self.hashesEdit.setText(
             ", ".join(
                 Preferences.toList(
-                    Preferences.getSettings().value(
-                        "PEP8/InsecureHashes", SecurityDefaults["insecure_hashes"]
+                    settings.value(
+                        "PEP8/InsecureHashes",
+                        defaultParameters["SecurityChecker"]["InsecureHashes"],
                     )
                 )
             )
@@ -1716,53 +1770,56 @@
         self.insecureSslProtocolsEdit.setPlainText(
             "\n".join(
                 Preferences.toList(
-                    Preferences.getSettings().value(
+                    settings.value(
                         "PEP8/InsecureSslProtocolVersions",
-                        SecurityDefaults["insecure_ssl_protocol_versions"],
+                        defaultParameters["SecurityChecker"][
+                            "InsecureSslProtocolVersions"
+                        ],
                     )
                 )
             )
         ),
         self.dsaHighRiskCombo.setCurrentText(
-            Preferences.getSettings().value(
+            settings.value(
                 "PEP8/WeakKeySizeDsaHigh",
-                str(SecurityDefaults["weak_key_size_dsa_high"]),
+                defaultParameters["SecurityChecker"]["WeakKeySizeDsaHigh"],
             )
         )
         self.dsaMediumRiskCombo.setCurrentText(
-            Preferences.getSettings().value(
+            settings.value(
                 "PEP8/WeakKeySizeDsaMedium",
-                str(SecurityDefaults["weak_key_size_dsa_medium"]),
+                defaultParameters["SecurityChecker"]["WeakKeySizeDsaMedium"],
             )
         ),
         self.rsaHighRiskCombo.setCurrentText(
-            Preferences.getSettings().value(
+            settings.value(
                 "PEP8/WeakKeySizeRsaHigh",
-                str(SecurityDefaults["weak_key_size_rsa_high"]),
+                defaultParameters["SecurityChecker"]["WeakKeySizeRsaHigh"],
             )
         ),
         self.rsaMediumRiskCombo.setCurrentText(
-            Preferences.getSettings().value(
+            settings.value(
                 "PEP8/WeakKeySizeRsaMedium",
-                str(SecurityDefaults["weak_key_size_rsa_medium"]),
+                defaultParameters["SecurityChecker"]["WeakKeySizeRsaMedium"],
             )
         ),
         self.ecHighRiskCombo.setCurrentText(
-            Preferences.getSettings().value(
-                "PEP8/WeakKeySizeEcHigh", str(SecurityDefaults["weak_key_size_ec_high"])
+            settings.value(
+                "PEP8/WeakKeySizeEcHigh",
+                defaultParameters["SecurityChecker"]["WeakKeySizeEcHigh"],
             )
         ),
         self.ecMediumRiskCombo.setCurrentText(
-            Preferences.getSettings().value(
+            settings.value(
                 "PEP8/WeakKeySizeEcMedium",
-                str(SecurityDefaults["weak_key_size_ec_medium"]),
+                defaultParameters["SecurityChecker"]["WeakKeySizeEcMedium"],
             )
         ),
         self.typedExceptionsCheckBox.setChecked(
             Preferences.toBool(
-                Preferences.getSettings().value(
+                settings.value(
                     "PEP8/CheckTypedException",
-                    SecurityDefaults["check_typed_exception"],
+                    defaultParameters["SecurityChecker"]["CheckTypedException"],
                 )
             )
         ),
@@ -1772,8 +1829,11 @@
             " ".join(
                 sorted(
                     Preferences.toList(
-                        Preferences.getSettings().value(
-                            "PEP8/ApplicationPackageNames", []
+                        settings.value(
+                            "PEP8/ApplicationPackageNames",
+                            defaultParameters["ImportsChecker"][
+                                "ApplicationPackageNames"
+                            ],
                         )
                     )
                 )
@@ -1783,13 +1843,34 @@
             " ".join(
                 sorted(
                     Preferences.toList(
-                        Preferences.getSettings().value("PEP8/BannedModules", [])
+                        settings.value(
+                            "PEP8/BannedModules",
+                            defaultParameters["ImportsChecker"]["BannedModules"],
+                        )
                     )
                 )
             )
         )
         self.__setBanRelativeImports(
-            Preferences.getSettings().value("PEP8/BanRelativeImports", "")
+            settings.value(
+                "PEP8/BanRelativeImports",
+                defaultParameters["ImportsChecker"]["BanRelativeImports"],
+            )
+        )
+        self.sortOrderComboBox.setCurrentIndex(
+            self.sortOrderComboBox.findData(
+                settings.value(
+                    "PEP8/SortOrder", defaultParameters["ImportsChecker"]["SortOrder"]
+                )
+            )
+        )
+        self.sortCaseSensitiveCheckBox.setChecked(
+            Preferences.toBool(
+                settings.value(
+                    "PEP8/SortCaseSensitive",
+                    defaultParameters["ImportsChecker"]["SortCaseSensitive"],
+                )
+            )
         )
 
         self.__cleanupData()
@@ -1800,314 +1881,310 @@
         Private slot to store the current configuration values as
         default values.
         """
-        Preferences.getSettings().setValue(
-            "PEP8/EnabledCheckerCategories", self.__getCategories(True)
-        )
-        Preferences.getSettings().setValue(
-            "PEP8/ExcludeFilePatterns", self.excludeFilesEdit.text()
-        )
-        Preferences.getSettings().setValue(
-            "PEP8/ExcludeMessages", self.excludeMessagesEdit.text()
-        )
-        Preferences.getSettings().setValue(
-            "PEP8/IncludeMessages", self.includeMessagesEdit.text()
-        )
-        Preferences.getSettings().setValue(
-            "PEP8/RepeatMessages", self.repeatCheckBox.isChecked()
-        )
-        Preferences.getSettings().setValue("PEP8/FixCodes", self.fixIssuesEdit.text())
-        Preferences.getSettings().setValue(
-            "PEP8/NoFixCodes", self.noFixIssuesEdit.text()
-        )
-        Preferences.getSettings().setValue(
-            "PEP8/FixIssues", self.fixIssuesCheckBox.isChecked()
-        )
-        Preferences.getSettings().setValue(
-            "PEP8/ShowIgnored", self.ignoredCheckBox.isChecked()
-        )
-        Preferences.getSettings().setValue(
-            "PEP8/MaxLineLength", self.lineLengthSpinBox.value()
-        )
-        Preferences.getSettings().setValue(
-            "PEP8/MaxDocLineLength", self.docLineLengthSpinBox.value()
-        )
-        Preferences.getSettings().setValue(
+        settings = Preferences.getSettings()
+
+        settings.setValue("PEP8/EnabledCheckerCategories", self.__getCategories(True))
+        settings.setValue("PEP8/ExcludeFilePatterns", self.excludeFilesEdit.text())
+        settings.setValue("PEP8/ExcludeMessages", self.excludeMessagesEdit.text())
+        settings.setValue("PEP8/IncludeMessages", self.includeMessagesEdit.text())
+        settings.setValue("PEP8/RepeatMessages", self.repeatCheckBox.isChecked())
+        settings.setValue("PEP8/FixCodes", self.fixIssuesEdit.text())
+        settings.setValue("PEP8/NoFixCodes", self.noFixIssuesEdit.text())
+        settings.setValue("PEP8/FixIssues", self.fixIssuesCheckBox.isChecked())
+        settings.setValue("PEP8/ShowIgnored", self.ignoredCheckBox.isChecked())
+        settings.setValue("PEP8/MaxLineLength", self.lineLengthSpinBox.value())
+        settings.setValue("PEP8/MaxDocLineLength", self.docLineLengthSpinBox.value())
+        settings.setValue(
             "PEP8/BlankLinesBeforeTopLevel", self.blankBeforeTopLevelSpinBox.value()
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/BlankLinesBeforeMethod", self.blankBeforeMethodSpinBox.value()
         )
-        Preferences.getSettings().setValue(
-            "PEP8/HangClosing", self.hangClosingCheckBox.isChecked()
-        )
-        Preferences.getSettings().setValue(
+        settings.setValue("PEP8/HangClosing", self.hangClosingCheckBox.isChecked())
+        settings.setValue(
             "PEP8/DocstringType",
             self.docTypeComboBox.itemData(self.docTypeComboBox.currentIndex()),
         )
-        Preferences.getSettings().setValue(
-            "PEP8/MaxCodeComplexity", self.complexitySpinBox.value()
-        )
-        Preferences.getSettings().setValue(
-            "PEP8/LineComplexity", self.lineComplexitySpinBox.value()
-        )
-        Preferences.getSettings().setValue(
+        settings.setValue("PEP8/MaxCodeComplexity", self.complexitySpinBox.value())
+        settings.setValue("PEP8/LineComplexity", self.lineComplexitySpinBox.value())
+        settings.setValue(
             "PEP8/LineComplexityScore", self.lineComplexityScoreSpinBox.value()
         )
-        Preferences.getSettings().setValue(
-            "PEP8/ValidEncodings", self.encodingsEdit.text()
-        )
-        Preferences.getSettings().setValue(
+        settings.setValue("PEP8/ValidEncodings", self.encodingsEdit.text())
+        settings.setValue(
             "PEP8/CopyrightMinFileSize", self.copyrightFileSizeSpinBox.value()
         )
-        Preferences.getSettings().setValue(
-            "PEP8/CopyrightAuthor", self.copyrightAuthorEdit.text()
-        )
-        Preferences.getSettings().setValue(
-            "PEP8/FutureChecker", self.__getSelectedFutureImports()
-        )
-        Preferences.getSettings().setValue(
-            "PEP8/BuiltinsChecker", self.__getBuiltinsIgnoreList()
-        )
-        Preferences.getSettings().setValue(
-            "PEP8/AggressiveSearch", self.aggressiveCheckBox.isChecked()
-        )
-        Preferences.getSettings().setValue(
+        settings.setValue("PEP8/CopyrightAuthor", self.copyrightAuthorEdit.text())
+        settings.setValue("PEP8/FutureChecker", self.__getSelectedFutureImports())
+        settings.setValue("PEP8/BuiltinsChecker", self.__getBuiltinsIgnoreList())
+        settings.setValue("PEP8/AggressiveSearch", self.aggressiveCheckBox.isChecked())
+        settings.setValue(
             "PEP8/CommentedCodeWhitelist", self.__getCommentedCodeCheckerWhiteList()
         )
 
         # Type Annotations Checker
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/MinimumAnnotationsCoverage",
             self.minAnnotationsCoverageSpinBox.value(),
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/MaximumAnnotationComplexity",
             self.maxAnnotationsComplexitySpinBox.value(),
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/MaximumAnnotationLength", self.maxAnnotationsLengthSpinBox.value()
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/SuppressNoneReturning", self.suppressNoneReturningCheckBox.isChecked()
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/SuppressDummyArgs", self.suppressDummyArgsCheckBox.isChecked()
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/AllowUntypedDefs", self.allowUntypedDefsCheckBox.isChecked()
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/AllowUntypedNested", self.allowUntypedNestedCheckBox.isChecked()
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/MypyInitReturn", self.mypyInitReturnCheckBox.isChecked()
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/AllowStarArgAny", self.allowStarArgAnyCheckBox.isChecked()
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/ForceFutureAnnotations",
             self.forceFutureAnnotationsCheckBox.isChecked(),
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/DispatchDecorators",
             [d.strip() for d in self.dispatchDecoratorEdit.text().split(",")],
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/OverloadDecorators",
             [d.strip() for d in self.overloadDecoratorEdit.text().split(",")],
         )
 
         # Security Checker
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/HardcodedTmpDirectories",
             [t.strip() for t in self.tmpDirectoriesEdit.toPlainText().splitlines()],
         ),
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/InsecureHashes",
             [h.strip() for h in self.hashesEdit.text().split(",")],
         ),
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/InsecureSslProtocolVersions",
             [
                 p.strip()
                 for p in self.insecureSslProtocolsEdit.toPlainText().splitlines()
             ],
         ),
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/WeakKeySizeDsaHigh", self.dsaHighRiskCombo.currentText()
         ),
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/WeakKeySizeDsaMedium", self.dsaMediumRiskCombo.currentText()
         ),
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/WeakKeySizeRsaHigh", self.rsaHighRiskCombo.currentText()
         ),
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/WeakKeySizeRsaMedium", self.rsaMediumRiskCombo.currentText()
         ),
-        Preferences.getSettings().setValue(
-            "PEP8/WeakKeySizeEcHigh", self.ecHighRiskCombo.currentText()
-        ),
-        Preferences.getSettings().setValue(
+        settings.setValue("PEP8/WeakKeySizeEcHigh", self.ecHighRiskCombo.currentText()),
+        settings.setValue(
             "PEP8/WeakKeySizeEcMedium", self.ecMediumRiskCombo.currentText()
         ),
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/CheckTypedException", self.typedExceptionsCheckBox.isChecked()
         ),
 
         # Imports Checker
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/ApplicationPackageNames",
             sorted(self.appPackagesEdit.toPlainText().split()),
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/BannedModules", sorted(self.bannedModulesEdit.toPlainText().split())
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/BanRelativeImports", self.__getBanRelativeImportsValue()
         )
+        settings.setValue("PEP8/SortOrder", self.sortOrderComboBox.currentData())
+        settings.setValue(
+            "PEP8/SortCaseSensitive", self.sortCaseSensitiveCheckBox.isChecked()
+        )
 
     @pyqtSlot()
     def on_resetDefaultButton_clicked(self):
         """
         Private slot to reset the configuration values to their default values.
         """
-        Preferences.getSettings().setValue(
+        defaultParameters = self.getDefaults()
+        settings = Preferences.getSettings()
+
+        settings.setValue(
             "PEP8/EnabledCheckerCategories",
-            ",".join(CodeStyleCheckerDialog.checkCategories.keys()),
+            defaultParameters["EnabledCheckerCategories"],
         )
-        Preferences.getSettings().setValue("PEP8/ExcludeFilePatterns", "")
-        Preferences.getSettings().setValue(
-            "PEP8/ExcludeMessages", pycodestyle.DEFAULT_IGNORE
+        settings.setValue("PEP8/ExcludeFilePatterns", defaultParameters["ExcludeFiles"])
+        settings.setValue("PEP8/ExcludeMessages", defaultParameters["ExcludeMessages"])
+        settings.setValue("PEP8/IncludeMessages", defaultParameters["IncludeMessages"])
+        settings.setValue("PEP8/RepeatMessages", defaultParameters["RepeatMessages"])
+        settings.setValue("PEP8/FixCodes", defaultParameters["FixCodes"])
+        settings.setValue("PEP8/NoFixCodes", defaultParameters["NoFixCodes"])
+        settings.setValue("PEP8/FixIssues", defaultParameters["FixIssues"])
+        settings.setValue("PEP8/ShowIgnored", defaultParameters["ShowIgnored"])
+        settings.setValue("PEP8/MaxLineLength", defaultParameters["MaxLineLength"])
+        settings.setValue(
+            "PEP8/MaxDocLineLength", defaultParameters["MaxDocLineLength"]
+        )
+        settings.setValue(
+            "PEP8/BlankLinesBeforeTopLevel", defaultParameters["BlankLines"][0]
         )
-        Preferences.getSettings().setValue("PEP8/IncludeMessages", "")
-        Preferences.getSettings().setValue("PEP8/RepeatMessages", False)
-        Preferences.getSettings().setValue("PEP8/FixCodes", "")
-        Preferences.getSettings().setValue("PEP8/NoFixCodes", "E501")
-        Preferences.getSettings().setValue("PEP8/FixIssues", False)
-        Preferences.getSettings().setValue("PEP8/ShowIgnored", False)
-        Preferences.getSettings().setValue("PEP8/MaxLineLength", 88)
-        Preferences.getSettings().setValue("PEP8/MaxDocLineLength", 88)
-        Preferences.getSettings().setValue("PEP8/BlankLinesBeforeTopLevel", 2)
-        Preferences.getSettings().setValue("PEP8/BlankLinesBeforeMethod", 1)
-        Preferences.getSettings().setValue("PEP8/HangClosing", False)
-        Preferences.getSettings().setValue("PEP8/DocstringType", "pep257")
-        Preferences.getSettings().setValue("PEP8/MaxCodeComplexity", 10)
-        Preferences.getSettings().setValue("PEP8/LineComplexity", 15)
-        Preferences.getSettings().setValue("PEP8/LineComplexityScore", 10)
-        Preferences.getSettings().setValue(
-            "PEP8/ValidEncodings", MiscellaneousCheckerDefaultArgs["CodingChecker"]
+        settings.setValue(
+            "PEP8/BlankLinesBeforeMethod", defaultParameters["BlankLines"][1]
+        )
+        settings.setValue("PEP8/HangClosing", defaultParameters["HangClosing"])
+        settings.setValue("PEP8/DocstringType", defaultParameters["DocstringType"])
+        settings.setValue(
+            "PEP8/MaxCodeComplexity", defaultParameters["MaxCodeComplexity"]
+        )
+        settings.setValue("PEP8/LineComplexity", defaultParameters["LineComplexity"])
+        settings.setValue(
+            "PEP8/LineComplexityScore", defaultParameters["LineComplexityScore"]
         )
-        Preferences.getSettings().setValue(
-            "PEP8/CopyrightMinFileSize",
-            MiscellaneousCheckerDefaultArgs["CopyrightChecker"]["MinFilesize"],
-        )
-        Preferences.getSettings().setValue(
-            "PEP8/CopyrightAuthor",
-            MiscellaneousCheckerDefaultArgs["CopyrightChecker"]["Author"],
+        settings.setValue("PEP8/ValidEncodings", defaultParameters["ValidEncodings"])
+        settings.setValue(
+            "PEP8/CopyrightMinFileSize", defaultParameters["CopyrightMinFileSize"]
         )
-        Preferences.getSettings().setValue("PEP8/FutureChecker", "")
-        Preferences.getSettings().setValue(
-            "PEP8/BuiltinsChecker", MiscellaneousCheckerDefaultArgs["BuiltinsChecker"]
-        )
-        Preferences.getSettings().setValue(
+        settings.setValue("PEP8/CopyrightAuthor", defaultParameters["CopyrightAuthor"])
+        settings.setValue("PEP8/FutureChecker", defaultParameters["FutureChecker"])
+        settings.setValue("PEP8/BuiltinsChecker", defaultParameters["BuiltinsChecker"])
+        settings.setValue(
             "PEP8/AggressiveSearch",
-            MiscellaneousCheckerDefaultArgs["CommentedCodeChecker"]["Aggressive"],
+            defaultParameters["CommentedCodeChecker"]["Aggressive"],
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/CommentedCodeWhitelist",
-            MiscellaneousCheckerDefaultArgs["CommentedCodeChecker"]["WhiteList"],
+            defaultParameters["CommentedCodeChecker"]["WhiteList"],
         )
 
         # Type Annotations Checker
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/MinimumAnnotationsCoverage",
-            AnnotationsCheckerDefaultArgs["MinimumCoverage"],
+            defaultParameters["AnnotationsChecker"]["MinimumCoverage"],
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/MaximumAnnotationComplexity",
-            AnnotationsCheckerDefaultArgs["MaximumComplexity"],
+            defaultParameters["AnnotationsChecker"]["MaximumComplexity"],
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/MaximumAnnotationLength",
-            AnnotationsCheckerDefaultArgs["MaximumLength"],
+            defaultParameters["AnnotationsChecker"]["MaximumLength"],
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/SuppressNoneReturning",
-            AnnotationsCheckerDefaultArgs["SuppressNoneReturning"],
+            defaultParameters["AnnotationsChecker"]["SuppressNoneReturning"],
         )
-        Preferences.getSettings().setValue(
-            "PEP8/SuppressDummyArgs", AnnotationsCheckerDefaultArgs["SuppressDummyArgs"]
+        settings.setValue(
+            "PEP8/SuppressDummyArgs",
+            defaultParameters["AnnotationsChecker"]["SuppressDummyArgs"],
         )
-        Preferences.getSettings().setValue(
-            "PEP8/AllowUntypedDefs", AnnotationsCheckerDefaultArgs["AllowUntypedDefs"]
+        settings.setValue(
+            "PEP8/AllowUntypedDefs",
+            defaultParameters["AnnotationsChecker"]["AllowUntypedDefs"],
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/AllowUntypedNested",
-            AnnotationsCheckerDefaultArgs["AllowUntypedNested"],
+            defaultParameters["AnnotationsChecker"]["AllowUntypedNested"],
         )
-        Preferences.getSettings().setValue(
-            "PEP8/MypyInitReturn", AnnotationsCheckerDefaultArgs["MypyInitReturn"]
+        settings.setValue(
+            "PEP8/MypyInitReturn",
+            defaultParameters["AnnotationsChecker"]["MypyInitReturn"],
         )
-        Preferences.getSettings().setValue(
-            "PEP8/AllowStarArgAny", AnnotationsCheckerDefaultArgs["AllowStarArgAny"]
+        settings.setValue(
+            "PEP8/AllowStarArgAny",
+            defaultParameters["AnnotationsChecker"]["AllowStarArgAny"],
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/ForceFutureAnnotations",
-            AnnotationsCheckerDefaultArgs["ForceFutureAnnotations"],
+            defaultParameters["AnnotationsChecker"]["ForceFutureAnnotations"],
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/DispatchDecorators",
-            AnnotationsCheckerDefaultArgs["DispatchDecorators"],
+            defaultParameters["AnnotationsChecker"]["DispatchDecorators"],
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/OverloadDecorators",
-            AnnotationsCheckerDefaultArgs["OverloadDecorators"],
+            defaultParameters["AnnotationsChecker"]["OverloadDecorators"],
         )
 
         # Security Checker
-        from .Security.SecurityDefaults import SecurityDefaults
-
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/HardcodedTmpDirectories",
-            SecurityDefaults["hardcoded_tmp_directories"],
+            defaultParameters["SecurityChecker"]["HardcodedTmpDirectories"],
         )
-        Preferences.getSettings().setValue(
-            "PEP8/InsecureHashes", SecurityDefaults["insecure_hashes"]
+        settings.setValue(
+            "PEP8/InsecureHashes",
+            defaultParameters["SecurityChecker"]["InsecureHashes"],
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/InsecureSslProtocolVersions",
-            SecurityDefaults["insecure_ssl_protocol_versions"],
+            defaultParameters["SecurityChecker"]["InsecureSslProtocolVersions"],
         )
-        Preferences.getSettings().setValue(
-            "PEP8/WeakKeySizeDsaHigh", str(SecurityDefaults["weak_key_size_dsa_high"])
+        settings.setValue(
+            "PEP8/WeakKeySizeDsaHigh",
+            defaultParameters["SecurityChecker"]["WeakKeySizeDsaHigh"],
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/WeakKeySizeDsaMedium",
-            str(SecurityDefaults["weak_key_size_dsa_medium"]),
+            defaultParameters["SecurityChecker"]["WeakKeySizeDsaMedium"],
         )
-        Preferences.getSettings().setValue(
-            "PEP8/WeakKeySizeRsaHigh", str(SecurityDefaults["weak_key_size_rsa_high"])
+        settings.setValue(
+            "PEP8/WeakKeySizeRsaHigh",
+            defaultParameters["SecurityChecker"]["WeakKeySizeRsaHigh"],
         )
-        Preferences.getSettings().setValue(
+        settings.setValue(
             "PEP8/WeakKeySizeRsaMedium",
-            str(SecurityDefaults["weak_key_size_rsa_medium"]),
+            defaultParameters["SecurityChecker"]["WeakKeySizeRsaMedium"],
         )
-        Preferences.getSettings().setValue(
-            "PEP8/WeakKeySizeEcHigh", str(SecurityDefaults["weak_key_size_ec_high"])
+        settings.setValue(
+            "PEP8/WeakKeySizeEcHigh",
+            defaultParameters["SecurityChecker"]["WeakKeySizeEcHigh"],
         )
-        Preferences.getSettings().setValue(
-            "PEP8/WeakKeySizeEcMedium", str(SecurityDefaults["weak_key_size_ec_medium"])
+        settings.setValue(
+            "PEP8/WeakKeySizeEcMedium",
+            defaultParameters["SecurityChecker"]["WeakKeySizeEcMedium"],
         )
-        Preferences.getSettings().setValue(
-            "PEP8/CheckTypedException", SecurityDefaults["check_typed_exception"]
+        settings.setValue(
+            "PEP8/CheckTypedException",
+            defaultParameters["SecurityChecker"]["CheckTypedException"],
         )
 
         # Imports Checker
-        Preferences.getSettings().setValue("PEP8/ApplicationPackageNames", [])
-        Preferences.getSettings().setValue("PEP8/BannedModules", [])
-        Preferences.getSettings().setValue("PEP8/BanRelativeImports", "")
+        settings.setValue(
+            "PEP8/ApplicationPackageNames",
+            defaultParameters["ImportsChecker"]["ApplicationPackageNames"],
+        )
+        settings.setValue(
+            "PEP8/BannedModules",
+            defaultParameters["ImportsChecker"]["BannedModules"],
+        )
+        settings.setValue(
+            "PEP8/BanRelativeImports",
+            defaultParameters["ImportsChecker"]["BanRelativeImports"],
+        )
+        settings.setValue(
+            "PEP8/SortOrder",
+            defaultParameters["ImportsChecker"]["SortOrder"],
+        )
+        settings.setValue(
+            "PEP8/SortCaseSensitive",
+            defaultParameters["ImportsChecker"]["SortCaseSensitive"],
+        )
 
         # Update UI with default values
         self.on_loadDefaultButton_clicked()
@@ -2387,7 +2464,7 @@
         Private method to clean the loaded/entered data of redundant entries.
         """
         # Migrate single letter exclude messages to disabled checker categories
-        # and delete them from exlude messages
+        # and delete them from exclude messages
         excludedMessages = [
             m.strip() for m in self.excludeMessagesEdit.text().split(",") if bool(m)
         ]

eric ide

mercurial