Added some automatic sizing for field-names in scripts/runners
This commit is contained in:
+16
-10
@@ -243,14 +243,20 @@ def table(results, diff_results=None, *,
|
||||
reverse=False)
|
||||
|
||||
# print header
|
||||
print('%-36s' % ('%s%s' % (
|
||||
'file' if by_file else 'function',
|
||||
' (%d added, %d removed)' % (
|
||||
sum(1 for n in table if n not in diff_table),
|
||||
sum(1 for n in diff_table if n not in table))
|
||||
if diff_results is not None and not percent else '')
|
||||
if not summary else ''),
|
||||
end='')
|
||||
if not summary:
|
||||
title = '%s%s' % (
|
||||
'file' if by_file else 'function',
|
||||
' (%d added, %d removed)' % (
|
||||
sum(1 for n in table if n not in diff_table),
|
||||
sum(1 for n in diff_table if n not in table))
|
||||
if diff_results is not None and not percent else '')
|
||||
name_width = max(it.chain([23, len(title)], (len(n) for n in names)))
|
||||
else:
|
||||
title = ''
|
||||
name_width = 23
|
||||
name_width = 4*((name_width+1+4-1)//4)-1
|
||||
|
||||
print('%-*s ' % (name_width, title), end='')
|
||||
if diff_results is None:
|
||||
print(' %s' % ('size'.rjust(len(IntField.none))))
|
||||
elif percent:
|
||||
@@ -273,7 +279,7 @@ def table(results, diff_results=None, *,
|
||||
if not ratio and not all_:
|
||||
continue
|
||||
|
||||
print('%-36s' % name, end='')
|
||||
print('%-*s ' % (name_width, name), end='')
|
||||
if diff_results is None:
|
||||
print(' %s' % (
|
||||
r.code_size.table()
|
||||
@@ -312,7 +318,7 @@ def table(results, diff_results=None, *,
|
||||
r.code_size if r else None,
|
||||
diff_r.code_size if diff_r else None)
|
||||
|
||||
print('%-36s' % 'TOTAL', end='')
|
||||
print('%-*s ' % (name_width, 'TOTAL'), end='')
|
||||
if diff_results is None:
|
||||
print(' %s' % (
|
||||
r.code_size.table()
|
||||
|
||||
+18
-16
@@ -320,12 +320,12 @@ def table(results, diff_results=None, *,
|
||||
else ['function'])
|
||||
|
||||
table = {
|
||||
(r.file, r.line) if by_line
|
||||
'%s:%s' % (r.file, r.line) if by_line
|
||||
else r.file if by_file
|
||||
else r.function: r
|
||||
for r in results}
|
||||
diff_table = {
|
||||
(r.file, r.line) if by_line
|
||||
'%s:%s' % (r.file, r.line) if by_line
|
||||
else r.file if by_file
|
||||
else r.function: r
|
||||
for r in diff_results or []}
|
||||
@@ -359,16 +359,20 @@ def table(results, diff_results=None, *,
|
||||
reverse=False)
|
||||
|
||||
# print header
|
||||
print('%-36s' % ('%s%s' % (
|
||||
'line' if by_line
|
||||
else 'file' if by_file
|
||||
else 'function',
|
||||
' (%d added, %d removed)' % (
|
||||
sum(1 for n in table if n not in diff_table),
|
||||
sum(1 for n in diff_table if n not in table))
|
||||
if diff_results is not None and not percent else '')
|
||||
if not summary else ''),
|
||||
end='')
|
||||
if not summary:
|
||||
title = '%s%s' % (
|
||||
'line' if by_line else 'file' if by_file else 'function',
|
||||
' (%d added, %d removed)' % (
|
||||
sum(1 for n in table if n not in diff_table),
|
||||
sum(1 for n in diff_table if n not in table))
|
||||
if diff_results is not None and not percent else '')
|
||||
name_width = max(it.chain([23, len(title)], (len(n) for n in names)))
|
||||
else:
|
||||
title = ''
|
||||
name_width = 23
|
||||
name_width = 4*((name_width+1+4-1)//4)-1
|
||||
|
||||
print('%-*s ' % (name_width, title), end='')
|
||||
if diff_results is None:
|
||||
print(' %s %s' % (
|
||||
'hits/line'.rjust(len(FracField.none)),
|
||||
@@ -401,9 +405,7 @@ def table(results, diff_results=None, *,
|
||||
if not line_ratio and not branch_ratio and not all_:
|
||||
continue
|
||||
|
||||
print('%-36s' % (
|
||||
':'.join('%s' % n for n in name)
|
||||
if by_line else name), end='')
|
||||
print('%-*s ' % (name_width, name), end='')
|
||||
if diff_results is None:
|
||||
print(' %s %s' % (
|
||||
r.coverage_lines.table()
|
||||
@@ -460,7 +462,7 @@ def table(results, diff_results=None, *,
|
||||
r.coverage_branches if r else None,
|
||||
diff_r.coverage_branches if diff_r else None)
|
||||
|
||||
print('%-36s' % 'TOTAL', end='')
|
||||
print('%-*s ' % (name_width, 'TOTAL'), end='')
|
||||
if diff_results is None:
|
||||
print(' %s %s' % (
|
||||
r.coverage_lines.table()
|
||||
|
||||
+16
-10
@@ -244,14 +244,20 @@ def table(results, diff_results=None, *,
|
||||
reverse=False)
|
||||
|
||||
# print header
|
||||
print('%-36s' % ('%s%s' % (
|
||||
'file' if by_file else 'function',
|
||||
' (%d added, %d removed)' % (
|
||||
sum(1 for n in table if n not in diff_table),
|
||||
sum(1 for n in diff_table if n not in table))
|
||||
if diff_results is not None and not percent else '')
|
||||
if not summary else ''),
|
||||
end='')
|
||||
if not summary:
|
||||
title = '%s%s' % (
|
||||
'file' if by_file else 'function',
|
||||
' (%d added, %d removed)' % (
|
||||
sum(1 for n in table if n not in diff_table),
|
||||
sum(1 for n in diff_table if n not in table))
|
||||
if diff_results is not None and not percent else '')
|
||||
name_width = max(it.chain([23, len(title)], (len(n) for n in names)))
|
||||
else:
|
||||
title = ''
|
||||
name_width = 23
|
||||
name_width = 4*((name_width+1+4-1)//4)-1
|
||||
|
||||
print('%-*s ' % (name_width, title), end='')
|
||||
if diff_results is None:
|
||||
print(' %s' % ('size'.rjust(len(IntField.none))))
|
||||
elif percent:
|
||||
@@ -274,7 +280,7 @@ def table(results, diff_results=None, *,
|
||||
if not ratio and not all_:
|
||||
continue
|
||||
|
||||
print('%-36s' % name, end='')
|
||||
print('%-*s ' % (name_width, name), end='')
|
||||
if diff_results is None:
|
||||
print(' %s' % (
|
||||
r.data_size.table()
|
||||
@@ -313,7 +319,7 @@ def table(results, diff_results=None, *,
|
||||
r.data_size if r else None,
|
||||
diff_r.data_size if diff_r else None)
|
||||
|
||||
print('%-36s' % 'TOTAL', end='')
|
||||
print('%-*s ' % (name_width, 'TOTAL'), end='')
|
||||
if diff_results is None:
|
||||
print(' %s' % (
|
||||
r.data_size.table()
|
||||
|
||||
+17
-10
@@ -329,20 +329,27 @@ def table(results, calls, diff_results=None, *,
|
||||
names.sort(key=lambda n: (table[n].stack_frame,) if n in table else (),
|
||||
reverse=False)
|
||||
|
||||
# adjust the name width based on the expected call depth, note that we
|
||||
# can't always find the depth due to recursion
|
||||
width = 36 + (4*depth if not m.isinf(depth) else 0)
|
||||
|
||||
# print header
|
||||
if not tree:
|
||||
print('%-*s' % (width, '%s%s' % (
|
||||
if not summary:
|
||||
title = '%s%s' % (
|
||||
'file' if by_file else 'function',
|
||||
' (%d added, %d removed)' % (
|
||||
sum(1 for n in table if n not in diff_table),
|
||||
sum(1 for n in diff_table if n not in table))
|
||||
if diff_results is not None and not percent else '')
|
||||
if not summary else ''),
|
||||
end='')
|
||||
name_width = max(it.chain([23, len(title)], (len(n) for n in names)))
|
||||
else:
|
||||
title = ''
|
||||
name_width = 23
|
||||
name_width = 4*((name_width+1+4-1)//4)-1
|
||||
|
||||
# adjust the name width based on the expected call depth, note that we
|
||||
# can't always find the depth due to recursion
|
||||
if not m.isinf(depth):
|
||||
name_width += 4*depth
|
||||
|
||||
if not tree:
|
||||
print('%-*s ' % (name_width, title), end='')
|
||||
if diff_results is None:
|
||||
print(' %s %s' % (
|
||||
'frame'.rjust(len(IntField.none)),
|
||||
@@ -376,7 +383,7 @@ def table(results, calls, diff_results=None, *,
|
||||
continue
|
||||
|
||||
is_last = (i == len(names_)-1)
|
||||
print('%-*s' % (width, prefixes[0+is_last] + name), end='')
|
||||
print('%-*s ' % (name_width, prefixes[0+is_last]+name), end='')
|
||||
if tree:
|
||||
print()
|
||||
elif diff_results is None:
|
||||
@@ -444,7 +451,7 @@ def table(results, calls, diff_results=None, *,
|
||||
r.stack_limit if r else None,
|
||||
diff_r.stack_limit if diff_r else None)
|
||||
|
||||
print('%-*s' % (width, 'TOTAL'), end='')
|
||||
print('%-*s ' % (name_width, 'TOTAL'), end='')
|
||||
if diff_results is None:
|
||||
print(' %s %s' % (
|
||||
r.stack_frame.table()
|
||||
|
||||
+16
-10
@@ -286,14 +286,20 @@ def table(results, diff_results=None, *,
|
||||
reverse=False)
|
||||
|
||||
# print header
|
||||
print('%-36s' % ('%s%s' % (
|
||||
'file' if by_file else 'struct',
|
||||
' (%d added, %d removed)' % (
|
||||
sum(1 for n in table if n not in diff_table),
|
||||
sum(1 for n in diff_table if n not in table))
|
||||
if diff_results is not None and not percent else '')
|
||||
if not summary else ''),
|
||||
end='')
|
||||
if not summary:
|
||||
title = '%s%s' % (
|
||||
'file' if by_file else 'struct',
|
||||
' (%d added, %d removed)' % (
|
||||
sum(1 for n in table if n not in diff_table),
|
||||
sum(1 for n in diff_table if n not in table))
|
||||
if diff_results is not None and not percent else '')
|
||||
name_width = max(it.chain([23, len(title)], (len(n) for n in names)))
|
||||
else:
|
||||
title = ''
|
||||
name_width = 23
|
||||
name_width = 4*((name_width+1+4-1)//4)-1
|
||||
|
||||
print('%-*s ' % (name_width, title), end='')
|
||||
if diff_results is None:
|
||||
print(' %s' % ('size'.rjust(len(IntField.none))))
|
||||
elif percent:
|
||||
@@ -316,7 +322,7 @@ def table(results, diff_results=None, *,
|
||||
if not ratio and not all_:
|
||||
continue
|
||||
|
||||
print('%-36s' % name, end='')
|
||||
print('%-*s ' % (name_width, name), end='')
|
||||
if diff_results is None:
|
||||
print(' %s' % (
|
||||
r.struct_size.table()
|
||||
@@ -355,7 +361,7 @@ def table(results, diff_results=None, *,
|
||||
r.struct_size if r else None,
|
||||
diff_r.struct_size if diff_r else None)
|
||||
|
||||
print('%-36s' % 'TOTAL', end='')
|
||||
print('%-*s ' % (name_width, 'TOTAL'), end='')
|
||||
if diff_results is None:
|
||||
print(' %s' % (
|
||||
r.struct_size.table()
|
||||
|
||||
+90
-56
@@ -422,8 +422,12 @@ def table(results, total, diff_results=None, diff_total=None, *,
|
||||
**_):
|
||||
all_, all = all, __builtins__.all
|
||||
|
||||
table = {tuple(r.get(k,'') for k in by): r for r in results}
|
||||
diff_table = {tuple(r.get(k,'') for k in by): r for r in diff_results or []}
|
||||
table = {
|
||||
','.join(r.get(k,'') for k in by): r
|
||||
for r in results}
|
||||
diff_table = {
|
||||
','.join(r.get(k,'') for k in by): r
|
||||
for r in diff_results or []}
|
||||
|
||||
# sort, note that python's sort is stable
|
||||
names = list(table.keys() | diff_table.keys())
|
||||
@@ -446,30 +450,40 @@ def table(results, total, diff_results=None, diff_total=None, *,
|
||||
reverse=False)
|
||||
|
||||
# print header
|
||||
print('%-36s' % ('%s%s' % (
|
||||
','.join(k for k in by),
|
||||
' (%d added, %d removed)' % (
|
||||
sum(1 for n in table if n not in diff_table),
|
||||
sum(1 for n in diff_table if n not in table))
|
||||
if diff_results is not None and not percent else '')
|
||||
if not summary else ''),
|
||||
end='')
|
||||
if diff_results is None:
|
||||
print(' %s' % (
|
||||
' '.join(k.rjust(len(types[k].none))
|
||||
for k in fields)))
|
||||
elif percent:
|
||||
print(' %s' % (
|
||||
' '.join(k.rjust(len(types[k].diff_none))
|
||||
for k in fields)))
|
||||
if not summary:
|
||||
title = '%s%s' % (
|
||||
','.join(by),
|
||||
' (%d added, %d removed)' % (
|
||||
sum(1 for n in table if n not in diff_table),
|
||||
sum(1 for n in diff_table if n not in table))
|
||||
if diff_results is not None and not percent else '')
|
||||
name_width = max(it.chain([23, len(title)], (len(n) for n in names)))
|
||||
else:
|
||||
title = ''
|
||||
name_width = 23
|
||||
name_width = 4*((name_width+1+4-1)//4)-1
|
||||
|
||||
print('%-*s ' % (name_width, title), end='')
|
||||
if diff_results is None:
|
||||
widths = [
|
||||
4*((max(len(types[k].none), len(k))+1+4-1)//4)-1
|
||||
for k in fields]
|
||||
print(' %s' % (
|
||||
' '.join(k.rjust(w) for w, k in zip(widths, fields))))
|
||||
elif percent:
|
||||
widths = [
|
||||
4*((max(len(types[k].diff_none), len(k))+1+4-1)//4)-1
|
||||
for k in fields]
|
||||
print(' %s' % (
|
||||
' '.join(k.rjust(w) for w, k in zip(widths, fields))))
|
||||
else:
|
||||
widths = [
|
||||
4*((max(len(types[k].diff_none), 1+len(k))+1+4-1)//4)-1
|
||||
for k in fields]
|
||||
print(' %s %s %s' % (
|
||||
' '.join(('o'+k).rjust(len(types[k].diff_none))
|
||||
for k in fields),
|
||||
' '.join(('n'+k).rjust(len(types[k].diff_none))
|
||||
for k in fields),
|
||||
' '.join(('d'+k).rjust(len(types[k].diff_none))
|
||||
for k in fields)))
|
||||
' '.join(('o'+k).rjust(w) for w, k in zip(widths, fields)),
|
||||
' '.join(('n'+k).rjust(w) for w, k in zip(widths, fields)),
|
||||
' '.join(('d'+k).rjust(w) for w, k in zip(widths, fields))))
|
||||
|
||||
# print entries
|
||||
if not summary:
|
||||
@@ -482,17 +496,21 @@ def table(results, total, diff_results=None, diff_total=None, *,
|
||||
if not any(ratios) and not all_:
|
||||
continue
|
||||
|
||||
print('%-36s' % ','.join(name), end='')
|
||||
print('%-*s ' % (name_width, name), end='')
|
||||
if diff_results is None:
|
||||
print(' %s' % (
|
||||
' '.join(r[k].table()
|
||||
if k in r else types[k].none
|
||||
for k in fields)))
|
||||
' '.join(
|
||||
(r[k].table()
|
||||
if k in r
|
||||
else types[k].none).rjust(w)
|
||||
for w, k in zip(widths, fields))))
|
||||
elif percent:
|
||||
print(' %s%s' % (
|
||||
' '.join(r[k].diff_table()
|
||||
if k in r else types[k].diff_none
|
||||
for k in fields),
|
||||
' '.join(
|
||||
(r[k].diff_table().rjust(w)
|
||||
if k in r
|
||||
else types[k].diff_none).rjust(w)
|
||||
for w, k in zip(widths, fields)),
|
||||
' (%s)' % ', '.join(
|
||||
'+∞%' if t == +m.inf
|
||||
else '-∞%' if t == -m.inf
|
||||
@@ -500,15 +518,21 @@ def table(results, total, diff_results=None, diff_total=None, *,
|
||||
for t in ratios)))
|
||||
else:
|
||||
print(' %s %s %s%s' % (
|
||||
' '.join(diff_r[k].diff_table()
|
||||
if k in diff_r else types[k].diff_none
|
||||
for k in fields),
|
||||
' '.join(r[k].diff_table()
|
||||
if k in r else types[k].diff_none
|
||||
for k in fields),
|
||||
' '.join(types[k].diff_diff(r.get(k), diff_r.get(k))
|
||||
if k in r or k in diff_r else types[k].diff_none
|
||||
for k in fields),
|
||||
' '.join(
|
||||
(diff_r[k].diff_table()
|
||||
if k in diff_r
|
||||
else types[k].diff_none).rjust(w)
|
||||
for w, k in zip(widths, fields)),
|
||||
' '.join(
|
||||
(r[k].diff_table()
|
||||
if k in r
|
||||
else types[k].diff_none).rjust(w)
|
||||
for w, k in zip(widths, fields)),
|
||||
' '.join(
|
||||
(types[k].diff_diff(r.get(k), diff_r.get(k))
|
||||
if k in r or k in diff_r
|
||||
else types[k].diff_none).rjust(w)
|
||||
for w, k in zip(widths, fields)),
|
||||
' (%s)' % ', '.join(
|
||||
'+∞%' if t == +m.inf
|
||||
else '-∞%' if t == -m.inf
|
||||
@@ -524,17 +548,21 @@ def table(results, total, diff_results=None, diff_total=None, *,
|
||||
ratios = [types[k].ratio(r.get(k), diff_r.get(k))
|
||||
for k in fields]
|
||||
|
||||
print('%-36s' % 'TOTAL', end='')
|
||||
print('%-*s ' % (name_width, 'TOTAL'), end='')
|
||||
if diff_results is None:
|
||||
print(' %s' % (
|
||||
' '.join(r[k].table()
|
||||
if k in r else types[k].none
|
||||
for k in fields)))
|
||||
' '.join(
|
||||
(r[k].table()
|
||||
if k in r
|
||||
else types[k].none).rjust(w)
|
||||
for w, k in zip(widths, fields))))
|
||||
elif percent:
|
||||
print(' %s%s' % (
|
||||
' '.join(r[k].diff_table()
|
||||
if k in r else types[k].diff_none
|
||||
for k in fields),
|
||||
' '.join(
|
||||
(r[k].diff_table().rjust(w)
|
||||
if k in r
|
||||
else types[k].diff_none).rjust(w)
|
||||
for w, k in zip(widths, fields)),
|
||||
' (%s)' % ', '.join(
|
||||
'+∞%' if t == +m.inf
|
||||
else '-∞%' if t == -m.inf
|
||||
@@ -542,15 +570,21 @@ def table(results, total, diff_results=None, diff_total=None, *,
|
||||
for t in ratios)))
|
||||
else:
|
||||
print(' %s %s %s%s' % (
|
||||
' '.join(diff_r[k].diff_table()
|
||||
if k in diff_r else types[k].diff_none
|
||||
for k in fields),
|
||||
' '.join(r[k].diff_table()
|
||||
if k in r else types[k].diff_none
|
||||
for k in fields),
|
||||
' '.join(types[k].diff_diff(r.get(k), diff_r.get(k))
|
||||
if k in r or k in diff_r else types[k].diff_none
|
||||
for k in fields),
|
||||
' '.join(
|
||||
(diff_r[k].diff_table()
|
||||
if k in diff_r
|
||||
else types[k].diff_none).rjust(w)
|
||||
for w, k in zip(widths, fields)),
|
||||
' '.join(
|
||||
(r[k].diff_table()
|
||||
if k in r
|
||||
else types[k].diff_none).rjust(w)
|
||||
for w, k in zip(widths, fields)),
|
||||
' '.join(
|
||||
(types[k].diff_diff(r.get(k), diff_r.get(k))
|
||||
if k in r or k in diff_r
|
||||
else types[k].diff_none).rjust(w)
|
||||
for w, k in zip(widths, fields)),
|
||||
' (%s)' % ', '.join(
|
||||
'+∞%' if t == +m.inf
|
||||
else '-∞%' if t == -m.inf
|
||||
|
||||
Reference in New Issue
Block a user