From 6595d3a08dedec4ff07683bf2c8f5aca2637fc5f Mon Sep 17 00:00:00 2001 From: Yen Chi Hsuan Date: Tue, 8 Nov 2016 23:00:55 +0800 Subject: [PATCH] Add previous_unindented_logical_line attribute This attribute is introduced in pycodestyle 2.1.0 Closes #246 See: https://github.com/PyCQA/pycodestyle/issues/400 --- docs/source/plugin-development/plugin-parameters.rst | 1 + src/flake8/processor.py | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/docs/source/plugin-development/plugin-parameters.rst b/docs/source/plugin-development/plugin-parameters.rst index 16250987..d387a656 100644 --- a/docs/source/plugin-development/plugin-parameters.rst +++ b/docs/source/plugin-development/plugin-parameters.rst @@ -38,6 +38,7 @@ a file, a plugin can ask for any of the following: - :attr:`~flake8.processor.FileProcessor.noqa` - :attr:`~flake8.processor.FileProcessor.previous_indent_level` - :attr:`~flake8.processor.FileProcessor.previous_logical` +- :attr:`~flake8.processor.FileProcessor.previous_unindented_logical_line` - :attr:`~flake8.processor.FileProcessor.tokens` Some properties are set once per file for plugins which iterate itself over diff --git a/src/flake8/processor.py b/src/flake8/processor.py index 2757e8f8..7cea0381 100644 --- a/src/flake8/processor.py +++ b/src/flake8/processor.py @@ -41,6 +41,7 @@ class FileProcessor(object): - :attr:`noqa` - :attr:`previous_indent_level` - :attr:`previous_logical` + - :attr:`previous_unindented_logical_line` - :attr:`tokens` - :attr:`file_tokens` - :attr:`total_lines` @@ -89,6 +90,8 @@ def __init__(self, filename, options, lines=None): self.previous_indent_level = 0 #: Previous logical line self.previous_logical = '' + #: Previous unindented (i.e. top-level) logical line + self.previous_unindented_logical_line = '' #: Current set of tokens self.tokens = [] #: Total number of lines in the file @@ -163,6 +166,8 @@ def next_logical_line(self): if self.logical_line: self.previous_indent_level = self.indent_level self.previous_logical = self.logical_line + if not self.indent_level: + self.previous_unindented_logical_line = self.logical_line self.blank_lines = 0 self.tokens = [] self.noqa = False