filtertraceback.py
44 lines
| 1004 B
| text/x-python
|
PythonLexer
/ tests / filtertraceback.py
Gregory Szorc
|
r46434 | #!/usr/bin/env python3 | ||
Gregory Szorc
|
r41603 | |||
# Filters traceback lines from stdin. | ||||
Gregory Szorc
|
r45142 | import io | ||
Gregory Szorc
|
r41603 | import sys | ||
Gregory Szorc
|
r45142 | if sys.version_info[0] >= 3: | ||
# Prevent \r from being inserted on Windows. | ||||
sys.stdout = io.TextIOWrapper( | ||||
sys.stdout.buffer, | ||||
sys.stdout.encoding, | ||||
sys.stdout.errors, | ||||
newline="\n", | ||||
line_buffering=sys.stdout.line_buffering, | ||||
) | ||||
Gregory Szorc
|
r41603 | state = 'none' | ||
for line in sys.stdin: | ||||
if state == 'none': | ||||
if line.startswith('Traceback '): | ||||
state = 'tb' | ||||
elif state == 'tb': | ||||
if line.startswith(' File '): | ||||
state = 'file' | ||||
continue | ||||
elif not line.startswith(' '): | ||||
state = 'none' | ||||
r50764 | elif not line.replace('^', '').replace('~', '').strip(): | |||
# PEP 657: Fine-grained error locations in tracebacks | ||||
# ~~~~~~^^^^^^^^^ | ||||
continue | ||||
Gregory Szorc
|
r41603 | elif state == 'file': | ||
# Ignore lines after " File " | ||||
state = 'tb' | ||||
continue | ||||
print(line, end='') | ||||