##// END OF EJS Templates
Require pygments>=2.4.0...
Require pygments>=2.4.0 As noted in #13441, running ipython with an old version of pygments leads to problems. Ipython sends ANSI color names to pygments to color output, but these names aren't in old versions of pygments. Before: with pygments 2.3.1 and ipython 8.0.0, opening an ipython instance and running In [1]: 1 / 0 # Expect ZeroDivisionError will crash ipython as `ansiyellow` is used to highlight the error. This PR requires pygments>=2.4.0, which is when pygments changed their ANSI color names.

File last commit:

r27322:d32e8fc8
r27425:e902466b
Show More
check_sources.py
54 lines | 1.3 KiB | text/x-python | PythonLexer
#!/usr/bin/env python
"""Utility to look for hard tabs and \r characters in all sources.
Usage:
./check_sources.py
It prints summaries and if chosen, line-by-line info of where \\t or \\r
characters can be found in our source tree.
"""
# Config
# If true, all lines that have tabs are printed, with line number
full_report_tabs = True
# If true, all lines that have tabs are printed, with line number
full_report_rets = False
# Code begins
from IPython.external.path import path
rets = []
tabs = []
for f in path('..').walkfiles('*.py'):
errs = ''
cont = f.bytes()
if '\t' in cont:
errs+='t'
tabs.append(f)
if '\r' in cont:
errs+='r'
rets.append(f)
if errs:
print("%3s" % errs, f)
if 't' in errs and full_report_tabs:
for ln,line in enumerate(f.lines()):
if '\t' in line:
print('TAB:',ln,':',line, end=' ')
if 'r' in errs and full_report_rets:
for ln,line in enumerate(open(f.abspath(),'rb')):
if '\r' in line:
print('RET:',ln,':',line, end=' ')
# Summary at the end, to call cleanup tools if necessary
if tabs:
print('Hard tabs found. These can be cleaned with untabify:')
for f in tabs: print(f, end=' ')
if rets:
print('Carriage returns (\\r) found in:')
for f in rets: print(f, end=' ')