From 41f55c248a372215c75da2e1b4fe94200cc6a2f5 Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Tue, 7 Apr 2026 22:48:14 -0500 Subject: [PATCH] ci: limit number of automated reviewer requests --- lib/python/manage-reviewers.py | 42 ++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/lib/python/manage-reviewers.py b/lib/python/manage-reviewers.py index 92e928682..a92816dcc 100755 --- a/lib/python/manage-reviewers.py +++ b/lib/python/manage-reviewers.py @@ -13,6 +13,9 @@ import subprocess import sys from typing import Final +MAX_REVIEWERS: Final[int] = 6 +MAX_MAINTAINERS_THRESHOLD: Final[int] = 10 + # Configure logging to output to stderr logging.basicConfig( level=logging.INFO, @@ -268,21 +271,36 @@ def main() -> None: # --- 3. Determine new reviewers to add --- reviewers_to_add: set[str] = set() if not no_changed_files and maintainers: - users_to_exclude = {args.pr_author} | past_reviewers | pending_reviewers | manually_removed - potential_reviewers = maintainers - users_to_exclude + if len(maintainers) > MAX_MAINTAINERS_THRESHOLD: + logging.info( + "Number of maintainers (%d) exceeds threshold (%d). Skipping automated reviewer requests for this large PR.", + len(maintainers), + MAX_MAINTAINERS_THRESHOLD, + ) + else: + users_to_exclude = {args.pr_author} | past_reviewers | pending_reviewers | manually_removed + potential_reviewers = maintainers - users_to_exclude - reviewers_to_add = { - user for user in potential_reviewers if is_collaborator(args.owner, args.repo, user) - } + reviewers_to_add = { + user for user in potential_reviewers if is_collaborator(args.owner, args.repo, user) + } - non_collaborators = potential_reviewers - reviewers_to_add - if non_collaborators: - logging.warning("Ignoring non-collaborators: %s", ", ".join(non_collaborators)) + non_collaborators = potential_reviewers - reviewers_to_add + if non_collaborators: + logging.warning("Ignoring non-collaborators: %s", ", ".join(non_collaborators)) - manually_removed_maintainers = reviewers_to_add & manually_removed - if manually_removed_maintainers: - logging.info("Not re-adding manually removed maintainers: %s", ", ".join(manually_removed_maintainers)) - reviewers_to_add -= manually_removed + manually_removed_maintainers = reviewers_to_add & manually_removed + if manually_removed_maintainers: + logging.info("Not re-adding manually removed maintainers: %s", ", ".join(manually_removed_maintainers)) + reviewers_to_add -= manually_removed + + if len(reviewers_to_add) > MAX_REVIEWERS: + logging.info( + "Limiting reviewers to add from %d to %d.", + len(reviewers_to_add), + MAX_REVIEWERS, + ) + reviewers_to_add = set(list(sorted(reviewers_to_add))[:MAX_REVIEWERS]) if reviewers_to_add: if args.dry_run: