summaryrefslogtreecommitdiff
path: root/pyflakes/reporter.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyflakes/reporter.py')
-rw-r--r--pyflakes/reporter.py25
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):
"""