> >> + > >> + > >> +def ascii_one(result): > >> + """Return ASCII representation of bench_one() returned dict.""" > >> + if 'average' in result: > >> + s = '{:.2f} +- {:.2f}'.format(result['average'], result['delta']) > >> + if 'n-failed' in result: > >> + s += '\n({} failed)'.format(result['n-failed']) > >> + return s > >> + else: > >> + return 'FAILED' > > > > I think it would be visually clearer if "+-" was printed without any > > space between it and the following number, using something > > like this: > > > > s = ' {:.2f} +-{:.2f}'.format(result['average'], result['delta']) > > > > The resulting table would look like: > > > > ---------- ------------- ------------- ------------- > > backup-1 backup-2 mirror > > ssd -> ssd 0.43 +-0.00 4.48 +-0.06 4.38 +-0.02 > > ssd -> hdd 10.60 +-0.08 10.69 +-0.18 10.57 +-0.05 > > ssd -> nbd 33.81 +-0.37 10.67 +-0.17 10.07 +-0.07 > > ---------- ------------- ------------- ------------- > > > > But, this is just cosmetics. > > > > With or without the suggestion above: > > > > Reviewed-by: Aleksandar Markovic > > Thanks for reviewing! > > Agree with this change, but I don't think it worth to resend the series for this one space) > Hope it may be applied with pull request.. > I am an occasional Python programmer, and I felt comfortable reviewing your series, but I am not a maintainer of this directory, and I believe Eduardo or Cleber or other more active Python contributors would be better choice for selecting this series in their pull request. So, I can't send this series to Peter - Cleber, Eduardo, please see to it. Yours, Aleksandar > > > >> + > >> + > >> +def bench(test_func, test_envs, test_cases, *args, **vargs): > >> + """Fill benchmark table > >> + > >> + test_func -- benchmarking function, see bench_one for description > >> + test_envs -- list of test environments, see bench_one > >> + test_cases -- list of test cases, see bench_one > >> + args, vargs -- additional arguments for bench_one > >> + > >> + Returns dict with the following fields: > >> + 'envs': test_envs > >> + 'cases': test_cases > >> + 'tab': filled 2D array, where cell [i][j] is bench_one result for > >> + test_cases[i] for test_envs[j] (i.e., rows are test cases and > >> + columns are test environments) > >> + """ > >> + tab = {} > >> + results = { > >> + 'envs': test_envs, > >> + 'cases': test_cases, > >> + 'tab': tab > >> + } > >> + n = 1 > >> + n_tests = len(test_envs) * len(test_cases) > >> + for env in test_envs: > >> + for case in test_cases: > >> + print('Testing {}/{}: {} :: {}'.format(n, n_tests, > >> + env['id'], case['id'])) > >> + if case['id'] not in tab: > >> + tab[case['id']] = {} > >> + tab[case['id']][env['id']] = bench_one(test_func, env, case, > >> + *args, **vargs) > >> + n += 1 > >> + > >> + print('Done') > >> + return results > >> + > >> + > >> +def ascii(results): > >> + """Return ASCII representation of bench() returned dict.""" > >> + from tabulate import tabulate > >> + > >> + tab = [[""] + [c['id'] for c in results['envs']]] > >> + for case in results['cases']: > >> + row = [case['id']] > >> + for env in results['envs']: > >> + row.append(ascii_one(results['tab'][case['id']][env['id']])) > >> + tab.append(row) > >> + > >> + return tabulate(tab) > >> -- > >> 2.21.0 > >> > >> > > > -- > Best regards, > Vladimir