def go()

in scripts/testing_policy_stats.py [0:0]


    def go(self, days_start: int, days_end: int) -> None:
        commits = self.get_landed_since(days_start, days_end)

        logger.info("Retrieve Phabricator revisions linked to commits...")
        revision_ids = set(
            filter(None, (repository.get_revision_id(commit) for commit in commits))
        )

        logger.info("Download revisions of interest...")
        phabricator.download_revisions(revision_ids)

        revision_map = {
            revision["id"]: revision
            for revision in phabricator.get_revisions()
            if revision["id"] in revision_ids
        }

        logger.info("Download bugs of interest...")
        bugzilla.download_bugs(
            commit["bug_id"] for commit in commits if commit["bug_id"]
        )

        # Filter-out commits with no Phabricator revision linked to them, or with no testing tags.
        commits = [
            commit
            for commit in commits
            if repository.get_revision_id(commit) in revision_map
        ]
        logger.info("%d revisions", len(commits))

        # Filter-out commits with no testing tags.
        commits = [
            commit
            for commit in commits
            if phabricator.get_testing_project(
                revision_map[repository.get_revision_id(commit)]
            )
            is not None
        ]
        logger.info("%d revisions with testing tags", len(commits))

        def list_testing_projects(
            commits: Iterable[repository.CommitDict],
        ) -> Collection[str]:
            return list(
                filter(
                    None,
                    (
                        phabricator.get_testing_project(
                            revision_map[repository.get_revision_id(commit)]
                        )
                        for commit in commits
                    ),
                )
            )

        testing_projects = list_testing_projects(commits)

        print(f"Most common testing tags (in {len(commits)} revisions):")
        for testing_project, count in collections.Counter(
            testing_projects
        ).most_common():
            print(
                f"{testing_project} - {round(100 * count / len(testing_projects), 1)}%"
            )

        backedout_commits = [commit for commit in commits if commit["backedoutby"]]
        backedout_testing_projects = list_testing_projects(backedout_commits)

        print(
            f"\nMost common testing tags for backed-out revisions (in {len(backedout_commits)} revisions):"
        )
        for testing_project, count in collections.Counter(
            backedout_testing_projects
        ).most_common():
            print(
                f"{testing_project} - {round(100 * count / len(backedout_testing_projects), 1)}%"
            )

        regressor_bug_ids = {
            bug["id"] for bug in bugzilla.get_bugs() if len(bug["regressions"]) > 0
        }

        regressor_commits = [
            commit for commit in commits if commit["bug_id"] in regressor_bug_ids
        ]
        regressor_testing_projects = list_testing_projects(regressor_commits)

        print(
            f"\nMost common testing tags for revisions which caused regressions (in {len(regressor_commits)} revisions):"
        )
        for testing_project, count in collections.Counter(
            regressor_testing_projects
        ).most_common():
            print(
                f"{testing_project} - {round(100 * count / len(regressor_testing_projects), 1)}%"
            )