| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| """ |
| Script to close stale issue. Taken in part from the AllenNLP repository. |
| https://github.com/allenai/allennlp. |
| """ |
| import os |
| from datetime import datetime as dt |
|
|
| import github.GithubException |
| from github import Github |
|
|
|
|
| LABELS_TO_EXEMPT = [ |
| "good first issue", |
| "good second issue", |
| "good difficult issue", |
| "feature request", |
| "new model", |
| "wip", |
| ] |
|
|
|
|
| def main(): |
| g = Github(os.environ["GITHUB_TOKEN"]) |
| repo = g.get_repo("huggingface/transformers") |
| open_issues = repo.get_issues(state="open") |
|
|
| for i, issue in enumerate(open_issues): |
| print(i, issue) |
| comments = sorted(list(issue.get_comments()), key=lambda i: i.created_at, reverse=True) |
| last_comment = comments[0] if len(comments) > 0 else None |
| if ( |
| last_comment is not None and last_comment.user.login == "github-actions[bot]" |
| and (dt.utcnow() - issue.updated_at.replace(tzinfo=None)).days > 7 |
| and (dt.utcnow() - issue.created_at.replace(tzinfo=None)).days >= 30 |
| and not any(label.name.lower() in LABELS_TO_EXEMPT for label in issue.get_labels()) |
| ): |
| |
| try: |
| issue.edit(state="closed") |
| except github.GithubException as e: |
| print("Couldn't close the issue:", repr(e)) |
| elif ( |
| (dt.utcnow() - issue.updated_at.replace(tzinfo=None)).days > 23 |
| and (dt.utcnow() - issue.created_at.replace(tzinfo=None)).days >= 30 |
| and not any(label.name.lower() in LABELS_TO_EXEMPT for label in issue.get_labels()) |
| ): |
| |
| try: |
| issue.create_comment( |
| "This issue has been automatically marked as stale because it has not had " |
| "recent activity. If you think this still needs to be addressed " |
| "please comment on this thread.\n\nPlease note that issues that do not follow the " |
| "[contributing guidelines](https://github.com/huggingface/transformers/blob/main/CONTRIBUTING.md) " |
| "are likely to be ignored." |
| ) |
| except github.GithubException as e: |
| print("Couldn't create comment:", repr(e)) |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|