scripts: Added --small-table, renamed -%/--percent-diff
So now three levels of diff info available: -d/--diff (default): bench (0 added, 0 removed) othroughput nthroughput dthroughput bench_wt_seq+write 29405.8 29405.7 -0.1 (-0.0%) bench_wt_random+write 957.3 957.3 +0.0 bench_wt_logging+write 2153.4 2153.4 +0.0 bench_wt_many+write 6855.4 453.6 -6401.8 (-93.4%) bench_rt_seq+read 23939212.8 23939212.7 -0.1 (-0.0%) bench_rt_random+read 6461004.1 6461004.1 +0.0 bench_rt_logging+read 4164.0 4163.9 -0.1 (-0.0%) bench_rt_many+read 392368.5 392380.4 +11.9 (+0.0%) TOTAL 30836121.3 30829731.1 -6390.2 (-0.0%) -d/--diff + --small-diff: bench othroughput nthroughput bench_wt_seq+write 29405.8 29405.7 (-0.0%) bench_wt_random+write 957.3 957.3 bench_wt_logging+write 2153.4 2153.4 bench_wt_many+write 6855.4 453.6 (-93.4%) bench_rt_seq+read 23939212.8 23939212.7 (-0.0%) bench_rt_random+read 6461004.1 6461004.1 bench_rt_logging+read 4164.0 4163.9 (-0.0%) bench_rt_many+read 392368.5 392380.4 (+0.0%) TOTAL 30836121.3 30829731.1 (-0.0%) -d/--diff + -%/--percent-diff: bench throughput bench_wt_seq+write 29405.7 (-0.0%) bench_wt_random+write 957.3 (+0.0%) bench_wt_logging+write 2153.4 (+0.0%) bench_wt_many+write 453.6 (-93.4%) bench_rt_seq+read 23939212.7 (-0.0%) bench_rt_random+read 6461004.1 (+0.0%) bench_rt_logging+read 4163.9 (-0.0%) bench_rt_many+read 392380.4 (+0.0%) TOTAL 30829731.1 (-0.0%) The motivation for this is easier rendering of bench diffs, where we have a relatively long list (8, for now) of benches, with large enough numbers that including all of old + new + delta ends up a bit much.
This commit is contained in:
+41
-12
@@ -611,7 +611,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
sort=None,
|
sort=None,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
percent=False,
|
small_diff=False,
|
||||||
|
percent_diff=False,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
hlabel=None,
|
hlabel=None,
|
||||||
@@ -665,11 +666,18 @@ def table(Result, results, diff_results=None, *,
|
|||||||
' (%d added, %d removed)' % (
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in table if n not in diff_table),
|
sum(1 for n in table if n not in diff_table),
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in diff_table if n not in table))
|
||||||
if diff_results is not None and not percent else '')
|
if diff_results is not None
|
||||||
|
and not percent_diff
|
||||||
|
and not small_diff
|
||||||
|
else '')
|
||||||
if not small_header else '']
|
if not small_header else '']
|
||||||
if diff_results is None or percent:
|
if diff_results is None or percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append(hlabel(k) if hlabel is not None else k)
|
header.append(hlabel(k) if hlabel is not None else k)
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
|
header.append('n'+(hlabel(k) if hlabel is not None else k))
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
@@ -711,8 +719,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(compare_r, k, None)))))
|
getattr(compare_r, k, None)))))
|
||||||
# percent entry?
|
# percent diff entry?
|
||||||
elif percent:
|
elif percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
entry.append(
|
entry.append(
|
||||||
(getattr(r, k).table()
|
(getattr(r, k).table()
|
||||||
@@ -724,6 +732,23 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(diff_r, k, None)))))
|
getattr(diff_r, k, None)))))
|
||||||
|
# small diff entry?
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
entry.append(getattr(diff_r, k).table()
|
||||||
|
if getattr(diff_r, k, None) is not None
|
||||||
|
else types[k].none)
|
||||||
|
entry.append(
|
||||||
|
(getattr(r, k).table()
|
||||||
|
if getattr(r, k, None) is not None
|
||||||
|
else types[k].none,
|
||||||
|
(lambda t: ['+∞%'] if t == +mt.inf
|
||||||
|
else ['-∞%'] if t == -mt.inf
|
||||||
|
else ['%+.1f%%' % (100*t)] if t
|
||||||
|
else [])(
|
||||||
|
types[k].ratio(
|
||||||
|
getattr(r, k, None),
|
||||||
|
getattr(diff_r, k, None)))))
|
||||||
# diff entry?
|
# diff entry?
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
@@ -1149,22 +1174,26 @@ if __name__ == "__main__":
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-d', '--diff',
|
'-d', '--diff',
|
||||||
help="Specify CSV/JSON file to diff against.")
|
help="Specify CSV/JSON file to diff against.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-diff',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show diff delta.")
|
||||||
# need a special Action here because this % causes problems
|
# need a special Action here because this % causes problems
|
||||||
class StoreTruePercent(argparse._StoreTrueAction):
|
class StoreTruePercentDiff(argparse._StoreTrueAction):
|
||||||
def format_usage(self):
|
def format_usage(self):
|
||||||
return '-%%'
|
return '-%%'
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-%', '--percent',
|
'-%', '--percent-diff',
|
||||||
action=StoreTruePercent,
|
action=StoreTruePercentDiff,
|
||||||
help="Only show percentage change, not a full diff.")
|
help="Only show percentage change, not a full diff.")
|
||||||
parser.add_argument(
|
|
||||||
'-C', '--compare',
|
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
|
||||||
help="Compare results to the row matching this by pattern.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-a', '--all',
|
'-a', '--all',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help="Show all, not just the ones that changed.")
|
help="Show all, not just the ones that changed.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-C', '--compare',
|
||||||
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
|
help="Compare results to the row matching this by pattern.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--by',
|
'-b', '--by',
|
||||||
action='append',
|
action='append',
|
||||||
|
|||||||
+41
-12
@@ -480,7 +480,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
sort=None,
|
sort=None,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
percent=False,
|
small_diff=False,
|
||||||
|
percent_diff=False,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
hlabel=None,
|
hlabel=None,
|
||||||
@@ -534,11 +535,18 @@ def table(Result, results, diff_results=None, *,
|
|||||||
' (%d added, %d removed)' % (
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in table if n not in diff_table),
|
sum(1 for n in table if n not in diff_table),
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in diff_table if n not in table))
|
||||||
if diff_results is not None and not percent else '')
|
if diff_results is not None
|
||||||
|
and not percent_diff
|
||||||
|
and not small_diff
|
||||||
|
else '')
|
||||||
if not small_header else '']
|
if not small_header else '']
|
||||||
if diff_results is None or percent:
|
if diff_results is None or percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append(hlabel(k) if hlabel is not None else k)
|
header.append(hlabel(k) if hlabel is not None else k)
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
|
header.append('n'+(hlabel(k) if hlabel is not None else k))
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
@@ -580,8 +588,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(compare_r, k, None)))))
|
getattr(compare_r, k, None)))))
|
||||||
# percent entry?
|
# percent diff entry?
|
||||||
elif percent:
|
elif percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
entry.append(
|
entry.append(
|
||||||
(getattr(r, k).table()
|
(getattr(r, k).table()
|
||||||
@@ -593,6 +601,23 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(diff_r, k, None)))))
|
getattr(diff_r, k, None)))))
|
||||||
|
# small diff entry?
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
entry.append(getattr(diff_r, k).table()
|
||||||
|
if getattr(diff_r, k, None) is not None
|
||||||
|
else types[k].none)
|
||||||
|
entry.append(
|
||||||
|
(getattr(r, k).table()
|
||||||
|
if getattr(r, k, None) is not None
|
||||||
|
else types[k].none,
|
||||||
|
(lambda t: ['+∞%'] if t == +mt.inf
|
||||||
|
else ['-∞%'] if t == -mt.inf
|
||||||
|
else ['%+.1f%%' % (100*t)] if t
|
||||||
|
else [])(
|
||||||
|
types[k].ratio(
|
||||||
|
getattr(r, k, None),
|
||||||
|
getattr(diff_r, k, None)))))
|
||||||
# diff entry?
|
# diff entry?
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
@@ -1132,22 +1157,26 @@ if __name__ == "__main__":
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-d', '--diff',
|
'-d', '--diff',
|
||||||
help="Specify CSV/JSON file to diff against.")
|
help="Specify CSV/JSON file to diff against.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-diff',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show diff delta.")
|
||||||
# need a special Action here because this % causes problems
|
# need a special Action here because this % causes problems
|
||||||
class StoreTruePercent(argparse._StoreTrueAction):
|
class StoreTruePercentDiff(argparse._StoreTrueAction):
|
||||||
def format_usage(self):
|
def format_usage(self):
|
||||||
return '-%%'
|
return '-%%'
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-%', '--percent',
|
'-%', '--percent-diff',
|
||||||
action=StoreTruePercent,
|
action=StoreTruePercentDiff,
|
||||||
help="Only show percentage change, not a full diff.")
|
help="Only show percentage change, not a full diff.")
|
||||||
parser.add_argument(
|
|
||||||
'-C', '--compare',
|
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
|
||||||
help="Compare results to the row matching this by pattern.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-a', '--all',
|
'-a', '--all',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help="Show all, not just the ones that changed.")
|
help="Show all, not just the ones that changed.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-C', '--compare',
|
||||||
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
|
help="Compare results to the row matching this by pattern.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--by',
|
'-b', '--by',
|
||||||
action='append',
|
action='append',
|
||||||
|
|||||||
+41
-12
@@ -2288,7 +2288,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
sort=None,
|
sort=None,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
percent=False,
|
small_diff=False,
|
||||||
|
percent_diff=False,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
hlabel=None,
|
hlabel=None,
|
||||||
@@ -2342,11 +2343,18 @@ def table(Result, results, diff_results=None, *,
|
|||||||
' (%d added, %d removed)' % (
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in table if n not in diff_table),
|
sum(1 for n in table if n not in diff_table),
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in diff_table if n not in table))
|
||||||
if diff_results is not None and not percent else '')
|
if diff_results is not None
|
||||||
|
and not percent_diff
|
||||||
|
and not small_diff
|
||||||
|
else '')
|
||||||
if not small_header else '']
|
if not small_header else '']
|
||||||
if diff_results is None or percent:
|
if diff_results is None or percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append(hlabel(k) if hlabel is not None else k)
|
header.append(hlabel(k) if hlabel is not None else k)
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
|
header.append('n'+(hlabel(k) if hlabel is not None else k))
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
@@ -2388,8 +2396,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(compare_r, k, None)))))
|
getattr(compare_r, k, None)))))
|
||||||
# percent entry?
|
# percent diff entry?
|
||||||
elif percent:
|
elif percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
entry.append(
|
entry.append(
|
||||||
(getattr(r, k).table()
|
(getattr(r, k).table()
|
||||||
@@ -2401,6 +2409,23 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(diff_r, k, None)))))
|
getattr(diff_r, k, None)))))
|
||||||
|
# small diff entry?
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
entry.append(getattr(diff_r, k).table()
|
||||||
|
if getattr(diff_r, k, None) is not None
|
||||||
|
else types[k].none)
|
||||||
|
entry.append(
|
||||||
|
(getattr(r, k).table()
|
||||||
|
if getattr(r, k, None) is not None
|
||||||
|
else types[k].none,
|
||||||
|
(lambda t: ['+∞%'] if t == +mt.inf
|
||||||
|
else ['-∞%'] if t == -mt.inf
|
||||||
|
else ['%+.1f%%' % (100*t)] if t
|
||||||
|
else [])(
|
||||||
|
types[k].ratio(
|
||||||
|
getattr(r, k, None),
|
||||||
|
getattr(diff_r, k, None)))))
|
||||||
# diff entry?
|
# diff entry?
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
@@ -3254,22 +3279,26 @@ if __name__ == "__main__":
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-d', '--diff',
|
'-d', '--diff',
|
||||||
help="Specify CSV/JSON file to diff against.")
|
help="Specify CSV/JSON file to diff against.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-diff',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show diff delta.")
|
||||||
# need a special Action here because this % causes problems
|
# need a special Action here because this % causes problems
|
||||||
class StoreTruePercent(argparse._StoreTrueAction):
|
class StoreTruePercentDiff(argparse._StoreTrueAction):
|
||||||
def format_usage(self):
|
def format_usage(self):
|
||||||
return '-%%'
|
return '-%%'
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-%', '--percent',
|
'-%', '--percent-diff',
|
||||||
action=StoreTruePercent,
|
action=StoreTruePercentDiff,
|
||||||
help="Only show percentage change, not a full diff.")
|
help="Only show percentage change, not a full diff.")
|
||||||
parser.add_argument(
|
|
||||||
'-C', '--compare',
|
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
|
||||||
help="Compare results to the row matching this by pattern.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-a', '--all',
|
'-a', '--all',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help="Show all, not just the ones that changed.")
|
help="Show all, not just the ones that changed.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-C', '--compare',
|
||||||
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
|
help="Compare results to the row matching this by pattern.")
|
||||||
class AppendEnumerate(argparse.Action):
|
class AppendEnumerate(argparse.Action):
|
||||||
def __call__(self, parser, namespace, value, option):
|
def __call__(self, parser, namespace, value, option):
|
||||||
if namespace.by is None:
|
if namespace.by is None:
|
||||||
|
|||||||
+41
-12
@@ -870,7 +870,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
sort=None,
|
sort=None,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
percent=False,
|
small_diff=False,
|
||||||
|
percent_diff=False,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
hlabel=None,
|
hlabel=None,
|
||||||
@@ -924,11 +925,18 @@ def table(Result, results, diff_results=None, *,
|
|||||||
' (%d added, %d removed)' % (
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in table if n not in diff_table),
|
sum(1 for n in table if n not in diff_table),
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in diff_table if n not in table))
|
||||||
if diff_results is not None and not percent else '')
|
if diff_results is not None
|
||||||
|
and not percent_diff
|
||||||
|
and not small_diff
|
||||||
|
else '')
|
||||||
if not small_header else '']
|
if not small_header else '']
|
||||||
if diff_results is None or percent:
|
if diff_results is None or percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append(hlabel(k) if hlabel is not None else k)
|
header.append(hlabel(k) if hlabel is not None else k)
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
|
header.append('n'+(hlabel(k) if hlabel is not None else k))
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
@@ -970,8 +978,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(compare_r, k, None)))))
|
getattr(compare_r, k, None)))))
|
||||||
# percent entry?
|
# percent diff entry?
|
||||||
elif percent:
|
elif percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
entry.append(
|
entry.append(
|
||||||
(getattr(r, k).table()
|
(getattr(r, k).table()
|
||||||
@@ -983,6 +991,23 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(diff_r, k, None)))))
|
getattr(diff_r, k, None)))))
|
||||||
|
# small diff entry?
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
entry.append(getattr(diff_r, k).table()
|
||||||
|
if getattr(diff_r, k, None) is not None
|
||||||
|
else types[k].none)
|
||||||
|
entry.append(
|
||||||
|
(getattr(r, k).table()
|
||||||
|
if getattr(r, k, None) is not None
|
||||||
|
else types[k].none,
|
||||||
|
(lambda t: ['+∞%'] if t == +mt.inf
|
||||||
|
else ['-∞%'] if t == -mt.inf
|
||||||
|
else ['%+.1f%%' % (100*t)] if t
|
||||||
|
else [])(
|
||||||
|
types[k].ratio(
|
||||||
|
getattr(r, k, None),
|
||||||
|
getattr(diff_r, k, None)))))
|
||||||
# diff entry?
|
# diff entry?
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
@@ -1444,22 +1469,26 @@ if __name__ == "__main__":
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-d', '--diff',
|
'-d', '--diff',
|
||||||
help="Specify CSV/JSON file to diff against.")
|
help="Specify CSV/JSON file to diff against.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-diff',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show diff delta.")
|
||||||
# need a special Action here because this % causes problems
|
# need a special Action here because this % causes problems
|
||||||
class StoreTruePercent(argparse._StoreTrueAction):
|
class StoreTruePercentDiff(argparse._StoreTrueAction):
|
||||||
def format_usage(self):
|
def format_usage(self):
|
||||||
return '-%%'
|
return '-%%'
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-%', '--percent',
|
'-%', '--percent-diff',
|
||||||
action=StoreTruePercent,
|
action=StoreTruePercentDiff,
|
||||||
help="Only show percentage change, not a full diff.")
|
help="Only show percentage change, not a full diff.")
|
||||||
parser.add_argument(
|
|
||||||
'-C', '--compare',
|
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
|
||||||
help="Compare results to the row matching this by pattern.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-a', '--all',
|
'-a', '--all',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help="Show all, not just the ones that changed.")
|
help="Show all, not just the ones that changed.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-C', '--compare',
|
||||||
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
|
help="Compare results to the row matching this by pattern.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--by',
|
'-b', '--by',
|
||||||
action='append',
|
action='append',
|
||||||
|
|||||||
+41
-12
@@ -611,7 +611,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
sort=None,
|
sort=None,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
percent=False,
|
small_diff=False,
|
||||||
|
percent_diff=False,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
hlabel=None,
|
hlabel=None,
|
||||||
@@ -665,11 +666,18 @@ def table(Result, results, diff_results=None, *,
|
|||||||
' (%d added, %d removed)' % (
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in table if n not in diff_table),
|
sum(1 for n in table if n not in diff_table),
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in diff_table if n not in table))
|
||||||
if diff_results is not None and not percent else '')
|
if diff_results is not None
|
||||||
|
and not percent_diff
|
||||||
|
and not small_diff
|
||||||
|
else '')
|
||||||
if not small_header else '']
|
if not small_header else '']
|
||||||
if diff_results is None or percent:
|
if diff_results is None or percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append(hlabel(k) if hlabel is not None else k)
|
header.append(hlabel(k) if hlabel is not None else k)
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
|
header.append('n'+(hlabel(k) if hlabel is not None else k))
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
@@ -711,8 +719,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(compare_r, k, None)))))
|
getattr(compare_r, k, None)))))
|
||||||
# percent entry?
|
# percent diff entry?
|
||||||
elif percent:
|
elif percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
entry.append(
|
entry.append(
|
||||||
(getattr(r, k).table()
|
(getattr(r, k).table()
|
||||||
@@ -724,6 +732,23 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(diff_r, k, None)))))
|
getattr(diff_r, k, None)))))
|
||||||
|
# small diff entry?
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
entry.append(getattr(diff_r, k).table()
|
||||||
|
if getattr(diff_r, k, None) is not None
|
||||||
|
else types[k].none)
|
||||||
|
entry.append(
|
||||||
|
(getattr(r, k).table()
|
||||||
|
if getattr(r, k, None) is not None
|
||||||
|
else types[k].none,
|
||||||
|
(lambda t: ['+∞%'] if t == +mt.inf
|
||||||
|
else ['-∞%'] if t == -mt.inf
|
||||||
|
else ['%+.1f%%' % (100*t)] if t
|
||||||
|
else [])(
|
||||||
|
types[k].ratio(
|
||||||
|
getattr(r, k, None),
|
||||||
|
getattr(diff_r, k, None)))))
|
||||||
# diff entry?
|
# diff entry?
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
@@ -1149,22 +1174,26 @@ if __name__ == "__main__":
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-d', '--diff',
|
'-d', '--diff',
|
||||||
help="Specify CSV/JSON file to diff against.")
|
help="Specify CSV/JSON file to diff against.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-diff',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show diff delta.")
|
||||||
# need a special Action here because this % causes problems
|
# need a special Action here because this % causes problems
|
||||||
class StoreTruePercent(argparse._StoreTrueAction):
|
class StoreTruePercentDiff(argparse._StoreTrueAction):
|
||||||
def format_usage(self):
|
def format_usage(self):
|
||||||
return '-%%'
|
return '-%%'
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-%', '--percent',
|
'-%', '--percent-diff',
|
||||||
action=StoreTruePercent,
|
action=StoreTruePercentDiff,
|
||||||
help="Only show percentage change, not a full diff.")
|
help="Only show percentage change, not a full diff.")
|
||||||
parser.add_argument(
|
|
||||||
'-C', '--compare',
|
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
|
||||||
help="Compare results to the row matching this by pattern.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-a', '--all',
|
'-a', '--all',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help="Show all, not just the ones that changed.")
|
help="Show all, not just the ones that changed.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-C', '--compare',
|
||||||
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
|
help="Compare results to the row matching this by pattern.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--by',
|
'-b', '--by',
|
||||||
action='append',
|
action='append',
|
||||||
|
|||||||
+41
-12
@@ -969,7 +969,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
sort=None,
|
sort=None,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
percent=False,
|
small_diff=False,
|
||||||
|
percent_diff=False,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
hlabel=None,
|
hlabel=None,
|
||||||
@@ -1023,11 +1024,18 @@ def table(Result, results, diff_results=None, *,
|
|||||||
' (%d added, %d removed)' % (
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in table if n not in diff_table),
|
sum(1 for n in table if n not in diff_table),
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in diff_table if n not in table))
|
||||||
if diff_results is not None and not percent else '')
|
if diff_results is not None
|
||||||
|
and not percent_diff
|
||||||
|
and not small_diff
|
||||||
|
else '')
|
||||||
if not small_header else '']
|
if not small_header else '']
|
||||||
if diff_results is None or percent:
|
if diff_results is None or percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append(hlabel(k) if hlabel is not None else k)
|
header.append(hlabel(k) if hlabel is not None else k)
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
|
header.append('n'+(hlabel(k) if hlabel is not None else k))
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
@@ -1069,8 +1077,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(compare_r, k, None)))))
|
getattr(compare_r, k, None)))))
|
||||||
# percent entry?
|
# percent diff entry?
|
||||||
elif percent:
|
elif percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
entry.append(
|
entry.append(
|
||||||
(getattr(r, k).table()
|
(getattr(r, k).table()
|
||||||
@@ -1082,6 +1090,23 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(diff_r, k, None)))))
|
getattr(diff_r, k, None)))))
|
||||||
|
# small diff entry?
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
entry.append(getattr(diff_r, k).table()
|
||||||
|
if getattr(diff_r, k, None) is not None
|
||||||
|
else types[k].none)
|
||||||
|
entry.append(
|
||||||
|
(getattr(r, k).table()
|
||||||
|
if getattr(r, k, None) is not None
|
||||||
|
else types[k].none,
|
||||||
|
(lambda t: ['+∞%'] if t == +mt.inf
|
||||||
|
else ['-∞%'] if t == -mt.inf
|
||||||
|
else ['%+.1f%%' % (100*t)] if t
|
||||||
|
else [])(
|
||||||
|
types[k].ratio(
|
||||||
|
getattr(r, k, None),
|
||||||
|
getattr(diff_r, k, None)))))
|
||||||
# diff entry?
|
# diff entry?
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
@@ -1689,22 +1714,26 @@ if __name__ == "__main__":
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-d', '--diff',
|
'-d', '--diff',
|
||||||
help="Specify CSV/JSON file to diff against.")
|
help="Specify CSV/JSON file to diff against.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-diff',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show diff delta.")
|
||||||
# need a special Action here because this % causes problems
|
# need a special Action here because this % causes problems
|
||||||
class StoreTruePercent(argparse._StoreTrueAction):
|
class StoreTruePercentDiff(argparse._StoreTrueAction):
|
||||||
def format_usage(self):
|
def format_usage(self):
|
||||||
return '-%%'
|
return '-%%'
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-%', '--percent',
|
'-%', '--percent-diff',
|
||||||
action=StoreTruePercent,
|
action=StoreTruePercentDiff,
|
||||||
help="Only show percentage change, not a full diff.")
|
help="Only show percentage change, not a full diff.")
|
||||||
parser.add_argument(
|
|
||||||
'-C', '--compare',
|
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
|
||||||
help="Compare results to the row matching this by pattern.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-a', '--all',
|
'-a', '--all',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help="Show all, not just the ones that changed.")
|
help="Show all, not just the ones that changed.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-C', '--compare',
|
||||||
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
|
help="Compare results to the row matching this by pattern.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--by',
|
'-b', '--by',
|
||||||
action='append',
|
action='append',
|
||||||
|
|||||||
+41
-12
@@ -943,7 +943,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
sort=None,
|
sort=None,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
percent=False,
|
small_diff=False,
|
||||||
|
percent_diff=False,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
hlabel=None,
|
hlabel=None,
|
||||||
@@ -997,11 +998,18 @@ def table(Result, results, diff_results=None, *,
|
|||||||
' (%d added, %d removed)' % (
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in table if n not in diff_table),
|
sum(1 for n in table if n not in diff_table),
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in diff_table if n not in table))
|
||||||
if diff_results is not None and not percent else '')
|
if diff_results is not None
|
||||||
|
and not percent_diff
|
||||||
|
and not small_diff
|
||||||
|
else '')
|
||||||
if not small_header else '']
|
if not small_header else '']
|
||||||
if diff_results is None or percent:
|
if diff_results is None or percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append(hlabel(k) if hlabel is not None else k)
|
header.append(hlabel(k) if hlabel is not None else k)
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
|
header.append('n'+(hlabel(k) if hlabel is not None else k))
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
@@ -1043,8 +1051,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(compare_r, k, None)))))
|
getattr(compare_r, k, None)))))
|
||||||
# percent entry?
|
# percent diff entry?
|
||||||
elif percent:
|
elif percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
entry.append(
|
entry.append(
|
||||||
(getattr(r, k).table()
|
(getattr(r, k).table()
|
||||||
@@ -1056,6 +1064,23 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(diff_r, k, None)))))
|
getattr(diff_r, k, None)))))
|
||||||
|
# small diff entry?
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
entry.append(getattr(diff_r, k).table()
|
||||||
|
if getattr(diff_r, k, None) is not None
|
||||||
|
else types[k].none)
|
||||||
|
entry.append(
|
||||||
|
(getattr(r, k).table()
|
||||||
|
if getattr(r, k, None) is not None
|
||||||
|
else types[k].none,
|
||||||
|
(lambda t: ['+∞%'] if t == +mt.inf
|
||||||
|
else ['-∞%'] if t == -mt.inf
|
||||||
|
else ['%+.1f%%' % (100*t)] if t
|
||||||
|
else [])(
|
||||||
|
types[k].ratio(
|
||||||
|
getattr(r, k, None),
|
||||||
|
getattr(diff_r, k, None)))))
|
||||||
# diff entry?
|
# diff entry?
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
@@ -1693,22 +1718,26 @@ if __name__ == "__main__":
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-d', '--diff',
|
'-d', '--diff',
|
||||||
help="Specify CSV/JSON file to diff against.")
|
help="Specify CSV/JSON file to diff against.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-diff',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show diff delta.")
|
||||||
# need a special Action here because this % causes problems
|
# need a special Action here because this % causes problems
|
||||||
class StoreTruePercent(argparse._StoreTrueAction):
|
class StoreTruePercentDiff(argparse._StoreTrueAction):
|
||||||
def format_usage(self):
|
def format_usage(self):
|
||||||
return '-%%'
|
return '-%%'
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-%', '--percent',
|
'-%', '--percent-diff',
|
||||||
action=StoreTruePercent,
|
action=StoreTruePercentDiff,
|
||||||
help="Only show percentage change, not a full diff.")
|
help="Only show percentage change, not a full diff.")
|
||||||
parser.add_argument(
|
|
||||||
'-C', '--compare',
|
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
|
||||||
help="Compare results to the row matching this by pattern.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-a', '--all',
|
'-a', '--all',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help="Show all, not just the ones that changed.")
|
help="Show all, not just the ones that changed.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-C', '--compare',
|
||||||
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
|
help="Compare results to the row matching this by pattern.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--by',
|
'-b', '--by',
|
||||||
action='append',
|
action='append',
|
||||||
|
|||||||
+41
-12
@@ -611,7 +611,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
sort=None,
|
sort=None,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
percent=False,
|
small_diff=False,
|
||||||
|
percent_diff=False,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
hlabel=None,
|
hlabel=None,
|
||||||
@@ -665,11 +666,18 @@ def table(Result, results, diff_results=None, *,
|
|||||||
' (%d added, %d removed)' % (
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in table if n not in diff_table),
|
sum(1 for n in table if n not in diff_table),
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in diff_table if n not in table))
|
||||||
if diff_results is not None and not percent else '')
|
if diff_results is not None
|
||||||
|
and not percent_diff
|
||||||
|
and not small_diff
|
||||||
|
else '')
|
||||||
if not small_header else '']
|
if not small_header else '']
|
||||||
if diff_results is None or percent:
|
if diff_results is None or percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append(hlabel(k) if hlabel is not None else k)
|
header.append(hlabel(k) if hlabel is not None else k)
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
|
header.append('n'+(hlabel(k) if hlabel is not None else k))
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
@@ -711,8 +719,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(compare_r, k, None)))))
|
getattr(compare_r, k, None)))))
|
||||||
# percent entry?
|
# percent diff entry?
|
||||||
elif percent:
|
elif percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
entry.append(
|
entry.append(
|
||||||
(getattr(r, k).table()
|
(getattr(r, k).table()
|
||||||
@@ -724,6 +732,23 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(diff_r, k, None)))))
|
getattr(diff_r, k, None)))))
|
||||||
|
# small diff entry?
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
entry.append(getattr(diff_r, k).table()
|
||||||
|
if getattr(diff_r, k, None) is not None
|
||||||
|
else types[k].none)
|
||||||
|
entry.append(
|
||||||
|
(getattr(r, k).table()
|
||||||
|
if getattr(r, k, None) is not None
|
||||||
|
else types[k].none,
|
||||||
|
(lambda t: ['+∞%'] if t == +mt.inf
|
||||||
|
else ['-∞%'] if t == -mt.inf
|
||||||
|
else ['%+.1f%%' % (100*t)] if t
|
||||||
|
else [])(
|
||||||
|
types[k].ratio(
|
||||||
|
getattr(r, k, None),
|
||||||
|
getattr(diff_r, k, None)))))
|
||||||
# diff entry?
|
# diff entry?
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
@@ -1187,22 +1212,26 @@ if __name__ == "__main__":
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-d', '--diff',
|
'-d', '--diff',
|
||||||
help="Specify CSV/JSON file to diff against.")
|
help="Specify CSV/JSON file to diff against.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-diff',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show diff delta.")
|
||||||
# need a special Action here because this % causes problems
|
# need a special Action here because this % causes problems
|
||||||
class StoreTruePercent(argparse._StoreTrueAction):
|
class StoreTruePercentDiff(argparse._StoreTrueAction):
|
||||||
def format_usage(self):
|
def format_usage(self):
|
||||||
return '-%%'
|
return '-%%'
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-%', '--percent',
|
'-%', '--percent-diff',
|
||||||
action=StoreTruePercent,
|
action=StoreTruePercentDiff,
|
||||||
help="Only show percentage change, not a full diff.")
|
help="Only show percentage change, not a full diff.")
|
||||||
parser.add_argument(
|
|
||||||
'-C', '--compare',
|
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
|
||||||
help="Compare results to the row matching this by pattern.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-a', '--all',
|
'-a', '--all',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help="Show all, not just the ones that changed.")
|
help="Show all, not just the ones that changed.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-C', '--compare',
|
||||||
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
|
help="Compare results to the row matching this by pattern.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--by',
|
'-b', '--by',
|
||||||
action='append',
|
action='append',
|
||||||
|
|||||||
+41
-12
@@ -759,7 +759,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
sort=None,
|
sort=None,
|
||||||
depth=1,
|
depth=1,
|
||||||
hot=None,
|
hot=None,
|
||||||
percent=False,
|
small_diff=False,
|
||||||
|
percent_diff=False,
|
||||||
all=False,
|
all=False,
|
||||||
compare=None,
|
compare=None,
|
||||||
hlabel=None,
|
hlabel=None,
|
||||||
@@ -813,11 +814,18 @@ def table(Result, results, diff_results=None, *,
|
|||||||
' (%d added, %d removed)' % (
|
' (%d added, %d removed)' % (
|
||||||
sum(1 for n in table if n not in diff_table),
|
sum(1 for n in table if n not in diff_table),
|
||||||
sum(1 for n in diff_table if n not in table))
|
sum(1 for n in diff_table if n not in table))
|
||||||
if diff_results is not None and not percent else '')
|
if diff_results is not None
|
||||||
|
and not percent_diff
|
||||||
|
and not small_diff
|
||||||
|
else '')
|
||||||
if not small_header else '']
|
if not small_header else '']
|
||||||
if diff_results is None or percent:
|
if diff_results is None or percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append(hlabel(k) if hlabel is not None else k)
|
header.append(hlabel(k) if hlabel is not None else k)
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
|
header.append('n'+(hlabel(k) if hlabel is not None else k))
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
header.append('o'+(hlabel(k) if hlabel is not None else k))
|
||||||
@@ -859,8 +867,8 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(compare_r, k, None)))))
|
getattr(compare_r, k, None)))))
|
||||||
# percent entry?
|
# percent diff entry?
|
||||||
elif percent:
|
elif percent_diff:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
entry.append(
|
entry.append(
|
||||||
(getattr(r, k).table()
|
(getattr(r, k).table()
|
||||||
@@ -872,6 +880,23 @@ def table(Result, results, diff_results=None, *,
|
|||||||
types[k].ratio(
|
types[k].ratio(
|
||||||
getattr(r, k, None),
|
getattr(r, k, None),
|
||||||
getattr(diff_r, k, None)))))
|
getattr(diff_r, k, None)))))
|
||||||
|
# small diff entry?
|
||||||
|
elif small_diff:
|
||||||
|
for k in fields:
|
||||||
|
entry.append(getattr(diff_r, k).table()
|
||||||
|
if getattr(diff_r, k, None) is not None
|
||||||
|
else types[k].none)
|
||||||
|
entry.append(
|
||||||
|
(getattr(r, k).table()
|
||||||
|
if getattr(r, k, None) is not None
|
||||||
|
else types[k].none,
|
||||||
|
(lambda t: ['+∞%'] if t == +mt.inf
|
||||||
|
else ['-∞%'] if t == -mt.inf
|
||||||
|
else ['%+.1f%%' % (100*t)] if t
|
||||||
|
else [])(
|
||||||
|
types[k].ratio(
|
||||||
|
getattr(r, k, None),
|
||||||
|
getattr(diff_r, k, None)))))
|
||||||
# diff entry?
|
# diff entry?
|
||||||
else:
|
else:
|
||||||
for k in fields:
|
for k in fields:
|
||||||
@@ -1333,22 +1358,26 @@ if __name__ == "__main__":
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-d', '--diff',
|
'-d', '--diff',
|
||||||
help="Specify CSV/JSON file to diff against.")
|
help="Specify CSV/JSON file to diff against.")
|
||||||
|
parser.add_argument(
|
||||||
|
'--small-diff',
|
||||||
|
action='store_true',
|
||||||
|
help="Don't show diff delta.")
|
||||||
# need a special Action here because this % causes problems
|
# need a special Action here because this % causes problems
|
||||||
class StoreTruePercent(argparse._StoreTrueAction):
|
class StoreTruePercentDiff(argparse._StoreTrueAction):
|
||||||
def format_usage(self):
|
def format_usage(self):
|
||||||
return '-%%'
|
return '-%%'
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-%', '--percent',
|
'-%', '--percent-diff',
|
||||||
action=StoreTruePercent,
|
action=StoreTruePercentDiff,
|
||||||
help="Only show percentage change, not a full diff.")
|
help="Only show percentage change, not a full diff.")
|
||||||
parser.add_argument(
|
|
||||||
'-C', '--compare',
|
|
||||||
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
|
||||||
help="Compare results to the row matching this by pattern.")
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-a', '--all',
|
'-a', '--all',
|
||||||
action='store_true',
|
action='store_true',
|
||||||
help="Show all, not just the ones that changed.")
|
help="Show all, not just the ones that changed.")
|
||||||
|
parser.add_argument(
|
||||||
|
'-C', '--compare',
|
||||||
|
type=lambda x: tuple(v.strip() for v in x.split(',')),
|
||||||
|
help="Compare results to the row matching this by pattern.")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--by',
|
'-b', '--by',
|
||||||
action='append',
|
action='append',
|
||||||
|
|||||||
Reference in New Issue
Block a user