diff options
Diffstat (limited to 'benchmarks/helpers.py')
-rw-r--r-- | benchmarks/helpers.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/benchmarks/helpers.py b/benchmarks/helpers.py new file mode 100644 index 0000000..bfb9821 --- /dev/null +++ b/benchmarks/helpers.py @@ -0,0 +1,28 @@ +import typing as t + + +def border(columns: t.Iterable[str]) -> str: + columns = " | ".join(columns) + return f"| {columns} |" + + +def ascii_table(table: list[dict[str, t.Any]]) -> str: + columns = [] + for row in table: + for key in row: + if key not in columns: + columns.append(key) + + widths = {column: max(len(column), 15) for column in columns} + + lines = [ + border(column.rjust(width) for column, width in widths.items()), + border(str("-" * width) for width in widths.values()), + ] + + for row in table: + lines.append( + border(str(row[column]).rjust(width)[0:width] for column, width in widths.items()) + ) + + return "\n".join(lines) |