Skip to content

Commit c5f4ad8

Browse files
authored
feat: add 'page_size' parameter to 'Bucket.list_blobs, list_buckets (#520)
1 parent 1f1b138 commit c5f4ad8

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

google/cloud/storage/client.py

+14
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,7 @@ def _list_resource(
384384
max_results=None,
385385
extra_params=None,
386386
page_start=page_iterator._do_nothing_page_start,
387+
page_size=None,
387388
timeout=_DEFAULT_TIMEOUT,
388389
retry=DEFAULT_RETRY,
389390
):
@@ -399,6 +400,7 @@ def _list_resource(
399400
max_results=max_results,
400401
extra_params=extra_params,
401402
page_start=page_start,
403+
page_size=page_size,
402404
)
403405

404406
def _patch_resource(
@@ -1134,6 +1136,7 @@ def list_blobs(
11341136
versions=None,
11351137
projection="noAcl",
11361138
fields=None,
1139+
page_size=None,
11371140
timeout=_DEFAULT_TIMEOUT,
11381141
retry=DEFAULT_RETRY,
11391142
):
@@ -1200,6 +1203,10 @@ def list_blobs(
12001203
``'items(name,contentLanguage),nextPageToken'``.
12011204
See: https://cloud.google.com/storage/docs/json_api/v1/parameters#fields
12021205
1206+
page_size (int):
1207+
(Optional) Maximum number of blobs to return in each page.
1208+
Defaults to a value set by the API.
1209+
12031210
timeout (Optional[Union[float, Tuple[float, float]]]):
12041211
The amount of time, in seconds, to wait for the server response.
12051212
@@ -1269,6 +1276,7 @@ def list_blobs(
12691276
max_results=max_results,
12701277
extra_params=extra_params,
12711278
page_start=_blobs_page_start,
1279+
page_size=page_size,
12721280
timeout=timeout,
12731281
retry=retry,
12741282
)
@@ -1284,6 +1292,7 @@ def list_buckets(
12841292
projection="noAcl",
12851293
fields=None,
12861294
project=None,
1295+
page_size=None,
12871296
timeout=_DEFAULT_TIMEOUT,
12881297
retry=DEFAULT_RETRY,
12891298
):
@@ -1330,6 +1339,10 @@ def list_buckets(
13301339
:param project: (Optional) The project whose buckets are to be listed.
13311340
If not passed, uses the project set on the client.
13321341
1342+
:type page_size: int
1343+
:param page_size: (Optional) Maximum number of buckets to return in each page.
1344+
Defaults to a value set by the API.
1345+
13331346
:type timeout: float or tuple
13341347
:param timeout:
13351348
(Optional) The amount of time, in seconds, to wait
@@ -1367,6 +1380,7 @@ def list_buckets(
13671380
page_token=page_token,
13681381
max_results=max_results,
13691382
extra_params=extra_params,
1383+
page_size=page_size,
13701384
timeout=timeout,
13711385
retry=retry,
13721386
)

tests/unit/test_client.py

+12
Original file line numberDiff line numberDiff line change
@@ -1589,13 +1589,15 @@ def test_list_blobs_w_defaults_w_bucket_obj(self):
15891589
expected_max_results = None
15901590
expected_extra_params = {"projection": "noAcl"}
15911591
expected_page_start = _blobs_page_start
1592+
expected_page_size = None
15921593
client._list_resource.assert_called_once_with(
15931594
expected_path,
15941595
expected_item_to_value,
15951596
page_token=expected_page_token,
15961597
max_results=expected_max_results,
15971598
extra_params=expected_extra_params,
15981599
page_start=expected_page_start,
1600+
page_size=expected_page_size,
15991601
timeout=self._get_default_timeout(),
16001602
retry=DEFAULT_RETRY,
16011603
)
@@ -1616,6 +1618,7 @@ def test_list_blobs_w_explicit_w_user_project(self):
16161618
include_trailing_delimiter = True
16171619
versions = True
16181620
projection = "full"
1621+
page_size = 2
16191622
fields = "items/contentLanguage,nextPageToken"
16201623
credentials = _make_credentials()
16211624
client = self._make_one(project=project, credentials=credentials)
@@ -1641,6 +1644,7 @@ def test_list_blobs_w_explicit_w_user_project(self):
16411644
versions=versions,
16421645
projection=projection,
16431646
fields=fields,
1647+
page_size=page_size,
16441648
timeout=timeout,
16451649
retry=retry,
16461650
)
@@ -1665,13 +1669,15 @@ def test_list_blobs_w_explicit_w_user_project(self):
16651669
"userProject": user_project,
16661670
}
16671671
expected_page_start = _blobs_page_start
1672+
expected_page_size = 2
16681673
client._list_resource.assert_called_once_with(
16691674
expected_path,
16701675
expected_item_to_value,
16711676
page_token=expected_page_token,
16721677
max_results=expected_max_results,
16731678
extra_params=expected_extra_params,
16741679
page_start=expected_page_start,
1680+
page_size=expected_page_size,
16751681
timeout=timeout,
16761682
retry=retry,
16771683
)
@@ -1699,6 +1705,7 @@ def test_list_buckets_w_defaults(self):
16991705
expected_item_to_value = _item_to_bucket
17001706
expected_page_token = None
17011707
expected_max_results = None
1708+
expected_page_size = None
17021709
expected_extra_params = {
17031710
"project": project,
17041711
"projection": "noAcl",
@@ -1709,6 +1716,7 @@ def test_list_buckets_w_defaults(self):
17091716
page_token=expected_page_token,
17101717
max_results=expected_max_results,
17111718
extra_params=expected_extra_params,
1719+
page_size=expected_page_size,
17121720
timeout=self._get_default_timeout(),
17131721
retry=DEFAULT_RETRY,
17141722
)
@@ -1726,6 +1734,7 @@ def test_list_buckets_w_explicit(self):
17261734
credentials = _make_credentials()
17271735
client = self._make_one(project=project, credentials=credentials)
17281736
client._list_resource = mock.Mock(spec=[])
1737+
page_size = 2
17291738
timeout = 42
17301739
retry = mock.Mock(spec=[])
17311740

@@ -1736,6 +1745,7 @@ def test_list_buckets_w_explicit(self):
17361745
prefix=prefix,
17371746
projection=projection,
17381747
fields=fields,
1748+
page_size=page_size,
17391749
timeout=timeout,
17401750
retry=retry,
17411751
)
@@ -1752,12 +1762,14 @@ def test_list_buckets_w_explicit(self):
17521762
"projection": projection,
17531763
"fields": fields,
17541764
}
1765+
expected_page_size = 2
17551766
client._list_resource.assert_called_once_with(
17561767
expected_path,
17571768
expected_item_to_value,
17581769
page_token=expected_page_token,
17591770
max_results=expected_max_results,
17601771
extra_params=expected_extra_params,
1772+
page_size=expected_page_size,
17611773
timeout=timeout,
17621774
retry=retry,
17631775
)

0 commit comments

Comments
 (0)