PR #520 added passing page_size to the google.api_core.page_iterator.HTTPIterator constructor, which is a feature added only in google-api-core 1.29.0. testing/constraints-3.6.txt pins google-cloud-core==1.6.0, the minimum version specified in setup.py, but does not pin google-api-core, which results in:
$ git remote -v
origin git@github.com:googleapis/python-storage (fetch)
origin git@github.com:googleapis/python-storage (push)
$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
$ git log -1
commit 4abb40310eca7ec45afc4bc5e4dfafbe083e74d2 (HEAD -> master, origin/master, origin/HEAD)
Author: Tres Seaver <tseaver@palladion.com>
Date: Tue Jul 27 13:43:42 2021 -0400
fix: make 'requests.exceptions.ChunkedEncodingError retryable by default (#526) Closes #525.$ .nox/unit-3-6/bin/pip list | grep googlegoogle-api-core 1.27.0google-auth 1.24.0google-cloud-core 1.6.0google-cloud-storage 1.41.1 /path/to/python-storagegoogle-crc32c 1.1.2google-resumable-media 1.3.0googleapis-common-protos 1.53.0$ nox -re unit-3.6nox > Running session unit-3.6nox > Creating virtual environment (virtualenv) using python3.6 in .nox/unit-3-6nox > python -m pip install mock pytest pytest-cov -c /home/tseaver/projects/agendaless/Google/src/python-storage/testing/constraints-3.6.txtnox > python -m pip install -e . -c /home/tseaver/projects/agendaless/Google/src/python-storage/testing/constraints-3.6.txtnox > py.test --quiet --cov=google.cloud.storage --cov=google.cloud --cov=tests.unit --cov-append --cov-config=.coveragerc --cov-report= --cov-fail-under=0 tests/unit..............................................s......................... [ 6%]........................................................................ [ 13%]........................................................................ [ 20%]........................................................................ [ 27%]........................................................................ [ 34%]........................................................................ [ 41%]........................................................................ [ 48%]........................................................................ [ 55%]........................................................................ [ 62%]........................................................................ [ 69%]........................................................................ [ 76%].........................FF............................................. [ 83%]........................................................................ [ 90%]........................................................................ [ 97%]..................... [100%]Coverage.py warning: Module google.cloud was previously imported, but not measured (module-not-measured)=================================== FAILURES ===================================__________________ TestClient.test__list_resource_w_defaults ___________________self = <tests.unit.test_client.TestClient testMethod=test__list_resource_w_defaults> def test__list_resource_w_defaults(self): import functools from google.api_core.page_iterator import HTTPIterator from google.api_core.page_iterator import _do_nothing_page_start project = "PROJECT" path = "/path/to/list/resource" item_to_value = mock.Mock(spec=[]) credentials = _make_credentials() client = self._make_one(project=project, credentials=credentials) connection = client._base_connection = _make_connection()> iterator = client._list_resource(path=path, item_to_value=item_to_value,)tests/unit/test_client.py:485: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <google.cloud.storage.client.Client object at 0x7efcfb9f3b38>path = '/path/to/list/resource', item_to_value = <Mock id='139625018221344'>page_token = None, max_results = None, extra_params = Nonepage_start = <function _do_nothing_page_start at 0x7efcfc69fae8>page_size = None, timeout = 60retry = <google.api_core.retry.Retry object at 0x7efcfc756c50> def _list_resource( self, path, item_to_value, page_token=None, max_results=None, extra_params=None, page_start=page_iterator._do_nothing_page_start, page_size=None, timeout=_DEFAULT_TIMEOUT, retry=DEFAULT_RETRY, ): api_request = functools.partial( self._connection.api_request, timeout=timeout, retry=retry ) return page_iterator.HTTPIterator( client=self, api_request=api_request, path=path, item_to_value=item_to_value, page_token=page_token, max_results=max_results, extra_params=extra_params, page_start=page_start,> page_size=page_size, )E TypeError: __init__() got an unexpected keyword argument 'page_size'google/cloud/storage/client.py:403: TypeError__________________ TestClient.test__list_resource_w_explicit ___________________self = <tests.unit.test_client.TestClient testMethod=test__list_resource_w_explicit> def test__list_resource_w_explicit(self): import functools from google.api_core.page_iterator import HTTPIterator project = "PROJECT" path = "/path/to/list/resource" item_to_value = mock.Mock(spec=[]) page_token = "PAGE-TOKEN" max_results = 47 extra_params = {"foo": "Foo"} page_start = mock.Mock(spec=[]) credentials = _make_credentials() client = self._make_one(project=project, credentials=credentials) connection = client._base_connection = _make_connection() iterator = client._list_resource( path=path, item_to_value=item_to_value, page_token=page_token, max_results=max_results, extra_params=extra_params,> page_start=page_start, )tests/unit/test_client.py:523: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <google.cloud.storage.client.Client object at 0x7efcfbdfe470>path = '/path/to/list/resource', item_to_value = <Mock id='139625022614160'>page_token = 'PAGE-TOKEN', max_results = 47, extra_params = {'foo': 'Foo'}page_start = <Mock id='139625022612368'>, page_size = None, timeout = 60retry = <google.api_core.retry.Retry object at 0x7efcfc756c50> def _list_resource( self, path, item_to_value, page_token=None, max_results=None, extra_params=None, page_start=page_iterator._do_nothing_page_start, page_size=None, timeout=_DEFAULT_TIMEOUT, retry=DEFAULT_RETRY, ): api_request = functools.partial( self._connection.api_request, timeout=timeout, retry=retry ) return page_iterator.HTTPIterator( client=self, api_request=api_request, path=path, item_to_value=item_to_value, page_token=page_token, max_results=max_results, extra_params=extra_params, page_start=page_start,> page_size=page_size, )E TypeError: __init__() got an unexpected keyword argument 'page_size'google/cloud/storage/client.py:403: TypeError=========================== short test summary info ============================FAILED tests/unit/test_client.py::TestClient::test__list_resource_w_defaultsFAILED tests/unit/test_client.py::TestClient::test__list_resource_w_explicit2 failed, 1026 passed, 1 skipped in 19.16snox > Command py.test --quiet --cov=google.cloud.storage --cov=google.cloud --cov=tests.unit --cov-append --cov-config=.coveragerc --cov-report= --cov-fail-under=0 tests/unit failed with exit code 1nox > Session unit-3.6 failed.The fix would be to add ranges for google-api-core and google-auth (another transitive dependency) to setup.py, and then pin the minimum versions for those ranges in testing/constraints-3.6.txt.
PR #520 added passing
page_sizeto thegoogle.api_core.page_iterator.HTTPIteratorconstructor, which is a feature added only ingoogle-api-core 1.29.0.testing/constraints-3.6.txtpinsgoogle-cloud-core==1.6.0, the minimum version specified insetup.py, but does not pingoogle-api-core, which results in:The fix would be to add ranges for
google-api-coreandgoogle-auth(another transitive dependency) tosetup.py, and then pin the minimum versions for those ranges intesting/constraints-3.6.txt.