def __dates_change_points_summary()

in otava/slack.py [0:0]


    def __dates_change_points_summary(self, test_changes: Dict[str, ChangePointGroup]):
        fields = []
        for test_name, group in test_changes.items():
            fields.append(f"*{test_name}*")
            summary = ""
            for change in group.changes:
                change_percent = change.forward_change_percent()
                change_emoji = self.__get_change_emoji(test_name, change)
                if isinf(change_percent):
                    report_percent = change_percent
                # Avoid rounding decimal change points to zero
                elif -5 < change_percent < 5:
                    report_percent = f"{change_percent:.1f}"
                else:
                    report_percent = round(change_percent)
                summary += f"{change_emoji} *{change.metric}*: {report_percent}%\n"
            fields.append(summary)

        sections = []
        i = 0
        while i < len(fields):
            section_fields = []
            while len(section_fields) < 10 and i < len(fields):
                section_fields.append(fields[i])
                i += 1
            sections.append(self.__fields_section(section_fields))

        return sections