diff options
Diffstat (limited to 'pyflakes/reporter.py')
-rw-r--r-- | pyflakes/reporter.py | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/pyflakes/reporter.py b/pyflakes/reporter.py index 3555185..1babbb4 100644 --- a/pyflakes/reporter.py +++ b/pyflakes/reporter.py @@ -51,19 +51,30 @@ class Reporter: @param text: The source code containing the syntax error. @ptype text: C{unicode} """ - line = text.splitlines()[-1] + if text is None: + line = None + else: + line = text.splitlines()[-1] + + # lineno might be 0 if the error came from stdin + lineno = max(lineno, 1) + if offset is not None: - if sys.version_info < (3, 8): + if sys.version_info < (3, 8) and text is not None: offset = offset - (len(text) - len(line)) + 1 + # some versions of python emit an offset of -1 for certain encoding errors + offset = max(offset, 1) self._stderr.write('%s:%d:%d: %s\n' % (filename, lineno, offset, msg)) else: self._stderr.write('%s:%d: %s\n' % (filename, lineno, msg)) - self._stderr.write(line) - self._stderr.write('\n') - if offset is not None: - self._stderr.write(re.sub(r'\S', ' ', line[:offset - 1]) + - "^\n") + + if line is not None: + self._stderr.write(line) + self._stderr.write('\n') + if offset is not None: + self._stderr.write(re.sub(r'\S', ' ', line[:offset - 1]) + + "^\n") def flake(self, message): """ |