Skip to content

Commit c4da9c4

Browse files
Jon Wayne Parrottlandrito
authored andcommitted
Move google.cloud.iterator to google.api.core.page_iterator (googleapis#3770)
* 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
1 parent 0fd1a84 commit c4da9c4

File tree

33 files changed

+897
-985
lines changed

33 files changed

+897
-985
lines changed

bigquery/google/cloud/bigquery/_helpers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,7 @@ def _item_to_row(iterator, resource):
684684
added to the iterator after being created, which
685685
should be done by the caller.
686686
687-
:type iterator: :class:`~google.cloud.iterator.Iterator`
687+
:type iterator: :class:`~google.api.core.page_iterator.Iterator`
688688
:param iterator: The iterator that is currently in use.
689689
690690
:type resource: dict
@@ -700,7 +700,7 @@ def _item_to_row(iterator, resource):
700700
def _rows_page_start(iterator, page, response):
701701
"""Grab total rows when :class:`~google.cloud.iterator.Page` starts.
702702
703-
:type iterator: :class:`~google.cloud.iterator.Iterator`
703+
:type iterator: :class:`~google.api.core.page_iterator.Iterator`
704704
:param iterator: The iterator that is currently in use.
705705
706706
:type page: :class:`~google.cloud.iterator.Page`

bigquery/google/cloud/bigquery/client.py

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
"""Client for interacting with the Google BigQuery API."""
1616

17-
17+
from google.api.core import page_iterator
1818
from google.cloud.client import ClientWithProject
1919
from google.cloud.bigquery._http import Connection
2020
from google.cloud.bigquery.dataset import Dataset
@@ -23,7 +23,6 @@
2323
from google.cloud.bigquery.job import LoadTableFromStorageJob
2424
from google.cloud.bigquery.job import QueryJob
2525
from google.cloud.bigquery.query import QueryResults
26-
from google.cloud.iterator import HTTPIterator
2726

2827

2928
class Project(object):
@@ -98,13 +97,17 @@ def list_projects(self, max_results=None, page_token=None):
9897
not passed, the API will return the first page of
9998
projects.
10099
101-
:rtype: :class:`~google.cloud.iterator.Iterator`
100+
:rtype: :class:`~google.api.core.page_iterator.Iterator`
102101
:returns: Iterator of :class:`~google.cloud.bigquery.client.Project`
103102
accessible to the current client.
104103
"""
105-
return HTTPIterator(
106-
client=self, path='/projects', item_to_value=_item_to_project,
107-
items_key='projects', page_token=page_token,
104+
return page_iterator.HTTPIterator(
105+
client=self,
106+
api_request=self._connection.api_request,
107+
path='/projects',
108+
item_to_value=_item_to_project,
109+
items_key='projects',
110+
page_token=page_token,
108111
max_results=max_results)
109112

110113
def list_datasets(self, include_all=False, max_results=None,
@@ -126,18 +129,23 @@ def list_datasets(self, include_all=False, max_results=None,
126129
not passed, the API will return the first page of
127130
datasets.
128131
129-
:rtype: :class:`~google.cloud.iterator.Iterator`
132+
:rtype: :class:`~google.api.core.page_iterator.Iterator`
130133
:returns: Iterator of :class:`~google.cloud.bigquery.dataset.Dataset`.
131134
accessible to the current client.
132135
"""
133136
extra_params = {}
134137
if include_all:
135138
extra_params['all'] = True
136139
path = '/projects/%s/datasets' % (self.project,)
137-
return HTTPIterator(
138-
client=self, path=path, item_to_value=_item_to_dataset,
139-
items_key='datasets', page_token=page_token,
140-
max_results=max_results, extra_params=extra_params)
140+
return page_iterator.HTTPIterator(
141+
client=self,
142+
api_request=self._connection.api_request,
143+
path=path,
144+
item_to_value=_item_to_dataset,
145+
items_key='datasets',
146+
page_token=page_token,
147+
max_results=max_results,
148+
extra_params=extra_params)
141149

142150
def dataset(self, dataset_name, project=None):
143151
"""Construct a dataset bound to this client.
@@ -207,7 +215,7 @@ def list_jobs(self, max_results=None, page_token=None, all_users=None,
207215
* ``"pending"``
208216
* ``"running"``
209217
210-
:rtype: :class:`~google.cloud.iterator.Iterator`
218+
:rtype: :class:`~google.api.core.page_iterator.Iterator`
211219
:returns: Iterable of job instances.
212220
"""
213221
extra_params = {'projection': 'full'}
@@ -219,10 +227,15 @@ def list_jobs(self, max_results=None, page_token=None, all_users=None,
219227
extra_params['stateFilter'] = state_filter
220228

221229
path = '/projects/%s/jobs' % (self.project,)
222-
return HTTPIterator(
223-
client=self, path=path, item_to_value=_item_to_job,
224-
items_key='jobs', page_token=page_token,
225-
max_results=max_results, extra_params=extra_params)
230+
return page_iterator.HTTPIterator(
231+
client=self,
232+
api_request=self._connection.api_request,
233+
path=path,
234+
item_to_value=_item_to_job,
235+
items_key='jobs',
236+
page_token=page_token,
237+
max_results=max_results,
238+
extra_params=extra_params)
226239

227240
def load_table_from_storage(self, job_name, destination, *source_uris):
228241
"""Construct a job for loading data into a table from CloudStorage.
@@ -349,7 +362,7 @@ def run_sync_query(self, query, udf_resources=(), query_parameters=()):
349362
def _item_to_project(iterator, resource):
350363
"""Convert a JSON project to the native object.
351364
352-
:type iterator: :class:`~google.cloud.iterator.Iterator`
365+
:type iterator: :class:`~google.api.core.page_iterator.Iterator`
353366
:param iterator: The iterator that is currently in use.
354367
355368
:type resource: dict
@@ -365,7 +378,7 @@ def _item_to_project(iterator, resource):
365378
def _item_to_dataset(iterator, resource):
366379
"""Convert a JSON dataset to the native object.
367380
368-
:type iterator: :class:`~google.cloud.iterator.Iterator`
381+
:type iterator: :class:`~google.api.core.page_iterator.Iterator`
369382
:param iterator: The iterator that is currently in use.
370383
371384
:type resource: dict
@@ -380,7 +393,7 @@ def _item_to_dataset(iterator, resource):
380393
def _item_to_job(iterator, resource):
381394
"""Convert a JSON job to the native object.
382395
383-
:type iterator: :class:`~google.cloud.iterator.Iterator`
396+
:type iterator: :class:`~google.api.core.page_iterator.Iterator`
384397
:param iterator: The iterator that is currently in use.
385398
386399
:type resource: dict

bigquery/google/cloud/bigquery/dataset.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
"""Define API Datasets."""
1616
import six
1717

18+
from google.api.core import page_iterator
1819
from google.cloud._helpers import _datetime_from_microseconds
1920
from google.cloud.exceptions import NotFound
2021
from google.cloud.bigquery.table import Table
21-
from google.cloud.iterator import HTTPIterator
2222

2323

2424
class AccessGrant(object):
@@ -561,14 +561,19 @@ def list_tables(self, max_results=None, page_token=None):
561561
datasets. If not passed, the API will return the
562562
first page of datasets.
563563
564-
:rtype: :class:`~google.cloud.iterator.Iterator`
564+
:rtype: :class:`~google.api.core.page_iterator.Iterator`
565565
:returns: Iterator of :class:`~google.cloud.bigquery.table.Table`
566566
contained within the current dataset.
567567
"""
568568
path = '/projects/%s/datasets/%s/tables' % (self.project, self.name)
569-
result = HTTPIterator(client=self._client, path=path,
570-
item_to_value=_item_to_table, items_key='tables',
571-
page_token=page_token, max_results=max_results)
569+
result = page_iterator.HTTPIterator(
570+
client=self._client,
571+
api_request=self._client._connection.api_request,
572+
path=path,
573+
item_to_value=_item_to_table,
574+
items_key='tables',
575+
page_token=page_token,
576+
max_results=max_results)
572577
result.dataset = self
573578
return result
574579

@@ -590,7 +595,7 @@ def table(self, name, schema=()):
590595
def _item_to_table(iterator, resource):
591596
"""Convert a JSON table to the native object.
592597
593-
:type iterator: :class:`~google.cloud.iterator.Iterator`
598+
:type iterator: :class:`~google.api.core.page_iterator.Iterator`
594599
:param iterator: The iterator that is currently in use.
595600
596601
:type resource: dict

bigquery/google/cloud/bigquery/query.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
import six
1818

19-
from google.cloud.iterator import HTTPIterator
19+
from google.api.core import page_iterator
2020
from google.cloud.bigquery._helpers import _TypedProperty
2121
from google.cloud.bigquery._helpers import _rows_from_json
2222
from google.cloud.bigquery.dataset import Dataset
@@ -414,7 +414,7 @@ def fetch_data(self, max_results=None, page_token=None, start_index=None,
414414
:param client: the client to use. If not passed, falls back to the
415415
``client`` stored on the current dataset.
416416
417-
:rtype: :class:`~google.cloud.iterator.Iterator`
417+
:rtype: :class:`~google.api.core.page_iterator.Iterator`
418418
:returns: Iterator of row data :class:`tuple`s. During each page, the
419419
iterator will have the ``total_rows`` attribute set,
420420
which counts the total number of rows **in the result
@@ -435,13 +435,16 @@ def fetch_data(self, max_results=None, page_token=None, start_index=None,
435435
params['timeoutMs'] = timeout_ms
436436

437437
path = '/projects/%s/queries/%s' % (self.project, self.name)
438-
iterator = HTTPIterator(client=client, path=path,
439-
item_to_value=_item_to_row,
440-
items_key='rows',
441-
page_token=page_token,
442-
max_results=max_results,
443-
page_start=_rows_page_start_query,
444-
extra_params=params)
438+
iterator = page_iterator.HTTPIterator(
439+
client=client,
440+
api_request=client._connection.api_request,
441+
path=path,
442+
item_to_value=_item_to_row,
443+
items_key='rows',
444+
page_token=page_token,
445+
max_results=max_results,
446+
page_start=_rows_page_start_query,
447+
extra_params=params)
445448
iterator.query_result = self
446449
# Over-ride the key used to retrieve the next page token.
447450
iterator._NEXT_TOKEN = 'pageToken'
@@ -457,7 +460,7 @@ def _rows_page_start_query(iterator, page, response):
457460
added to the iterator after being created, which
458461
should be done by the caller.
459462
460-
:type iterator: :class:`~google.cloud.iterator.Iterator`
463+
:type iterator: :class:`~google.api.core.page_iterator.Iterator`
461464
:param iterator: The iterator that is currently in use.
462465
463466
:type page: :class:`~google.cloud.iterator.Page`

bigquery/google/cloud/bigquery/table.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@
2323
from google.resumable_media.requests import MultipartUpload
2424
from google.resumable_media.requests import ResumableUpload
2525

26+
from google.api.core import page_iterator
2627
from google.cloud import exceptions
2728
from google.cloud._helpers import _datetime_from_microseconds
2829
from google.cloud._helpers import _millis_from_datetime
29-
from google.cloud.iterator import HTTPIterator
3030
from google.cloud.bigquery.schema import SchemaField
3131
from google.cloud.bigquery._helpers import _item_to_row
3232
from google.cloud.bigquery._helpers import _rows_page_start
@@ -712,7 +712,7 @@ def fetch_data(self, max_results=None, page_token=None, client=None):
712712
:param client: (Optional) The client to use. If not passed, falls
713713
back to the ``client`` stored on the current dataset.
714714
715-
:rtype: :class:`~google.cloud.iterator.Iterator`
715+
:rtype: :class:`~google.api.core.page_iterator.Iterator`
716716
:returns: Iterator of row data :class:`tuple`s. During each page, the
717717
iterator will have the ``total_rows`` attribute set,
718718
which counts the total number of rows **in the table**
@@ -724,10 +724,15 @@ def fetch_data(self, max_results=None, page_token=None, client=None):
724724

725725
client = self._require_client(client)
726726
path = '%s/data' % (self.path,)
727-
iterator = HTTPIterator(client=client, path=path,
728-
item_to_value=_item_to_row, items_key='rows',
729-
page_token=page_token, max_results=max_results,
730-
page_start=_rows_page_start)
727+
iterator = page_iterator.HTTPIterator(
728+
client=client,
729+
api_request=client._connection.api_request,
730+
path=path,
731+
item_to_value=_item_to_row,
732+
items_key='rows',
733+
page_token=page_token,
734+
max_results=max_results,
735+
page_start=_rows_page_start)
731736
iterator.schema = self._schema
732737
# Over-ride the key used to retrieve the next page token.
733738
iterator._NEXT_TOKEN = 'pageToken'

0 commit comments

Comments
 (0)