def get_contributors(settings: Settings) -> tuple[Counter, Counter, Counter, dict[str, Author]]:
    """Analyze pull requests to identify contributors, commentors, and reviewers.

    Args:
        settings: Configuration settings

    Returns:
        A tuple containing:
            - Counter of contributors (merged PRs)
            - Counter of commentors
            - Counter of reviewers
            - Dictionary mapping usernames to Author objects
    """
    pr_nodes: list[PullRequestNode] = []
    pr_edges = get_graphql_pr_edges(settings=settings)

    while pr_edges:
        for edge in pr_edges:
            pr_nodes.append(edge.node)
        last_edge = pr_edges[-1]
        pr_edges = get_graphql_pr_edges(settings=settings, after=last_edge.cursor)

    contributors = Counter()
    commentors = Counter()
    reviewers = Counter()
    authors: dict[str, Author] = {}

    for pr in pr_nodes:
        author_name = None
        if pr.author:
            authors[pr.author.login] = pr.author
            author_name = pr.author.login
        pr_commentors: set[str] = set()
        pr_reviewers: set[str] = set()
        for comment in pr.comments.nodes:
            if comment.author:
                authors[comment.author.login] = comment.author
                if comment.author.login == author_name:
                    continue
                pr_commentors.add(comment.author.login)
        for author_name in pr_commentors:
            commentors[author_name] += 1
        for review in pr.reviews.nodes:
            if review.author:
                authors[review.author.login] = review.author
                pr_reviewers.add(review.author.login)
        for reviewer in pr_reviewers:
            reviewers[reviewer] += 1
        if pr.state == 'MERGED' and pr.author:
            contributors[pr.author.login] += 1
    return contributors, commentors, reviewers, authors
Analyze pull requests to identify contributors, commentors, and reviewers.

    Args:
        settings: Configuration settings

    Returns:
        A tuple containing:
            - Counter of contributors (merged PRs)
            - Counter of commentors
            - Counter of reviewers
            - Dictionary mapping usernames to Author objects
    
.github/actions/people/people.py