Skip to content

Commit 8ab40db

Browse files
authored
Merge pull request #34 from DanGould/async-standup-v2
Search explicit public repos instead of org
2 parents 9dc4a1d + 734f870 commit 8ab40db

File tree

1 file changed

+24
-18
lines changed

1 file changed

+24
-18
lines changed

.github/scripts/create_standup_discussion.py

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"payjoin/tx-indexer",
4141
]
4242

43-
REPO_FILTER = " ".join(f"repo:{r}" for r in REPOS)
43+
REPO_BATCH_SIZE = 5
4444

4545

4646
def get_repo_node_id():
@@ -120,34 +120,40 @@ def add_discussion_comment(discussion_id, body):
120120

121121

122122
def search_issues(query):
123-
"""Run a GitHub search/issues query and return the items."""
124-
resp = requests.get(
125-
f"{API}/search/issues",
126-
headers=HEADERS,
127-
params={"q": query, "per_page": 30},
128-
)
129-
resp.raise_for_status()
130-
return resp.json().get("items", [])
123+
"""Run a GitHub search/issues query across REPOS in batches."""
124+
seen = set()
125+
items = []
126+
for i in range(0, len(REPOS), REPO_BATCH_SIZE):
127+
batch = REPOS[i : i + REPO_BATCH_SIZE]
128+
repo_filter = " ".join(f"repo:{r}" for r in batch)
129+
resp = requests.get(
130+
f"{API}/search/issues",
131+
headers=HEADERS,
132+
params={"q": f"{query} {repo_filter}", "per_page": 30},
133+
)
134+
resp.raise_for_status()
135+
for item in resp.json().get("items", []):
136+
if item["id"] not in seen:
137+
seen.add(item["id"])
138+
items.append(item)
139+
return items
131140

132141

133142
def gather_activity(user, since_date):
134143
"""Gather a contributor's past-week activity across the org."""
135144
since = since_date.strftime("%Y-%m-%d")
136145

137146
# PRs merged (authored)
138-
merged_prs = search_issues(f"author:{user} {REPO_FILTER} type:pr merged:>{since}")
147+
merged_prs = search_issues(f"author:{user} type:pr merged:>{since}")
139148

140149
# PRs reviewed
141-
reviewed_prs = search_issues(
142-
f"reviewed-by:{user} {REPO_FILTER} type:pr updated:>{since}"
143-
)
150+
reviewed_prs = search_issues(f"reviewed-by:{user} type:pr updated:>{since}"
151+
144152
# Exclude PRs the user authored (already counted above)
145153
reviewed_prs = [pr for pr in reviewed_prs if pr["user"]["login"] != user]
146154

147155
# Issues opened
148-
issues_opened = search_issues(
149-
f"author:{user} {REPO_FILTER} type:issue created:>{since}"
150-
)
156+
issues_opened = search_issues(f"author:{user} type:issue created:>{since}")
151157

152158
return merged_prs, reviewed_prs, issues_opened
153159

@@ -159,14 +165,14 @@ def gather_potential_bottlenecks(user, since_date):
159165

160166
# Open PRs with no reviews
161167
open_prs = search_issues(
162-
f"author:{user} {REPO_FILTER} type:pr state:open review:none created:>{since}"
168+
f"author:{user} type:pr state:open review:none created:>{since}"
163169
)
164170
for pr in open_prs:
165171
bottlenecks.append(f"- PR awaiting review: [{pr['title']}]({pr['html_url']})")
166172

167173
# PRs with requested changes
168174
changes_requested = search_issues(
169-
f"author:{user} {REPO_FILTER} type:pr state:open review:changes_requested"
175+
f"author:{user} type:pr state:open review:changes_requested"
170176
)
171177
for pr in changes_requested:
172178
bottlenecks.append(

0 commit comments

Comments
 (0)