Skip to content

Commit 1cb2f7c

Browse files
fingolfincodexreiniscirpons
authored
dev/releases: ignore dependabot PRs (#6375)
Co-authored-by: Codex <codex@openai.com> Co-authored-by: Reinis Cirpons <43414125+reiniscirpons@users.noreply.github.com>
1 parent 188c33b commit 1cb2f7c

4 files changed

Lines changed: 127 additions & 3 deletions

File tree

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ jobs:
5656
#- name: "Validate types"
5757
# run: python -m mypy --disallow-untyped-calls --disallow-untyped-defs dev/releases/*.py
5858

59-
#- name: "Run tests"
60-
# run: python -m pytest tools/tests/dev/releases*.py -vv
59+
- name: "Run tests"
60+
run: cd dev/releases && python -m pytest test_release_notes.py
6161

6262
unix:
6363
name: "Create Unix archives and data"

Makefile.rules

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ default: all
2121
.PHONY: default
2222

2323

24+
########################################################################
25+
# Developer helper targets
26+
########################################################################
27+
test_release_notes:
28+
cd dev/releases && python3 -m pytest test_release_notes.py
29+
.PHONY: test_release_notes
30+
31+
2432
########################################################################
2533
# Source files
2634
#

dev/releases/release_notes.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ def get_pr_list(date: str, extra: str) -> List[Dict[str, Any]]:
221221
"--search",
222222
query,
223223
"--json",
224-
"number,title,closedAt,labels,mergedAt",
224+
"number,title,closedAt,labels,mergedAt,author",
225225
"--limit",
226226
"200",
227227
],
@@ -245,6 +245,14 @@ def has_label(pr: Dict[str, Any], label: str) -> bool:
245245
return any(x["name"] == label for x in pr["labels"])
246246

247247

248+
def is_dependabot_pr(pr: Dict[str, Any]) -> bool:
249+
author = pr.get("author") or {}
250+
login = author.get("login")
251+
if login in ("app/dependabot", "dependabot[bot]"):
252+
return True
253+
return author.get("is_bot", False) and has_label(pr, "dependencies")
254+
255+
248256
def changes_overview(
249257
prs: List[Dict[str, Any]], startdate: str, new_version: str
250258
) -> None:
@@ -361,6 +369,7 @@ def main(new_version: str) -> None:
361369

362370
print("Downloading filtered PR list")
363371
prs = get_pr_list(startdate, extra)
372+
prs = [pr for pr in prs if not is_dependabot_pr(pr)]
364373
# print(json.dumps(prs, sort_keys=True, indent=4))
365374

366375
changes_overview(prs, startdate, new_version)

dev/releases/test_release_notes.py

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
import release_notes
2+
3+
4+
def test_is_dependabot_pr_detects_dependabot_author():
5+
pr = {
6+
"author": {"is_bot": True, "login": "app/dependabot"},
7+
"labels": [
8+
{"name": "dependencies"},
9+
{"name": "github_actions"},
10+
],
11+
}
12+
13+
assert release_notes.is_dependabot_pr(pr)
14+
15+
pr = {
16+
"author": {"is_bot": True, "login": "app/notdependabot"},
17+
"labels": [
18+
{"name": "dependencies"},
19+
{"name": "github_actions"},
20+
],
21+
}
22+
23+
assert release_notes.is_dependabot_pr(pr)
24+
25+
pr = {
26+
"author": {"is_bot": False, "login": "app/dependabot"},
27+
"labels": [
28+
{"name": "dependencies"},
29+
{"name": "github_actions"},
30+
],
31+
}
32+
33+
assert release_notes.is_dependabot_pr(pr)
34+
35+
pr = {
36+
"author": {"is_bot": False, "login": "app/notdependabot"},
37+
"labels": [
38+
{"name": "dependencies"},
39+
{"name": "github_actions"},
40+
],
41+
}
42+
43+
assert not release_notes.is_dependabot_pr(pr)
44+
45+
pr = {
46+
"author": {"is_bot": False, "login": "app/dependabot"},
47+
"labels": [
48+
{"name": "github_actions"},
49+
],
50+
}
51+
52+
assert release_notes.is_dependabot_pr(pr)
53+
54+
pr = {
55+
"author": {"is_bot": False, "login": "app/notdependabot"},
56+
"labels": [
57+
{"name": "github_actions"},
58+
],
59+
}
60+
61+
assert not release_notes.is_dependabot_pr(pr)
62+
63+
pr = {
64+
"author": {"is_bot": True, "login": "app/notdependabot"},
65+
"labels": [
66+
{"name": "github_actions"},
67+
],
68+
}
69+
70+
assert not release_notes.is_dependabot_pr(pr)
71+
72+
pr = {
73+
"author": {"is_bot": False, "login": "dependabot[bot]"},
74+
"labels": [
75+
{"name": "github_actions"},
76+
],
77+
}
78+
79+
assert release_notes.is_dependabot_pr(pr)
80+
81+
pr = {
82+
"author": {"login": "dependabot[bot]"},
83+
"labels": [
84+
{"name": "github_actions"},
85+
],
86+
}
87+
88+
assert release_notes.is_dependabot_pr(pr)
89+
90+
pr = {
91+
"author": {"login": "app/notdependabot"},
92+
"labels": [
93+
{"name": "github_actions"},
94+
],
95+
}
96+
97+
assert not release_notes.is_dependabot_pr(pr)
98+
99+
pr = {
100+
"author": {"login": "app/notdependabot"},
101+
"labels": [
102+
{"name": "dependencies"},
103+
{"name": "github_actions"},
104+
],
105+
}
106+
107+
assert not release_notes.is_dependabot_pr(pr)

0 commit comments

Comments
 (0)