|
| 1 | +# Copyright 2022 The HuggingFace Team, the AllenNLP library authors. All rights reserved. |
| 2 | +# |
| 3 | +# Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 | +# you may not use this file except in compliance with the License. |
| 5 | +# You may obtain a copy of the License at |
| 6 | +# |
| 7 | +# http://www.apache.org/licenses/LICENSE-2.0 |
| 8 | +# |
| 9 | +# Unless required by applicable law or agreed to in writing, software |
| 10 | +# distributed under the License is distributed on an "AS IS" BASIS, |
| 11 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 12 | +# See the License for the specific language governing permissions and |
| 13 | +# limitations under the License. |
| 14 | +""" |
| 15 | +Script to close stale issue. Taken in part from the AllenNLP repository. |
| 16 | +https://github.com/allenai/allennlp. |
| 17 | +""" |
| 18 | +import os |
| 19 | +from datetime import datetime as dt |
| 20 | + |
| 21 | +from github import Github |
| 22 | + |
| 23 | + |
| 24 | +LABELS_TO_EXEMPT = [ |
| 25 | + "good first issue", |
| 26 | + "good second issue", |
| 27 | + "good difficult issue", |
| 28 | + "enhancement", |
| 29 | + "new pipeline/model", |
| 30 | + "new scheduler", |
| 31 | + "wip", |
| 32 | +] |
| 33 | + |
| 34 | + |
| 35 | +def main(): |
| 36 | + g = Github(os.environ["GITHUB_TOKEN"]) |
| 37 | + repo = g.get_repo("huggingface/diffusers") |
| 38 | + open_issues = repo.get_issues(state="open") |
| 39 | + |
| 40 | + for issue in open_issues: |
| 41 | + comments = sorted([comment for comment in issue.get_comments()], key=lambda i: i.created_at, reverse=True) |
| 42 | + last_comment = comments[0] if len(comments) > 0 else None |
| 43 | + if ( |
| 44 | + last_comment is not None |
| 45 | + and last_comment.user.login != "github-actions[bot]" |
| 46 | + and (dt.utcnow() - issue.updated_at).days > 23 |
| 47 | + and (dt.utcnow() - issue.created_at).days >= 30 |
| 48 | + and not any(label.name.lower() in LABELS_TO_EXEMPT for label in issue.get_labels()) |
| 49 | + ): |
| 50 | + issue.create_comment( |
| 51 | + "This issue has been automatically marked as stale because it has not had " |
| 52 | + "recent activity. If you think this still needs to be addressed " |
| 53 | + "please comment on this thread.\n\nPlease note that issues that do not follow the " |
| 54 | + "[contributing guidelines](https://github.com/huggingface/diffusers/blob/main/CONTRIBUTING.md) " |
| 55 | + "are likely to be ignored." |
| 56 | + ) |
| 57 | + issue.edit(labels=["stale"]) |
| 58 | + |
| 59 | + |
| 60 | +if __name__ == "__main__": |
| 61 | + main() |
0 commit comments