diff --git a/scripts/set_assignees.py b/scripts/set_assignees.py index 42537737d26..15564f06fd1 100755 --- a/scripts/set_assignees.py +++ b/scripts/set_assignees.py @@ -55,7 +55,6 @@ def process_pr(gh, maintainer_file, number): log(f"working on https://github.com/{args.org}/{args.repo}/pull/{pr.number} : {pr.title}") labels = set() - collab = set() area_counter = defaultdict(int) maint = defaultdict(int) @@ -75,19 +74,24 @@ def process_pr(gh, maintainer_file, number): for a in areas: area_counter[a.name] += 1 labels.update(a.labels) - collab.update(a.collaborators) - collab.update(a.maintainers) for p in a.maintainers: maint[p] += 1 ac = dict(sorted(area_counter.items(), key=lambda item: item[1], reverse=True)) log(f"Area matches: {ac}") log(f"labels: {labels}") - log(f"collab: {collab}") if len(labels) > 10: log(f"Too many labels to be applied") return + # Create a list of collaborators ordered by the area match + collab = list() + for a in ac: + collab += maintainer_file.areas[a].maintainers + collab += maintainer_file.areas[a].collaborators + collab = list(dict.fromkeys(collab)) + log(f"collab: {collab}") + sm = dict(sorted(maint.items(), key=lambda item: item[1], reverse=True)) log(f"Submitted by: {pr.user.login}") @@ -168,13 +172,20 @@ def process_pr(gh, maintainer_file, number): except UnknownObjectException as e: log(f"Can't get user '{c}', account does not exist anymore? ({e})") - if reviewers: - try: - log(f"adding reviewers {reviewers}...") - if not args.dry_run: - pr.create_review_request(reviewers=reviewers) - except GithubException: - log("cant add reviewer") + if len(existing_reviewers) < 15: + reviewer_vacancy = 15 - len(existing_reviewers) + reviewers = reviewers[:reviewer_vacancy] + + if reviewers: + try: + log(f"adding reviewers {reviewers}...") + if not args.dry_run: + pr.create_review_request(reviewers=reviewers) + except GithubException: + log("cant add reviewer") + else: + log("not adding reviewers because the existing reviewer count is greater than or " + "equal to 15") ms = [] # assignees