diff --git a/pep8.py b/pep8.py index d57cdf39..34bb9ecf 100755 --- a/pep8.py +++ b/pep8.py @@ -1205,6 +1205,23 @@ def readline_check_physical(self): used to feed tokenize.generate_tokens. """ line = self.readline() + + def parse_inline_flags(sign): + """ + Parse inline flags in source file. + + Flags are specified as follows: + + #:PEP8 +E101 -W603 + """ + return set(map(lambda s: s[1:].strip(), + filter(lambda s: s.startswith(sign), + line.split(" ")[1:]))) + + if line.lstrip().startswith('#:PEP8'): + self.report.expected = \ + (self.report.expected | parse_inline_flags('-')) \ + - parse_inline_flags('+') if line: self.check_physical(line) return line @@ -1313,6 +1330,7 @@ def check_all(self, expected=None, line_offset=0): """ Run all checks on the input file. """ + self.line_offset = line_offset self.report.init_file(self.filename, self.lines, expected, line_offset) self.line_number = 0 self.indent_char = None @@ -1383,7 +1401,7 @@ def init_file(self, filename, lines, expected, line_offset): """Signal a new file.""" self.filename = filename self.lines = lines - self.expected = expected or () + self.expected = set(expected or ()) self.line_offset = line_offset self.file_errors = 0 self.counters['files'] += 1