Skip to content

Commit f41d068

Browse files
author
Jon Wayne Parrott
authored
Make api_core.page_iterator.PageIterator.item_to_value public
1 parent 5606ee5 commit f41d068

File tree

2 files changed

+22
-9
lines changed

2 files changed

+22
-9
lines changed

google/api_core/page_iterator.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -158,12 +158,25 @@ def __init__(self, client, item_to_value=_item_to_value_identity,
158158
page_token=None, max_results=None):
159159
self._started = False
160160
self.client = client
161-
self._item_to_value = item_to_value
161+
"""Optional[Any]: The client that created this iterator."""
162+
self.item_to_value = item_to_value
163+
"""Callable[Iterator, Any]: Callable to convert an item from the type
164+
in the raw API response into the native object. Will be called with
165+
the iterator and a
166+
single item.
167+
"""
162168
self.max_results = max_results
169+
"""int: The maximum number of results to fetch."""
170+
163171
# The attributes below will change over the life of the iterator.
164172
self.page_number = 0
173+
"""int: The current page of results."""
165174
self.next_page_token = page_token
175+
"""str: The token for the next page of results. If this is set before
176+
the iterator starts, it effectively offsets the iterator to a
177+
specific starting point."""
166178
self.num_results = 0
179+
"""int: The total number of results fetched so far."""
167180

168181
@property
169182
def pages(self):
@@ -335,7 +348,7 @@ def _next_page(self):
335348
if self._has_next_page():
336349
response = self._get_next_page_response()
337350
items = response.get(self._items_key, ())
338-
page = Page(self, items, self._item_to_value)
351+
page = Page(self, items, self.item_to_value)
339352
self._page_start(self, page, response)
340353
self.next_page_token = response.get(self._next_token)
341354
return page
@@ -428,7 +441,7 @@ def _next_page(self):
428441
"""
429442
try:
430443
items = six.next(self._gax_page_iter)
431-
page = Page(self, items, self._item_to_value)
444+
page = Page(self, items, self.item_to_value)
432445
self.next_page_token = self._gax_page_iter.page_token or None
433446
return page
434447
except StopIteration:
@@ -500,7 +513,7 @@ def _next_page(self):
500513

501514
self.next_page_token = getattr(response, self._response_token_field)
502515
items = getattr(response, self._items_field)
503-
page = Page(self, items, self._item_to_value)
516+
page = Page(self, items, self.item_to_value)
504517

505518
return page
506519

tests/unit/test_page_iterator.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def test_constructor(self):
8888

8989
assert not iterator._started
9090
assert iterator.client is client
91-
assert iterator._item_to_value == item_to_value
91+
assert iterator.item_to_value == item_to_value
9292
assert iterator.max_results == max_results
9393
# Changing attributes.
9494
assert iterator.page_number == 0
@@ -214,7 +214,7 @@ def test_constructor(self):
214214
assert not iterator._started
215215
assert iterator.client is client
216216
assert iterator.path == path
217-
assert iterator._item_to_value is mock.sentinel.item_to_value
217+
assert iterator.item_to_value is mock.sentinel.item_to_value
218218
assert iterator._items_key == 'items'
219219
assert iterator.max_results is None
220220
assert iterator.extra_params == {}
@@ -419,10 +419,10 @@ def test_constructor(self):
419419
assert not iterator._started
420420
assert iterator.client is client
421421
assert iterator.max_results is None
422+
assert iterator.item_to_value is page_iterator._item_to_value_identity
422423
assert iterator._method == mock.sentinel.method
423424
assert iterator._request == mock.sentinel.request
424425
assert iterator._items_field == items_field
425-
assert iterator._item_to_value is page_iterator._item_to_value_identity
426426
assert (iterator._request_token_field ==
427427
page_iterator.GRPCIterator._DEFAULT_REQUEST_TOKEN_FIELD)
428428
assert (iterator._response_token_field ==
@@ -446,10 +446,10 @@ def test_constructor_options(self):
446446

447447
assert iterator.client is client
448448
assert iterator.max_results == 42
449+
assert iterator.item_to_value is mock.sentinel.item_to_value
449450
assert iterator._method == mock.sentinel.method
450451
assert iterator._request == mock.sentinel.request
451452
assert iterator._items_field == items_field
452-
assert iterator._item_to_value is mock.sentinel.item_to_value
453453
assert iterator._request_token_field == request_field
454454
assert iterator._response_token_field == response_field
455455

@@ -517,7 +517,7 @@ def test_constructor(self):
517517

518518
assert not iterator._started
519519
assert iterator.client is client
520-
assert iterator._item_to_value is item_to_value
520+
assert iterator.item_to_value is item_to_value
521521
assert iterator.max_results == max_results
522522
assert iterator._gax_page_iter is page_iter
523523
# Changing attributes.

0 commit comments

Comments
 (0)