Skip to content

Commit

Permalink
Remove change column from output
Browse files Browse the repository at this point in the history
  • Loading branch information
camposandro committed Oct 31, 2023
1 parent d94cdf6 commit d0f6033
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 22 deletions.
4 changes: 3 additions & 1 deletion src/lf_asv_formatter/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@ def parse_asv_version():
"""Parses asv version from command line arguments."""
parser = argparse.ArgumentParser("lf_asv_formatter")
# asv defaults to v0.5.1 for backward compatibility
parser.add_argument("--asv_version", help="Version of asv", type=str, default="0.5.1")
parser.add_argument(
"--asv_version", help="Version of asv", type=str, default="0.5.1"
)
return parser.parse_args().asv_version


Expand Down
54 changes: 47 additions & 7 deletions src/lf_asv_formatter/simple_formatter.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import re

from .asv_formatter import AsvFormatter

# pylint: disable=line-too-long
Expand All @@ -22,13 +24,13 @@ class SimpleFormatter(AsvFormatter):
| | 3.00±0.5s | 2.97±1s | 0.99 | benchmarks.TimeSuite.time_range |
The output will be similar to:
| Change | Before [bd9dfcb0] | After [65151fad] | Ratio | Benchmark (Parameter) |
|----------|----------------------|---------------------|---------|------------------------------------|
| | 2.67±0.3s | 4.05±0.2s | ~1.52 | benchmarks.TimeSuite.time_xrange |
| | 1.97±1s | 2.51±0.9s | ~1.27 | benchmarks.TimeSuite.time_keys |
| | 2.82±1s | 1.95±0.8s | ~0.69 | benchmarks.TimeSuite.time_iterkeys |
| + | 464 | 3.89k | 8.38 | benchmarks.MemSuite.mem_list |
| | 3.00±0.5s | 2.97±1s | 0.99 | benchmarks.TimeSuite.time_range |
| Before [bd9dfcb0] | After [65151fad] | Ratio | Benchmark (Parameter) |
|----------------------|---------------------|---------|------------------------------------|
| 2.67±0.3s | 4.05±0.2s | ~1.52 | benchmarks.TimeSuite.time_xrange |
| 1.97±1s | 2.51±0.9s | ~1.27 | benchmarks.TimeSuite.time_keys |
| 2.82±1s | 1.95±0.8s | ~0.69 | benchmarks.TimeSuite.time_iterkeys |
| 464 | 3.89k | 8.38 | benchmarks.MemSuite.mem_list |
| 3.00±0.5s | 2.97±1s | 0.99 | benchmarks.TimeSuite.time_range |
"""

def rewrite_file(self):
Expand All @@ -51,6 +53,44 @@ def format_asv_table_from_file(self, rows):
str
The formatted asv table.
"""
headers = self.parse_headers(rows[0])
bench_data = rows[2:]
max_row = min(self.MAX_NUM_ROWS, len(bench_data)) + 2
if len(headers) > 4:
# If number of columns > 4, there is a "Change"
# column that we wish to discard
rows = self.remove_first_column(rows)
return "".join(map(str, rows[:max_row]))

def parse_headers(self, headers_str):
"""Parses table headers using a regular expression.
Parameters
----------
headers_str: str
The string with the labels and respective "|" delimiters.
Returns
-------
list of str
A list with the table headers.
"""
# Regex iterator to find all columns between two "|" chars
iterator = re.finditer(r"\|(.+?)(?=\|)", headers_str)
return [match.group(1) for match in iterator]

def remove_first_column(self, lines):
"""Discards the first column of the benchmarks table as it
does not contain useful information ("+" / "-" / "x").
Parameters
----------
lines : list of lists
Lines containing benchmark information.
Returns
-------
list of lists
Lines containing benchmark information.
"""
return [re.sub(r"^\|(.*?\|)", r"|", line) for line in lines]
14 changes: 7 additions & 7 deletions tests/data/simple/expected_output
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
| Change | Before [bd9dfcb0] | After [65151fad] | Ratio | Benchmark (Parameter) |
|----------|----------------------|---------------------|---------|------------------------------------|
| | 2.67±0.3s | 4.05±0.2s | ~1.52 | benchmarks.TimeSuite.time_xrange |
| | 1.97±1s | 2.51±0.9s | ~1.27 | benchmarks.TimeSuite.time_keys |
| | 2.82±1s | 1.95±0.8s | ~0.69 | benchmarks.TimeSuite.time_iterkeys |
| + | 464 | 3.89k | 8.38 | benchmarks.MemSuite.mem_list |
| | 3.00±0.5s | 2.97±1s | 0.99 | benchmarks.TimeSuite.time_range |
| Before [bd9dfcb0] | After [65151fad] | Ratio | Benchmark (Parameter) |
|----------------------|---------------------|---------|------------------------------------|
| 2.67±0.3s | 4.05±0.2s | ~1.52 | benchmarks.TimeSuite.time_xrange |
| 1.97±1s | 2.51±0.9s | ~1.27 | benchmarks.TimeSuite.time_keys |
| 2.82±1s | 1.95±0.8s | ~0.69 | benchmarks.TimeSuite.time_iterkeys |
| 464 | 3.89k | 8.38 | benchmarks.MemSuite.mem_list |
| 3.00±0.5s | 2.97±1s | 0.99 | benchmarks.TimeSuite.time_range |
14 changes: 7 additions & 7 deletions tests/data/simple/expected_output_verbose
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
| Change | Before [a4e3082d] <add-docs~15> | After [8110f9f7] <upgrade-asv> | Ratio | Benchmark (Parameter) |
|----------|-----------------------------------|----------------------------------|---------|------------------------------------|
| | 692±600ms | 2.72±1s | ~3.93 | benchmarks.TimeSuite.time_iterkeys |
| | 867±400ms | 2.21±1s | ~2.55 | benchmarks.TimeSuite.time_range |
| | 1.31±0.2s | 2.50±1s | ~1.92 | benchmarks.TimeSuite.time_keys |
| | 1.35±0.6s | 1.26±0.6s | 0.93 | benchmarks.TimeSuite.time_xrange |
| - | 2.92k | 1.46k | 0.50 | benchmarks.MemSuite.mem_list |
| Before [a4e3082d] <add-docs~15> | After [8110f9f7] <upgrade-asv> | Ratio | Benchmark (Parameter) |
|-----------------------------------|----------------------------------|---------|------------------------------------|
| 692±600ms | 2.72±1s | ~3.93 | benchmarks.TimeSuite.time_iterkeys |
| 867±400ms | 2.21±1s | ~2.55 | benchmarks.TimeSuite.time_range |
| 1.31±0.2s | 2.50±1s | ~1.92 | benchmarks.TimeSuite.time_keys |
| 1.35±0.6s | 1.26±0.6s | 0.93 | benchmarks.TimeSuite.time_xrange |
| 2.92k | 1.46k | 0.50 | benchmarks.MemSuite.mem_list |

0 comments on commit d0f6033

Please sign in to comment.