diff --git a/reportsizedeltas/reportsizedeltas.py b/reportsizedeltas/reportsizedeltas.py index b9be40c..378e4c4 100644 --- a/reportsizedeltas/reportsizedeltas.py +++ b/reportsizedeltas/reportsizedeltas.py @@ -85,6 +85,7 @@ class ReportKeys: maximum = "maximum" sketches = "sketches" compilation_success = "compilation_success" + warnings = "warnings" def __init__(self, repository_name: str, sketches_reports_source: str, token: str) -> None: self.repository_name = repository_name @@ -414,7 +415,9 @@ def add_summary_report_row(self, report_data, fqbn_data) -> None: # Populate the row with data for size_data in fqbn_data[self.ReportKeys.sizes]: # Determine column number for this memory type - column_number = get_report_column_number(report=report_data, column_heading=size_data[self.ReportKeys.name]) + column_number = get_report_column_number( + report=report_data, column_heading=size_data[self.ReportKeys.name], extra_column_heading="%" + ) # Add the memory data to the cell if self.ReportKeys.delta in size_data: @@ -441,6 +444,17 @@ def add_summary_report_row(self, report_data, fqbn_data) -> None: report_data[row_number][column_number + 1] = self.get_summary_value( show_emoji=False, minimum=self.not_applicable_indicator, maximum=self.not_applicable_indicator ) + if self.ReportKeys.warnings in fqbn_data: + column_number = get_report_column_number( + report=report_data, column_heading="Warnings
+/-", extra_column_heading=None + ) + warnings_data = fqbn_data[self.ReportKeys.warnings] + deltas = warnings_data[self.ReportKeys.delta][self.ReportKeys.absolute] + report_data[row_number][column_number] = self.get_summary_value( + show_emoji=True, + minimum=deltas[self.ReportKeys.minimum], + maximum=deltas[self.ReportKeys.maximum], + ) def add_detailed_report_row(self, report_data, fqbn_data) -> None: """Add a row to the detailed report. @@ -466,6 +480,7 @@ def add_detailed_report_row(self, report_data, fqbn_data) -> None: sketch_name=sketch[self.ReportKeys.name], size_name=size_data[self.ReportKeys.name] ) ), + extra_column_heading="%", ) # Add the memory data to the cell @@ -484,6 +499,20 @@ def add_detailed_report_row(self, report_data, fqbn_data) -> None: # Relative report_data[row_number][column_number + 1] = self.not_applicable_indicator + if self.ReportKeys.warnings in sketch: + warnings_data = sketch[self.ReportKeys.warnings] + column_number = get_report_column_number( + report=report_data, + column_heading=( + "`{sketch_name}`
Warnings
+/-".format(sketch_name=sketch[self.ReportKeys.name]) + ), + extra_column_heading="Warnings
current", + ) + report_data[row_number][column_number] = warnings_data[self.ReportKeys.delta][self.ReportKeys.absolute] + report_data[row_number][column_number + 1] = warnings_data[self.ReportKeys.current][ + self.ReportKeys.absolute + ] + def get_summary_value(self, show_emoji: bool, minimum, maximum) -> str: """Return the Markdown formatted text for a memory change data cell in the report table. @@ -740,14 +769,13 @@ def get_page_count(link_header: str | None) -> int: return page_count -def get_report_column_number(report, column_heading: str) -> int: +def get_report_column_number(report, column_heading: str, extra_column_heading: str | None) -> int: """Return the column number of the given heading. Keyword arguments: column_heading -- the text of the column heading. If it doesn't exist, a column will be created with this heading. + extra_column_heading -- if not None, an additional column with this header (needs not be unique) will be created. """ - relative_column_heading = "%" - try: column_number = report[0].index(column_heading, 1) except ValueError: @@ -760,11 +788,12 @@ def get_report_column_number(report, column_heading: str) -> int: # Expand the size of the final row (the current row) to match the new number of columns report[len(report) - 1].append("") - # Relative column - # Add the heading - report[0].append(relative_column_heading) - # Expand the size of the final row (the current row) to match the new number of columns - report[len(report) - 1].append("") + if extra_column_heading is not None: + # Extra column + # Add the heading + report[0].append(extra_column_heading) + # Expand the size of the final row (the current row) to match the new number of columns + report[len(report) - 1].append("") return column_number diff --git a/reportsizedeltas/tests/test_reportsizedeltas.py b/reportsizedeltas/tests/test_reportsizedeltas.py index 4fe96cd..90a1d12 100644 --- a/reportsizedeltas/tests/test_reportsizedeltas.py +++ b/reportsizedeltas/tests/test_reportsizedeltas.py @@ -987,7 +987,9 @@ def test_get_page_count(): ) def test_get_report_column_number(report, column_heading, expected_column_number, expected_report): assert ( - reportsizedeltas.get_report_column_number(report=report, column_heading=column_heading) + reportsizedeltas.get_report_column_number( + report=report, column_heading=column_heading, extra_column_heading="%" + ) == expected_column_number ) assert report == expected_report