from typing import Tuple
from typing import Any


def list_all_pages(func, data_field: str, *args, **kwargs) -> Tuple[Any, ...]:
    """Collects all data items from a paginator-based 'List' API.

    Args:
        func: The GCP API method that supports paged responses.
        data_field: The field in a response object containing the data
            items to be returned. This is guaranteed to be an Iterable
            type.
        *args: Positional arguments passed to func.
        *kwargs: Keyword arguments passed to func.

    Returns: An immutable collection of data items assembled from the
        paged responses.
    """
    result_collector = []
    page_token = None
    while True:
        request = func(*args, pageToken=page_token, **kwargs)
        response = request.execute()
        result_collector.extend(response.get(data_field, []))
        page_token = response.get('nextPageToken')
        if not page_token:
            return tuple(result_collector)