From ec2e601cbf9a56c9bee2ee3cc22999c795c1c824 Mon Sep 17 00:00:00 2001 From: Ian Cordasco Date: Tue, 28 Jun 2016 07:42:51 -0500 Subject: [PATCH] Enable plugins automatically during registration Previously the --select was only ever populated to E,F,W,C and so plugins would not be reported when not off-by-default. This adds a tiny shim so that we enable plugins that are not off-by-default and :x :x --- src/flake8/options/aggregator.py | 7 +++++++ src/flake8/options/manager.py | 15 +++++++++++++-- src/flake8/plugins/manager.py | 11 +++++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/flake8/options/aggregator.py b/src/flake8/options/aggregator.py index 99d0cfe..a0ad535 100644 --- a/src/flake8/options/aggregator.py +++ b/src/flake8/options/aggregator.py @@ -53,7 +53,14 @@ def aggregate_options(manager, arglist=None, values=None): list(extended_default_ignore)) extended_default_ignore.update(default_values.ignore) default_values.ignore = list(extended_default_ignore) + + extended_default_select = manager.extended_default_select.copy() + LOG.debug('Extended default select list: %s', + list(extended_default_select)) + extended_default_select.update(default_values.select) + default_values.select = list(extended_default_select) LOG.debug('Merged default ignore list: %s', default_values.ignore) + LOG.debug('Merged default select list: %s', default_values.select) # Merge values parsed from config onto the default values returned for config_name, value in parsed_config.items(): diff --git a/src/flake8/options/manager.py b/src/flake8/options/manager.py index 8c3b6bb..fe3b13b 100644 --- a/src/flake8/options/manager.py +++ b/src/flake8/options/manager.py @@ -163,6 +163,7 @@ class OptionManager(object): self.version = version self.registered_plugins = set() self.extended_default_ignore = set() + self.extended_default_select = set() @staticmethod def format_plugin(plugin_tuple): @@ -201,8 +202,8 @@ class OptionManager(object): LOG.debug('Removing %r from the default ignore list', error_codes) for error_code in error_codes: try: - self.extend_default_ignore.remove(error_code) - except ValueError: + self.extended_default_ignore.remove(error_code) + except (ValueError, KeyError): LOG.debug('Attempted to remove %s from default ignore' ' but it was not a member of the list.', error_code) @@ -216,6 +217,16 @@ class OptionManager(object): LOG.debug('Extending default ignore list with %r', error_codes) self.extended_default_ignore.update(error_codes) + def extend_default_select(self, error_codes): + """Extend the default select list with the error codes provided. + + :param list error_codes: + List of strings that are the error/warning codes with which + to extend the default select list. + """ + LOG.debug('Extending default select list with %r', error_codes) + self.extended_default_select.update(error_codes) + def generate_versions(self, format_str='%(name)s: %(version)s'): """Generate a comma-separated list of versions of plugins.""" return ', '.join( diff --git a/src/flake8/plugins/manager.py b/src/flake8/plugins/manager.py index d08d542..697b35f 100644 --- a/src/flake8/plugins/manager.py +++ b/src/flake8/plugins/manager.py @@ -161,6 +161,7 @@ class Plugin(object): def enable(self, optmanager): """Remove plugin name from the default ignore list.""" optmanager.remove_from_default_ignore([self.name]) + optmanager.extend_default_select([self.name]) def disable(self, optmanager): """Add the plugin name to the default ignore list.""" @@ -418,6 +419,16 @@ class Checkers(PluginTypeManager): if argument_name == plugin.parameters[0]: yield plugin + def register_options(self, optmanager): + """Register all of the checkers' options to the OptionManager.""" + super(Checkers, self).register_options(optmanager) + + def conditionally_enable(plugin): + if plugin.group() is None and not plugin.off_by_default: + plugin.enable(optmanager) + + list(self.manager.map(conditionally_enable)) + @property def ast_plugins(self): """List of plugins that expect the AST tree."""