diff --git a/docs/source/release-notes/3.0.3.rst b/docs/source/release-notes/3.0.3.rst index 40c9258..ded24c7 100644 --- a/docs/source/release-notes/3.0.3.rst +++ b/docs/source/release-notes/3.0.3.rst @@ -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 diff --git a/src/flake8/options/aggregator.py b/src/flake8/options/aggregator.py index a0ad535..4075dc9 100644 --- a/src/flake8/options/aggregator.py +++ b/src/flake8/options/aggregator.py @@ -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(): diff --git a/src/flake8/style_guide.py b/src/flake8/style_guide.py index 0cbab8f..a1ab473 100644 --- a/src/flake8/style_guide.py +++ b/src/flake8/style_guide.py @@ -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): diff --git a/tests/unit/test_style_guide.py b/tests/unit/test_style_guide.py index f5a2caa..64a7fcd 100644 --- a/tests/unit/test_style_guide.py +++ b/tests/unit/test_style_guide.py @@ -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)