Sets the LIMIT clause of the AWQL to the next page.

    This method is meant to be used with HasNext(). When using DataService,
    page is needed, as its paging mechanism is different from other services.
    For details, see
    https://developers.google.com/adwords/api/docs/guides/bid-landscapes#paging_through_results.

    Args:
      page: An optional dict-like page returned in an API response, where the
          type depends on the configured SOAP client. The page contains the
          'totalNumEntries' key whose value represents the total number of
          results from making the query to the AdWords API services. This page
          is required when using this method with DataService.

    Returns:
      This service query object.

    Raises:
      ValueError: If the start index of this object is None, meaning that the
          LIMIT clause hasn't been set before.

def NextPage(self, page=None):
    """Sets the LIMIT clause of the AWQL to the next page.

    This method is meant to be used with HasNext(). When using DataService,
    page is needed, as its paging mechanism is different from other services.
    For details, see
    https://developers.google.com/adwords/api/docs/guides/bid-landscapes#paging_through_results.

    Args:
      page: An optional dict-like page returned in an API response, where the
          type depends on the configured SOAP client. The page contains the
          'totalNumEntries' key whose value represents the total number of
          results from making the query to the AdWords API services. This page
          is required when using this method with DataService.

    Returns:
      This service query object.

    Raises:
      ValueError: If the start index of this object is None, meaning that the
          LIMIT clause hasn't been set before.
    """
    if self._start_index is None:
      raise ValueError('Cannot page through query with no LIMIT clause.')

    # DataService has a different paging mechanism, resulting in different
    # method of determining if there is still a page left.
    page_size = None
    if (page and self._PAGE_TYPE in page
        and page[self._PAGE_TYPE] in self._BID_LANDSCAPE_PAGES):
      page_size = sum([len(bid_landscape[self._LANDSCAPE_POINTS])
                       for bid_landscape in page[self._ENTRIES]])

    increment = page_size or self._page_size
    self._start_index += increment
    return self