chore(toolbox-core): Use Toolbox server dev build for integration tests #298
+13
−4
Google Cloud Build / core-python-sdk-pr-py313 (toolbox-testing-438616)
failed
Aug 18, 2025 in 1m 52s
Summary
Build Information
| Trigger | core-python-sdk-pr-py313 |
| Build | 3fe328e9-ab0f-495b-bfa7-39747ee1bd4e |
| Start | 2025-08-18T06:18:23-07:00 |
| Duration | 1m43.795s |
| Status | FAILURE |
Steps
| Step | Status | Duration |
|---|---|---|
| Install library requirements | SUCCESS | 51.549s |
| Install test requirements | SUCCESS | 30.882s |
| Run integration tests | FAILURE | 15.622s |
Details
starting build "3fe328e9-ab0f-495b-bfa7-39747ee1bd4e"
FETCHSOURCE
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /workspace/.git/
From https://github.com/googleapis/mcp-toolbox-sdk-python
* branch 2e746cbc9db398e2721ae73d80c4a95fecf0cd61 -> FETCH_HEAD
HEAD is now at 2e746cb fix: Update the toolbox version tag to pick the dev builds from
GitCommit:
2e746cbc9db398e2721ae73d80c4a95fecf0cd61
BUILD
Starting Step #0 - "Install library requirements"
Step #0 - "Install library requirements": Pulling image: python:3.13
Step #0 - "Install library requirements": 3.13: Pulling from library/python
Step #0 - "Install library requirements": 80b7316254b3: Pulling fs layer
Step #0 - "Install library requirements": 36e4db86de6e: Pulling fs layer
Step #0 - "Install library requirements": 8ea45766c644: Pulling fs layer
Step #0 - "Install library requirements": 3cb1455cf185: Pulling fs layer
Step #0 - "Install library requirements": d622b1dca92a: Pulling fs layer
Step #0 - "Install library requirements": ad72fce423fc: Pulling fs layer
Step #0 - "Install library requirements": b9f8f98927f6: Pulling fs layer
Step #0 - "Install library requirements": 3cb1455cf185: Waiting
Step #0 - "Install library requirements": d622b1dca92a: Waiting
Step #0 - "Install library requirements": ad72fce423fc: Waiting
Step #0 - "Install library requirements": b9f8f98927f6: Waiting
Step #0 - "Install library requirements": 36e4db86de6e: Verifying Checksum
Step #0 - "Install library requirements": 36e4db86de6e: Download complete
Step #0 - "Install library requirements": 80b7316254b3: Verifying Checksum
Step #0 - "Install library requirements": 80b7316254b3: Download complete
Step #0 - "Install library requirements": 8ea45766c644: Download complete
Step #0 - "Install library requirements": d622b1dca92a: Verifying Checksum
Step #0 - "Install library requirements": d622b1dca92a: Download complete
Step #0 - "Install library requirements": b9f8f98927f6: Verifying Checksum
Step #0 - "Install library requirements": b9f8f98927f6: Download complete
Step #0 - "Install library requirements": ad72fce423fc: Verifying Checksum
Step #0 - "Install library requirements": ad72fce423fc: Download complete
Step #0 - "Install library requirements": 3cb1455cf185: Verifying Checksum
Step #0 - "Install library requirements": 3cb1455cf185: Download complete
Step #0 - "Install library requirements": 80b7316254b3: Pull complete
Step #0 - "Install library requirements": 36e4db86de6e: Pull complete
Step #0 - "Install library requirements": 8ea45766c644: Pull complete
Step #0 - "Install library requirements": 3cb1455cf185: Pull complete
Step #0 - "Install library requirements": d622b1dca92a: Pull complete
Step #0 - "Install library requirements": ad72fce423fc: Pull complete
Step #0 - "Install library requirements": b9f8f98927f6: Pull complete
Step #0 - "Install library requirements": Digest: sha256:3b2f1b9c9948e9dc96e1a2f4668ba9870ff43ab834f91155697476142b3bc299
Step #0 - "Install library requirements": Status: Downloaded newer image for python:3.13
Step #0 - "Install library requirements": docker.io/library/python:3.13
Step #0 - "Install library requirements": Collecting aiohttp==3.12.15 (from -r packages/toolbox-core/requirements.txt (line 1))
Step #0 - "Install library requirements": Downloading aiohttp-3.12.15-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (7.7 kB)
Step #0 - "Install library requirements": Collecting pydantic==2.11.7 (from -r packages/toolbox-core/requirements.txt (line 2))
Step #0 - "Install library requirements": Downloading pydantic-2.11.7-py3-none-any.whl.metadata (67 kB)
Step #0 - "Install library requirements": Collecting deprecated==1.2.18 (from -r packages/toolbox-core/requirements.txt (line 3))
Step #0 - "Install library requirements": Downloading Deprecated-1.2.18-py2.py3-none-any.whl.metadata (5.7 kB)
Step #0 - "Install library requirements": Collecting requests==2.32.4 (from -r packages/toolbox-core/requirements.txt (line 4))
Step #0 - "Install library requirements": Downloading requests-2.32.4-py3-none-any.whl.metadata (4.9 kB)
Step #0 - "Install library requirements": Collecting google-auth==2.40.3 (from -r packages/toolbox-core/requirements.txt (line 5))
Step #0 - "Install library requirements": Downloading google_auth-2.40.3-py2.py3-none-any.whl.metadata (6.2 kB)
Step #0 - "Install library requirements": Collecting aiohappyeyeballs>=2.5.0 (from aiohttp==3.12.15->-r packages/toolbox-core/requirements.txt (line 1))
Step #0 - "Install library requirements": Downloading aiohappyeyeballs-2.6.1-py3-none-any.whl.metadata (5.9 kB)
Step #0 - "Install library requirements": Collecting aiosignal>=1.4.0 (from aiohttp==3.12.15->-r packages/toolbox-core/requirements.txt (line 1))
Step #0 - "Install library requirements": Downloading aiosignal-1.4.0-py3-none-any.whl.metadata (3.7 kB)
Step #0 - "Install library requirements": Collecting attrs>=17.3.0 (from aiohttp==3.12.15->-r packages/toolbox-core/requirements.txt (line 1))
Step #0 - "Install library requirements": Downloading attrs-25.3.0-py3-none-any.whl.metadata (10 kB)
Step #0 - "Install library requirements": Collecting frozenlist>=1.1.1 (from aiohttp==3.12.15->-r packages/toolbox-core/requirements.txt (line 1))
Step #0 - "Install library requirements": Downloading frozenlist-1.7.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (18 kB)
Step #0 - "Install library requirements": Collecting multidict<7.0,>=4.5 (from aiohttp==3.12.15->-r packages/toolbox-core/requirements.txt (line 1))
Step #0 - "Install library requirements": Downloading multidict-6.6.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (5.3 kB)
Step #0 - "Install library requirements": Collecting propcache>=0.2.0 (from aiohttp==3.12.15->-r packages/toolbox-core/requirements.txt (line 1))
Step #0 - "Install library requirements": Downloading propcache-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)
Step #0 - "Install library requirements": Collecting yarl<2.0,>=1.17.0 (from aiohttp==3.12.15->-r packages/toolbox-core/requirements.txt (line 1))
Step #0 - "Install library requirements": Downloading yarl-1.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (73 kB)
Step #0 - "Install library requirements": Collecting annotated-types>=0.6.0 (from pydantic==2.11.7->-r packages/toolbox-core/requirements.txt (line 2))
Step #0 - "Install library requirements": Downloading annotated_types-0.7.0-py3-none-any.whl.metadata (15 kB)
Step #0 - "Install library requirements": Collecting pydantic-core==2.33.2 (from pydantic==2.11.7->-r packages/toolbox-core/requirements.txt (line 2))
Step #0 - "Install library requirements": Downloading pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.8 kB)
Step #0 - "Install library requirements": Collecting typing-extensions>=4.12.2 (from pydantic==2.11.7->-r packages/toolbox-core/requirements.txt (line 2))
Step #0 - "Install library requirements": Downloading typing_extensions-4.14.1-py3-none-any.whl.metadata (3.0 kB)
Step #0 - "Install library requirements": Collecting typing-inspection>=0.4.0 (from pydantic==2.11.7->-r packages/toolbox-core/requirements.txt (line 2))
Step #0 - "Install library requirements": Downloading typing_inspection-0.4.1-py3-none-any.whl.metadata (2.6 kB)
Step #0 - "Install library requirements": Collecting wrapt<2,>=1.10 (from deprecated==1.2.18->-r packages/toolbox-core/requirements.txt (line 3))
Step #0 - "Install library requirements": Downloading wrapt-1.17.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.metadata (6.4 kB)
Step #0 - "Install library requirements": Collecting charset_normalizer<4,>=2 (from requests==2.32.4->-r packages/toolbox-core/requirements.txt (line 4))
Step #0 - "Install library requirements": Downloading charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (36 kB)
Step #0 - "Install library requirements": Collecting idna<4,>=2.5 (from requests==2.32.4->-r packages/toolbox-core/requirements.txt (line 4))
Step #0 - "Install library requirements": Downloading idna-3.10-py3-none-any.whl.metadata (10 kB)
Step #0 - "Install library requirements": Collecting urllib3<3,>=1.21.1 (from requests==2.32.4->-r packages/toolbox-core/requirements.txt (line 4))
Step #0 - "Install library requirements": Downloading urllib3-2.5.0-py3-none-any.whl.metadata (6.5 kB)
Step #0 - "Install library requirements": Collecting certifi>=2017.4.17 (from requests==2.32.4->-r packages/toolbox-core/requirements.txt (line 4))
Step #0 - "Install library requirements": Downloading certifi-2025.8.3-py3-none-any.whl.metadata (2.4 kB)
Step #0 - "Install library requirements": Collecting cachetools<6.0,>=2.0.0 (from google-auth==2.40.3->-r packages/toolbox-core/requirements.txt (line 5))
Step #0 - "Install library requirements": Downloading cachetools-5.5.2-py3-none-any.whl.metadata (5.4 kB)
Step #0 - "Install library requirements": Collecting pyasn1-modules>=0.2.1 (from google-auth==2.40.3->-r packages/toolbox-core/requirements.txt (line 5))
Step #0 - "Install library requirements": Downloading pyasn1_modules-0.4.2-py3-none-any.whl.metadata (3.5 kB)
Step #0 - "Install library requirements": Collecting rsa<5,>=3.1.4 (from google-auth==2.40.3->-r packages/toolbox-core/requirements.txt (line 5))
Step #0 - "Install library requirements": Downloading rsa-4.9.1-py3-none-any.whl.metadata (5.6 kB)
Step #0 - "Install library requirements": Collecting pyasn1>=0.1.3 (from rsa<5,>=3.1.4->google-auth==2.40.3->-r packages/toolbox-core/requirements.txt (line 5))
Step #0 - "Install library requirements": Downloading pyasn1-0.6.1-py3-none-any.whl.metadata (8.4 kB)
Step #0 - "Install library requirements": Downloading aiohttp-3.12.15-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB)
Step #0 - "Install library requirements": ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.7/1.7 MB 10.0 MB/s 0:00:00
Step #0 - "Install library requirements": Downloading pydantic-2.11.7-py3-none-any.whl (444 kB)
Step #0 - "Install library requirements": Downloading Deprecated-1.2.18-py2.py3-none-any.whl (10.0 kB)
Step #0 - "Install library requirements": Downloading requests-2.32.4-py3-none-any.whl (64 kB)
Step #0 - "Install library requirements": Downloading google_auth-2.40.3-py2.py3-none-any.whl (216 kB)
Step #0 - "Install library requirements": Downloading pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB)
Step #0 - "Install library requirements": ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.0/2.0 MB 18.2 MB/s 0:00:00
Step #0 - "Install library requirements": Downloading cachetools-5.5.2-py3-none-any.whl (10 kB)
Step #0 - "Install library requirements": Downloading charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (151 kB)
Step #0 - "Install library requirements": Downloading idna-3.10-py3-none-any.whl (70 kB)
Step #0 - "Install library requirements": Downloading multidict-6.6.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (254 kB)
Step #0 - "Install library requirements": Downloading rsa-4.9.1-py3-none-any.whl (34 kB)
Step #0 - "Install library requirements": Downloading urllib3-2.5.0-py3-none-any.whl (129 kB)
Step #0 - "Install library requirements": Downloading wrapt-1.17.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (88 kB)
Step #0 - "Install library requirements": Downloading yarl-1.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (352 kB)
Step #0 - "Install library requirements": Downloading aiohappyeyeballs-2.6.1-py3-none-any.whl (15 kB)
Step #0 - "Install library requirements": Downloading aiosignal-1.4.0-py3-none-any.whl (7.5 kB)
Step #0 - "Install library requirements": Downloading annotated_types-0.7.0-py3-none-any.whl (13 kB)
Step #0 - "Install library requirements": Downloading attrs-25.3.0-py3-none-any.whl (63 kB)
Step #0 - "Install library requirements": Downloading certifi-2025.8.3-py3-none-any.whl (161 kB)
Step #0 - "Install library requirements": Downloading frozenlist-1.7.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (232 kB)
Step #0 - "Install library requirements": Downloading propcache-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (206 kB)
Step #0 - "Install library requirements": Downloading pyasn1-0.6.1-py3-none-any.whl (83 kB)
Step #0 - "Install library requirements": Downloading pyasn1_modules-0.4.2-py3-none-any.whl (181 kB)
Step #0 - "Install library requirements": Downloading typing_extensions-4.14.1-py3-none-any.whl (43 kB)
Step #0 - "Install library requirements": Downloading typing_inspection-0.4.1-py3-none-any.whl (14 kB)
Step #0 - "Install library requirements": Installing collected packages: wrapt, urllib3, typing-extensions, pyasn1, propcache, multidict, idna, frozenlist, charset_normalizer, certifi, cachetools, attrs, annotated-types, aiohappyeyeballs, yarl, typing-inspection, rsa, requests, pydantic-core, pyasn1-modules, deprecated, aiosignal, pydantic, google-auth, aiohttp
Step #0 - "Install library requirements": WARNING: The script normalizer is installed in '/builder/home/.local/bin' which is not on PATH.
Step #0 - "Install library requirements": Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Step #0 - "Install library requirements": WARNING: The scripts pyrsa-decrypt, pyrsa-encrypt, pyrsa-keygen, pyrsa-priv2pub, pyrsa-sign and pyrsa-verify are installed in '/builder/home/.local/bin' which is not on PATH.
Step #0 - "Install library requirements": Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Step #0 - "Install library requirements":
Step #0 - "Install library requirements": Successfully installed aiohappyeyeballs-2.6.1 aiohttp-3.12.15 aiosignal-1.4.0 annotated-types-0.7.0 attrs-25.3.0 cachetools-5.5.2 certifi-2025.8.3 charset_normalizer-3.4.3 deprecated-1.2.18 frozenlist-1.7.0 google-auth-2.40.3 idna-3.10 multidict-6.6.4 propcache-0.3.2 pyasn1-0.6.1 pyasn1-modules-0.4.2 pydantic-2.11.7 pydantic-core-2.33.2 requests-2.32.4 rsa-4.9.1 typing-extensions-4.14.1 typing-inspection-0.4.1 urllib3-2.5.0 wrapt-1.17.3 yarl-1.20.1
Step #0 - "Install library requirements": WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
Finished Step #0 - "Install library requirements"
Starting Step #1 - "Install test requirements"
Step #1 - "Install test requirements": Already have image (with digest): python:3.13
Step #1 - "Install test requirements": Processing ./packages/toolbox-core
Step #1 - "Install test requirements": Installing build dependencies: started
Step #1 - "Install test requirements": Installing build dependencies: finished with status 'done'
Step #1 - "Install test requirements": Getting requirements to build wheel: started
Step #1 - "Install test requirements": Getting requirements to build wheel: finished with status 'done'
Step #1 - "Install test requirements": Preparing metadata (pyproject.toml): started
Step #1 - "Install test requirements": Preparing metadata (pyproject.toml): finished with status 'done'
Step #1 - "Install test requirements": Requirement already satisfied: pydantic<3.0.0,>=2.7.0 in /builder/home/.local/lib/python3.13/site-packages (from toolbox-core==0.4.0) (2.11.7)
Step #1 - "Install test requirements": Requirement already satisfied: aiohttp<4.0.0,>=3.8.6 in /builder/home/.local/lib/python3.13/site-packages (from toolbox-core==0.4.0) (3.12.15)
Step #1 - "Install test requirements": Requirement already satisfied: deprecated<2.0.0,>=1.2.15 in /builder/home/.local/lib/python3.13/site-packages (from toolbox-core==0.4.0) (1.2.18)
Step #1 - "Install test requirements": Requirement already satisfied: google-auth<3.0.0,>=2.0.0 in /builder/home/.local/lib/python3.13/site-packages (from toolbox-core==0.4.0) (2.40.3)
Step #1 - "Install test requirements": Requirement already satisfied: requests<3.0.0,>=2.19.0 in /builder/home/.local/lib/python3.13/site-packages (from toolbox-core==0.4.0) (2.32.4)
Step #1 - "Install test requirements": Collecting black==25.1.0 (from black[jupyter]==25.1.0; extra == "test"->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading black-25.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.metadata (81 kB)
Step #1 - "Install test requirements": Collecting isort==6.0.1 (from toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading isort-6.0.1-py3-none-any.whl.metadata (11 kB)
Step #1 - "Install test requirements": Collecting mypy==1.17.1 (from toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading mypy-1.17.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.2 kB)
Step #1 - "Install test requirements": Collecting pytest==8.4.1 (from toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading pytest-8.4.1-py3-none-any.whl.metadata (7.7 kB)
Step #1 - "Install test requirements": Collecting pytest-aioresponses==0.3.0 (from toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading pytest_aioresponses-0.3.0-py3-none-any.whl.metadata (3.6 kB)
Step #1 - "Install test requirements": Collecting pytest-asyncio==1.1.0 (from toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading pytest_asyncio-1.1.0-py3-none-any.whl.metadata (4.1 kB)
Step #1 - "Install test requirements": Collecting pytest-cov==6.2.1 (from toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading pytest_cov-6.2.1-py3-none-any.whl.metadata (30 kB)
Step #1 - "Install test requirements": Collecting pytest-mock==3.14.1 (from toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading pytest_mock-3.14.1-py3-none-any.whl.metadata (3.9 kB)
Step #1 - "Install test requirements": Collecting google-cloud-secret-manager==2.24.0 (from toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading google_cloud_secret_manager-2.24.0-py3-none-any.whl.metadata (9.7 kB)
Step #1 - "Install test requirements": Collecting google-cloud-storage==3.3.0 (from toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading google_cloud_storage-3.3.0-py3-none-any.whl.metadata (13 kB)
Step #1 - "Install test requirements": Collecting aioresponses==0.7.8 (from toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading aioresponses-0.7.8-py2.py3-none-any.whl.metadata (10 kB)
Step #1 - "Install test requirements": Collecting packaging>=22.0 (from aioresponses==0.7.8->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading packaging-25.0-py3-none-any.whl.metadata (3.3 kB)
Step #1 - "Install test requirements": Collecting click>=8.0.0 (from black==25.1.0->black[jupyter]==25.1.0; extra == "test"->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading click-8.2.1-py3-none-any.whl.metadata (2.5 kB)
Step #1 - "Install test requirements": Collecting mypy-extensions>=0.4.3 (from black==25.1.0->black[jupyter]==25.1.0; extra == "test"->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading mypy_extensions-1.1.0-py3-none-any.whl.metadata (1.1 kB)
Step #1 - "Install test requirements": Collecting pathspec>=0.9.0 (from black==25.1.0->black[jupyter]==25.1.0; extra == "test"->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading pathspec-0.12.1-py3-none-any.whl.metadata (21 kB)
Step #1 - "Install test requirements": Collecting platformdirs>=2 (from black==25.1.0->black[jupyter]==25.1.0; extra == "test"->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading platformdirs-4.3.8-py3-none-any.whl.metadata (12 kB)
Step #1 - "Install test requirements": Collecting ipython>=7.8.0 (from black[jupyter]==25.1.0; extra == "test"->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading ipython-9.4.0-py3-none-any.whl.metadata (4.4 kB)
Step #1 - "Install test requirements": Collecting tokenize-rt>=3.2.0 (from black[jupyter]==25.1.0; extra == "test"->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading tokenize_rt-6.2.0-py2.py3-none-any.whl.metadata (4.0 kB)
Step #1 - "Install test requirements": Collecting google-api-core!=2.0.*,!=2.1.*,!=2.10.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,<3.0.0,>=1.34.1 (from google-api-core[grpc]!=2.0.*,!=2.1.*,!=2.10.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,<3.0.0,>=1.34.1->google-cloud-secret-manager==2.24.0->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading google_api_core-2.25.1-py3-none-any.whl.metadata (3.0 kB)
Step #1 - "Install test requirements": Collecting proto-plus<2.0.0,>=1.22.3 (from google-cloud-secret-manager==2.24.0->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading proto_plus-1.26.1-py3-none-any.whl.metadata (2.2 kB)
Step #1 - "Install test requirements": Collecting protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<7.0.0,>=3.20.2 (from google-cloud-secret-manager==2.24.0->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading protobuf-6.32.0-cp39-abi3-manylinux2014_x86_64.whl.metadata (593 bytes)
Step #1 - "Install test requirements": Collecting grpc-google-iam-v1<1.0.0,>=0.14.0 (from google-cloud-secret-manager==2.24.0->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading grpc_google_iam_v1-0.14.2-py3-none-any.whl.metadata (9.1 kB)
Step #1 - "Install test requirements": Collecting google-cloud-core<3.0.0,>=2.4.2 (from google-cloud-storage==3.3.0->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading google_cloud_core-2.4.3-py2.py3-none-any.whl.metadata (2.7 kB)
Step #1 - "Install test requirements": Collecting google-resumable-media<3.0.0,>=2.7.2 (from google-cloud-storage==3.3.0->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading google_resumable_media-2.7.2-py2.py3-none-any.whl.metadata (2.2 kB)
Step #1 - "Install test requirements": Collecting google-crc32c<2.0.0,>=1.1.3 (from google-cloud-storage==3.3.0->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading google_crc32c-1.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.3 kB)
Step #1 - "Install test requirements": Requirement already satisfied: typing_extensions>=4.6.0 in /builder/home/.local/lib/python3.13/site-packages (from mypy==1.17.1->toolbox-core==0.4.0) (4.14.1)
Step #1 - "Install test requirements": Collecting iniconfig>=1 (from pytest==8.4.1->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading iniconfig-2.1.0-py3-none-any.whl.metadata (2.7 kB)
Step #1 - "Install test requirements": Collecting pluggy<2,>=1.5 (from pytest==8.4.1->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading pluggy-1.6.0-py3-none-any.whl.metadata (4.8 kB)
Step #1 - "Install test requirements": Collecting pygments>=2.7.2 (from pytest==8.4.1->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading pygments-2.19.2-py3-none-any.whl.metadata (2.5 kB)
Step #1 - "Install test requirements": Collecting coverage>=7.5 (from coverage[toml]>=7.5->pytest-cov==6.2.1->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading coverage-7.10.4-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.metadata (8.9 kB)
Step #1 - "Install test requirements": Requirement already satisfied: aiohappyeyeballs>=2.5.0 in /builder/home/.local/lib/python3.13/site-packages (from aiohttp<4.0.0,>=3.8.6->toolbox-core==0.4.0) (2.6.1)
Step #1 - "Install test requirements": Requirement already satisfied: aiosignal>=1.4.0 in /builder/home/.local/lib/python3.13/site-packages (from aiohttp<4.0.0,>=3.8.6->toolbox-core==0.4.0) (1.4.0)
Step #1 - "Install test requirements": Requirement already satisfied: attrs>=17.3.0 in /builder/home/.local/lib/python3.13/site-packages (from aiohttp<4.0.0,>=3.8.6->toolbox-core==0.4.0) (25.3.0)
Step #1 - "Install test requirements": Requirement already satisfied: frozenlist>=1.1.1 in /builder/home/.local/lib/python3.13/site-packages (from aiohttp<4.0.0,>=3.8.6->toolbox-core==0.4.0) (1.7.0)
Step #1 - "Install test requirements": Requirement already satisfied: multidict<7.0,>=4.5 in /builder/home/.local/lib/python3.13/site-packages (from aiohttp<4.0.0,>=3.8.6->toolbox-core==0.4.0) (6.6.4)
Step #1 - "Install test requirements": Requirement already satisfied: propcache>=0.2.0 in /builder/home/.local/lib/python3.13/site-packages (from aiohttp<4.0.0,>=3.8.6->toolbox-core==0.4.0) (0.3.2)
Step #1 - "Install test requirements": Requirement already satisfied: yarl<2.0,>=1.17.0 in /builder/home/.local/lib/python3.13/site-packages (from aiohttp<4.0.0,>=3.8.6->toolbox-core==0.4.0) (1.20.1)
Step #1 - "Install test requirements": Requirement already satisfied: wrapt<2,>=1.10 in /builder/home/.local/lib/python3.13/site-packages (from deprecated<2.0.0,>=1.2.15->toolbox-core==0.4.0) (1.17.3)
Step #1 - "Install test requirements": Collecting googleapis-common-protos<2.0.0,>=1.56.2 (from google-api-core!=2.0.*,!=2.1.*,!=2.10.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,<3.0.0,>=1.34.1->google-api-core[grpc]!=2.0.*,!=2.1.*,!=2.10.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,<3.0.0,>=1.34.1->google-cloud-secret-manager==2.24.0->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading googleapis_common_protos-1.70.0-py3-none-any.whl.metadata (9.3 kB)
Step #1 - "Install test requirements": Collecting grpcio<2.0.0,>=1.33.2 (from google-api-core[grpc]!=2.0.*,!=2.1.*,!=2.10.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,<3.0.0,>=1.34.1->google-cloud-secret-manager==2.24.0->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading grpcio-1.74.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.8 kB)
Step #1 - "Install test requirements": Collecting grpcio-status<2.0.0,>=1.33.2 (from google-api-core[grpc]!=2.0.*,!=2.1.*,!=2.10.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*,!=2.8.*,!=2.9.*,<3.0.0,>=1.34.1->google-cloud-secret-manager==2.24.0->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading grpcio_status-1.74.0-py3-none-any.whl.metadata (1.1 kB)
Step #1 - "Install test requirements": Requirement already satisfied: cachetools<6.0,>=2.0.0 in /builder/home/.local/lib/python3.13/site-packages (from google-auth<3.0.0,>=2.0.0->toolbox-core==0.4.0) (5.5.2)
Step #1 - "Install test requirements": Requirement already satisfied: pyasn1-modules>=0.2.1 in /builder/home/.local/lib/python3.13/site-packages (from google-auth<3.0.0,>=2.0.0->toolbox-core==0.4.0) (0.4.2)
Step #1 - "Install test requirements": Requirement already satisfied: rsa<5,>=3.1.4 in /builder/home/.local/lib/python3.13/site-packages (from google-auth<3.0.0,>=2.0.0->toolbox-core==0.4.0) (4.9.1)
Step #1 - "Install test requirements": Requirement already satisfied: annotated-types>=0.6.0 in /builder/home/.local/lib/python3.13/site-packages (from pydantic<3.0.0,>=2.7.0->toolbox-core==0.4.0) (0.7.0)
Step #1 - "Install test requirements": Requirement already satisfied: pydantic-core==2.33.2 in /builder/home/.local/lib/python3.13/site-packages (from pydantic<3.0.0,>=2.7.0->toolbox-core==0.4.0) (2.33.2)
Step #1 - "Install test requirements": Requirement already satisfied: typing-inspection>=0.4.0 in /builder/home/.local/lib/python3.13/site-packages (from pydantic<3.0.0,>=2.7.0->toolbox-core==0.4.0) (0.4.1)
Step #1 - "Install test requirements": Requirement already satisfied: charset_normalizer<4,>=2 in /builder/home/.local/lib/python3.13/site-packages (from requests<3.0.0,>=2.19.0->toolbox-core==0.4.0) (3.4.3)
Step #1 - "Install test requirements": Requirement already satisfied: idna<4,>=2.5 in /builder/home/.local/lib/python3.13/site-packages (from requests<3.0.0,>=2.19.0->toolbox-core==0.4.0) (3.10)
Step #1 - "Install test requirements": Requirement already satisfied: urllib3<3,>=1.21.1 in /builder/home/.local/lib/python3.13/site-packages (from requests<3.0.0,>=2.19.0->toolbox-core==0.4.0) (2.5.0)
Step #1 - "Install test requirements": Requirement already satisfied: certifi>=2017.4.17 in /builder/home/.local/lib/python3.13/site-packages (from requests<3.0.0,>=2.19.0->toolbox-core==0.4.0) (2025.8.3)
Step #1 - "Install test requirements": Requirement already satisfied: pyasn1>=0.1.3 in /builder/home/.local/lib/python3.13/site-packages (from rsa<5,>=3.1.4->google-auth<3.0.0,>=2.0.0->toolbox-core==0.4.0) (0.6.1)
Step #1 - "Install test requirements": Collecting decorator (from ipython>=7.8.0->black[jupyter]==25.1.0; extra == "test"->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading decorator-5.2.1-py3-none-any.whl.metadata (3.9 kB)
Step #1 - "Install test requirements": Collecting ipython-pygments-lexers (from ipython>=7.8.0->black[jupyter]==25.1.0; extra == "test"->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading ipython_pygments_lexers-1.1.1-py3-none-any.whl.metadata (1.1 kB)
Step #1 - "Install test requirements": Collecting jedi>=0.16 (from ipython>=7.8.0->black[jupyter]==25.1.0; extra == "test"->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading jedi-0.19.2-py2.py3-none-any.whl.metadata (22 kB)
Step #1 - "Install test requirements": Collecting matplotlib-inline (from ipython>=7.8.0->black[jupyter]==25.1.0; extra == "test"->toolbox-core==0.4.0)
Step #1 - "Install test requirements": Downloading matplotlib_inline-0.1.7-py3-none-any.whl.metadata (3.9 kB)
Step #1 - "Install test requirements": Collecting pexpect>4.3 (from ipython>=7.8.0->black[jupyter]==25.1.0; extra == "test"->toolbox-core==0.4.0)
Step #1 - "Install test
...
[Logs truncated due to log size limitations. For full logs, see https://console.cloud.google.com/logs/viewer?advancedFilter=resource.type%3D%22build%22+AND+resource.labels.build_id%3D%223fe328e9-ab0f-495b-bfa7-39747ee1bd4e%22+AND+resource.labels.build_trigger_id%3D%2297f62257-3538-4960-a331-cca261a6f8c3%22&project=toolbox-testing-438616.]
...
ration_match,
Step #2 - "Run integration tests": }
Step #2 - "Run integration tests": retry = retry.get_retry_policy_if_conditions_met(query_params=query_params)
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": client = self._require_client(client)
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": download_url = self._get_download_url(
Step #2 - "Run integration tests": client,
Step #2 - "Run integration tests": if_generation_match=if_generation_match,
Step #2 - "Run integration tests": if_generation_not_match=if_generation_not_match,
Step #2 - "Run integration tests": if_metageneration_match=if_metageneration_match,
Step #2 - "Run integration tests": if_metageneration_not_match=if_metageneration_not_match,
Step #2 - "Run integration tests": )
Step #2 - "Run integration tests": headers = _get_encryption_headers(self._encryption_key)
Step #2 - "Run integration tests": headers["accept-encoding"] = "gzip"
Step #2 - "Run integration tests": _add_etag_match_headers(
Step #2 - "Run integration tests": headers,
Step #2 - "Run integration tests": if_etag_match=if_etag_match,
Step #2 - "Run integration tests": if_etag_not_match=if_etag_not_match,
Step #2 - "Run integration tests": )
Step #2 - "Run integration tests": # Add any client attached custom headers to be sent with the request.
Step #2 - "Run integration tests": headers = {
Step #2 - "Run integration tests": **_get_default_headers(client._connection.user_agent, command=command),
Step #2 - "Run integration tests": **headers,
Step #2 - "Run integration tests": **client._extra_headers,
Step #2 - "Run integration tests": }
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": transport = client._http
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": try:
Step #2 - "Run integration tests": > self._do_download(
Step #2 - "Run integration tests": transport,
Step #2 - "Run integration tests": file_obj,
Step #2 - "Run integration tests": download_url,
Step #2 - "Run integration tests": headers,
Step #2 - "Run integration tests": start,
Step #2 - "Run integration tests": end,
Step #2 - "Run integration tests": raw_download,
Step #2 - "Run integration tests": timeout=timeout,
Step #2 - "Run integration tests": checksum=checksum,
Step #2 - "Run integration tests": retry=retry,
Step #2 - "Run integration tests": single_shot_download=single_shot_download,
Step #2 - "Run integration tests": )
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/cloud/storage/blob.py:4401:
Step #2 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/cloud/storage/blob.py:1094: in _do_download
Step #2 - "Run integration tests": response = download.consume(transport, timeout=timeout)
Step #2 - "Run integration tests": ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/cloud/storage/_media/requests/download.py:280: in consume
Step #2 - "Run integration tests": return _request_helpers.wait_and_retry(retriable_request, self._retry_strategy)
Step #2 - "Run integration tests": ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/cloud/storage/_media/requests/_request_helpers.py:107: in wait_and_retry
Step #2 - "Run integration tests": return func()
Step #2 - "Run integration tests": ^^^^^^
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/api_core/retry/retry_unary.py:294: in retry_wrapped_func
Step #2 - "Run integration tests": return retry_target(
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/api_core/retry/retry_unary.py:156: in retry_target
Step #2 - "Run integration tests": next_sleep = _retry_error_helper(
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/api_core/retry/retry_base.py:214: in _retry_error_helper
Step #2 - "Run integration tests": raise final_exc from source_exc
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/api_core/retry/retry_unary.py:147: in retry_target
Step #2 - "Run integration tests": result = target()
Step #2 - "Run integration tests": ^^^^^^^^
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/cloud/storage/_media/requests/download.py:262: in retriable_request
Step #2 - "Run integration tests": self._process_response(result)
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/cloud/storage/_media/_download.py:232: in _process_response
Step #2 - "Run integration tests": _helpers.require_status_code(
Step #2 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": response = <Response [404]>
Step #2 - "Run integration tests": status_codes = (<HTTPStatus.OK: 200>, <HTTPStatus.PARTIAL_CONTENT: 206>)
Step #2 - "Run integration tests": get_status_code = <function RequestsMixin._get_status_code at 0x7f2ed25b25c0>
Step #2 - "Run integration tests": callback = <function do_nothing at 0x7f2ed25b0e00>
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": def require_status_code(response, status_codes, get_status_code, callback=do_nothing):
Step #2 - "Run integration tests": """Require a response has a status code among a list.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": Args:
Step #2 - "Run integration tests": response (object): The HTTP response object.
Step #2 - "Run integration tests": status_codes (tuple): The acceptable status codes.
Step #2 - "Run integration tests": get_status_code (Callable[Any, int]): Helper to get a status code
Step #2 - "Run integration tests": from a response.
Step #2 - "Run integration tests": callback (Optional[Callable]): A callback that takes no arguments,
Step #2 - "Run integration tests": to be executed when an exception is being raised.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": Returns:
Step #2 - "Run integration tests": int: The status code.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": Raises:
Step #2 - "Run integration tests": ~google.cloud.storage.exceptions.InvalidResponse: If the status code
Step #2 - "Run integration tests": is not one of the values in ``status_codes``.
Step #2 - "Run integration tests": """
Step #2 - "Run integration tests": status_code = get_status_code(response)
Step #2 - "Run integration tests": if status_code not in status_codes:
Step #2 - "Run integration tests": if status_code not in retry._RETRYABLE_STATUS_CODES:
Step #2 - "Run integration tests": callback()
Step #2 - "Run integration tests": > raise InvalidResponse(
Step #2 - "Run integration tests": response,
Step #2 - "Run integration tests": "Request failed with status code",
Step #2 - "Run integration tests": status_code,
Step #2 - "Run integration tests": "Expected one of",
Step #2 - "Run integration tests": *status_codes
Step #2 - "Run integration tests": )
Step #2 - "Run integration tests": E google.cloud.storage.exceptions.InvalidResponse: ('Request failed with status code', 404, 'Expected one of', <HTTPStatus.OK: 200>, <HTTPStatus.PARTIAL_CONTENT: 206>)
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/cloud/storage/_media/_helpers.py:105: InvalidResponse
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": During handling of the above exception, another exception occurred:
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": toolbox_version = 'latest', toolbox_bucket = 'genai-toolbox-dev'
Step #2 - "Run integration tests": tools_file_path = '/tmp/tmpqn8gp4sh'
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": @pytest_asyncio.fixture(scope="session")
Step #2 - "Run integration tests": def toolbox_server(
Step #2 - "Run integration tests": toolbox_version: str, toolbox_bucket: str, tools_file_path: str
Step #2 - "Run integration tests": ) -> Generator[None]:
Step #2 - "Run integration tests": """Starts the toolbox server as a subprocess."""
Step #2 - "Run integration tests": print("Downloading toolbox binary from gcs bucket...")
Step #2 - "Run integration tests": source_blob_name = get_toolbox_binary_url(toolbox_version)
Step #2 - "Run integration tests": > download_blob(toolbox_bucket, source_blob_name, "toolbox")
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": packages/toolbox-core/tests/conftest.py:144:
Step #2 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Step #2 - "Run integration tests": packages/toolbox-core/tests/conftest.py:67: in download_blob
Step #2 - "Run integration tests": blob.download_to_filename(destination_file_name)
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/cloud/storage/blob.py:1403: in download_to_filename
Step #2 - "Run integration tests": self._handle_filename_and_download(
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/cloud/storage/blob.py:1276: in _handle_filename_and_download
Step #2 - "Run integration tests": self._prep_and_do_download(
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/cloud/storage/blob.py:4415: in _prep_and_do_download
Step #2 - "Run integration tests": _raise_from_invalid_response(exc)
Step #2 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": error = InvalidResponse('Request failed with status code', 404, 'Expected one of', <HTTPStatus.OK: 200>, <HTTPStatus.PARTIAL_CONTENT: 206>)
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": def _raise_from_invalid_response(error):
Step #2 - "Run integration tests": """Re-wrap and raise an ``InvalidResponse`` exception.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :type error: :exc:`google.cloud.storage.exceptions.InvalidResponse`
Step #2 - "Run integration tests": :param error: A caught exception from the ``google-resumable-media``
Step #2 - "Run integration tests": library.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :raises: :class:`~google.cloud.exceptions.GoogleCloudError` corresponding
Step #2 - "Run integration tests": to the failed status code
Step #2 - "Run integration tests": """
Step #2 - "Run integration tests": response = error.response
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": # The 'response.text' gives the actual reason of error, where 'error' gives
Step #2 - "Run integration tests": # the message of expected status code.
Step #2 - "Run integration tests": if response.text:
Step #2 - "Run integration tests": error_message = response.text + ": " + str(error)
Step #2 - "Run integration tests": else:
Step #2 - "Run integration tests": error_message = str(error)
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": message = f"{response.request.method} {response.request.url}: {error_message}"
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": > raise exceptions.from_http_status(response.status_code, message, response=response)
Step #2 - "Run integration tests": E google.api_core.exceptions.NotFound: 404 GET https://storage.googleapis.com/download/storage/v1/b/genai-toolbox-dev/o/latest%2Flinux%2Famd64%2Ftoolbox?alt=media: No such object: genai-toolbox-dev/latest/linux/amd64/toolbox: ('Request failed with status code', 404, 'Expected one of', <HTTPStatus.OK: 200>, <HTTPStatus.PARTIAL_CONTENT: 206>)
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/cloud/storage/blob.py:4887: NotFound
Step #2 - "Run integration tests": ___________ ERROR at setup of TestBasicE2E.test_load_toolset_default ___________
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": self = <Blob: genai-toolbox-dev, latest/linux/amd64/toolbox, None>
Step #2 - "Run integration tests": file_obj = <_io.BufferedWriter name='toolbox'>
Step #2 - "Run integration tests": client = <google.cloud.storage.client.Client object at 0x7f2ed28d4ad0>
Step #2 - "Run integration tests": start = None, end = None, raw_download = False, if_etag_match = None
Step #2 - "Run integration tests": if_etag_not_match = None, if_generation_match = None
Step #2 - "Run integration tests": if_generation_not_match = None, if_metageneration_match = None
Step #2 - "Run integration tests": if_metageneration_not_match = None, timeout = 60, checksum = 'auto'
Step #2 - "Run integration tests": retry = <google.api_core.retry.retry_unary.Retry object at 0x7f2ed27ba510>
Step #2 - "Run integration tests": single_shot_download = False, command = None
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": def _prep_and_do_download(
Step #2 - "Run integration tests": self,
Step #2 - "Run integration tests": file_obj,
Step #2 - "Run integration tests": client=None,
Step #2 - "Run integration tests": start=None,
Step #2 - "Run integration tests": end=None,
Step #2 - "Run integration tests": raw_download=False,
Step #2 - "Run integration tests": if_etag_match=None,
Step #2 - "Run integration tests": if_etag_not_match=None,
Step #2 - "Run integration tests": if_generation_match=None,
Step #2 - "Run integration tests": if_generation_not_match=None,
Step #2 - "Run integration tests": if_metageneration_match=None,
Step #2 - "Run integration tests": if_metageneration_not_match=None,
Step #2 - "Run integration tests": timeout=_DEFAULT_TIMEOUT,
Step #2 - "Run integration tests": checksum="auto",
Step #2 - "Run integration tests": retry=DEFAULT_RETRY,
Step #2 - "Run integration tests": single_shot_download=False,
Step #2 - "Run integration tests": command=None,
Step #2 - "Run integration tests": ):
Step #2 - "Run integration tests": """Download the contents of a blob object into a file-like object.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": See https://cloud.google.com/storage/docs/downloading-objects
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": If :attr:`user_project` is set on the bucket, bills the API request
Step #2 - "Run integration tests": to that project.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :type file_obj: file
Step #2 - "Run integration tests": :param file_obj: A file handle to which to write the blob's data.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :type client: :class:`~google.cloud.storage.client.Client`
Step #2 - "Run integration tests": :param client:
Step #2 - "Run integration tests": (Optional) The client to use. If not passed, falls back to the
Step #2 - "Run integration tests": ``client`` stored on the blob's bucket.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :type start: int
Step #2 - "Run integration tests": :param start: (Optional) The first byte in a range to be downloaded.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :type end: int
Step #2 - "Run integration tests": :param end: (Optional) The last byte in a range to be downloaded.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :type raw_download: bool
Step #2 - "Run integration tests": :param raw_download:
Step #2 - "Run integration tests": (Optional) If true, download the object without any expansion.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :type if_etag_match: Union[str, Set[str]]
Step #2 - "Run integration tests": :param if_etag_match:
Step #2 - "Run integration tests": (Optional) See :ref:`using-if-etag-match`
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :type if_etag_not_match: Union[str, Set[str]]
Step #2 - "Run integration tests": :param if_etag_not_match:
Step #2 - "Run integration tests": (Optional) See :ref:`using-if-etag-not-match`
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :type if_generation_match: long
Step #2 - "Run integration tests": :param if_generation_match:
Step #2 - "Run integration tests": (Optional) See :ref:`using-if-generation-match`
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :type if_generation_not_match: long
Step #2 - "Run integration tests": :param if_generation_not_match:
Step #2 - "Run integration tests": (Optional) See :ref:`using-if-generation-not-match`
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :type if_metageneration_match: long
Step #2 - "Run integration tests": :param if_metageneration_match:
Step #2 - "Run integration tests": (Optional) See :ref:`using-if-metageneration-match`
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :type if_metageneration_not_match: long
Step #2 - "Run integration tests": :param if_metageneration_not_match:
Step #2 - "Run integration tests": (Optional) See :ref:`using-if-metageneration-not-match`
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :type timeout: float or tuple
Step #2 - "Run integration tests": :param timeout:
Step #2 - "Run integration tests": (Optional) The amount of time, in seconds, to wait
Step #2 - "Run integration tests": for the server response. See: :ref:`configuring_timeouts`
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :type checksum: str
Step #2 - "Run integration tests": :param checksum:
Step #2 - "Run integration tests": (Optional) The type of checksum to compute to verify the integrity
Step #2 - "Run integration tests": of the object. The response headers must contain a checksum of the
Step #2 - "Run integration tests": requested type. If the headers lack an appropriate checksum (for
Step #2 - "Run integration tests": instance in the case of transcoded or ranged downloads where the
Step #2 - "Run integration tests": remote service does not know the correct checksum, including
Step #2 - "Run integration tests": downloads where chunk_size is set) an INFO-level log will be
Step #2 - "Run integration tests": emitted. Supported values are "md5", "crc32c", "auto" and None. The
Step #2 - "Run integration tests": default is "auto", which will try to detect if the C extension for
Step #2 - "Run integration tests": crc32c is installed and fall back to md5 otherwise.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :type retry: google.api_core.retry.Retry or google.cloud.storage.retry.ConditionalRetryPolicy
Step #2 - "Run integration tests": :param retry: (Optional) How to retry the RPC. A None value will disable
Step #2 - "Run integration tests": retries. A google.api_core.retry.Retry value will enable retries,
Step #2 - "Run integration tests": and the object will define retriable response codes and errors and
Step #2 - "Run integration tests": configure backoff and timeout options.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": A google.cloud.storage.retry.ConditionalRetryPolicy value wraps a
Step #2 - "Run integration tests": Retry object and activates it only if certain conditions are met.
Step #2 - "Run integration tests": This class exists to provide safe defaults for RPC calls that are
Step #2 - "Run integration tests": not technically safe to retry normally (due to potential data
Step #2 - "Run integration tests": duplication or other side-effects) but become safe to retry if a
Step #2 - "Run integration tests": condition such as if_metageneration_match is set.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": See the retry.py source code and docstrings in this package
Step #2 - "Run integration tests": (google.cloud.storage.retry) for information on retry types and how
Step #2 - "Run integration tests": to configure them.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :type single_shot_download: bool
Step #2 - "Run integration tests": :param single_shot_download:
Step #2 - "Run integration tests": (Optional) If true, download the object in a single request.
Step #2 - "Run integration tests": Caution: Enabling this will increase the memory overload for your application.
Step #2 - "Run integration tests": Please enable this as per your use case.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": :type command: str
Step #2 - "Run integration tests": :param command:
Step #2 - "Run integration tests": (Optional) Information about which interface for download was used,
Step #2 - "Run integration tests": to be included in the X-Goog-API-Client header. Please leave as None
Step #2 - "Run integration tests": unless otherwise directed.
Step #2 - "Run integration tests": """
Step #2 - "Run integration tests": # Handle ConditionalRetryPolicy.
Step #2 - "Run integration tests": if isinstance(retry, ConditionalRetryPolicy):
Step #2 - "Run integration tests": # Conditional retries are designed for non-media calls, which change
Step #2 - "Run integration tests": # arguments into query_params dictionaries. Media operations work
Step #2 - "Run integration tests": # differently, so here we make a "fake" query_params to feed to the
Step #2 - "Run integration tests": # ConditionalRetryPolicy.
Step #2 - "Run integration tests": query_params = {
Step #2 - "Run integration tests": "ifGenerationMatch": if_generation_match,
Step #2 - "Run integration tests": "ifMetagenerationMatch": if_metageneration_match,
Step #2 - "Run integration tests": }
Step #2 - "Run integration tests": retry = retry.get_retry_policy_if_conditions_met(query_params=query_params)
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": client = self._require_client(client)
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": download_url = self._get_download_url(
Step #2 - "Run integration tests": client,
Step #2 - "Run integration tests": if_generation_match=if_generation_match,
Step #2 - "Run integration tests": if_generation_not_match=if_generation_not_match,
Step #2 - "Run integration tests": if_metageneration_match=if_metageneration_match,
Step #2 - "Run integration tests": if_metageneration_not_match=if_metageneration_not_match,
Step #2 - "Run integration tests": )
Step #2 - "Run integration tests": headers = _get_encryption_headers(self._encryption_key)
Step #2 - "Run integration tests": headers["accept-encoding"] = "gzip"
Step #2 - "Run integration tests": _add_etag_match_headers(
Step #2 - "Run integration tests": headers,
Step #2 - "Run integration tests": if_etag_match=if_etag_match,
Step #2 - "Run integration tests": if_etag_not_match=if_etag_not_match,
Step #2 - "Run integration tests": )
Step #2 - "Run integration tests": # Add any client attached custom headers to be sent with the request.
Step #2 - "Run integration tests": headers = {
Step #2 - "Run integration tests": **_get_default_headers(client._connection.user_agent, command=command),
Step #2 - "Run integration tests": **headers,
Step #2 - "Run integration tests": **client._extra_headers,
Step #2 - "Run integration tests": }
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": transport = client._http
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": try:
Step #2 - "Run integration tests": > self._do_download(
Step #2 - "Run integration tests": transport,
Step #2 - "Run integration tests": file_obj,
Step #2 - "Run integration tests": download_url,
Step #2 - "Run integration tests": headers,
Step #2 - "Run integration tests": start,
Step #2 - "Run integration tests": end,
Step #2 - "Run integration tests": raw_download,
Step #2 - "Run integration tests": timeout=timeout,
Step #2 - "Run integration tests": checksum=checksum,
Step #2 - "Run integration tests": retry=retry,
Step #2 - "Run integration tests": single_shot_download=single_shot_download,
Step #2 - "Run integration tests": )
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/cloud/storage/blob.py:4401:
Step #2 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/cloud/storage/blob.py:1094: in _do_download
Step #2 - "Run integration tests": response = download.consume(transport, timeout=timeout)
Step #2 - "Run integration tests": ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/cloud/storage/_media/requests/download.py:280: in consume
Step #2 - "Run integration tests": return _request_helpers.wait_and_retry(retriable_request, self._retry_strategy)
Step #2 - "Run integration tests": ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/cloud/storage/_media/requests/_request_helpers.py:107: in wait_and_retry
Step #2 - "Run integration tests": return func()
Step #2 - "Run integration tests": ^^^^^^
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/api_core/retry/retry_unary.py:294: in retry_wrapped_func
Step #2 - "Run integration tests": return retry_target(
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/api_core/retry/retry_unary.py:156: in retry_target
Step #2 - "Run integration tests": next_sleep = _retry_error_helper(
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/api_core/retry/retry_base.py:214: in _retry_error_helper
Step #2 - "Run integration tests": raise final_exc from source_exc
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/api_core/retry/retry_unary.py:147: in retry_target
Step #2 - "Run integration tests": result = target()
Step #2 - "Run integration tests": ^^^^^^^^
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/cloud/storage/_media/requests/download.py:262: in retriable_request
Step #2 - "Run integration tests": self._process_response(result)
Step #2 - "Run integration tests": /builder/home/.local/lib/python3.13/site-packages/google/cloud/storage/_media/_download.py:232: in _process_response
Step #2 - "Run integration tests": _helpers.require_status_code(
Step #2 - "Run integration tests": _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": response = <Response [404]>
Step #2 - "Run integration tests": status_codes = (<HTTPStatus.OK: 200>, <HTTPStatus.PARTIAL_CONTENT: 206>)
Step #2 - "Run integration tests": get_status_code = <function RequestsMixin._get_status_code at 0x7f2ed25b25c0>
Step #2 - "Run integration tests": callback = <function do_nothing at 0x7f2ed25b0e00>
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": def require_status_code(response, status_codes, get_status_code, callback=do_nothing):
Step #2 - "Run integration tests": """Require a response has a status code among a list.
Step #2 - "Run integration tests":
Step #2 - "Run integration tests": Args:
Step #2 - "Run integration tests": response (object): The HTTP response object.
Step #2 - "Run integration tests": status_codes (tuple): The acceptable status codes.
Step #2 - "Run integration tests": get_status_code (Callable[Any, int]): Helper to get a status code
Step #2 - "Run integration tests": from a response.
Loading