diff --git a/autopep8.py b/autopep8.py index e5b73c11..fd0d3823 100755 --- a/autopep8.py +++ b/autopep8.py @@ -834,16 +834,19 @@ def fix_e265(self, result): self.source[result['line'] - 1] = fixed + def _get_e266_ignored_line_numbers(self): + # Optimisation: avoid unnecessary recomputation + if not hasattr(self, '_e266_ignored_line_numbers'): + source = ''.join(self.source) + self._e266_ignored_line_numbers = set.union( + multiline_string_lines(source, include_docstrings=True), + commented_out_code_lines(source)) + return self._e266_ignored_line_numbers + def fix_e266(self, result): """Fix too many block comment hashes.""" - source = ''.join(self.source) - # TODO: don't recompute this every time! - ignored_line_numbers = multiline_string_lines( - source, - include_docstrings=True) | set(commented_out_code_lines(source)) - - if result['line'] in ignored_line_numbers: + if result['line'] in self._get_e266_ignored_line_numbers(): return # Leave stylistic outlined blocks alone.