in otava/report.py [0:0]
def __format_log_annotated(self, test_name: str) -> str:
"""Returns test log with change points marked as horizontal lines"""
lines = self.__format_log().split("\n")
col_widths = self.__column_widths(lines)
indexes = [cp.index for cp in self.__change_points]
separators = []
columns = list(
OrderedDict.fromkeys(["time", *self.__series.attributes, *self.__series.data])
)
for cp in self.__change_points:
separator = ""
info = ""
for col_index, col_name in enumerate(columns):
col_width = col_widths[col_index]
change = [c for c in cp.changes if c.metric == col_name]
if change:
change = change[0]
change_percent = change.forward_change_percent()
separator += "·" * col_width + " "
info += f"{change_percent:+.1f}%".rjust(col_width) + " "
else:
separator += " " * (col_width + 2)
info += " " * (col_width + 2)
separators.append(f"{separator}\n{info}\n{separator}")
lines = lines[:2] + insert_multiple(lines[2:], separators, indexes)
return "\n".join(lines)