def _ensure_alerts_variety()

in treeherder/perf/auto_perf_sheriffing/backfill_reports.py [0:0]


    def _ensure_alerts_variety(self, sorted_alerts: list[PerformanceAlert]):
        """
        The alerts container must be sorted before being passed to this function.
        The returned list must contain regressions and (if present) improvements.
        """
        regressions_only = all(alert.is_regression for alert in sorted_alerts)
        improvements_only = all(not alert.is_regression for alert in sorted_alerts)

        if regressions_only or improvements_only:
            resulted_alerts_list = self._ensure_platform_variety(sorted_alerts)
        else:  # mixed alert types
            regressions = [alert for alert in sorted_alerts if alert.is_regression]
            improvements = [alert for alert in sorted_alerts if not alert.is_regression]

            if len(regressions) > 1:
                regressions = self._ensure_platform_variety(regressions)
                regressions[-1] = improvements[0]
            regressions.append(improvements[0])
            resulted_alerts_list = regressions

        return resulted_alerts_list[
            : self.max_improvements if improvements_only else self.max_alerts
        ]