Skip to content

Commit

Permalink
Move google.cloud.iterator to google.api.core.page_iterator (#3770)
Browse files Browse the repository at this point in the history
* Move google.cloud.iterator to google.api.core.page_iterator
* Re-write tests to pytest style.
* Make GAXIterator private- it will soon be removed.
* Pass api_request into HTTPIterator to avoid accessing private members
* BigQuery: use google.api.core.page_iterator
* DNS: use google.api.core.page_iterator
* Logging: use google.api.core.page_iterator
* PubSub: use google.api.core.page_iterator
* Resource manager: use google.api.core.page_iterator
* Runtimeconfig: use google.api.core.page_iterator
* logging: use google.api.core._GAXIterator
* Storage: use google.api.core.page_iterator
* Pubsub: use google.api.core._GAXIterator
* Trace: use google.api.core._GAXIterator
* Spanner: use google.api.core._GAXIterator
  • Loading branch information
Jon Wayne Parrott authored Aug 9, 2017
1 parent 4695d87 commit 9735320
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
"""A Client for interacting with the Resource Manager API."""


from google.api.core import page_iterator
from google.cloud.client import Client as BaseClient
from google.cloud.iterator import HTTPIterator

from google.cloud.resource_manager._http import Connection
from google.cloud.resource_manager.project import Project
Expand Down Expand Up @@ -151,7 +151,7 @@ def list_projects(self, filter_params=None, page_size=None):
single page. If not passed, defaults to a value set
by the API.
:rtype: :class:`~google.cloud.iterator.Iterator`
:rtype: :class:`~google.api.core.page_iterator.Iterator`
:returns: Iterator of all
:class:`~google.cloud.resource_manager.project.Project`.
that the current user has access to.
Expand All @@ -164,15 +164,19 @@ def list_projects(self, filter_params=None, page_size=None):
if filter_params is not None:
extra_params['filter'] = filter_params

return HTTPIterator(
client=self, path='/projects', item_to_value=_item_to_project,
items_key='projects', extra_params=extra_params)
return page_iterator.HTTPIterator(
client=self,
api_request=self._connection.api_request,
path='/projects',
item_to_value=_item_to_project,
items_key='projects',
extra_params=extra_params)


def _item_to_project(iterator, resource):
"""Convert a JSON project to the native object.
:type iterator: :class:`~google.cloud.iterator.Iterator`
:type iterator: :class:`~google.api.core.page_iterator.Iterator`
:param iterator: The iterator that has retrieved the item.
:type resource: dict
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,15 +88,15 @@ def test_fetch_project(self):
self.assertEqual(project.labels, labels)

def test_list_projects_return_type(self):
from google.cloud.iterator import HTTPIterator
from google.api.core import page_iterator

credentials = _make_credentials()
client = self._make_one(credentials=credentials)
# Patch the connection with one we can easily control.
client._connection = _Connection({})

results = client.list_projects()
self.assertIsInstance(results, HTTPIterator)
self.assertIsInstance(results, page_iterator.HTTPIterator)

def test_list_projects_no_paging(self):
credentials = _make_credentials()
Expand Down Expand Up @@ -227,12 +227,12 @@ def test_list_projects_with_filter(self):
})

def test_page_empty_response(self):
from google.cloud.iterator import Page
from google.api.core import page_iterator

credentials = _make_credentials()
client = self._make_one(credentials=credentials)
iterator = client.list_projects()
page = Page(iterator, (), None)
page = page_iterator.Page(iterator, (), None)
iterator._page = page
self.assertEqual(page.num_items, 0)
self.assertEqual(page.remaining, 0)
Expand Down

0 comments on commit 9735320

Please sign in to comment.