feat(core): implement reference support for Stateless MCP (SEP-2575) - #648
Merged
Merged
Google Cloud Build / core-python-sdk-pr-py312 (toolbox-testing-438616)
succeeded
Jun 23, 2026 in 58s
Summary
Build Information
| Trigger | core-python-sdk-pr-py312 |
| Build | 7a97a936-47ce-4dd8-93d4-3a01b364f9d7 |
| Start | 2026-06-23T03:09:55-07:00 |
| Duration | 53.956s |
| Status | SUCCESS |
Steps
| Step | Status | Duration |
|---|---|---|
| Install requirements | SUCCESS | 20.287s |
| Run integration tests | SUCCESS | 29.59s |
Details
starting build "7a97a936-47ce-4dd8-93d4-3a01b364f9d7"
FETCHSOURCE
From https://github.com/googleapis/mcp-toolbox-sdk-python
* branch c99f6c1bb12e28384c84fbf25005ce48d4c6a54b -> FETCH_HEAD
HEAD is now at c99f6c1 chore: delint
GitCommit:
c99f6c1bb12e28384c84fbf25005ce48d4c6a54b
BUILD
Starting Step #0 - "Install requirements"
Step #0 - "Install requirements": Pulling image: python:3.12
Step #0 - "Install requirements": 3.12: Pulling from library/python
Step #0 - "Install requirements": ef1b08ddd59d: Already exists
Step #0 - "Install requirements": 8b365b6ff7b7: Already exists
Step #0 - "Install requirements": 2ca884014342: Already exists
Step #0 - "Install requirements": 442cca122a8b: Already exists
Step #0 - "Install requirements": 71eb69eeaf01: Pulling fs layer
Step #0 - "Install requirements": d57bbc53353e: Pulling fs layer
Step #0 - "Install requirements": d04536ac5ef0: Pulling fs layer
Step #0 - "Install requirements": d04536ac5ef0: Verifying Checksum
Step #0 - "Install requirements": d04536ac5ef0: Download complete
Step #0 - "Install requirements": 71eb69eeaf01: Verifying Checksum
Step #0 - "Install requirements": 71eb69eeaf01: Download complete
Step #0 - "Install requirements": d57bbc53353e: Verifying Checksum
Step #0 - "Install requirements": d57bbc53353e: Download complete
Step #0 - "Install requirements": 71eb69eeaf01: Pull complete
Step #0 - "Install requirements": d57bbc53353e: Pull complete
Step #0 - "Install requirements": d04536ac5ef0: Pull complete
Step #0 - "Install requirements": Digest: sha256:ea7b35cdb10b8a1381848aeb90a434997da25649c86d842d19fe6154c535cd11
Step #0 - "Install requirements": Status: Downloaded newer image for python:3.12
Step #0 - "Install requirements": docker.io/library/python:3.12
Step #0 - "Install requirements": Collecting uv
Step #0 - "Install requirements": Downloading uv-0.11.23-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)
Step #0 - "Install requirements": Downloading uv-0.11.23-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.4 MB)
Step #0 - "Install requirements": ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 25.4/25.4 MB 130.9 MB/s eta 0:00:00
Step #0 - "Install requirements": Installing collected packages: uv
Step #0 - "Install requirements": Successfully installed uv-0.11.23
Step #0 - "Install 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.
Step #0 - "Install requirements":
Step #0 - "Install requirements": [notice] A new release of pip is available: 25.0.1 -> 26.1.2
Step #0 - "Install requirements": [notice] To update, run: pip install --upgrade pip
Step #0 - "Install requirements": Using CPython 3.12.13 interpreter at: /usr/local/bin/python3
Step #0 - "Install requirements": Creating virtual environment at: /workspace/venv
Step #0 - "Install requirements": Activate with: source /workspace/venv/bin/activate
Step #0 - "Install requirements": Using Python 3.12.13 environment at: /workspace/venv
Step #0 - "Install requirements": Resolved 1 package in 258ms
Step #0 - "Install requirements": Downloading uv (24.2MiB)
Step #0 - "Install requirements": Downloaded uv
Step #0 - "Install requirements": Prepared 1 package in 527ms
Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance.
Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported.
Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning.
Step #0 - "Install requirements": Installed 1 package in 84ms
Step #0 - "Install requirements": + uv==0.11.23
Step #0 - "Install requirements": Using Python 3.12.13 environment at: /workspace/venv
Step #0 - "Install requirements": Resolved 87 packages in 2.50s
Step #0 - "Install requirements": Building toolbox-core @ file:///workspace/packages/toolbox-core
Step #0 - "Install requirements": Downloading jedi (4.7MiB)
Step #0 - "Install requirements": Downloading pydantic-core (2.0MiB)
Step #0 - "Install requirements": Downloading aiohttp (1.7MiB)
Step #0 - "Install requirements": Downloading pygments (1.2MiB)
Step #0 - "Install requirements": Downloading black (1.8MiB)
Step #0 - "Install requirements": Downloading mypy (14.4MiB)
Step #0 - "Install requirements": Downloading grpcio (6.5MiB)
Step #0 - "Install requirements": Downloading cryptography (4.5MiB)
Step #0 - "Install requirements": Downloading ast-serialize (1.2MiB)
Step #0 - "Install requirements": Built toolbox-core @ file:///workspace/packages/toolbox-core
Step #0 - "Install requirements": Downloaded ast-serialize
Step #0 - "Install requirements": Downloaded pydantic-core
Step #0 - "Install requirements": Downloaded aiohttp
Step #0 - "Install requirements": Downloaded grpcio
Step #0 - "Install requirements": Downloaded black
Step #0 - "Install requirements": Downloaded cryptography
Step #0 - "Install requirements": Downloaded pygments
Step #0 - "Install requirements": Downloaded mypy
Step #0 - "Install requirements": Downloaded jedi
Step #0 - "Install requirements": Prepared 87 packages in 2.38s
Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance.
Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported.
Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning.
Step #0 - "Install requirements": Installed 87 packages in 1.14s
Step #0 - "Install requirements": + aiohappyeyeballs==2.6.2
Step #0 - "Install requirements": + aiohttp==3.14.1
Step #0 - "Install requirements": + aioresponses==0.7.8
Step #0 - "Install requirements": + aiosignal==1.4.0
Step #0 - "Install requirements": + annotated-types==0.7.0
Step #0 - "Install requirements": + ast-serialize==0.5.0
Step #0 - "Install requirements": + asttokens==3.0.1
Step #0 - "Install requirements": + attrs==26.1.0
Step #0 - "Install requirements": + black==26.5.1
Step #0 - "Install requirements": + certifi==2026.6.17
Step #0 - "Install requirements": + cffi==2.0.0
Step #0 - "Install requirements": + charset-normalizer==3.4.7
Step #0 - "Install requirements": + click==8.4.1
Step #0 - "Install requirements": + coverage==7.14.3
Step #0 - "Install requirements": + cryptography==49.0.0
Step #0 - "Install requirements": + decorator==5.3.1
Step #0 - "Install requirements": + deprecated==1.3.1
Step #0 - "Install requirements": + executing==2.2.1
Step #0 - "Install requirements": + frozenlist==1.8.0
Step #0 - "Install requirements": + google-api-core==2.31.0
Step #0 - "Install requirements": + google-auth==2.55.0
Step #0 - "Install requirements": + google-cloud-core==2.6.0
Step #0 - "Install requirements": + google-cloud-secret-manager==2.28.0
Step #0 - "Install requirements": + google-cloud-storage==3.10.1
Step #0 - "Install requirements": + google-crc32c==1.8.0
Step #0 - "Install requirements": + google-resumable-media==2.10.0
Step #0 - "Install requirements": + googleapis-common-protos==1.75.0
Step #0 - "Install requirements": + grpc-google-iam-v1==0.14.4
Step #0 - "Install requirements": + grpcio==1.81.1
Step #0 - "Install requirements": + grpcio-status==1.81.1
Step #0 - "Install requirements": + idna==3.18
Step #0 - "Install requirements": + importlib-metadata==8.7.1
Step #0 - "Install requirements": + iniconfig==2.3.0
Step #0 - "Install requirements": + ipython==9.14.1
Step #0 - "Install requirements": + ipython-pygments-lexers==1.1.1
Step #0 - "Install requirements": + isort==8.0.1
Step #0 - "Install requirements": + jedi==0.20.0
Step #0 - "Install requirements": + librt==0.11.0
Step #0 - "Install requirements": + matplotlib-inline==0.2.2
Step #0 - "Install requirements": + multidict==6.7.1
Step #0 - "Install requirements": + mypy==2.1.0
Step #0 - "Install requirements": + mypy-extensions==1.1.0
Step #0 - "Install requirements": + opentelemetry-api==1.41.1
Step #0 - "Install requirements": + opentelemetry-exporter-otlp==1.41.1
Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-common==1.41.1
Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-grpc==1.41.1
Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-http==1.41.1
Step #0 - "Install requirements": + opentelemetry-proto==1.41.1
Step #0 - "Install requirements": + opentelemetry-sdk==1.41.1
Step #0 - "Install requirements": + opentelemetry-semantic-conventions==0.62b1
Step #0 - "Install requirements": + packaging==26.2
Step #0 - "Install requirements": + parso==0.8.7
Step #0 - "Install requirements": + pathspec==1.1.1
Step #0 - "Install requirements": + pexpect==4.9.0
Step #0 - "Install requirements": + platformdirs==4.10.0
Step #0 - "Install requirements": + pluggy==1.6.0
Step #0 - "Install requirements": + prompt-toolkit==3.0.52
Step #0 - "Install requirements": + propcache==0.5.2
Step #0 - "Install requirements": + proto-plus==1.28.0
Step #0 - "Install requirements": + protobuf==6.33.6
Step #0 - "Install requirements": + psutil==7.2.2
Step #0 - "Install requirements": + ptyprocess==0.7.0
Step #0 - "Install requirements": + pure-eval==0.2.3
Step #0 - "Install requirements": + pyasn1==0.6.3
Step #0 - "Install requirements": + pyasn1-modules==0.4.2
Step #0 - "Install requirements": + pycparser==3.0
Step #0 - "Install requirements": + pydantic==2.13.4
Step #0 - "Install requirements": + pydantic-core==2.46.4
Step #0 - "Install requirements": + pygments==2.20.0
Step #0 - "Install requirements": + pytest==9.0.3
Step #0 - "Install requirements": + pytest-aioresponses==0.3.0
Step #0 - "Install requirements": + pytest-asyncio==1.4.0
Step #0 - "Install requirements": + pytest-cov==7.1.0
Step #0 - "Install requirements": + pytest-mock==3.15.1
Step #0 - "Install requirements": + pytokens==0.4.1
Step #0 - "Install requirements": + requests==2.34.2
Step #0 - "Install requirements": + stack-data==0.6.3
Step #0 - "Install requirements": + tokenize-rt==6.2.0
Step #0 - "Install requirements": + toolbox-core==1.1.0 (from file:///workspace/packages/toolbox-core)
Step #0 - "Install requirements": + traitlets==5.15.1
Step #0 - "Install requirements": + typing-extensions==4.15.0
Step #0 - "Install requirements": + typing-inspection==0.4.2
Step #0 - "Install requirements": + urllib3==2.7.0
Step #0 - "Install requirements": + wcwidth==0.8.1
Step #0 - "Install requirements": + wrapt==2.2.2
Step #0 - "Install requirements": + yarl==1.24.2
Step #0 - "Install requirements": + zipp==4.1.0
Step #0 - "Install requirements": Using Python 3.12.13 environment at: /workspace/venv
Step #0 - "Install requirements": Resolved 26 packages in 173ms
Step #0 - "Install requirements": Downloading aiohttp (1.7MiB)
Step #0 - "Install requirements": Downloaded aiohttp
Step #0 - "Install requirements": Prepared 2 packages in 199ms
Step #0 - "Install requirements": Uninstalled 2 packages in 5ms
Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance.
Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported.
Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning.
Step #0 - "Install requirements": Installed 2 packages in 21ms
Step #0 - "Install requirements": - aiohttp==3.14.1
Step #0 - "Install requirements": + aiohttp==3.14.0
Step #0 - "Install requirements": - google-auth==2.55.0
Step #0 - "Install requirements": + google-auth==2.53.0
Finished Step #0 - "Install requirements"
Starting Step #1 - "Run integration tests"
Step #1 - "Run integration tests": Already have image (with digest): python:3.12
Step #1 - "Run integration tests": ============================= test session starts ==============================
Step #1 - "Run integration tests": platform linux -- Python 3.12.13, pytest-9.0.3, pluggy-1.6.0
Step #1 - "Run integration tests": rootdir: /workspace/packages/toolbox-core
Step #1 - "Run integration tests": configfile: pyproject.toml
Step #1 - "Run integration tests": plugins: cov-7.1.0, aioresponses-0.3.0, mock-3.15.1, asyncio-1.4.0
Step #1 - "Run integration tests": asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
Step #1 - "Run integration tests": collected 563 items
Step #1 - "Run integration tests":
Step #1 - "Run integration tests": tests/mcp_transport/test_base.py ................... [ 3%]
Step #1 - "Run integration tests": tests/mcp_transport/test_telemetry.py .................................. [ 9%]
Step #1 - "Run integration tests": ........... [ 11%]
Step #1 - "Run integration tests": tests/mcp_transport/test_v20241105.py .................................. [ 17%]
Step #1 - "Run integration tests": [ 17%]
Step #1 - "Run integration tests": tests/mcp_transport/test_v20250326.py .................................. [ 23%]
Step #1 - "Run integration tests": [ 23%]
Step #1 - "Run integration tests": tests/mcp_transport/test_v20250618.py .................................. [ 29%]
Step #1 - "Run integration tests": .... [ 30%]
Step #1 - "Run integration tests": tests/mcp_transport/test_v20251125.py .................................. [ 36%]
Step #1 - "Run integration tests": .. [ 36%]
Step #1 - "Run integration tests": tests/mcp_transport/test_v20260618.py ............ [ 38%]
Step #1 - "Run integration tests": tests/test_auth_methods.py .......... [ 40%]
Step #1 - "Run integration tests": tests/test_client.py ........................... [ 45%]
Step #1 - "Run integration tests": tests/test_e2e.py ................................... [ 51%]
Step #1 - "Run integration tests": tests/test_e2e_mcp.py .................................................. [ 60%]
Step #1 - "Run integration tests": ........................................................................ [ 73%]
Step #1 - "Run integration tests": ........... [ 75%]
Step #1 - "Run integration tests": tests/test_protocol.py ......................... [ 79%]
Step #1 - "Run integration tests": tests/test_sync_client.py ................ [ 82%]
Step #1 - "Run integration tests": tests/test_sync_e2e.py .............. [ 84%]
Step #1 - "Run integration tests": tests/test_sync_tool.py .................... [ 88%]
Step #1 - "Run integration tests": tests/test_tool.py .................................... [ 94%]
Step #1 - "Run integration tests": tests/test_utils.py ............................. [100%]
Step #1 - "Run integration tests":
Step #1 - "Run integration tests": =============================== warnings summary ===============================
Step #1 - "Run integration tests": tests/test_tool.py:547
Step #1 - "Run integration tests": /workspace/packages/toolbox-core/tests/test_tool.py:547: SyntaxWarning: invalid escape sequence '\('
Step #1 - "Run integration tests": expected_error_message = "Authentication source\(s\) \`unused-auth-service\` unused by tool \`sample_tool\`."
Step #1 - "Run integration tests":
Step #1 - "Run integration tests": tests/test_client.py: 9 warnings
Step #1 - "Run integration tests": tests/test_e2e.py: 6 warnings
Step #1 - "Run integration tests": tests/test_e2e_mcp.py: 24 warnings
Step #1 - "Run integration tests": tests/test_sync_client.py: 4 warnings
Step #1 - "Run integration tests": tests/test_sync_e2e.py: 5 warnings
Step #1 - "Run integration tests": /workspace/packages/toolbox-core/src/toolbox_core/utils.py:56: UserWarning: This connection is using HTTP. To prevent credential exposure, please ensure all communication is sent over HTTPS.
Step #1 - "Run integration tests": warnings.warn(
Step #1 - "Run integration tests":
Step #1 - "Run integration tests": tests/test_sync_client.py::TestSyncClientLifecycle::test_load_tool_raises_if_loop_or_thread_none
Step #1 - "Run integration tests": /workspace/packages/toolbox-core/tests/test_sync_client.py:342: RuntimeWarning: coroutine 'ToolboxClient.load_tool' was never awaited
Step #1 - "Run integration tests": with pytest.raises(
Step #1 - "Run integration tests": Enable tracemalloc to get traceback where the object was allocated.
Step #1 - "Run integration tests": See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
Step #1 - "Run integration tests":
Step #1 - "Run integration tests": tests/test_sync_client.py::TestSyncClientLifecycle::test_load_tool_raises_if_loop_or_thread_none
Step #1 - "Run integration tests": /workspace/packages/toolbox-core/tests/test_sync_client.py:351: RuntimeWarning: coroutine 'ToolboxClient.load_toolset' was never awaited
Step #1 - "Run integration tests": with pytest.raises(
Step #1 - "Run integration tests": Enable tracemalloc to get traceback where the object was allocated.
Step #1 - "Run integration tests": See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
Step #1 - "Run integration tests":
Step #1 - "Run integration tests": -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
Step #1 - "Run integration tests": ================================ tests coverage ================================
Step #1 - "Run integration tests": _______________ coverage: platform linux, python 3.12.13-final-0 _______________
Step #1 - "Run integration tests":
Step #1 - "Run integration tests": Name Stmts Miss Cover
Step #1 - "Run integration tests": -----------------------------------------------------------------------
Step #1 - "Run integration tests": src/toolbox_core/__init__.py 4 0 100%
Step #1 - "Run integration tests": src/toolbox_core/auth_methods.py 59 2 97%
Step #1 - "Run integration tests": src/toolbox_core/client.py 125 2 98%
Step #1 - "Run integration tests": src/toolbox_core/exceptions.py 6 0 100%
Step #1 - "Run integration tests": src/toolbox_core/itransport.py 20 5 75%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/__init__.py 6 0 100%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/telemetry.py 153 14 91%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/transport_base.py 106 3 97%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20241105/mcp.py 131 15 89%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20241105/types.py 95 1 99%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20250326/mcp.py 144 19 87%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20250326/types.py 95 1 99%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20250618/mcp.py 134 12 91%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20250618/types.py 95 1 99%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20251125/mcp.py 134 15 89%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20251125/types.py 95 1 99%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20260618/mcp.py 117 23 80%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20260618/types.py 81 3 96%
Step #1 - "Run integration tests": src/toolbox_core/protocol.py 75 0 100%
Step #1 - "Run integration tests": src/toolbox_core/sync_client.py 45 0 100%
Step #1 - "Run integration tests": src/toolbox_core/sync_tool.py 67 0 100%
Step #1 - "Run integration tests": src/toolbox_core/tool.py 119 6 95%
Step #1 - "Run integration tests": src/toolbox_core/utils.py 61 0 100%
Step #1 - "Run integration tests": src/toolbox_core/version.py 1 0 100%
Step #1 - "Run integration tests": -----------------------------------------------------------------------
Step #1 - "Run integration tests": TOTAL 1968 123 94%
Step #1 - "Run integration tests": Required test coverage of 90% reached. Total coverage: 93.75%
Step #1 - "Run integration tests": ====================== 563 passed, 51 warnings in 22.30s =======================
starting build "7a97a936-47ce-4dd8-93d4-3a01b364f9d7"
FETCHSOURCE
From https://github.com/googleapis/mcp-toolbox-sdk-python
* branch c99f6c1bb12e28384c84fbf25005ce48d4c6a54b -> FETCH_HEAD
HEAD is now at c99f6c1 chore: delint
GitCommit:
c99f6c1bb12e28384c84fbf25005ce48d4c6a54b
BUILD
Starting Step #0 - "Install requirements"
Step #0 - "Install requirements": Pulling image: python:3.12
Step #0 - "Install requirements": 3.12: Pulling from library/python
Step #0 - "Install requirements": ef1b08ddd59d: Already exists
Step #0 - "Install requirements": 8b365b6ff7b7: Already exists
Step #0 - "Install requirements": 2ca884014342: Already exists
Step #0 - "Install requirements": 442cca122a8b: Already exists
Step #0 - "Install requirements": 71eb69eeaf01: Pulling fs layer
Step #0 - "Install requirements": d57bbc53353e: Pulling fs layer
Step #0 - "Install requirements": d04536ac5ef0: Pulling fs layer
Step #0 - "Install requirements": d04536ac5ef0: Verifying Checksum
Step #0 - "Install requirements": d04536ac5ef0: Download complete
Step #0 - "Install requirements": 71eb69eeaf01: Verifying Checksum
Step #0 - "Install requirements": 71eb69eeaf01: Download complete
Step #0 - "Install requirements": d57bbc53353e: Verifying Checksum
Step #0 - "Install requirements": d57bbc53353e: Download complete
Step #0 - "Install requirements": 71eb69eeaf01: Pull complete
Step #0 - "Install requirements": d57bbc53353e: Pull complete
Step #0 - "Install requirements": d04536ac5ef0: Pull complete
Step #0 - "Install requirements": Digest: sha256:ea7b35cdb10b8a1381848aeb90a434997da25649c86d842d19fe6154c535cd11
Step #0 - "Install requirements": Status: Downloaded newer image for python:3.12
Step #0 - "Install requirements": docker.io/library/python:3.12
Step #0 - "Install requirements": Collecting uv
Step #0 - "Install requirements": Downloading uv-0.11.23-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)
Step #0 - "Install requirements": Downloading uv-0.11.23-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.4 MB)
Step #0 - "Install requirements": ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 25.4/25.4 MB 130.9 MB/s eta 0:00:00
Step #0 - "Install requirements": Installing collected packages: uv
Step #0 - "Install requirements": Successfully installed uv-0.11.23
Step #0 - "Install 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.
Step #0 - "Install requirements":
Step #0 - "Install requirements": [notice] A new release of pip is available: 25.0.1 -> 26.1.2
Step #0 - "Install requirements": [notice] To update, run: pip install --upgrade pip
Step #0 - "Install requirements": Using CPython 3.12.13 interpreter at: /usr/local/bin/python3
Step #0 - "Install requirements": Creating virtual environment at: /workspace/venv
Step #0 - "Install requirements": Activate with: source /workspace/venv/bin/activate
Step #0 - "Install requirements": Using Python 3.12.13 environment at: /workspace/venv
Step #0 - "Install requirements": Resolved 1 package in 258ms
Step #0 - "Install requirements": Downloading uv (24.2MiB)
Step #0 - "Install requirements": Downloaded uv
Step #0 - "Install requirements": Prepared 1 package in 527ms
Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance.
Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported.
Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning.
Step #0 - "Install requirements": Installed 1 package in 84ms
Step #0 - "Install requirements": + uv==0.11.23
Step #0 - "Install requirements": Using Python 3.12.13 environment at: /workspace/venv
Step #0 - "Install requirements": Resolved 87 packages in 2.50s
Step #0 - "Install requirements": Building toolbox-core @ file:///workspace/packages/toolbox-core
Step #0 - "Install requirements": Downloading jedi (4.7MiB)
Step #0 - "Install requirements": Downloading pydantic-core (2.0MiB)
Step #0 - "Install requirements": Downloading aiohttp (1.7MiB)
Step #0 - "Install requirements": Downloading pygments (1.2MiB)
Step #0 - "Install requirements": Downloading black (1.8MiB)
Step #0 - "Install requirements": Downloading mypy (14.4MiB)
Step #0 - "Install requirements": Downloading grpcio (6.5MiB)
Step #0 - "Install requirements": Downloading cryptography (4.5MiB)
Step #0 - "Install requirements": Downloading ast-serialize (1.2MiB)
Step #0 - "Install requirements": Built toolbox-core @ file:///workspace/packages/toolbox-core
Step #0 - "Install requirements": Downloaded ast-serialize
Step #0 - "Install requirements": Downloaded pydantic-core
Step #0 - "Install requirements": Downloaded aiohttp
Step #0 - "Install requirements": Downloaded grpcio
Step #0 - "Install requirements": Downloaded black
Step #0 - "Install requirements": Downloaded cryptography
Step #0 - "Install requirements": Downloaded pygments
Step #0 - "Install requirements": Downloaded mypy
Step #0 - "Install requirements": Downloaded jedi
Step #0 - "Install requirements": Prepared 87 packages in 2.38s
Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance.
Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported.
Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning.
Step #0 - "Install requirements": Installed 87 packages in 1.14s
Step #0 - "Install requirements": + aiohappyeyeballs==2.6.2
Step #0 - "Install requirements": + aiohttp==3.14.1
Step #0 - "Install requirements": + aioresponses==0.7.8
Step #0 - "Install requirements": + aiosignal==1.4.0
Step #0 - "Install requirements": + annotated-types==0.7.0
Step #0 - "Install requirements": + ast-serialize==0.5.0
Step #0 - "Install requirements": + asttokens==3.0.1
Step #0 - "Install requirements": + attrs==26.1.0
Step #0 - "Install requirements": + black==26.5.1
Step #0 - "Install requirements": + certifi==2026.6.17
Step #0 - "Install requirements": + cffi==2.0.0
Step #0 - "Install requirements": + charset-normalizer==3.4.7
Step #0 - "Install requirements": + click==8.4.1
Step #0 - "Install requirements": + coverage==7.14.3
Step #0 - "Install requirements": + cryptography==49.0.0
Step #0 - "Install requirements": + decorator==5.3.1
Step #0 - "Install requirements": + deprecated==1.3.1
Step #0 - "Install requirements": + executing==2.2.1
Step #0 - "Install requirements": + frozenlist==1.8.0
Step #0 - "Install requirements": + google-api-core==2.31.0
Step #0 - "Install requirements": + google-auth==2.55.0
Step #0 - "Install requirements": + google-cloud-core==2.6.0
Step #0 - "Install requirements": + google-cloud-secret-manager==2.28.0
Step #0 - "Install requirements": + google-cloud-storage==3.10.1
Step #0 - "Install requirements": + google-crc32c==1.8.0
Step #0 - "Install requirements": + google-resumable-media==2.10.0
Step #0 - "Install requirements": + googleapis-common-protos==1.75.0
Step #0 - "Install requirements": + grpc-google-iam-v1==0.14.4
Step #0 - "Install requirements": + grpcio==1.81.1
Step #0 - "Install requirements": + grpcio-status==1.81.1
Step #0 - "Install requirements": + idna==3.18
Step #0 - "Install requirements": + importlib-metadata==8.7.1
Step #0 - "Install requirements": + iniconfig==2.3.0
Step #0 - "Install requirements": + ipython==9.14.1
Step #0 - "Install requirements": + ipython-pygments-lexers==1.1.1
Step #0 - "Install requirements": + isort==8.0.1
Step #0 - "Install requirements": + jedi==0.20.0
Step #0 - "Install requirements": + librt==0.11.0
Step #0 - "Install requirements": + matplotlib-inline==0.2.2
Step #0 - "Install requirements": + multidict==6.7.1
Step #0 - "Install requirements": + mypy==2.1.0
Step #0 - "Install requirements": + mypy-extensions==1.1.0
Step #0 - "Install requirements": + opentelemetry-api==1.41.1
Step #0 - "Install requirements": + opentelemetry-exporter-otlp==1.41.1
Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-common==1.41.1
Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-grpc==1.41.1
Step #0 - "Install requirements": + opentelemetry-exporter-otlp-proto-http==1.41.1
Step #0 - "Install requirements": + opentelemetry-proto==1.41.1
Step #0 - "Install requirements": + opentelemetry-sdk==1.41.1
Step #0 - "Install requirements": + opentelemetry-semantic-conventions==0.62b1
Step #0 - "Install requirements": + packaging==26.2
Step #0 - "Install requirements": + parso==0.8.7
Step #0 - "Install requirements": + pathspec==1.1.1
Step #0 - "Install requirements": + pexpect==4.9.0
Step #0 - "Install requirements": + platformdirs==4.10.0
Step #0 - "Install requirements": + pluggy==1.6.0
Step #0 - "Install requirements": + prompt-toolkit==3.0.52
Step #0 - "Install requirements": + propcache==0.5.2
Step #0 - "Install requirements": + proto-plus==1.28.0
Step #0 - "Install requirements": + protobuf==6.33.6
Step #0 - "Install requirements": + psutil==7.2.2
Step #0 - "Install requirements": + ptyprocess==0.7.0
Step #0 - "Install requirements": + pure-eval==0.2.3
Step #0 - "Install requirements": + pyasn1==0.6.3
Step #0 - "Install requirements": + pyasn1-modules==0.4.2
Step #0 - "Install requirements": + pycparser==3.0
Step #0 - "Install requirements": + pydantic==2.13.4
Step #0 - "Install requirements": + pydantic-core==2.46.4
Step #0 - "Install requirements": + pygments==2.20.0
Step #0 - "Install requirements": + pytest==9.0.3
Step #0 - "Install requirements": + pytest-aioresponses==0.3.0
Step #0 - "Install requirements": + pytest-asyncio==1.4.0
Step #0 - "Install requirements": + pytest-cov==7.1.0
Step #0 - "Install requirements": + pytest-mock==3.15.1
Step #0 - "Install requirements": + pytokens==0.4.1
Step #0 - "Install requirements": + requests==2.34.2
Step #0 - "Install requirements": + stack-data==0.6.3
Step #0 - "Install requirements": + tokenize-rt==6.2.0
Step #0 - "Install requirements": + toolbox-core==1.1.0 (from file:///workspace/packages/toolbox-core)
Step #0 - "Install requirements": + traitlets==5.15.1
Step #0 - "Install requirements": + typing-extensions==4.15.0
Step #0 - "Install requirements": + typing-inspection==0.4.2
Step #0 - "Install requirements": + urllib3==2.7.0
Step #0 - "Install requirements": + wcwidth==0.8.1
Step #0 - "Install requirements": + wrapt==2.2.2
Step #0 - "Install requirements": + yarl==1.24.2
Step #0 - "Install requirements": + zipp==4.1.0
Step #0 - "Install requirements": Using Python 3.12.13 environment at: /workspace/venv
Step #0 - "Install requirements": Resolved 26 packages in 173ms
Step #0 - "Install requirements": Downloading aiohttp (1.7MiB)
Step #0 - "Install requirements": Downloaded aiohttp
Step #0 - "Install requirements": Prepared 2 packages in 199ms
Step #0 - "Install requirements": Uninstalled 2 packages in 5ms
Step #0 - "Install requirements": warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance.
Step #0 - "Install requirements": If the cache and target directories are on different filesystems, hardlinking may not be supported.
Step #0 - "Install requirements": If this is intentional, set `export UV_LINK_MODE=copy` or use `--link-mode=copy` to suppress this warning.
Step #0 - "Install requirements": Installed 2 packages in 21ms
Step #0 - "Install requirements": - aiohttp==3.14.1
Step #0 - "Install requirements": + aiohttp==3.14.0
Step #0 - "Install requirements": - google-auth==2.55.0
Step #0 - "Install requirements": + google-auth==2.53.0
Finished Step #0 - "Install requirements"
Starting Step #1 - "Run integration tests"
Step #1 - "Run integration tests": Already have image (with digest): python:3.12
Step #1 - "Run integration tests": ============================= test session starts ==============================
Step #1 - "Run integration tests": platform linux -- Python 3.12.13, pytest-9.0.3, pluggy-1.6.0
Step #1 - "Run integration tests": rootdir: /workspace/packages/toolbox-core
Step #1 - "Run integration tests": configfile: pyproject.toml
Step #1 - "Run integration tests": plugins: cov-7.1.0, aioresponses-0.3.0, mock-3.15.1, asyncio-1.4.0
Step #1 - "Run integration tests": asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
Step #1 - "Run integration tests": collected 563 items
Step #1 - "Run integration tests":
Step #1 - "Run integration tests": tests/mcp_transport/test_base.py ................... [ 3%]
Step #1 - "Run integration tests": tests/mcp_transport/test_telemetry.py .................................. [ 9%]
Step #1 - "Run integration tests": ........... [ 11%]
Step #1 - "Run integration tests": tests/mcp_transport/test_v20241105.py .................................. [ 17%]
Step #1 - "Run integration tests": [ 17%]
Step #1 - "Run integration tests": tests/mcp_transport/test_v20250326.py .................................. [ 23%]
Step #1 - "Run integration tests": [ 23%]
Step #1 - "Run integration tests": tests/mcp_transport/test_v20250618.py .................................. [ 29%]
Step #1 - "Run integration tests": .... [ 30%]
Step #1 - "Run integration tests": tests/mcp_transport/test_v20251125.py .................................. [ 36%]
Step #1 - "Run integration tests": .. [ 36%]
Step #1 - "Run integration tests": tests/mcp_transport/test_v20260618.py ............ [ 38%]
Step #1 - "Run integration tests": tests/test_auth_methods.py .......... [ 40%]
Step #1 - "Run integration tests": tests/test_client.py ........................... [ 45%]
Step #1 - "Run integration tests": tests/test_e2e.py ................................... [ 51%]
Step #1 - "Run integration tests": tests/test_e2e_mcp.py .................................................. [ 60%]
Step #1 - "Run integration tests": ........................................................................ [ 73%]
Step #1 - "Run integration tests": ........... [ 75%]
Step #1 - "Run integration tests": tests/test_protocol.py ......................... [ 79%]
Step #1 - "Run integration tests": tests/test_sync_client.py ................ [ 82%]
Step #1 - "Run integration tests": tests/test_sync_e2e.py .............. [ 84%]
Step #1 - "Run integration tests": tests/test_sync_tool.py .................... [ 88%]
Step #1 - "Run integration tests": tests/test_tool.py .................................... [ 94%]
Step #1 - "Run integration tests": tests/test_utils.py ............................. [100%]
Step #1 - "Run integration tests":
Step #1 - "Run integration tests": =============================== warnings summary ===============================
Step #1 - "Run integration tests": tests/test_tool.py:547
Step #1 - "Run integration tests": /workspace/packages/toolbox-core/tests/test_tool.py:547: SyntaxWarning: invalid escape sequence '\('
Step #1 - "Run integration tests": expected_error_message = "Authentication source\(s\) \`unused-auth-service\` unused by tool \`sample_tool\`."
Step #1 - "Run integration tests":
Step #1 - "Run integration tests": tests/test_client.py: 9 warnings
Step #1 - "Run integration tests": tests/test_e2e.py: 6 warnings
Step #1 - "Run integration tests": tests/test_e2e_mcp.py: 24 warnings
Step #1 - "Run integration tests": tests/test_sync_client.py: 4 warnings
Step #1 - "Run integration tests": tests/test_sync_e2e.py: 5 warnings
Step #1 - "Run integration tests": /workspace/packages/toolbox-core/src/toolbox_core/utils.py:56: UserWarning: This connection is using HTTP. To prevent credential exposure, please ensure all communication is sent over HTTPS.
Step #1 - "Run integration tests": warnings.warn(
Step #1 - "Run integration tests":
Step #1 - "Run integration tests": tests/test_sync_client.py::TestSyncClientLifecycle::test_load_tool_raises_if_loop_or_thread_none
Step #1 - "Run integration tests": /workspace/packages/toolbox-core/tests/test_sync_client.py:342: RuntimeWarning: coroutine 'ToolboxClient.load_tool' was never awaited
Step #1 - "Run integration tests": with pytest.raises(
Step #1 - "Run integration tests": Enable tracemalloc to get traceback where the object was allocated.
Step #1 - "Run integration tests": See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
Step #1 - "Run integration tests":
Step #1 - "Run integration tests": tests/test_sync_client.py::TestSyncClientLifecycle::test_load_tool_raises_if_loop_or_thread_none
Step #1 - "Run integration tests": /workspace/packages/toolbox-core/tests/test_sync_client.py:351: RuntimeWarning: coroutine 'ToolboxClient.load_toolset' was never awaited
Step #1 - "Run integration tests": with pytest.raises(
Step #1 - "Run integration tests": Enable tracemalloc to get traceback where the object was allocated.
Step #1 - "Run integration tests": See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
Step #1 - "Run integration tests":
Step #1 - "Run integration tests": -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
Step #1 - "Run integration tests": ================================ tests coverage ================================
Step #1 - "Run integration tests": _______________ coverage: platform linux, python 3.12.13-final-0 _______________
Step #1 - "Run integration tests":
Step #1 - "Run integration tests": Name Stmts Miss Cover
Step #1 - "Run integration tests": -----------------------------------------------------------------------
Step #1 - "Run integration tests": src/toolbox_core/__init__.py 4 0 100%
Step #1 - "Run integration tests": src/toolbox_core/auth_methods.py 59 2 97%
Step #1 - "Run integration tests": src/toolbox_core/client.py 125 2 98%
Step #1 - "Run integration tests": src/toolbox_core/exceptions.py 6 0 100%
Step #1 - "Run integration tests": src/toolbox_core/itransport.py 20 5 75%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/__init__.py 6 0 100%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/telemetry.py 153 14 91%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/transport_base.py 106 3 97%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20241105/mcp.py 131 15 89%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20241105/types.py 95 1 99%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20250326/mcp.py 144 19 87%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20250326/types.py 95 1 99%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20250618/mcp.py 134 12 91%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20250618/types.py 95 1 99%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20251125/mcp.py 134 15 89%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20251125/types.py 95 1 99%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20260618/mcp.py 117 23 80%
Step #1 - "Run integration tests": src/toolbox_core/mcp_transport/v20260618/types.py 81 3 96%
Step #1 - "Run integration tests": src/toolbox_core/protocol.py 75 0 100%
Step #1 - "Run integration tests": src/toolbox_core/sync_client.py 45 0 100%
Step #1 - "Run integration tests": src/toolbox_core/sync_tool.py 67 0 100%
Step #1 - "Run integration tests": src/toolbox_core/tool.py 119 6 95%
Step #1 - "Run integration tests": src/toolbox_core/utils.py 61 0 100%
Step #1 - "Run integration tests": src/toolbox_core/version.py 1 0 100%
Step #1 - "Run integration tests": -----------------------------------------------------------------------
Step #1 - "Run integration tests": TOTAL 1968 123 94%
Step #1 - "Run integration tests": Required test coverage of 90% reached. Total coverage: 93.75%
Step #1 - "Run integration tests": ====================== 563 passed, 51 warnings in 22.30s =======================
Finished Step #1 - "Run integration tests"
PUSH
DONE
Loading