mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 12:54:11 +08:00
Make sure we don't propagate actionable label in docathon sync label script. Pull Request resolved: https://github.com/pytorch/pytorch/pull/155713 Approved by: https://github.com/clee2000
55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
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-2025" 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-2025' 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 and label != "actionable"
|
|
]
|
|
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()
|