Merge branch 'bug/195' into 'master'

Allow plugins that are on by default to be ignored

*Description of changes*

Previously, users were unable to ignore the error code of a plugin that was on by default. This adds a tiny bit of extra logic to re-enable that behaviour.

*Related to:*  #195

See merge request !104
This commit is contained in:
Ian Cordasco 2016-07-29 00:43:07 +00:00
commit 530767d36d
4 changed files with 15 additions and 4 deletions

View file

@ -4,7 +4,11 @@
- Fix ``# noqa`` comments followed by a ``:`` and explanation broken by
3.0.0 (See also `GitLab#178`_)
- Fix issue where users were unable to ignore plugin errors that were on
by default. (See also `GitLab#195`_)
.. links
.. _GitLab#178:
https://gitlab.com/pycqa/flake8/issues/178
.. _GitLab#195:
https://gitlab.com/pycqa/flake8/issues/195

View file

@ -53,14 +53,12 @@ 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)
LOG.debug('Merged default ignore list: %s', default_values.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)
default_values.extended_default_select = extended_default_select
# Merge values parsed from config onto the default values returned
for config_name, value in parsed_config.items():

View file

@ -63,6 +63,7 @@ class StyleGuide(object):
self.formatter = formatter
self.stats = statistics.Statistics()
self._selected = tuple(options.select)
self._extended_selected = tuple(options.extended_default_select)
self._ignored = tuple(options.ignore)
self._decision_cache = {}
self._parsed_diff = {}
@ -86,6 +87,13 @@ class StyleGuide(object):
if code.startswith(self._selected):
return Selected.Explicitly
# If it was not explicitly selected, it may have been implicitly
# selected because the check comes from a plugin that is enabled by
# default
if (self._extended_selected and
code.startswith(self._extended_selected)):
return Selected.Implicitly
return Ignored.Implicitly
def is_user_ignored(self, code):

View file

@ -12,6 +12,7 @@ from flake8.plugins import notifier
def create_options(**kwargs):
"""Create and return an instance of optparse.Values."""
kwargs.setdefault('select', [])
kwargs.setdefault('extended_default_select', [])
kwargs.setdefault('ignore', [])
kwargs.setdefault('disable_noqa', False)
return optparse.Values(kwargs)