--- 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) ]