def create_dispatches()

in otava/slack.py [0:0]


    def create_dispatches(self) -> List[List[object]]:
        dispatches = []
        cur = self.__init_insufficient_data_dispatch()
        for test_name in self.tests_with_insufficient_data:
            if len(cur) == 50:
                dispatches.append(cur)
                cur = self.__init_insufficient_data_dispatch()
            cur.append(self.__plain_text_section_block(test_name))

        if len(cur) > self.__minimum_dispatch_length():
            dispatches.append(cur)

        dates_change_points = {}
        for test_name, analyzed_series in self.test_analyzed_series.items():
            for group in analyzed_series.change_points_by_time:
                cpg_time = datetime.fromtimestamp(group.time, tz=UTC)
                if self.since and cpg_time < self.since:
                    continue
                date_str = self.__datetime_to_str(cpg_time)
                if date_str not in dates_change_points:
                    dates_change_points[date_str] = {}
                dates_change_points[date_str][test_name] = group

        cur = self.__init_report_dispatch()
        for date in sorted(dates_change_points):
            add = [
                self.__block("divider"),
                self.__title_block(date),
            ] + self.__dates_change_points_summary(dates_change_points[date])

            if not len(cur) + len(add) < 50:
                dispatches.append(cur)
                cur = self.__init_report_dispatch()

            cur = cur + add

        if len(cur) > self.__minimum_dispatch_length():
            dispatches.append(cur)

        return dispatches