Skip to content

Commit 214520c

Browse files
authored
[CI] Add stalebot (#481)
* Add stalebot * style * Remove the closing logic * Make sure not to spam
1 parent 039958e commit 214520c

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed

.github/workflows/stale.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: Stale Bot
2+
3+
on:
4+
schedule:
5+
- cron: "0 15 * * *"
6+
7+
jobs:
8+
close_stale_issues:
9+
name: Close Stale Issues
10+
if: github.repository == 'huggingface/diffusers'
11+
runs-on: ubuntu-latest
12+
env:
13+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
14+
steps:
15+
- uses: actions/checkout@v2
16+
17+
- name: Setup Python
18+
uses: actions/setup-python@v1
19+
with:
20+
python-version: 3.7
21+
22+
- name: Install requirements
23+
run: |
24+
pip install PyGithub
25+
- name: Close stale issues
26+
run: |
27+
python utils/stale.py

utils/stale.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
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

Comments
 (0)