mirror of
https://github.com/littlefs-project/littlefs.git
synced 2025-12-01 12:20:02 +00:00
scripts: More flags to control table renderer, -Q/--small-table, etc
Instead of trying to be too clever, this just adds a bunch of small flags to control parts of table rendering: - --no-header - Don't show the header. - --small-header - Don't show by field names. - --no-total - Don't show the total. - -Q/--small-table - Equivalent to --small-header + --no-total. Note that -Q/--small-table replaces the previous -Y/--summary + -c/--compare hack, while also allowing a similar table style for non-compare results.
This commit is contained in:
@ -535,6 +535,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
percent=None,
|
percent=None,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
|
no_header=False,
|
||||||
|
small_header=False,
|
||||||
|
no_total=False,
|
||||||
|
small_table=False,
|
||||||
summary=False,
|
summary=False,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
@ -633,7 +637,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
if compare:
|
if compare:
|
||||||
names.sort(
|
names.sort(
|
||||||
key=lambda n: (
|
key=lambda n: (
|
||||||
|
# move compare entry to the top, note this can be
|
||||||
|
# overridden by explicitly sorting by fields
|
||||||
table.get(n) == compare_result,
|
table.get(n) == compare_result,
|
||||||
|
# sort by ratio if comparing
|
||||||
tuple(
|
tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -642,6 +649,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
reverse=True)
|
reverse=True)
|
||||||
if diff or percent:
|
if diff or percent:
|
||||||
names.sort(
|
names.sort(
|
||||||
|
# sort by ratio if diffing
|
||||||
key=lambda n: tuple(
|
key=lambda n: tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -666,24 +674,26 @@ def table(Result, results, diff_results=None, *,
|
|||||||
lines = []
|
lines = []
|
||||||
|
|
||||||
# header
|
# header
|
||||||
header = ['%s%s' % (
|
if not no_header:
|
||||||
','.join(by),
|
header = ['%s%s' % (
|
||||||
' (%d added, %d removed)' % (
|
','.join(by),
|
||||||
sum(1 for n in table if n not in diff_table),
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in table if n not in diff_table),
|
||||||
if diff else '')
|
sum(1 for n in diff_table if n not in table))
|
||||||
if not summary else '']
|
if diff else '')
|
||||||
if not diff:
|
if not small_header and not small_table and not summary
|
||||||
for k in fields:
|
else '']
|
||||||
header.append(k)
|
if not diff:
|
||||||
else:
|
for k in fields:
|
||||||
for k in fields:
|
header.append(k)
|
||||||
header.append('o'+k)
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('n'+k)
|
header.append('o'+k)
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('d'+k)
|
header.append('n'+k)
|
||||||
lines.append(header)
|
for k in fields:
|
||||||
|
header.append('d'+k)
|
||||||
|
lines.append(header)
|
||||||
|
|
||||||
# entry helper
|
# entry helper
|
||||||
def table_entry(name, r, diff_r=None):
|
def table_entry(name, r, diff_r=None):
|
||||||
@ -804,7 +814,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
prefixes[2+is_last] + " "))
|
prefixes[2+is_last] + " "))
|
||||||
|
|
||||||
# entries
|
# entries
|
||||||
if (not summary) or compare:
|
if not summary:
|
||||||
for name in names:
|
for name in names:
|
||||||
r = table.get(name)
|
r = table.get(name)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
@ -822,8 +832,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
"| ",
|
"| ",
|
||||||
" "))
|
" "))
|
||||||
|
|
||||||
# total, unless we're comparing
|
# total
|
||||||
if not (compare and not percent and not diff):
|
if not no_total and not (small_table and not summary):
|
||||||
r = next(iter(fold(Result, results, by=[])), None)
|
r = next(iter(fold(Result, results, by=[])), None)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
diff_r = None
|
diff_r = None
|
||||||
@ -1001,10 +1011,6 @@ if __name__ == "__main__":
|
|||||||
'-c', '--compare',
|
'-c', '--compare',
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
help="Compare results to the row matching this by pattern.")
|
help="Compare results to the row matching this by pattern.")
|
||||||
parser.add_argument(
|
|
||||||
'-Y', '--summary',
|
|
||||||
action='store_true',
|
|
||||||
help="Only show the total.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--by',
|
'-b', '--by',
|
||||||
action='append',
|
action='append',
|
||||||
@ -1041,6 +1047,26 @@ if __name__ == "__main__":
|
|||||||
nargs='?',
|
nargs='?',
|
||||||
action=AppendSort,
|
action=AppendSort,
|
||||||
help="Sort by this field, but backwards.")
|
help="Sort by this field, but backwards.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the header.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show by field names.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-total',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Q', '--small-table',
|
||||||
|
action='store_true',
|
||||||
|
help="Equivalent to --small-header + --no-total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Y', '--summary',
|
||||||
|
action='store_true',
|
||||||
|
help="Only show the total.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--everything',
|
'--everything',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
|
|||||||
@ -396,6 +396,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
percent=None,
|
percent=None,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
|
no_header=False,
|
||||||
|
small_header=False,
|
||||||
|
no_total=False,
|
||||||
|
small_table=False,
|
||||||
summary=False,
|
summary=False,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
@ -494,7 +498,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
if compare:
|
if compare:
|
||||||
names.sort(
|
names.sort(
|
||||||
key=lambda n: (
|
key=lambda n: (
|
||||||
|
# move compare entry to the top, note this can be
|
||||||
|
# overridden by explicitly sorting by fields
|
||||||
table.get(n) == compare_result,
|
table.get(n) == compare_result,
|
||||||
|
# sort by ratio if comparing
|
||||||
tuple(
|
tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -503,6 +510,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
reverse=True)
|
reverse=True)
|
||||||
if diff or percent:
|
if diff or percent:
|
||||||
names.sort(
|
names.sort(
|
||||||
|
# sort by ratio if diffing
|
||||||
key=lambda n: tuple(
|
key=lambda n: tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -527,24 +535,26 @@ def table(Result, results, diff_results=None, *,
|
|||||||
lines = []
|
lines = []
|
||||||
|
|
||||||
# header
|
# header
|
||||||
header = ['%s%s' % (
|
if not no_header:
|
||||||
','.join(by),
|
header = ['%s%s' % (
|
||||||
' (%d added, %d removed)' % (
|
','.join(by),
|
||||||
sum(1 for n in table if n not in diff_table),
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in table if n not in diff_table),
|
||||||
if diff else '')
|
sum(1 for n in diff_table if n not in table))
|
||||||
if not summary else '']
|
if diff else '')
|
||||||
if not diff:
|
if not small_header and not small_table and not summary
|
||||||
for k in fields:
|
else '']
|
||||||
header.append(k)
|
if not diff:
|
||||||
else:
|
for k in fields:
|
||||||
for k in fields:
|
header.append(k)
|
||||||
header.append('o'+k)
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('n'+k)
|
header.append('o'+k)
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('d'+k)
|
header.append('n'+k)
|
||||||
lines.append(header)
|
for k in fields:
|
||||||
|
header.append('d'+k)
|
||||||
|
lines.append(header)
|
||||||
|
|
||||||
# entry helper
|
# entry helper
|
||||||
def table_entry(name, r, diff_r=None):
|
def table_entry(name, r, diff_r=None):
|
||||||
@ -665,7 +675,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
prefixes[2+is_last] + " "))
|
prefixes[2+is_last] + " "))
|
||||||
|
|
||||||
# entries
|
# entries
|
||||||
if (not summary) or compare:
|
if not summary:
|
||||||
for name in names:
|
for name in names:
|
||||||
r = table.get(name)
|
r = table.get(name)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
@ -683,8 +693,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
"| ",
|
"| ",
|
||||||
" "))
|
" "))
|
||||||
|
|
||||||
# total, unless we're comparing
|
# total
|
||||||
if not (compare and not percent and not diff):
|
if not no_total and not (small_table and not summary):
|
||||||
r = next(iter(fold(Result, results, by=[])), None)
|
r = next(iter(fold(Result, results, by=[])), None)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
diff_r = None
|
diff_r = None
|
||||||
@ -964,10 +974,6 @@ if __name__ == "__main__":
|
|||||||
'-c', '--compare',
|
'-c', '--compare',
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
help="Compare results to the row matching this by pattern.")
|
help="Compare results to the row matching this by pattern.")
|
||||||
parser.add_argument(
|
|
||||||
'-Y', '--summary',
|
|
||||||
action='store_true',
|
|
||||||
help="Only show the total.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--by',
|
'-b', '--by',
|
||||||
action='append',
|
action='append',
|
||||||
@ -1004,6 +1010,26 @@ if __name__ == "__main__":
|
|||||||
nargs='?',
|
nargs='?',
|
||||||
action=AppendSort,
|
action=AppendSort,
|
||||||
help="Sort by this field, but backwards.")
|
help="Sort by this field, but backwards.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the header.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show by field names.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-total',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Q', '--small-table',
|
||||||
|
action='store_true',
|
||||||
|
help="Equivalent to --small-header + --no-total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Y', '--summary',
|
||||||
|
action='store_true',
|
||||||
|
help="Only show the total.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-F', '--source',
|
'-F', '--source',
|
||||||
dest='sources',
|
dest='sources',
|
||||||
|
|||||||
@ -1486,6 +1486,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
percent=None,
|
percent=None,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
|
no_header=False,
|
||||||
|
small_header=False,
|
||||||
|
no_total=False,
|
||||||
|
small_table=False,
|
||||||
summary=False,
|
summary=False,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
@ -1584,7 +1588,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
if compare:
|
if compare:
|
||||||
names.sort(
|
names.sort(
|
||||||
key=lambda n: (
|
key=lambda n: (
|
||||||
|
# move compare entry to the top, note this can be
|
||||||
|
# overridden by explicitly sorting by fields
|
||||||
table.get(n) == compare_result,
|
table.get(n) == compare_result,
|
||||||
|
# sort by ratio if comparing
|
||||||
tuple(
|
tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -1593,6 +1600,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
reverse=True)
|
reverse=True)
|
||||||
if diff or percent:
|
if diff or percent:
|
||||||
names.sort(
|
names.sort(
|
||||||
|
# sort by ratio if diffing
|
||||||
key=lambda n: tuple(
|
key=lambda n: tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -1617,24 +1625,26 @@ def table(Result, results, diff_results=None, *,
|
|||||||
lines = []
|
lines = []
|
||||||
|
|
||||||
# header
|
# header
|
||||||
header = ['%s%s' % (
|
if not no_header:
|
||||||
','.join(by),
|
header = ['%s%s' % (
|
||||||
' (%d added, %d removed)' % (
|
','.join(by),
|
||||||
sum(1 for n in table if n not in diff_table),
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in table if n not in diff_table),
|
||||||
if diff else '')
|
sum(1 for n in diff_table if n not in table))
|
||||||
if not summary else '']
|
if diff else '')
|
||||||
if not diff:
|
if not small_header and not small_table and not summary
|
||||||
for k in fields:
|
else '']
|
||||||
header.append(k)
|
if not diff:
|
||||||
else:
|
for k in fields:
|
||||||
for k in fields:
|
header.append(k)
|
||||||
header.append('o'+k)
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('n'+k)
|
header.append('o'+k)
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('d'+k)
|
header.append('n'+k)
|
||||||
lines.append(header)
|
for k in fields:
|
||||||
|
header.append('d'+k)
|
||||||
|
lines.append(header)
|
||||||
|
|
||||||
# entry helper
|
# entry helper
|
||||||
def table_entry(name, r, diff_r=None):
|
def table_entry(name, r, diff_r=None):
|
||||||
@ -1755,7 +1765,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
prefixes[2+is_last] + " "))
|
prefixes[2+is_last] + " "))
|
||||||
|
|
||||||
# entries
|
# entries
|
||||||
if (not summary) or compare:
|
if not summary:
|
||||||
for name in names:
|
for name in names:
|
||||||
r = table.get(name)
|
r = table.get(name)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
@ -1773,8 +1783,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
"| ",
|
"| ",
|
||||||
" "))
|
" "))
|
||||||
|
|
||||||
# total, unless we're comparing
|
# total
|
||||||
if not (compare and not percent and not diff):
|
if not no_total and not (small_table and not summary):
|
||||||
r = next(iter(fold(Result, results, by=[])), None)
|
r = next(iter(fold(Result, results, by=[])), None)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
diff_r = None
|
diff_r = None
|
||||||
@ -1956,10 +1966,6 @@ if __name__ == "__main__":
|
|||||||
'-c', '--compare',
|
'-c', '--compare',
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
help="Compare results to the row matching this by pattern.")
|
help="Compare results to the row matching this by pattern.")
|
||||||
parser.add_argument(
|
|
||||||
'-Y', '--summary',
|
|
||||||
action='store_true',
|
|
||||||
help="Only show the total.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--by',
|
'-b', '--by',
|
||||||
action='append',
|
action='append',
|
||||||
@ -2021,6 +2027,26 @@ if __name__ == "__main__":
|
|||||||
const=(None, None),
|
const=(None, None),
|
||||||
help="Sort by this field, but backwards. Can include an expression "
|
help="Sort by this field, but backwards. Can include an expression "
|
||||||
"of the form field=expr.")
|
"of the form field=expr.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the header.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show by field names.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-total',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Q', '--small-table',
|
||||||
|
action='store_true',
|
||||||
|
help="Equivalent to --small-header + --no-total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Y', '--summary',
|
||||||
|
action='store_true',
|
||||||
|
help="Only show the total.")
|
||||||
sys.exit(main(**{k: v
|
sys.exit(main(**{k: v
|
||||||
for k, v in vars(parser.parse_intermixed_args()).items()
|
for k, v in vars(parser.parse_intermixed_args()).items()
|
||||||
if v is not None}))
|
if v is not None}))
|
||||||
|
|||||||
@ -735,6 +735,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
percent=None,
|
percent=None,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
|
no_header=False,
|
||||||
|
small_header=False,
|
||||||
|
no_total=False,
|
||||||
|
small_table=False,
|
||||||
summary=False,
|
summary=False,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
@ -833,7 +837,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
if compare:
|
if compare:
|
||||||
names.sort(
|
names.sort(
|
||||||
key=lambda n: (
|
key=lambda n: (
|
||||||
|
# move compare entry to the top, note this can be
|
||||||
|
# overridden by explicitly sorting by fields
|
||||||
table.get(n) == compare_result,
|
table.get(n) == compare_result,
|
||||||
|
# sort by ratio if comparing
|
||||||
tuple(
|
tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -842,6 +849,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
reverse=True)
|
reverse=True)
|
||||||
if diff or percent:
|
if diff or percent:
|
||||||
names.sort(
|
names.sort(
|
||||||
|
# sort by ratio if diffing
|
||||||
key=lambda n: tuple(
|
key=lambda n: tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -866,24 +874,26 @@ def table(Result, results, diff_results=None, *,
|
|||||||
lines = []
|
lines = []
|
||||||
|
|
||||||
# header
|
# header
|
||||||
header = ['%s%s' % (
|
if not no_header:
|
||||||
','.join(by),
|
header = ['%s%s' % (
|
||||||
' (%d added, %d removed)' % (
|
','.join(by),
|
||||||
sum(1 for n in table if n not in diff_table),
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in table if n not in diff_table),
|
||||||
if diff else '')
|
sum(1 for n in diff_table if n not in table))
|
||||||
if not summary else '']
|
if diff else '')
|
||||||
if not diff:
|
if not small_header and not small_table and not summary
|
||||||
for k in fields:
|
else '']
|
||||||
header.append(k)
|
if not diff:
|
||||||
else:
|
for k in fields:
|
||||||
for k in fields:
|
header.append(k)
|
||||||
header.append('o'+k)
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('n'+k)
|
header.append('o'+k)
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('d'+k)
|
header.append('n'+k)
|
||||||
lines.append(header)
|
for k in fields:
|
||||||
|
header.append('d'+k)
|
||||||
|
lines.append(header)
|
||||||
|
|
||||||
# entry helper
|
# entry helper
|
||||||
def table_entry(name, r, diff_r=None):
|
def table_entry(name, r, diff_r=None):
|
||||||
@ -1004,7 +1014,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
prefixes[2+is_last] + " "))
|
prefixes[2+is_last] + " "))
|
||||||
|
|
||||||
# entries
|
# entries
|
||||||
if (not summary) or compare:
|
if not summary:
|
||||||
for name in names:
|
for name in names:
|
||||||
r = table.get(name)
|
r = table.get(name)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
@ -1022,8 +1032,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
"| ",
|
"| ",
|
||||||
" "))
|
" "))
|
||||||
|
|
||||||
# total, unless we're comparing
|
# total
|
||||||
if not (compare and not percent and not diff):
|
if not no_total and not (small_table and not summary):
|
||||||
r = next(iter(fold(Result, results, by=[])), None)
|
r = next(iter(fold(Result, results, by=[])), None)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
diff_r = None
|
diff_r = None
|
||||||
@ -1209,10 +1219,6 @@ if __name__ == "__main__":
|
|||||||
'-c', '--compare',
|
'-c', '--compare',
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
help="Compare results to the row matching this by pattern.")
|
help="Compare results to the row matching this by pattern.")
|
||||||
parser.add_argument(
|
|
||||||
'-Y', '--summary',
|
|
||||||
action='store_true',
|
|
||||||
help="Only show the total.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--by',
|
'-b', '--by',
|
||||||
action='append',
|
action='append',
|
||||||
@ -1249,6 +1255,26 @@ if __name__ == "__main__":
|
|||||||
nargs='?',
|
nargs='?',
|
||||||
action=AppendSort,
|
action=AppendSort,
|
||||||
help="Sort by this field, but backwards.")
|
help="Sort by this field, but backwards.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the header.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show by field names.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-total',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Q', '--small-table',
|
||||||
|
action='store_true',
|
||||||
|
help="Equivalent to --small-header + --no-total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Y', '--summary',
|
||||||
|
action='store_true',
|
||||||
|
help="Only show the total.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--everything',
|
'--everything',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
|
|||||||
@ -535,6 +535,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
percent=None,
|
percent=None,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
|
no_header=False,
|
||||||
|
small_header=False,
|
||||||
|
no_total=False,
|
||||||
|
small_table=False,
|
||||||
summary=False,
|
summary=False,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
@ -633,7 +637,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
if compare:
|
if compare:
|
||||||
names.sort(
|
names.sort(
|
||||||
key=lambda n: (
|
key=lambda n: (
|
||||||
|
# move compare entry to the top, note this can be
|
||||||
|
# overridden by explicitly sorting by fields
|
||||||
table.get(n) == compare_result,
|
table.get(n) == compare_result,
|
||||||
|
# sort by ratio if comparing
|
||||||
tuple(
|
tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -642,6 +649,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
reverse=True)
|
reverse=True)
|
||||||
if diff or percent:
|
if diff or percent:
|
||||||
names.sort(
|
names.sort(
|
||||||
|
# sort by ratio if diffing
|
||||||
key=lambda n: tuple(
|
key=lambda n: tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -666,24 +674,26 @@ def table(Result, results, diff_results=None, *,
|
|||||||
lines = []
|
lines = []
|
||||||
|
|
||||||
# header
|
# header
|
||||||
header = ['%s%s' % (
|
if not no_header:
|
||||||
','.join(by),
|
header = ['%s%s' % (
|
||||||
' (%d added, %d removed)' % (
|
','.join(by),
|
||||||
sum(1 for n in table if n not in diff_table),
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in table if n not in diff_table),
|
||||||
if diff else '')
|
sum(1 for n in diff_table if n not in table))
|
||||||
if not summary else '']
|
if diff else '')
|
||||||
if not diff:
|
if not small_header and not small_table and not summary
|
||||||
for k in fields:
|
else '']
|
||||||
header.append(k)
|
if not diff:
|
||||||
else:
|
for k in fields:
|
||||||
for k in fields:
|
header.append(k)
|
||||||
header.append('o'+k)
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('n'+k)
|
header.append('o'+k)
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('d'+k)
|
header.append('n'+k)
|
||||||
lines.append(header)
|
for k in fields:
|
||||||
|
header.append('d'+k)
|
||||||
|
lines.append(header)
|
||||||
|
|
||||||
# entry helper
|
# entry helper
|
||||||
def table_entry(name, r, diff_r=None):
|
def table_entry(name, r, diff_r=None):
|
||||||
@ -804,7 +814,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
prefixes[2+is_last] + " "))
|
prefixes[2+is_last] + " "))
|
||||||
|
|
||||||
# entries
|
# entries
|
||||||
if (not summary) or compare:
|
if not summary:
|
||||||
for name in names:
|
for name in names:
|
||||||
r = table.get(name)
|
r = table.get(name)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
@ -822,8 +832,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
"| ",
|
"| ",
|
||||||
" "))
|
" "))
|
||||||
|
|
||||||
# total, unless we're comparing
|
# total
|
||||||
if not (compare and not percent and not diff):
|
if not no_total and not (small_table and not summary):
|
||||||
r = next(iter(fold(Result, results, by=[])), None)
|
r = next(iter(fold(Result, results, by=[])), None)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
diff_r = None
|
diff_r = None
|
||||||
@ -998,10 +1008,6 @@ if __name__ == "__main__":
|
|||||||
'-c', '--compare',
|
'-c', '--compare',
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
help="Compare results to the row matching this by pattern.")
|
help="Compare results to the row matching this by pattern.")
|
||||||
parser.add_argument(
|
|
||||||
'-Y', '--summary',
|
|
||||||
action='store_true',
|
|
||||||
help="Only show the total.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--by',
|
'-b', '--by',
|
||||||
action='append',
|
action='append',
|
||||||
@ -1038,6 +1044,26 @@ if __name__ == "__main__":
|
|||||||
nargs='?',
|
nargs='?',
|
||||||
action=AppendSort,
|
action=AppendSort,
|
||||||
help="Sort by this field, but backwards.")
|
help="Sort by this field, but backwards.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the header.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show by field names.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-total',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Q', '--small-table',
|
||||||
|
action='store_true',
|
||||||
|
help="Equivalent to --small-header + --no-total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Y', '--summary',
|
||||||
|
action='store_true',
|
||||||
|
help="Only show the total.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--everything',
|
'--everything',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
|
|||||||
@ -850,6 +850,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
percent=None,
|
percent=None,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
|
no_header=False,
|
||||||
|
small_header=False,
|
||||||
|
no_total=False,
|
||||||
|
small_table=False,
|
||||||
summary=False,
|
summary=False,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
@ -948,7 +952,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
if compare:
|
if compare:
|
||||||
names.sort(
|
names.sort(
|
||||||
key=lambda n: (
|
key=lambda n: (
|
||||||
|
# move compare entry to the top, note this can be
|
||||||
|
# overridden by explicitly sorting by fields
|
||||||
table.get(n) == compare_result,
|
table.get(n) == compare_result,
|
||||||
|
# sort by ratio if comparing
|
||||||
tuple(
|
tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -957,6 +964,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
reverse=True)
|
reverse=True)
|
||||||
if diff or percent:
|
if diff or percent:
|
||||||
names.sort(
|
names.sort(
|
||||||
|
# sort by ratio if diffing
|
||||||
key=lambda n: tuple(
|
key=lambda n: tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -981,24 +989,26 @@ def table(Result, results, diff_results=None, *,
|
|||||||
lines = []
|
lines = []
|
||||||
|
|
||||||
# header
|
# header
|
||||||
header = ['%s%s' % (
|
if not no_header:
|
||||||
','.join(by),
|
header = ['%s%s' % (
|
||||||
' (%d added, %d removed)' % (
|
','.join(by),
|
||||||
sum(1 for n in table if n not in diff_table),
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in table if n not in diff_table),
|
||||||
if diff else '')
|
sum(1 for n in diff_table if n not in table))
|
||||||
if not summary else '']
|
if diff else '')
|
||||||
if not diff:
|
if not small_header and not small_table and not summary
|
||||||
for k in fields:
|
else '']
|
||||||
header.append(k)
|
if not diff:
|
||||||
else:
|
for k in fields:
|
||||||
for k in fields:
|
header.append(k)
|
||||||
header.append('o'+k)
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('n'+k)
|
header.append('o'+k)
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('d'+k)
|
header.append('n'+k)
|
||||||
lines.append(header)
|
for k in fields:
|
||||||
|
header.append('d'+k)
|
||||||
|
lines.append(header)
|
||||||
|
|
||||||
# entry helper
|
# entry helper
|
||||||
def table_entry(name, r, diff_r=None):
|
def table_entry(name, r, diff_r=None):
|
||||||
@ -1119,7 +1129,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
prefixes[2+is_last] + " "))
|
prefixes[2+is_last] + " "))
|
||||||
|
|
||||||
# entries
|
# entries
|
||||||
if (not summary) or compare:
|
if not summary:
|
||||||
for name in names:
|
for name in names:
|
||||||
r = table.get(name)
|
r = table.get(name)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
@ -1137,8 +1147,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
"| ",
|
"| ",
|
||||||
" "))
|
" "))
|
||||||
|
|
||||||
# total, unless we're comparing
|
# total
|
||||||
if not (compare and not percent and not diff):
|
if not no_total and not (small_table and not summary):
|
||||||
r = next(iter(fold(Result, results, by=[])), None)
|
r = next(iter(fold(Result, results, by=[])), None)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
diff_r = None
|
diff_r = None
|
||||||
@ -1461,10 +1471,6 @@ if __name__ == "__main__":
|
|||||||
'-c', '--compare',
|
'-c', '--compare',
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
help="Compare results to the row matching this by pattern.")
|
help="Compare results to the row matching this by pattern.")
|
||||||
parser.add_argument(
|
|
||||||
'-Y', '--summary',
|
|
||||||
action='store_true',
|
|
||||||
help="Only show the total.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--by',
|
'-b', '--by',
|
||||||
action='append',
|
action='append',
|
||||||
@ -1501,6 +1507,26 @@ if __name__ == "__main__":
|
|||||||
nargs='?',
|
nargs='?',
|
||||||
action=AppendSort,
|
action=AppendSort,
|
||||||
help="Sort by this field, but backwards.")
|
help="Sort by this field, but backwards.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the header.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show by field names.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-total',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Q', '--small-table',
|
||||||
|
action='store_true',
|
||||||
|
help="Equivalent to --small-header + --no-total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Y', '--summary',
|
||||||
|
action='store_true',
|
||||||
|
help="Only show the total.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-F', '--source',
|
'-F', '--source',
|
||||||
dest='sources',
|
dest='sources',
|
||||||
|
|||||||
@ -820,6 +820,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
percent=None,
|
percent=None,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
|
no_header=False,
|
||||||
|
small_header=False,
|
||||||
|
no_total=False,
|
||||||
|
small_table=False,
|
||||||
summary=False,
|
summary=False,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
@ -918,7 +922,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
if compare:
|
if compare:
|
||||||
names.sort(
|
names.sort(
|
||||||
key=lambda n: (
|
key=lambda n: (
|
||||||
|
# move compare entry to the top, note this can be
|
||||||
|
# overridden by explicitly sorting by fields
|
||||||
table.get(n) == compare_result,
|
table.get(n) == compare_result,
|
||||||
|
# sort by ratio if comparing
|
||||||
tuple(
|
tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -927,6 +934,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
reverse=True)
|
reverse=True)
|
||||||
if diff or percent:
|
if diff or percent:
|
||||||
names.sort(
|
names.sort(
|
||||||
|
# sort by ratio if diffing
|
||||||
key=lambda n: tuple(
|
key=lambda n: tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -951,24 +959,26 @@ def table(Result, results, diff_results=None, *,
|
|||||||
lines = []
|
lines = []
|
||||||
|
|
||||||
# header
|
# header
|
||||||
header = ['%s%s' % (
|
if not no_header:
|
||||||
','.join(by),
|
header = ['%s%s' % (
|
||||||
' (%d added, %d removed)' % (
|
','.join(by),
|
||||||
sum(1 for n in table if n not in diff_table),
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in table if n not in diff_table),
|
||||||
if diff else '')
|
sum(1 for n in diff_table if n not in table))
|
||||||
if not summary else '']
|
if diff else '')
|
||||||
if not diff:
|
if not small_header and not small_table and not summary
|
||||||
for k in fields:
|
else '']
|
||||||
header.append(k)
|
if not diff:
|
||||||
else:
|
for k in fields:
|
||||||
for k in fields:
|
header.append(k)
|
||||||
header.append('o'+k)
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('n'+k)
|
header.append('o'+k)
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('d'+k)
|
header.append('n'+k)
|
||||||
lines.append(header)
|
for k in fields:
|
||||||
|
header.append('d'+k)
|
||||||
|
lines.append(header)
|
||||||
|
|
||||||
# entry helper
|
# entry helper
|
||||||
def table_entry(name, r, diff_r=None):
|
def table_entry(name, r, diff_r=None):
|
||||||
@ -1089,7 +1099,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
prefixes[2+is_last] + " "))
|
prefixes[2+is_last] + " "))
|
||||||
|
|
||||||
# entries
|
# entries
|
||||||
if (not summary) or compare:
|
if not summary:
|
||||||
for name in names:
|
for name in names:
|
||||||
r = table.get(name)
|
r = table.get(name)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
@ -1107,8 +1117,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
"| ",
|
"| ",
|
||||||
" "))
|
" "))
|
||||||
|
|
||||||
# total, unless we're comparing
|
# total
|
||||||
if not (compare and not percent and not diff):
|
if not no_total and not (small_table and not summary):
|
||||||
r = next(iter(fold(Result, results, by=[])), None)
|
r = next(iter(fold(Result, results, by=[])), None)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
diff_r = None
|
diff_r = None
|
||||||
@ -1463,10 +1473,6 @@ if __name__ == "__main__":
|
|||||||
'-c', '--compare',
|
'-c', '--compare',
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
help="Compare results to the row matching this by pattern.")
|
help="Compare results to the row matching this by pattern.")
|
||||||
parser.add_argument(
|
|
||||||
'-Y', '--summary',
|
|
||||||
action='store_true',
|
|
||||||
help="Only show the total.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--by',
|
'-b', '--by',
|
||||||
action='append',
|
action='append',
|
||||||
@ -1503,6 +1509,26 @@ if __name__ == "__main__":
|
|||||||
nargs='?',
|
nargs='?',
|
||||||
action=AppendSort,
|
action=AppendSort,
|
||||||
help="Sort by this field, but backwards.")
|
help="Sort by this field, but backwards.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the header.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show by field names.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-total',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Q', '--small-table',
|
||||||
|
action='store_true',
|
||||||
|
help="Equivalent to --small-header + --no-total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Y', '--summary',
|
||||||
|
action='store_true',
|
||||||
|
help="Only show the total.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-F', '--source',
|
'-F', '--source',
|
||||||
dest='sources',
|
dest='sources',
|
||||||
|
|||||||
@ -484,6 +484,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
percent=None,
|
percent=None,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
|
no_header=False,
|
||||||
|
small_header=False,
|
||||||
|
no_total=False,
|
||||||
|
small_table=False,
|
||||||
summary=False,
|
summary=False,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
@ -582,7 +586,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
if compare:
|
if compare:
|
||||||
names.sort(
|
names.sort(
|
||||||
key=lambda n: (
|
key=lambda n: (
|
||||||
|
# move compare entry to the top, note this can be
|
||||||
|
# overridden by explicitly sorting by fields
|
||||||
table.get(n) == compare_result,
|
table.get(n) == compare_result,
|
||||||
|
# sort by ratio if comparing
|
||||||
tuple(
|
tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -591,6 +598,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
reverse=True)
|
reverse=True)
|
||||||
if diff or percent:
|
if diff or percent:
|
||||||
names.sort(
|
names.sort(
|
||||||
|
# sort by ratio if diffing
|
||||||
key=lambda n: tuple(
|
key=lambda n: tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -615,24 +623,26 @@ def table(Result, results, diff_results=None, *,
|
|||||||
lines = []
|
lines = []
|
||||||
|
|
||||||
# header
|
# header
|
||||||
header = ['%s%s' % (
|
if not no_header:
|
||||||
','.join(by),
|
header = ['%s%s' % (
|
||||||
' (%d added, %d removed)' % (
|
','.join(by),
|
||||||
sum(1 for n in table if n not in diff_table),
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in table if n not in diff_table),
|
||||||
if diff else '')
|
sum(1 for n in diff_table if n not in table))
|
||||||
if not summary else '']
|
if diff else '')
|
||||||
if not diff:
|
if not small_header and not small_table and not summary
|
||||||
for k in fields:
|
else '']
|
||||||
header.append(k)
|
if not diff:
|
||||||
else:
|
for k in fields:
|
||||||
for k in fields:
|
header.append(k)
|
||||||
header.append('o'+k)
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('n'+k)
|
header.append('o'+k)
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('d'+k)
|
header.append('n'+k)
|
||||||
lines.append(header)
|
for k in fields:
|
||||||
|
header.append('d'+k)
|
||||||
|
lines.append(header)
|
||||||
|
|
||||||
# entry helper
|
# entry helper
|
||||||
def table_entry(name, r, diff_r=None):
|
def table_entry(name, r, diff_r=None):
|
||||||
@ -753,7 +763,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
prefixes[2+is_last] + " "))
|
prefixes[2+is_last] + " "))
|
||||||
|
|
||||||
# entries
|
# entries
|
||||||
if (not summary) or compare:
|
if not summary:
|
||||||
for name in names:
|
for name in names:
|
||||||
r = table.get(name)
|
r = table.get(name)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
@ -771,8 +781,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
"| ",
|
"| ",
|
||||||
" "))
|
" "))
|
||||||
|
|
||||||
# total, unless we're comparing
|
# total
|
||||||
if not (compare and not percent and not diff):
|
if not no_total and not (small_table and not summary):
|
||||||
r = next(iter(fold(Result, results, by=[])), None)
|
r = next(iter(fold(Result, results, by=[])), None)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
diff_r = None
|
diff_r = None
|
||||||
@ -961,10 +971,6 @@ if __name__ == "__main__":
|
|||||||
'-c', '--compare',
|
'-c', '--compare',
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
help="Compare results to the row matching this by pattern.")
|
help="Compare results to the row matching this by pattern.")
|
||||||
parser.add_argument(
|
|
||||||
'-Y', '--summary',
|
|
||||||
action='store_true',
|
|
||||||
help="Only show the total.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--by',
|
'-b', '--by',
|
||||||
action='append',
|
action='append',
|
||||||
@ -1001,6 +1007,26 @@ if __name__ == "__main__":
|
|||||||
nargs='?',
|
nargs='?',
|
||||||
action=AppendSort,
|
action=AppendSort,
|
||||||
help="Sort by this field, but backwards.")
|
help="Sort by this field, but backwards.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the header.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show by field names.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-total',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Q', '--small-table',
|
||||||
|
action='store_true',
|
||||||
|
help="Equivalent to --small-header + --no-total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Y', '--summary',
|
||||||
|
action='store_true',
|
||||||
|
help="Only show the total.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--everything',
|
'--everything',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
|
|||||||
@ -553,6 +553,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
percent=None,
|
percent=None,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
|
no_header=False,
|
||||||
|
small_header=False,
|
||||||
|
no_total=False,
|
||||||
|
small_table=False,
|
||||||
summary=False,
|
summary=False,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
@ -651,7 +655,10 @@ def table(Result, results, diff_results=None, *,
|
|||||||
if compare:
|
if compare:
|
||||||
names.sort(
|
names.sort(
|
||||||
key=lambda n: (
|
key=lambda n: (
|
||||||
|
# move compare entry to the top, note this can be
|
||||||
|
# overridden by explicitly sorting by fields
|
||||||
table.get(n) == compare_result,
|
table.get(n) == compare_result,
|
||||||
|
# sort by ratio if comparing
|
||||||
tuple(
|
tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -660,6 +667,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
reverse=True)
|
reverse=True)
|
||||||
if diff or percent:
|
if diff or percent:
|
||||||
names.sort(
|
names.sort(
|
||||||
|
# sort by ratio if diffing
|
||||||
key=lambda n: tuple(
|
key=lambda n: tuple(
|
||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(table.get(n), k, None),
|
getattr(table.get(n), k, None),
|
||||||
@ -684,24 +692,26 @@ def table(Result, results, diff_results=None, *,
|
|||||||
lines = []
|
lines = []
|
||||||
|
|
||||||
# header
|
# header
|
||||||
header = ['%s%s' % (
|
if not no_header:
|
||||||
','.join(by),
|
header = ['%s%s' % (
|
||||||
' (%d added, %d removed)' % (
|
','.join(by),
|
||||||
sum(1 for n in table if n not in diff_table),
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in table if n not in diff_table),
|
||||||
if diff else '')
|
sum(1 for n in diff_table if n not in table))
|
||||||
if not summary else '']
|
if diff else '')
|
||||||
if not diff:
|
if not small_header and not small_table and not summary
|
||||||
for k in fields:
|
else '']
|
||||||
header.append(k)
|
if not diff:
|
||||||
else:
|
for k in fields:
|
||||||
for k in fields:
|
header.append(k)
|
||||||
header.append('o'+k)
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('n'+k)
|
header.append('o'+k)
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('d'+k)
|
header.append('n'+k)
|
||||||
lines.append(header)
|
for k in fields:
|
||||||
|
header.append('d'+k)
|
||||||
|
lines.append(header)
|
||||||
|
|
||||||
# entry helper
|
# entry helper
|
||||||
def table_entry(name, r, diff_r=None):
|
def table_entry(name, r, diff_r=None):
|
||||||
@ -822,7 +832,7 @@ def table(Result, results, diff_results=None, *,
|
|||||||
prefixes[2+is_last] + " "))
|
prefixes[2+is_last] + " "))
|
||||||
|
|
||||||
# entries
|
# entries
|
||||||
if (not summary) or compare:
|
if not summary:
|
||||||
for name in names:
|
for name in names:
|
||||||
r = table.get(name)
|
r = table.get(name)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
@ -840,8 +850,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
"| ",
|
"| ",
|
||||||
" "))
|
" "))
|
||||||
|
|
||||||
# total, unless we're comparing
|
# total
|
||||||
if not (compare and not percent and not diff):
|
if not no_total and not (small_table and not summary):
|
||||||
r = next(iter(fold(Result, results, by=[])), None)
|
r = next(iter(fold(Result, results, by=[])), None)
|
||||||
if diff_results is None:
|
if diff_results is None:
|
||||||
diff_r = None
|
diff_r = None
|
||||||
@ -1027,10 +1037,6 @@ if __name__ == "__main__":
|
|||||||
'-c', '--compare',
|
'-c', '--compare',
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
help="Compare results to the row matching this by pattern.")
|
help="Compare results to the row matching this by pattern.")
|
||||||
parser.add_argument(
|
|
||||||
'-Y', '--summary',
|
|
||||||
action='store_true',
|
|
||||||
help="Only show the total.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--by',
|
'-b', '--by',
|
||||||
action='append',
|
action='append',
|
||||||
@ -1067,6 +1073,26 @@ if __name__ == "__main__":
|
|||||||
nargs='?',
|
nargs='?',
|
||||||
action=AppendSort,
|
action=AppendSort,
|
||||||
help="Sort by this field, but backwards.")
|
help="Sort by this field, but backwards.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the header.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-header',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show by field names.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--no-total',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show the total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Q', '--small-table',
|
||||||
|
action='store_true',
|
||||||
|
help="Equivalent to --small-header + --no-total.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-Y', '--summary',
|
||||||
|
action='store_true',
|
||||||
|
help="Only show the total.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--everything',
|
'--everything',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
|
|||||||
Reference in New Issue
Block a user