def get_closed_issues()

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