in tools/release-notes-automator/generate_release_notes.py [0:0]
def get_closed_issues(repo, milestone_number):
"""
Retrieve all closed issues for a given repo and milestone number,
filtered by the static labels. Handles pagination.
Returns a list of issue objects.
"""
issues = []
page = 1
labels_param = ",".join(LABELS)
while True:
url = f"https://api.github.com/repos/{repo}/issues"
params = {
"state": "closed",
"milestone": milestone_number,
"labels": labels_param,
"per_page": 100,
"page": page
}
response = safe_github_request(url, headers=HEADERS, params=params)
data = response.json()
if not data:
break
# Ensure all labels are present (GitHub API 'labels' param is AND for issues, but double-check)
for issue in data:
if all(label in [lbl["name"] for lbl in issue.get("labels", [])] for label in LABELS):
issues.append(issue)
page += 1
return issues