def get_graphql_response(
    *,
    settings: Settings,
    query: str,
    after: str | None = None,
) -> dict[str, Any]:
    """Make a GraphQL request to GitHub API.

    Args:
        settings: Configuration settings including API token
        query: GraphQL query string
        after: Cursor for pagination, if any

    Returns:
        Response data from GitHub API in JSON format

    Raises:
        RuntimeError: If the API request fails or returns errors
    """
    headers = {'Authorization': f'token {settings.input_token.get_secret_value()}'}
    variables = {'after': after}
    response = requests.post(
        github_graphql_url,
        headers=headers,
        timeout=settings.request_timeout,
        json={'query': query, 'variables': variables, 'operationName': 'Q'},
    )
    if response.status_code != 200:
        logging.error(f'Response was not 200, after: {after}')
        logging.error(response.text)
        raise RuntimeError(response.text)
    data = response.json()
    if 'errors' in data:
        logging.error(f'Errors in response, after: {after}')
        logging.error(data['errors'])
        logging.error(response.text)
        raise RuntimeError(response.text)
    return data
Make a GraphQL request to GitHub API.

    Args:
        settings: Configuration settings including API token
        query: GraphQL query string
        after: Cursor for pagination, if any

    Returns:
        Response data from GitHub API in JSON format

    Raises:
        RuntimeError: If the API request fails or returns errors
    
.github/actions/people/people.py