From 8a4b6e7ed2a9ba6528f158b09b67dbbf7ea00ea1 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Mon, 31 Oct 2016 14:00:19 -0400 Subject: [PATCH] Fixes #239 Two repairs: * Make sure the selected and ignored sequences are non-empty before dereferencing index 0. * Remove _enabled_extensions from the list of _ignored codes. If an extension is enabled, it shouldn't be ignored. --- src/flake8/style_guide.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/flake8/style_guide.py b/src/flake8/style_guide.py index 739edd8..f5a9904 100644 --- a/src/flake8/style_guide.py +++ b/src/flake8/style_guide.py @@ -64,8 +64,9 @@ class StyleGuide(object): self.stats = statistics.Statistics() self._selected = tuple(options.select) self._extended_selected = tuple(options.extended_default_select) - self._ignored = tuple(options.ignore) self._enabled_extensions = tuple(options.enable_extensions) + self._ignored = tuple( + set(options.ignore) - set(self._enabled_extensions)) self._decision_cache = {} self._parsed_diff = {} @@ -118,8 +119,14 @@ class StyleGuide(object): def _decision_for(self, code): # type: (Error) -> Decision startswith = code.startswith - selected = sorted([s for s in self._selected if startswith(s)])[0] - ignored = sorted([i for i in self._ignored if startswith(i)])[0] + all_selected = sorted(s for s in self._selected if startswith(s)) + if len(all_selected) == 0: + return Decision.Ignored + all_ignored = sorted(i for i in self._ignored if startswith(i)) + if len(all_ignored) == 0: + return Decision.Ignored + selected = all_selected[0] + ignored = all_ignored[0] if selected.startswith(ignored): return Decision.Selected