import os import re import sys from github import Github def main() -> None: token = os.environ.get("GITHUB_TOKEN") repo_owner = "pytorch" repo_name = "pytorch" pull_request_number = int(sys.argv[1]) g = Github(token) repo = g.get_repo(f"{repo_owner}/{repo_name}") pull_request = repo.get_pull(pull_request_number) pull_request_body = pull_request.body # PR without description if pull_request_body is None: return # get issue number from the PR body if not re.search(r"#\d{1,6}", pull_request_body): print("The pull request does not mention an issue.") return issue_number = int(re.findall(r"#(\d{1,6})", pull_request_body)[0]) issue = repo.get_issue(issue_number) issue_labels = issue.labels docathon_label_present = any( label.name == "docathon-h1-2024" for label in issue_labels ) # if the issue has a docathon label, add all labels from the issue to the PR. if not docathon_label_present: print("The 'docathon-h1-2024' label is not present in the issue.") return pull_request_labels = pull_request.get_labels() pull_request_label_names = [label.name for label in pull_request_labels] issue_label_names = [label.name for label in issue_labels] labels_to_add = [ label for label in issue_label_names if label not in pull_request_label_names ] if not labels_to_add: print("The pull request already has the same labels.") return pull_request.add_to_labels(*labels_to_add) print("Labels added to the pull request!") if __name__ == "__main__": main()