python3.14-mcp-2.3.0
checks.x86_64-linux.pkgs-mistral-vibe
· build #10775
· raw
1bld1: building 67bz6zn3ihpzzckqc7590b6mvsmavxrz-python3.14-mcp-2.3.0.drv2Sourcing python-remove-tests-dir-hook3Sourcing python-catch-conflicts-hook.sh4Sourcing python-remove-bin-bytecode-hook.sh5Sourcing pypa-build-hook6Using pypaBuildPhase7Sourcing python-runtime-deps-check-hook8Using pythonRuntimeDepsCheckHook9Sourcing pypa-install-hook10Using pypaInstallPhase11Sourcing python-imports-check-hook.sh12Using pythonImportsCheckPhase13Sourcing python-metadata-check-hook.sh14Using pythonMetadataCheckPhase15Sourcing python-namespaces-hook16Sourcing python-catch-conflicts-hook.sh17Sourcing pytest-check-hook18Using pytestCheckPhase
unpackPhase
19unpacking source archive /nix/store/prbkdf4kv543ij4r95gk96pykmcqy7xp-source20source root is source21setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "source/uv.lock"configurePhase
22no configure script, doing nothingbuildPhase
23Executing pypaBuildPhase24Setting UV_DYNAMIC_VERSIONING_BYPASS to 2.3.025Creating a wheel...26pypa build flags: --no-isolation --outdir dist/ --wheel27* Getting build dependencies for wheel...28* Building wheel...29Successfully built mcp-2.3.0-py3-none-any.whl30Finished creating a wheel...31Finished executing pypaBuildPhasepythonRuntimeDepsCheckHook
32Executing pythonRuntimeDepsCheck33Checking runtime dependencies for mcp-2.3.0-py3-none-any.whl34Finished executing pythonRuntimeDepsCheckinstallPhase
35Executing pypaInstallPhase36Successfully installed mcp-2.3.0-py3-none-any.whl37Finished executing pypaInstallPhasepythonOutputDistPhase
38Executing pythonOutputDistPhase39Finished executing pythonOutputDistPhasefixupPhase
40shrinking RPATHs of ELF executables and libraries in /nix/store/13by18292mjycr26m0d52q4vh305jxvm-python3.14-mcp-2.3.0-dist41checking for references to /build/ in /nix/store/13by18292mjycr26m0d52q4vh305jxvm-python3.14-mcp-2.3.0-dist...42patching script interpreter paths in /nix/store/13by18292mjycr26m0d52q4vh305jxvm-python3.14-mcp-2.3.0-dist43shrinking RPATHs of ELF executables and libraries in /nix/store/3sl7fsnd707jg7z393z6lf6m36xd018p-python3.14-mcp-2.3.044checking for references to /build/ in /nix/store/3sl7fsnd707jg7z393z6lf6m36xd018p-python3.14-mcp-2.3.0...45patching script interpreter paths in /nix/store/3sl7fsnd707jg7z393z6lf6m36xd018p-python3.14-mcp-2.3.046stripping (with command strip and flags -S -p) in /nix/store/3sl7fsnd707jg7z393z6lf6m36xd018p-python3.14-mcp-2.3.0/lib /nix/store/3sl7fsnd707jg7z393z6lf6m36xd018p-python3.14-mcp-2.3.0/bin47Rewriting #!/nix/store/bya4ansy58az5133kryqp2cvrxbnz8qy-python3-3.14.10/bin/python3.14 to #!/nix/store/bya4ansy58az5133kryqp2cvrxbnz8qy-python3-3.14.1048wrapping `/nix/store/3sl7fsnd707jg7z393z6lf6m36xd018p-python3.14-mcp-2.3.0/bin/mcp'...49Executing pythonRemoveTestsDir50Finished executing pythonRemoveTestsDirinstallCheckPhase
51no Makefile or custom installCheckPhase, doing nothingpythonImportsCheckPhase
52Executing pythonImportsCheckPhase53Check whether the following modules can be imported: mcppythonMetadataCheckPhase
54Executing pythonMetadataCheckPhasepytestCheckPhase
55Executing pytestCheckPhase56pytest flags: -m pytest -k not\ \(test_client_with_stdio_parameters_launches_the_server_as_a_subprocess\)\ and\ not\ \(test_tool_call_and_notification_round_trip_over_a_stdio_subprocess\)\ and\ not\ \(test_a_tool_spawned_childs_stdout_writes_never_reach_the_wire\)\ and\ not\ \(test_notification_validation_error\)\ and\ not\ \(test_sse_security_\)\ and\ not\ \(test_streamable_http_\)\ and\ not\ \(test_streamablehttp_\)\ and\ not\ \(test_messages_are_executed_concurrently\) --numprocesses=457============================= test session starts ==============================58platform linux -- Python 3.14.10, pytest-9.1.1, pluggy-1.7.059rootdir: /build/source60configfile: pyproject.toml61plugins: anyio-4.15.1, examples-0.0.18, inline-snapshot-0.34.2, logfire-4.41.0, asyncio-1.4.1, xdist-3.8.062asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function634 workers [5913 items] 64scheduling tests via LoadScheduling6566tests/cli/test_claude.py::test_mcp_requirement_pins_release_versions 67tests/client/test_client_caching.py::test_a_second_list_tools_within_the_ttl_is_served_from_the_cache 68[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_mcp_requirement_pins_release_versions 69tests/cli/test_claude.py::test_mcp_requirement_leaves_dev_versions_unpinned 70tests/docs_src/test_media.py::test_in_memory_bytes_with_a_format_become_the_same_image_content_block 71tests/client/test_streamable_http.py::test_none_disables_the_sse_event_limit 72[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_mcp_requirement_leaves_dev_versions_unpinned 73tests/cli/test_claude.py::test_mcp_requirement_leaves_local_versions_unpinned 74[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_mcp_requirement_leaves_local_versions_unpinned 75[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_a_second_list_tools_within_the_ttl_is_served_from_the_cache 76tests/client/test_client_caching.py::test_an_expired_entry_is_refetched 77tests/cli/test_claude.py::test_mcp_requirement_falls_back_when_mcp_is_not_installed 78[gw3] [ 0%] PASSED tests/docs_src/test_media.py::test_in_memory_bytes_with_a_format_become_the_same_image_content_block 79tests/docs_src/test_media.py::test_path_file_is_read_when_the_result_is_built 80[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_an_expired_entry_is_refetched 81tests/client/test_client_caching.py::test_each_list_verb_caches_independently_under_its_own_method 82[gw3] [ 0%] PASSED tests/docs_src/test_media.py::test_path_file_is_read_when_the_result_is_built 83[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_mcp_requirement_falls_back_when_mcp_is_not_installed 84tests/cli/test_claude.py::test_generates_uv_run_command 85tests/docs_src/test_media.py::test_raw_data_without_a_format_falls_back_to_a_default_mime_type 86[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_each_list_verb_caches_independently_under_its_own_method 87tests/client/test_client_caching.py::test_read_resource_caches_per_uri 88[gw3] [ 0%] PASSED tests/docs_src/test_media.py::test_raw_data_without_a_format_falls_back_to_a_default_mime_type 89tests/docs_src/test_media.py::test_icons_are_visible_where_they_were_declared 90[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_read_resource_caches_per_uri 91[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_generates_uv_run_command 92tests/cli/test_claude.py::test_file_spec_without_object_suffix 93[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_file_spec_without_object_suffix 94tests/cli/test_claude.py::test_with_packages_sorted_and_deduplicated 95[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_with_packages_sorted_and_deduplicated 96tests/cli/test_claude.py::test_explicit_mcp_cli_kept_alongside_pinned_requirement 97tests/client/test_client_caching.py::test_cursor_continuations_neither_read_nor_write_the_cache 98[gw3] [ 0%] PASSED tests/docs_src/test_media.py::test_icons_are_visible_where_they_were_declared 99[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_explicit_mcp_cli_kept_alongside_pinned_requirement 100[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_cursor_continuations_neither_read_nor_write_the_cache 101tests/client/test_client_caching.py::test_an_expired_cursor_rejection_evicts_the_methods_entry 102tests/docs_src/test_middleware.py::test_timing_record_predicate 103tests/cli/test_claude.py::test_with_editable_adds_flag 104[gw3] [ 0%] PASSED tests/docs_src/test_middleware.py::test_timing_record_predicate 105tests/docs_src/test_middleware.py::test_middleware_observes_every_inbound_message 106[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_an_expired_cursor_rejection_evicts_the_methods_entry 107tests/client/test_client_caching.py::test_an_expired_cursor_rejection_under_bypass_does_not_evict 108[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_with_editable_adds_flag 109tests/cli/test_claude.py::test_env_vars_written 110[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_an_expired_cursor_rejection_under_bypass_does_not_evict 111tests/client/test_client_caching.py::test_a_non_cursor_error_on_a_continuation_does_not_evict 112[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_env_vars_written 113tests/cli/test_claude.py::test_existing_env_vars_merged_new_wins 114[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_existing_env_vars_merged_new_wins 115tests/cli/test_claude.py::test_existing_env_vars_preserved_without_new 116[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_a_non_cursor_error_on_a_continuation_does_not_evict 117tests/client/test_client_caching.py::test_bypass_neither_serves_nor_disturbs_a_warm_entry 118[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_existing_env_vars_preserved_without_new 119tests/cli/test_claude.py::test_other_servers_preserved 120[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_bypass_neither_serves_nor_disturbs_a_warm_entry 121[gw3] [ 0%] PASSED tests/docs_src/test_middleware.py::test_middleware_observes_every_inbound_message 122[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_other_servers_preserved 123tests/cli/test_claude.py::test_existing_config_with_a_bom_is_accepted[utf-8-sig] 124tests/client/test_client_caching.py::test_refresh_skips_the_read_and_stores_the_refetched_result 125tests/docs_src/test_middleware.py::test_the_result_passes_through_unchanged 126[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_existing_config_with_a_bom_is_accepted[utf-8-sig] 127[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_refresh_skips_the_read_and_stores_the_refetched_result 128tests/cli/test_claude.py::test_existing_config_with_a_bom_is_accepted[utf-16] 129[gw2] [ 0%] PASSED tests/client/test_streamable_http.py::test_none_disables_the_sse_event_limit 130tests/client/test_client_caching.py::test_refresh_storing_a_ttl_zero_result_purges_the_warm_entry 131[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_existing_config_with_a_bom_is_accepted[utf-16] 132tests/cli/test_claude.py::test_raises_when_config_dir_missing 133[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_raises_when_config_dir_missing 134tests/cli/test_claude.py::test_get_uv_path[/usr/local/bin/uv-/usr/local/bin/uv] 135[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_refresh_storing_a_ttl_zero_result_purges_the_warm_entry 136[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_get_uv_path[/usr/local/bin/uv-/usr/local/bin/uv] 137tests/client/test_client_caching.py::test_a_list_call_carrying_meta_is_fetched_and_replaces_the_warm_entry 138tests/client/test_streamable_http.py::test_configured_sse_limit_fails_an_oversized_resumption_event 139tests/cli/test_claude.py::test_get_uv_path[None-uv] 140[gw3] [ 0%] PASSED tests/docs_src/test_middleware.py::test_the_result_passes_through_unchanged 141[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_get_uv_path[None-uv] 142tests/cli/test_claude.py::test_windows_drive_letter_not_split[C:\\Users\\server.py-C:\\Users\\server.py] 143[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_a_list_call_carrying_meta_is_fetched_and_replaces_the_warm_entry 144tests/docs_src/test_middleware.py::test_a_notification_has_no_request_id 145tests/client/test_client_caching.py::test_a_read_resource_carrying_meta_is_fetched_and_replaces_the_warm_entry 146[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_windows_drive_letter_not_split[C:\\Users\\server.py-C:\\Users\\server.py] 147tests/cli/test_claude.py::test_windows_drive_letter_not_split[C:\\Users\\server.py:app-C:\\Users\\server.py:app] 148[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_windows_drive_letter_not_split[C:\\Users\\server.py:app-C:\\Users\\server.py:app] 149[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_a_read_resource_carrying_meta_is_fetched_and_replaces_the_warm_entry 150tests/cli/test_utils.py::test_parse_file_path_accepts_valid_specs[server.py-None] 151tests/client/test_client_caching.py::test_cache_mode_is_inert_when_caching_is_disabled 152[gw0] [ 0%] PASSED tests/cli/test_utils.py::test_parse_file_path_accepts_valid_specs[server.py-None] 153tests/cli/test_utils.py::test_parse_file_path_accepts_valid_specs[foo.py:srv_obj-srv_obj] 154[gw3] [ 0%] PASSED tests/docs_src/test_middleware.py::test_a_notification_has_no_request_id 155tests/docs_src/test_middleware.py::test_raising_before_call_next_refuses_the_message 156[gw0] [ 0%] PASSED tests/cli/test_utils.py::test_parse_file_path_accepts_valid_specs[foo.py:srv_obj-srv_obj] 157[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_cache_mode_is_inert_when_caching_is_disabled 158tests/client/test_client_caching.py::test_a_seeded_read_resource_skips_the_cache_and_ignores_cache_mode[request_state] 159[gw3] [ 0%] PASSED tests/docs_src/test_middleware.py::test_raising_before_call_next_refuses_the_message 160tests/cli/test_utils.py::test_parse_file_path_missing 161tests/docs_src/test_middleware.py::test_an_unhandled_method_raises_through_the_middleware 162[gw0] [ 0%] PASSED tests/cli/test_utils.py::test_parse_file_path_missing 163tests/cli/test_utils.py::test_parse_file_exit_on_dir 164[gw0] [ 0%] PASSED tests/cli/test_utils.py::test_parse_file_exit_on_dir 165tests/cli/test_utils.py::test_build_uv_command_pins_the_running_mcp_version 166[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_a_seeded_read_resource_skips_the_cache_and_ignores_cache_mode[request_state] 167[gw3] [ 0%] PASSED tests/docs_src/test_middleware.py::test_an_unhandled_method_raises_through_the_middleware 168tests/docs_src/test_middleware.py::test_initialize_cannot_be_replaced_only_wrapped 169[gw0] [ 0%] PASSED tests/cli/test_utils.py::test_build_uv_command_pins_the_running_mcp_version 170tests/cli/test_utils.py::test_build_uv_command_leaves_source_builds_unpinned 171[gw0] [ 0%] PASSED tests/cli/test_utils.py::test_build_uv_command_leaves_source_builds_unpinned 172[gw2] [ 0%] PASSED tests/client/test_streamable_http.py::test_configured_sse_limit_fails_an_oversized_resumption_event 173tests/cli/test_utils.py::test_build_uv_command_adds_editable_and_packages 174[gw0] [ 0%] PASSED tests/cli/test_utils.py::test_build_uv_command_adds_editable_and_packages 175tests/cli/test_utils.py::test_get_npx_unix_like 176tests/client/test_client_caching.py::test_a_seeded_read_resource_skips_the_cache_and_ignores_cache_mode[input_responses] 177[gw0] [ 0%] PASSED tests/cli/test_utils.py::test_get_npx_unix_like 178tests/cli/test_utils.py::test_get_npx_windows 179tests/client/test_streamable_http.py::test_configured_sse_limit_does_not_replay_an_oversized_reconnected_event 180[gw3] [ 0%] PASSED tests/docs_src/test_middleware.py::test_initialize_cannot_be_replaced_only_wrapped 181tests/docs_src/test_middleware.py::test_a_tool_call_over_the_cap_is_refused_while_the_earlier_calls_still_run 182[gw0] [ 0%] PASSED tests/cli/test_utils.py::test_get_npx_windows 183tests/cli/test_utils.py::test_get_npx_returns_none_when_npx_missing 184[gw0] [ 0%] PASSED tests/cli/test_utils.py::test_get_npx_returns_none_when_npx_missing 185[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_a_seeded_read_resource_skips_the_cache_and_ignores_cache_mode[input_responses] 186tests/client/test_client_caching.py::test_a_terminal_read_reached_through_driver_rounds_is_never_cached 187tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_sets_client_info 188[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_sets_client_info 189[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_configured_sse_limit_does_not_replay_an_oversized_reconnected_event 190tests/client/test_streamable_http.py::test_non_sse_reconnection_response_retries_before_failing_the_request 191tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_with_scopes 192[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_with_scopes 193tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_with_client_secret_post 194[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_with_client_secret_post 195tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_client_credentials 196[gw1] [ 1%] PASSED tests/client/test_client_caching.py::test_a_terminal_read_reached_through_driver_rounds_is_never_cached 197[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_client_credentials 198tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_client_secret_post_includes_client_id 199[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_non_sse_reconnection_response_retries_before_failing_the_request 200tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[add-add-False] 201tests/client/test_client_caching.py::test_a_refresh_that_resolves_to_input_required_purges_the_warm_entry 202[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_client_secret_post_includes_client_id 203[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[add-add-False] 204tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_without_scopes 205tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[--False] 206[gw3] [ 1%] PASSED tests/docs_src/test_middleware.py::test_a_tool_call_over_the_cap_is_refused_while_the_earlier_calls_still_run 207[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[--False] 208tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[tool with spaces-tool with spaces-False] 209tests/docs_src/test_middleware.py::test_other_requests_are_answered_with_the_cap_reached 210[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_without_scopes 211tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_init_sets_client_info 212[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_init_sets_client_info 213tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_exchange_token_client_credentials 214[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[tool with spaces-tool with spaces-False] 215tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[ add-=?base64?IGFkZA==?=-True] 216[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[ add-=?base64?IGFkZA==?=-True] 217tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[add -=?base64?YWRkIA==?=-True] 218[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_exchange_token_client_credentials 219[gw3] [ 1%] PASSED tests/docs_src/test_middleware.py::test_other_requests_are_answered_with_the_cap_reached 220tests/docs_src/test_middleware.py::test_a_refused_call_is_accepted_once_a_running_call_finishes 221[gw3] [ 1%] PASSED tests/docs_src/test_middleware.py::test_a_refused_call_is_accepted_once_a_running_call_finishes 222[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[add -=?base64?YWRkIA==?=-True] 223tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_exchange_token_without_scopes 224tests/docs_src/test_middleware.py::test_a_tool_call_that_raises_gives_its_slot_back 225[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_exchange_token_without_scopes 226tests/client/auth/extensions/test_client_credentials.py::TestSignedJWTParameters::test_create_assertion_provider 227[gw3] [ 1%] PASSED tests/docs_src/test_middleware.py::test_a_tool_call_that_raises_gives_its_slot_back 228tests/docs_src/test_middleware.py::test_a_cancelled_tool_call_gives_its_slot_back 229tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[r\xe9sum\xe9-=?base64?csOpc3Vtw6k=?=-True] 230[gw1] [ 1%] PASSED tests/client/test_client_caching.py::test_a_refresh_that_resolves_to_input_required_purges_the_warm_entry 231tests/client/test_client_caching.py::test_a_listing_served_from_a_shared_store_rebuilds_output_schemas 232[gw3] [ 1%] PASSED tests/docs_src/test_middleware.py::test_a_cancelled_tool_call_gives_its_slot_back 233tests/docs_src/test_middleware.py::test_answering_with_an_error_result_returns_it_to_the_caller_instead_of_raising 234[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[r\xe9sum\xe9-=?base64?csOpc3Vtw6k=?=-True] 235[gw3] [ 1%] PASSED tests/docs_src/test_middleware.py::test_answering_with_an_error_result_returns_it_to_the_caller_instead_of_raising 236tests/docs_src/test_middleware.py::test_calls_made_one_after_another_never_reach_the_cap 237[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestSignedJWTParameters::test_create_assertion_provider 238tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[a\r\nb-=?base64?YQ0KYg==?=-True] 239tests/client/auth/extensions/test_client_credentials.py::TestSignedJWTParameters::test_create_assertion_provider_with_additional_claims 240[gw3] [ 1%] PASSED tests/docs_src/test_middleware.py::test_calls_made_one_after_another_never_reach_the_cap 241[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestSignedJWTParameters::test_create_assertion_provider_with_additional_claims 242tests/docs_src/test_mrtr.py::test_first_call_returns_an_input_required_result 243[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[a\r\nb-=?base64?YQ0KYg==?=-True] 244tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[=?base64?Zm9v?=-=?base64?PT9iYXNlNjQ/Wm05dj89?=-True] 245tests/client/auth/extensions/test_client_credentials.py::TestStaticAssertionProvider::test_returns_static_token 246[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestStaticAssertionProvider::test_returns_static_token 247tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[secret-as-configured] 248[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_first_call_returns_an_input_required_result 249tests/docs_src/test_mrtr.py::test_the_auto_loop_drives_the_call_to_completion 250[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[secret-as-configured] 251tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[secret-root-slash] 252[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[=?base64?Zm9v?=-=?base64?PT9iYXNlNjQ/Wm05dj89?=-True] 253[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[secret-root-slash] 254[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_the_auto_loop_drives_the_call_to_completion 255tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[jwt-as-configured] 256tests/docs_src/test_mrtr.py::test_the_auto_loop_without_a_callback_raises_mcp_error 257tests/client/test_streamable_http.py::test_post_request_merges_per_message_metadata_headers 258[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[jwt-as-configured] 259tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[jwt-root-slash] 260[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_the_auto_loop_without_a_callback_raises_mcp_error 261tests/docs_src/test_mrtr.py::test_retry_with_input_responses_and_request_state_completes_the_call 262[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_post_request_merges_per_message_metadata_headers 263[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_retry_with_input_responses_and_request_state_completes_the_call 264tests/docs_src/test_mrtr.py::test_the_manual_loop_drives_the_call_to_completion 265[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[jwt-root-slash] 266tests/client/auth/extensions/test_client_credentials.py::test_provider_picks_its_configured_issuer_among_several_advertised_servers[secret] 267tests/client/test_streamable_http.py::test_pre_session_bare_404_maps_to_method_not_found 268[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_picks_its_configured_issuer_among_several_advertised_servers[secret] 269tests/client/auth/extensions/test_client_credentials.py::test_provider_picks_its_configured_issuer_among_several_advertised_servers[jwt] 270[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_the_manual_loop_drives_the_call_to_completion 271tests/docs_src/test_mrtr.py::test_the_in_memory_client_negotiates_2026_07_28 272[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_picks_its_configured_issuer_among_several_advertised_servers[jwt] 273[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_the_in_memory_client_negotiates_2026_07_28 274tests/docs_src/test_mrtr.py::test_a_pre_2026_session_has_nowhere_to_put_the_result 275tests/client/auth/extensions/test_client_credentials.py::test_constructing_without_issuer_is_deprecated[secret] 276[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_pre_session_bare_404_maps_to_method_not_found 277tests/client/test_streamable_http.py::test_initialize_post_clears_cached_pv_header_and_unstamped_posts_read_it 278[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_constructing_without_issuer_is_deprecated[secret] 279tests/client/auth/extensions/test_client_credentials.py::test_constructing_without_issuer_is_deprecated[jwt] 280[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_constructing_without_issuer_is_deprecated[jwt] 281[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_a_pre_2026_session_has_nowhere_to_put_the_result 282tests/client/auth/extensions/test_client_credentials.py::test_without_issuer_the_exchange_follows_whichever_server_was_discovered[secret] 283tests/docs_src/test_mrtr.py::test_fulfil_refuses_a_request_it_cannot_answer 284[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_fulfil_refuses_a_request_it_cannot_answer 285tests/docs_src/test_mrtr.py::test_a_prompt_returns_an_input_required_result_on_the_first_round 286[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_initialize_post_clears_cached_pv_header_and_unstamped_posts_read_it 287[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_without_issuer_the_exchange_follows_whichever_server_was_discovered[secret] 288tests/client/auth/extensions/test_client_credentials.py::test_without_issuer_the_exchange_follows_whichever_server_was_discovered[jwt] 289[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_without_issuer_the_exchange_follows_whichever_server_was_discovered[jwt] 290tests/client/auth/extensions/test_client_credentials.py::test_an_issuer_that_is_not_an_http_url_is_rejected_at_construction 291tests/client/test_streamable_http.py::test_modern_cancelled_frame_aborts_the_matching_in_flight_post 292[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_a_prompt_returns_an_input_required_result_on_the_first_round 293[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frame_aborts_the_matching_in_flight_post 294tests/client/test_streamable_http.py::test_legacy_cancelled_frame_posts_and_leaves_the_stream_open[no-version-yet] 295tests/docs_src/test_mrtr.py::test_the_prompt_auto_loop_returns_the_final_messages 296[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_an_issuer_that_is_not_an_http_url_is_rejected_at_construction 297[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_the_prompt_auto_loop_returns_the_final_messages 298tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_metadata_for_a_different_issuer[secret] 299tests/docs_src/test_mrtr.py::test_a_custom_codec_round_trips_what_it_sealed 300[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_legacy_cancelled_frame_posts_and_leaves_the_stream_open[no-version-yet] 301tests/client/test_streamable_http.py::test_legacy_cancelled_frame_posts_and_leaves_the_stream_open[2025-11-25] 302[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_legacy_cancelled_frame_posts_and_leaves_the_stream_open[2025-11-25] 303[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_a_custom_codec_round_trips_what_it_sealed 304tests/docs_src/test_mrtr.py::test_a_custom_codec_raises_invalid_request_state_for_any_bad_token 305tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[unknown-id] 306[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_metadata_for_a_different_issuer[secret] 307tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_metadata_for_a_different_issuer[jwt] 308[gw2] [ 2%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[unknown-id] 309[gw3] [ 2%] PASSED tests/docs_src/test_mrtr.py::test_a_custom_codec_raises_invalid_request_state_for_any_bad_token 310tests/docs_src/test_mrtr.py::test_a_custom_codec_rejects_every_alias_of_a_minted_token 311[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_metadata_for_a_different_issuer[jwt] 312tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_to_exchange_without_metadata_when_issuer_configured[secret] 313[gw3] [ 2%] PASSED tests/docs_src/test_mrtr.py::test_a_custom_codec_rejects_every_alias_of_a_minted_token 314tests/docs_src/test_oauth_clients.py::test_in_memory_storage_satisfies_the_token_storage_protocol 315tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[bool-must-not-alias-request-id-1] 316[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_in_memory_storage_satisfies_the_token_storage_protocol 317[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_to_exchange_without_metadata_when_issuer_configured[secret] 318tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_to_exchange_without_metadata_when_issuer_configured[jwt] 319[gw2] [ 2%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[bool-must-not-alias-request-id-1] 320tests/docs_src/test_oauth_clients.py::test_storage_round_trips_tokens_and_client_info 321[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_storage_round_trips_tokens_and_client_info 322tests/docs_src/test_oauth_clients.py::test_the_provider_is_an_httpx_auth 323[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_the_provider_is_an_httpx_auth 324tests/docs_src/test_oauth_clients.py::test_the_metadata_defaults_are_the_authorization_code_flow 325tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[string-1-must-not-match-int-1] 326[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_the_metadata_defaults_are_the_authorization_code_flow 327[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_to_exchange_without_metadata_when_issuer_configured[jwt] 328tests/client/auth/extensions/test_client_credentials.py::test_a_refused_authorization_server_is_forgotten_so_the_next_request_rediscovers[secret] 329tests/docs_src/test_oauth_clients.py::test_redirect_uris_is_required 330[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_redirect_uris_is_required 331[gw2] [ 2%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[string-1-must-not-match-int-1] 332tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[no-request-id] 333[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_a_refused_authorization_server_is_forgotten_so_the_next_request_rediscovers[secret] 334tests/client/auth/extensions/test_client_credentials.py::test_a_refused_authorization_server_is_forgotten_so_the_next_request_rediscovers[jwt] 335tests/docs_src/test_oauth_clients.py::test_the_redirect_handler_receives_the_authorization_url 336[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_the_redirect_handler_receives_the_authorization_url 337tests/docs_src/test_oauth_clients.py::test_client_credentials_provider_has_no_human_in_the_loop 338[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_client_credentials_provider_has_no_human_in_the_loop 339tests/docs_src/test_oauth_clients.py::test_client_credentials_provider_builds_its_own_metadata 340[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_client_credentials_provider_builds_its_own_metadata 341tests/docs_src/test_oauth_clients.py::test_issuer_is_an_optional_keyword_on_both_machine_to_machine_providers[ClientCredentialsOAuthProvider] 342[gw2] [ 2%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[no-request-id] 343[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_issuer_is_an_optional_keyword_on_both_machine_to_machine_providers[ClientCredentialsOAuthProvider] 344tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[no-params] 345tests/docs_src/test_oauth_clients.py::test_issuer_is_an_optional_keyword_on_both_machine_to_machine_providers[PrivateKeyJWTOAuthProvider] 346[gw2] [ 2%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[no-params] 347[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_a_refused_authorization_server_is_forgotten_so_the_next_request_rediscovers[jwt] 348tests/client/auth/extensions/test_identity_assertion.py::test_on_401_exchanges_assertion_at_configured_issuer_and_retries 349[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_issuer_is_an_optional_keyword_on_both_machine_to_machine_providers[PrivateKeyJWTOAuthProvider] 350tests/docs_src/test_oauth_clients.py::test_the_two_remaining_keyword_arguments_have_defaults 351tests/client/test_streamable_http.py::test_handler_scoped_cancelled_frames_are_translated_at_modern_too 352[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_on_401_exchanges_assertion_at_configured_issuer_and_retries 353[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_the_two_remaining_keyword_arguments_have_defaults 354tests/docs_src/test_oauth_clients.py::test_the_one_more_provider_is_private_key_jwt 355[gw2] [ 2%] PASSED tests/client/test_streamable_http.py::test_handler_scoped_cancelled_frames_are_translated_at_modern_too 356tests/client/test_streamable_http.py::test_cancel_for_a_request_sent_under_2025_still_posts_after_modern_adoption 357tests/client/auth/extensions/test_identity_assertion.py::test_resource_server_metadata_is_never_consulted 358[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_the_one_more_provider_is_private_key_jwt 359tests/docs_src/test_oauth_clients.py::test_every_oauth_error_is_an_oauth_flow_error 360[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_every_oauth_error_is_an_oauth_flow_error 361tests/docs_src/test_oauth_clients.py::test_not_everything_is_a_flow_error 362[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_resource_server_metadata_is_never_consulted 363tests/client/auth/extensions/test_identity_assertion.py::test_asm_404_at_configured_issuer_raises_before_minting_assertion 364[gw2] [ 2%] PASSED tests/client/test_streamable_http.py::test_cancel_for_a_request_sent_under_2025_still_posts_after_modern_adoption 365[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_not_everything_is_a_flow_error 366tests/client/test_streamable_http.py::test_scope_cancel_aborts_a_modern_listen_post_end_to_end 367[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_asm_404_at_configured_issuer_raises_before_minting_assertion 368tests/docs_src/test_opentelemetry.py::test_a_plain_server_is_traced_with_no_extra_code 369[gw2] [ 2%] PASSED tests/client/test_streamable_http.py::test_scope_cancel_aborts_a_modern_listen_post_end_to_end 370tests/client/test_streamable_http.py::test_a_finished_post_task_does_not_evict_a_reused_ids_new_registration 371tests/client/auth/extensions/test_identity_assertion.py::test_asm_5xx_stops_discovery_and_raises 372[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_asm_5xx_stops_discovery_and_raises 373[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_listing_served_from_a_shared_store_rebuilds_output_schemas 374tests/client/auth/extensions/test_identity_assertion.py::test_asm_with_wrong_issuer_is_rejected_before_minting_assertion 375tests/client/test_client_caching.py::test_validation_from_a_served_listing_rejects_missing_structured_content 376[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_asm_with_wrong_issuer_is_rejected_before_minting_assertion 377tests/client/auth/extensions/test_identity_assertion.py::test_asm_with_off_origin_token_endpoint_is_rejected_before_minting_assertion 378[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_asm_with_off_origin_token_endpoint_is_rejected_before_minting_assertion 379[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_validation_from_a_served_listing_rejects_missing_structured_content 380tests/client/auth/extensions/test_identity_assertion.py::test_403_insufficient_scope_unions_challenged_scope_with_configured 381tests/client/test_client_caching.py::test_a_cache_hit_listing_still_mirrors_x_mcp_headers_on_tools_call 382[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_403_insufficient_scope_unions_challenged_scope_with_configured 383tests/client/auth/extensions/test_identity_assertion.py::test_403_without_insufficient_scope_does_not_reauthorize 384[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_403_without_insufficient_scope_does_not_reauthorize 385tests/client/auth/extensions/test_identity_assertion.py::test_token_endpoint_error_surfaces_as_oauth_token_error 386[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_token_endpoint_error_surfaces_as_oauth_token_error 387[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_cache_hit_listing_still_mirrors_x_mcp_headers_on_tools_call 388tests/client/test_client_caching.py::test_a_shared_store_hit_prunes_a_header_map_the_writers_filter_dropped 389tests/client/auth/extensions/test_identity_assertion.py::test_client_secret_basic_sends_basic_header_not_body_secret 390[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_client_secret_basic_sends_basic_header_not_body_secret 391tests/client/auth/extensions/test_identity_assertion.py::test_stored_token_is_reused_without_reauthorizing 392[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_shared_store_hit_prunes_a_header_map_the_writers_filter_dropped 393tests/client/test_client_caching.py::test_a_tools_list_changed_notification_makes_the_next_list_refetch 394[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_stored_token_is_reused_without_reauthorizing 395tests/client/auth/extensions/test_identity_assertion.py::test_second_401_re_exchanges_without_refetching_asm 396[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_tools_list_changed_notification_makes_the_next_list_refetch 397[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_second_401_re_exchanges_without_refetching_asm 398tests/client/auth/extensions/test_identity_assertion.py::test_no_configured_scope_omits_scope_and_backfills_from_request 399tests/client/test_client_caching.py::test_a_resource_updated_notification_evicts_that_uris_read_entry 400[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_no_configured_scope_omits_scope_and_backfills_from_request 401tests/client/auth/extensions/test_identity_assertion.py::test_empty_client_secret_is_rejected 402[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_resource_updated_notification_evicts_that_uris_read_entry 403tests/client/test_client_caching.py::test_the_modern_in_process_path_drops_the_eviction_notification 404[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_empty_client_secret_is_rejected 405tests/client/auth/extensions/test_identity_assertion.py::test_empty_issuer_is_rejected 406[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_empty_issuer_is_rejected 407tests/client/auth/extensions/test_identity_assertion.py::test_origin_normalizes_default_ports 408[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_the_modern_in_process_path_drops_the_eviction_notification 409tests/client/test_client_caching.py::test_a_discover_result_never_enters_the_response_cache 410[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_origin_normalizes_default_ports 411tests/client/test_auth.py::TestPKCEParameters::test_pkce_generation 412[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_discover_result_never_enters_the_response_cache 413tests/client/test_client_caching.py::test_a_negative_inbound_ttl_is_served_as_zero_and_never_cached[-5] 414[gw0] [ 2%] PASSED tests/client/test_auth.py::TestPKCEParameters::test_pkce_generation 415tests/client/test_auth.py::TestPKCEParameters::test_pkce_uniqueness 416[gw0] [ 2%] PASSED tests/client/test_auth.py::TestPKCEParameters::test_pkce_uniqueness 417tests/client/test_auth.py::TestOAuthContext::test_oauth_provider_initialization 418[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_negative_inbound_ttl_is_served_as_zero_and_never_cached[-5] 419tests/client/test_client_caching.py::test_a_negative_inbound_ttl_is_served_as_zero_and_never_cached[-5.0] 420[gw0] [ 2%] PASSED tests/client/test_auth.py::TestOAuthContext::test_oauth_provider_initialization 421tests/client/test_auth.py::TestOAuthContext::test_context_url_parsing 422[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_negative_inbound_ttl_is_served_as_zero_and_never_cached[-5.0] 423tests/client/test_client_caching.py::test_a_negative_discover_ttl_still_connects_modern_in_auto_mode[-5] 424[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_a_negative_discover_ttl_still_connects_modern_in_auto_mode[-5] 425tests/client/test_client_caching.py::test_a_negative_discover_ttl_still_connects_modern_in_auto_mode[-5.0] 426[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthContext::test_context_url_parsing 427tests/client/test_auth.py::TestOAuthContext::test_token_validity_checking 428[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_a_negative_discover_ttl_still_connects_modern_in_auto_mode[-5.0] 429tests/client/test_client_caching.py::test_each_notification_evicts_exactly_its_entries_end_to_end 430[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthContext::test_token_validity_checking 431tests/client/test_auth.py::TestOAuthContext::test_clear_tokens 432[gw2] [ 3%] PASSED tests/client/test_streamable_http.py::test_a_finished_post_task_does_not_evict_a_reused_ids_new_registration 433[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthContext::test_clear_tokens 434tests/client/test_auth.py::TestOAuthFlow::test_build_protected_resource_discovery_urls 435[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFlow::test_build_protected_resource_discovery_urls 436tests/client/test_auth.py::TestOAuthFlow::test_create_oauth_metadata_request 437tests/client/test_streamable_http.py::test_a_non_resumable_sse_drop_resolves_the_request_with_an_error 438[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFlow::test_create_oauth_metadata_request 439tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_legacy_fallback_when_no_prm 440[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_legacy_fallback_when_no_prm 441tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_path_aware_when_auth_server_has_path 442[gw2] [ 3%] PASSED tests/client/test_streamable_http.py::test_a_non_resumable_sse_drop_resolves_the_request_with_an_error 443[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_path_aware_when_auth_server_has_path 444tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_root_when_auth_server_has_no_path 445[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_root_when_auth_server_has_no_path 446[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_each_notification_evicts_exactly_its_entries_end_to_end 447tests/client/test_client_caching.py::test_private_entries_never_cross_partitions_between_clients_sharing_a_store 448tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_root_when_auth_server_has_only_slash 449tests/client/test_streamable_http.py::test_a_superseded_posts_late_real_response_cannot_answer_the_successor 450[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_root_when_auth_server_has_only_slash 451tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_fallback_order 452[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_fallback_order 453tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_fallback_conditions 454[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_private_entries_never_cross_partitions_between_clients_sharing_a_store 455tests/client/test_client_caching.py::test_a_server_stamped_public_entry_does_not_cross_partitions_by_default 456[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_fallback_conditions 457[gw3] [ 3%] PASSED tests/docs_src/test_opentelemetry.py::test_a_plain_server_is_traced_with_no_extra_code 458tests/docs_src/test_opentelemetry.py::test_client_and_server_share_one_trace 459tests/client/test_auth.py::TestOAuthFallback::test_handle_metadata_response_success 460[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_handle_metadata_response_success 461[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_a_server_stamped_public_entry_does_not_cross_partitions_by_default 462tests/client/test_auth.py::TestOAuthFallback::test_prioritize_www_auth_scope_over_prm 463tests/client/test_client_caching.py::test_share_public_serves_a_server_stamped_public_entry_across_partitions 464[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_prioritize_www_auth_scope_over_prm 465tests/client/test_auth.py::TestOAuthFallback::test_prioritize_prm_scopes_when_no_www_auth_scope 466[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_prioritize_prm_scopes_when_no_www_auth_scope 467[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_share_public_serves_a_server_stamped_public_entry_across_partitions 468tests/client/test_client_caching.py::test_same_partition_clients_share_read_entries_through_the_store 469tests/client/test_auth.py::TestOAuthFallback::test_omit_scope_when_no_prm_scopes_or_www_auth 470[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_omit_scope_when_no_prm_scopes_or_www_auth 471tests/client/test_auth.py::TestOAuthFallback::test_token_exchange_request_authorization_code 472[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_same_partition_clients_share_read_entries_through_the_store 473tests/client/test_client_caching.py::test_mutating_returned_results_never_corrupts_the_cached_entry 474[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_token_exchange_request_authorization_code 475tests/client/test_auth.py::TestOAuthFallback::test_refresh_token_request 476[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_mutating_returned_results_never_corrupts_the_cached_entry 477[gw3] [ 3%] PASSED tests/docs_src/test_opentelemetry.py::test_client_and_server_share_one_trace 478[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_refresh_token_request 479tests/client/test_auth.py::TestOAuthFallback::test_basic_auth_token_exchange 480tests/client/test_client_caching.py::test_a_cache_hit_still_yields_to_the_event_loop 481[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_basic_auth_token_exchange 482tests/client/test_auth.py::TestOAuthFallback::test_basic_auth_refresh_token 483[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_a_cache_hit_still_yields_to_the_event_loop 484tests/client/test_client_caching.py::test_a_legacy_peer_injecting_cache_hints_caches_nothing 485[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_basic_auth_refresh_token 486tests/client/test_auth.py::TestOAuthFallback::test_none_auth_method 487[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_none_auth_method 488tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_included_with_recent_protocol_version 489tests/docs_src/test_pagination.py::test_mcpserver_never_pages 490[gw3] [ 3%] PASSED tests/docs_src/test_pagination.py::test_mcpserver_never_pages 491tests/docs_src/test_pagination.py::test_first_page_has_ten_resources_and_a_cursor 492[gw0] [ 3%] PASSED tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_included_with_recent_protocol_version 493tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_excluded_with_old_protocol_version 494[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_a_legacy_peer_injecting_cache_hints_caches_nothing 495tests/client/test_client_caching.py::test_a_verb_cancelled_mid_write_leaves_no_stale_arm_pair 496[gw0] [ 3%] PASSED tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_excluded_with_old_protocol_version 497tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_included_with_protected_resource_metadata 498[gw3] [ 3%] PASSED tests/docs_src/test_pagination.py::test_first_page_has_ten_resources_and_a_cursor 499[gw0] [ 3%] PASSED tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_included_with_protected_resource_metadata 500[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_a_verb_cancelled_mid_write_leaves_no_stale_arm_pair 501tests/client/test_client_caching.py::test_an_eviction_landing_mid_fetch_discards_that_fetchs_write 502tests/client/test_auth.py::test_auth_flow_follows_a_same_origin_redirect_of_its_own_request 503tests/docs_src/test_pagination.py::test_the_cursor_resumes_where_the_last_page_stopped 504[gw3] [ 3%] PASSED tests/docs_src/test_pagination.py::test_the_cursor_resumes_where_the_last_page_stopped 505tests/docs_src/test_pagination.py::test_the_last_page_carries_no_cursor 506[gw0] [ 3%] PASSED tests/client/test_auth.py::test_auth_flow_follows_a_same_origin_redirect_of_its_own_request 507tests/client/test_auth.py::test_auth_flow_does_not_follow_a_redirect_of_its_own_request_to_another_origin 508[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_an_eviction_landing_mid_fetch_discards_that_fetchs_write 509tests/client/test_client_caching.py::test_read_resource_bypass_neither_serves_nor_disturbs_a_warm_entry 510[gw0] [ 3%] PASSED tests/client/test_auth.py::test_auth_flow_does_not_follow_a_redirect_of_its_own_request_to_another_origin 511tests/client/test_auth.py::test_auth_flow_stops_following_a_redirecting_request_after_a_few_hops 512[gw3] [ 3%] PASSED tests/docs_src/test_pagination.py::test_the_last_page_carries_no_cursor 513[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_read_resource_bypass_neither_serves_nor_disturbs_a_warm_entry 514tests/client/test_client_caching.py::test_read_resource_refresh_refetches_and_restores 515[gw0] [ 3%] PASSED tests/client/test_auth.py::test_auth_flow_stops_following_a_redirecting_request_after_a_few_hops 516tests/docs_src/test_pagination.py::test_the_client_loop_collects_all_one_hundred_in_order 517[gw2] [ 3%] PASSED tests/client/test_streamable_http.py::test_a_superseded_posts_late_real_response_cannot_answer_the_successor 518[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_read_resource_refresh_refetches_and_restores 519tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[404-True] 520[gw0] [ 3%] PASSED tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[404-True] 521tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[307-True] 522tests/client/test_client_caching.py::test_a_closed_client_raises_on_every_cacheable_verb_instead_of_serving_the_cache 523tests/client/test_streamable_http.py::test_a_202_to_a_request_resolves_the_waiter_with_an_error 524[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_a_closed_client_raises_on_every_cacheable_verb_instead_of_serving_the_cache 525[gw2] [ 3%] PASSED tests/client/test_streamable_http.py::test_a_202_to_a_request_resolves_the_waiter_with_an_error 526tests/client/test_client_extensions.py::test_mapping_extensions_get_the_migration_error 527[gw0] [ 3%] PASSED tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[307-True] 528tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[500-False] 529[gw3] [ 3%] PASSED tests/docs_src/test_pagination.py::test_the_client_loop_collects_all_one_hundred_in_order 530tests/docs_src/test_pagination.py::test_the_client_loop_runs_once_against_a_server_that_does_not_page 531[gw1] [ 3%] PASSED tests/client/test_client_extensions.py::test_mapping_extensions_get_the_migration_error 532tests/client/test_streamable_http.py::test_exhausted_reconnection_attempts_resolve_the_request_with_an_error 533[gw0] [ 3%] PASSED tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[500-False] 534tests/client/test_client_extensions.py::test_one_extension_claiming_a_tag_twice_reads_as_one_owner 535tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-03-26-False] 536[gw0] [ 3%] PASSED tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-03-26-False] 537tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-06-18-True] 538[gw3] [ 3%] PASSED tests/docs_src/test_pagination.py::test_the_client_loop_runs_once_against_a_server_that_does_not_page 539[gw1] [ 3%] PASSED tests/client/test_client_extensions.py::test_one_extension_claiming_a_tag_twice_reads_as_one_owner 540tests/docs_src/test_pagination.py::test_an_invented_cursor_is_an_error 541tests/client/test_client_extensions.py::test_bare_extension_instance_is_rejected_with_the_fix_named 542[gw0] [ 4%] PASSED tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-06-18-True] 543[gw3] [ 4%] PASSED tests/docs_src/test_pagination.py::test_an_invented_cursor_is_an_error 544tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-11-25-True] 545[gw0] [ 4%] PASSED tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-11-25-True] 546[gw1] [ 4%] PASSED tests/client/test_client_extensions.py::test_bare_extension_instance_is_rejected_with_the_fix_named 547tests/client/test_client_extensions.py::test_invalid_per_instance_identifier_raises_the_validators_error 548tests/docs_src/test_progress.py::test_context_parameter_is_invisible_to_the_model 549tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[zzz-False] 550[gw0] [ 4%] PASSED tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[zzz-False] 551[gw3] [ 4%] PASSED tests/docs_src/test_progress.py::test_context_parameter_is_invisible_to_the_model 552[gw1] [ 4%] PASSED tests/client/test_client_extensions.py::test_invalid_per_instance_identifier_raises_the_validators_error 553tests/docs_src/test_progress.py::test_each_report_becomes_one_callback_invocation_in_order 554tests/client/test_client_extensions.py::test_duplicate_extension_identifiers_are_rejected_naming_the_identifier 555tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[9999-99-99-False] 556[gw0] [ 4%] PASSED tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[9999-99-99-False] 557tests/client/test_auth.py::test_validate_resource_rejects_mismatched_resource 558[gw3] [ 4%] PASSED tests/docs_src/test_progress.py::test_each_report_becomes_one_callback_invocation_in_order 559[gw1] [ 4%] PASSED tests/client/test_client_extensions.py::test_duplicate_extension_identifiers_are_rejected_naming_the_identifier 560tests/client/test_client_extensions.py::test_conflicting_claims_across_extensions_name_both_owners 561[gw0] [ 4%] PASSED tests/client/test_auth.py::test_validate_resource_rejects_mismatched_resource 562tests/client/test_auth.py::test_validate_resource_accepts_matching_resource 563[gw0] [ 4%] PASSED tests/client/test_auth.py::test_validate_resource_accepts_matching_resource 564tests/client/test_auth.py::test_validate_resource_custom_callback 565[gw0] [ 4%] PASSED tests/client/test_auth.py::test_validate_resource_custom_callback 566tests/client/test_auth.py::test_validate_resource_accepts_root_url_with_trailing_slash 567[gw0] [ 4%] PASSED tests/client/test_auth.py::test_validate_resource_accepts_root_url_with_trailing_slash 568tests/client/test_auth.py::test_validate_resource_accepts_server_url_with_trailing_slash 569tests/docs_src/test_progress.py::test_over_a_wire_dispatcher_callbacks_race_the_result 570[gw0] [ 4%] PASSED tests/client/test_auth.py::test_validate_resource_accepts_server_url_with_trailing_slash 571tests/client/test_auth.py::test_get_resource_url_uses_canonical_when_prm_mismatches 572[gw0] [ 4%] PASSED tests/client/test_auth.py::test_get_resource_url_uses_canonical_when_prm_mismatches 573tests/client/test_auth.py::TestRegistrationResponse::test_handle_registration_response_reads_before_accessing_text 574[gw0] [ 4%] PASSED tests/client/test_auth.py::TestRegistrationResponse::test_handle_registration_response_reads_before_accessing_text 575tests/client/test_auth.py::TestRegistrationResponse::test_registration_error_names_an_unfollowed_redirect 576[gw3] [ 4%] PASSED tests/docs_src/test_progress.py::test_over_a_wire_dispatcher_callbacks_race_the_result 577[gw1] [ 4%] PASSED tests/client/test_client_extensions.py::test_conflicting_claims_across_extensions_name_both_owners 578tests/docs_src/test_progress.py::test_without_a_callback_report_progress_is_a_no_op 579[gw0] [ 4%] PASSED tests/client/test_auth.py::TestRegistrationResponse::test_registration_error_names_an_unfollowed_redirect 580tests/client/test_auth.py::test_registration_response_with_substituted_metadata_yields_the_credentials 581[gw0] [ 4%] PASSED tests/client/test_auth.py::test_registration_response_with_substituted_metadata_yields_the_credentials 582tests/client/test_client_extensions.py::test_conflicting_notification_bindings_name_both_owners 583tests/client/test_auth.py::test_registration_response_does_not_seed_the_issuer_binding_from_the_body[string] 584[gw3] [ 4%] PASSED tests/docs_src/test_progress.py::test_without_a_callback_report_progress_is_a_no_op 585[gw0] [ 4%] PASSED tests/client/test_auth.py::test_registration_response_does_not_seed_the_issuer_binding_from_the_body[string] 586tests/client/test_auth.py::test_registration_response_does_not_seed_the_issuer_binding_from_the_body[not-a-string] 587tests/docs_src/test_progress.py::test_progress_callback_is_per_call_not_per_client 588[gw0] [ 4%] PASSED tests/client/test_auth.py::test_registration_response_does_not_seed_the_issuer_binding_from_the_body[not-a-string] 589tests/client/test_auth.py::test_a_2xx_body_that_is_not_client_information_is_an_oauth_registration_error[not-json] 590[gw3] [ 4%] PASSED tests/docs_src/test_progress.py::test_progress_callback_is_per_call_not_per_client 591tests/docs_src/test_progress.py::test_omitting_total_reaches_the_callback_as_none 592[gw2] [ 4%] PASSED tests/client/test_streamable_http.py::test_exhausted_reconnection_attempts_resolve_the_request_with_an_error 593tests/client/test_streamable_http.py::test_resolving_an_abandoned_request_after_the_reader_closed_is_contained 594[gw1] [ 4%] PASSED tests/client/test_client_extensions.py::test_conflicting_notification_bindings_name_both_owners 595[gw0] [ 4%] PASSED tests/client/test_auth.py::test_a_2xx_body_that_is_not_client_information_is_an_oauth_registration_error[not-json] 596tests/client/test_auth.py::test_a_2xx_body_that_is_not_client_information_is_an_oauth_registration_error[not-an-object] 597[gw0] [ 4%] PASSED tests/client/test_auth.py::test_a_2xx_body_that_is_not_client_information_is_an_oauth_registration_error[not-an-object] 598tests/client/test_auth.py::test_a_2xx_body_that_is_not_client_information_is_an_oauth_registration_error[not-utf8] 599[gw3] [ 4%] PASSED tests/docs_src/test_progress.py::test_omitting_total_reaches_the_callback_as_none 600[gw0] [ 4%] PASSED tests/client/test_auth.py::test_a_2xx_body_that_is_not_client_information_is_an_oauth_registration_error[not-utf8] 601tests/client/test_auth.py::test_token_exchange_reports_an_unimplemented_registered_auth_method 602tests/docs_src/test_prompts.py::test_function_becomes_the_prompt 603tests/client/test_client_extensions.py::test_declarations_are_read_exactly_once_at_construction 604[gw0] [ 4%] PASSED tests/client/test_auth.py::test_token_exchange_reports_an_unimplemented_registered_auth_method 605tests/client/test_auth.py::test_prepare_token_auth_leaves_a_private_key_jwt_client_to_its_provider 606[gw0] [ 4%] PASSED tests/client/test_auth.py::test_prepare_token_auth_leaves_a_private_key_jwt_client_to_its_provider 607tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_uses_registration_endpoint_from_metadata 608[gw3] [ 4%] PASSED tests/docs_src/test_prompts.py::test_function_becomes_the_prompt 609tests/docs_src/test_prompts.py::test_returned_string_becomes_one_user_message 610[gw2] [ 4%] PASSED tests/client/test_streamable_http.py::test_resolving_an_abandoned_request_after_the_reader_closed_is_contained 611tests/client/test_streamable_http.py::test_trailing_slash_redirect_within_origin_is_followed_by_the_transport 612[gw3] [ 4%] PASSED tests/docs_src/test_prompts.py::test_returned_string_becomes_one_user_message 613tests/docs_src/test_prompts.py::test_missing_required_argument_is_a_protocol_error 614[gw0] [ 4%] PASSED tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_uses_registration_endpoint_from_metadata 615tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_falls_back_to_default_register_endpoint_when_no_metadata 616[gw0] [ 4%] PASSED tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_falls_back_to_default_register_endpoint_when_no_metadata 617tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_falls_back_when_metadata_has_no_registration_endpoint 618[gw0] [ 4%] PASSED tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_falls_back_when_metadata_has_no_registration_endpoint 619tests/client/test_auth.py::test_registration_request_sends_application_type 620[gw0] [ 4%] PASSED tests/client/test_auth.py::test_registration_request_sends_application_type 621[gw2] [ 4%] PASSED tests/client/test_streamable_http.py::test_trailing_slash_redirect_within_origin_is_followed_by_the_transport 622tests/client/test_streamable_http.py::test_redirect_to_another_origin_fails_that_call_and_keeps_the_session 623tests/client/test_auth.py::TestAuthFlow::test_auth_flow_with_valid_tokens 624[gw0] [ 4%] PASSED tests/client/test_auth.py::TestAuthFlow::test_auth_flow_with_valid_tokens 625[gw3] [ 4%] PASSED tests/docs_src/test_prompts.py::test_missing_required_argument_is_a_protocol_error 626tests/docs_src/test_prompts.py::test_message_list_becomes_a_multi_turn_template 627tests/client/test_auth.py::TestAuthFlow::test_auth_flow_with_no_tokens 628[gw2] [ 4%] PASSED tests/client/test_streamable_http.py::test_redirect_to_another_origin_fails_that_call_and_keeps_the_session 629tests/client/test_streamable_http.py::test_redirected_notification_is_dropped_and_the_next_message_still_goes_out 630[gw0] [ 4%] PASSED tests/client/test_auth.py::TestAuthFlow::test_auth_flow_with_no_tokens 631tests/client/test_auth.py::TestAuthFlow::test_auth_flow_no_unnecessary_retry_after_oauth 632[gw2] [ 4%] PASSED tests/client/test_streamable_http.py::test_redirected_notification_is_dropped_and_the_next_message_still_goes_out 633tests/client/test_streamable_http.py::test_get_stream_gives_up_without_retrying_when_the_endpoint_redirects_elsewhere 634[gw2] [ 4%] PASSED tests/client/test_streamable_http.py::test_get_stream_gives_up_without_retrying_when_the_endpoint_redirects_elsewhere 635[gw0] [ 4%] PASSED tests/client/test_auth.py::TestAuthFlow::test_auth_flow_no_unnecessary_retry_after_oauth 636tests/client/test_auth.py::TestAuthFlow::test_token_exchange_accepts_201_status 637[gw3] [ 4%] PASSED tests/docs_src/test_prompts.py::test_message_list_becomes_a_multi_turn_template 638tests/docs_src/test_prompts.py::test_title_and_argument_descriptions 639[gw3] [ 4%] PASSED tests/docs_src/test_prompts.py::test_title_and_argument_descriptions 640tests/docs_src/test_prompts.py::test_default_value_makes_the_argument_optional 641[gw1] [ 4%] PASSED tests/client/test_client_extensions.py::test_declarations_are_read_exactly_once_at_construction 642tests/client/test_client_extensions.py::test_settings_dict_is_held_by_reference_not_copied 643tests/client/test_streamable_http.py::test_resumption_redirected_elsewhere_resolves_that_request_with_an_error 644[gw2] [ 4%] PASSED tests/client/test_streamable_http.py::test_resumption_redirected_elsewhere_resolves_that_request_with_an_error 645tests/client/test_streamable_http.py::test_https_endpoint_redirected_to_plain_http_is_explained_and_the_https_form_suggested 646[gw0] [ 4%] PASSED tests/client/test_auth.py::TestAuthFlow::test_token_exchange_accepts_201_status 647tests/client/test_auth.py::TestAuthFlow::test_403_insufficient_scope_updates_scope_from_header 648[gw3] [ 4%] PASSED tests/docs_src/test_prompts.py::test_default_value_makes_the_argument_optional 649tests/docs_src/test_protocol_versions.py::test_auto_lands_on_the_modern_version 650[gw2] [ 4%] PASSED tests/client/test_streamable_http.py::test_https_endpoint_redirected_to_plain_http_is_explained_and_the_https_form_suggested 651tests/client/test_streamable_http.py::test_unfollowed_redirect_location_is_named_without_its_query_string 652[gw1] [ 4%] PASSED tests/client/test_client_extensions.py::test_settings_dict_is_held_by_reference_not_copied 653[gw2] [ 4%] PASSED tests/client/test_streamable_http.py::test_unfollowed_redirect_location_is_named_without_its_query_string 654tests/client/test_streamable_http.py::test_https_endpoint_redirected_to_plain_http_elsewhere_never_suggests_the_http_url 655[gw0] [ 4%] PASSED tests/client/test_auth.py::TestAuthFlow::test_403_insufficient_scope_updates_scope_from_header 656tests/client/test_auth.py::test_403_step_up_preserves_scope_from_stored_token 657tests/client/test_client_extensions.py::test_no_extensions_keeps_tools_call_parsing_byte_identical[none] 658[gw3] [ 4%] PASSED tests/docs_src/test_protocol_versions.py::test_auto_lands_on_the_modern_version 659tests/docs_src/test_protocol_versions.py::test_legacy_forces_the_initialize_handshake 660[gw2] [ 5%] PASSED tests/client/test_streamable_http.py::test_https_endpoint_redirected_to_plain_http_elsewhere_never_suggests_the_http_url 661[gw0] [ 5%] PASSED tests/client/test_auth.py::test_403_step_up_preserves_scope_from_stored_token 662tests/client/test_auth.py::test_scope_step_up_discovers_the_authorization_server_before_reauthorizing 663tests/client/test_subscriptions.py::test_listen_surfaces_the_honored_filter_and_subscription_id 664[gw0] [ 5%] PASSED tests/client/test_auth.py::test_scope_step_up_discovers_the_authorization_server_before_reauthorizing 665[gw3] [ 5%] PASSED tests/docs_src/test_protocol_versions.py::test_legacy_forces_the_initialize_handshake 666[gw2] [ 5%] PASSED tests/client/test_subscriptions.py::test_listen_surfaces_the_honored_filter_and_subscription_id 667tests/client/test_auth.py::test_403_without_a_scope_challenge_is_returned_to_the_caller 668tests/docs_src/test_protocol_versions.py::test_version_pin_sends_nothing_and_knows_nothing 669tests/client/test_subscriptions.py::test_listen_delivers_all_four_typed_event_kinds 670[gw0] [ 5%] PASSED tests/client/test_auth.py::test_403_without_a_scope_challenge_is_returned_to_the_caller 671tests/client/test_auth.py::test_build_metadata[simple-url] 672[gw2] [ 5%] PASSED tests/client/test_subscriptions.py::test_listen_delivers_all_four_typed_event_kinds 673tests/client/test_subscriptions.py::test_unconsumed_duplicate_events_coalesce 674[gw3] [ 5%] PASSED tests/docs_src/test_protocol_versions.py::test_version_pin_sends_nothing_and_knows_nothing 675tests/docs_src/test_protocol_versions.py::test_handshake_era_version_is_not_a_valid_pin 676[gw3] [ 5%] PASSED tests/docs_src/test_protocol_versions.py::test_handshake_era_version_is_not_a_valid_pin 677tests/docs_src/test_protocol_versions.py::test_prior_discover_round_trips 678[gw3] [ 5%] PASSED tests/docs_src/test_protocol_versions.py::test_prior_discover_round_trips 679tests/docs_src/test_protocol_versions.py::test_discover_result_survives_json 680[gw3] [ 5%] PASSED tests/docs_src/test_protocol_versions.py::test_discover_result_survives_json 681tests/docs_src/test_protocol_versions.py::test_prior_discover_is_ignored_unless_mode_is_a_pin 682[gw3] [ 5%] PASSED tests/docs_src/test_protocol_versions.py::test_prior_discover_is_ignored_unless_mode_is_a_pin 683tests/docs_src/test_real_host.py::test_the_host_sees_exactly_what_the_decorators_registered 684[gw3] [ 5%] PASSED tests/docs_src/test_real_host.py::test_the_host_sees_exactly_what_the_decorators_registered 685tests/docs_src/test_real_host.py::test_a_tool_call_round_trips_the_way_a_host_drives_it 686[gw3] [ 5%] PASSED tests/docs_src/test_real_host.py::test_a_tool_call_round_trips_the_way_a_host_drives_it 687tests/docs_src/test_real_host.py::test_the_resource_a_host_can_attach_to_context 688[gw2] [ 5%] PASSED tests/client/test_subscriptions.py::test_unconsumed_duplicate_events_coalesce 689tests/client/test_subscriptions.py::test_graceful_server_close_ends_the_loop_cleanly 690[gw1] [ 5%] PASSED tests/client/test_client_extensions.py::test_no_extensions_keeps_tools_call_parsing_byte_identical[none] 691tests/client/test_client_extensions.py::test_no_extensions_keeps_tools_call_parsing_byte_identical[empty] 692[gw3] [ 5%] PASSED tests/docs_src/test_real_host.py::test_the_resource_a_host_can_attach_to_context 693[gw2] [ 5%] PASSED tests/client/test_subscriptions.py::test_graceful_server_close_ends_the_loop_cleanly 694tests/client/test_subscriptions.py::test_abrupt_stream_end_raises_subscription_lost 695tests/docs_src/test_resources.py::test_function_becomes_a_listed_resource 696[gw2] [ 5%] PASSED tests/client/test_subscriptions.py::test_abrupt_stream_end_raises_subscription_lost 697tests/client/test_subscriptions.py::test_listen_on_a_legacy_connection_raises_the_typed_steer 698[gw3] [ 5%] PASSED tests/docs_src/test_resources.py::test_function_becomes_a_listed_resource 699tests/docs_src/test_resources.py::test_read_returns_the_return_value_as_text 700[gw2] [ 5%] PASSED tests/client/test_subscriptions.py::test_listen_on_a_legacy_connection_raises_the_typed_steer 701tests/client/test_subscriptions.py::test_server_rejection_raises_from_enter_not_from_iteration 702[gw2] [ 5%] PASSED tests/client/test_subscriptions.py::test_server_rejection_raises_from_enter_not_from_iteration 703[gw3] [ 5%] PASSED tests/docs_src/test_resources.py::test_read_returns_the_return_value_as_text 704tests/client/test_subscriptions.py::test_immediate_result_without_ack_opens_already_closed 705[gw2] [ 5%] PASSED tests/client/test_subscriptions.py::test_immediate_result_without_ack_opens_already_closed 706tests/docs_src/test_resources.py::test_template_is_listed_separately_from_resources 707tests/client/test_subscriptions.py::test_server_sent_cancelled_for_the_listen_id_raises_subscription_lost 708[gw2] [ 5%] PASSED tests/client/test_subscriptions.py::test_server_sent_cancelled_for_the_listen_id_raises_subscription_lost 709tests/client/test_subscriptions.py::test_exiting_the_context_frees_the_server_slot 710[gw3] [ 5%] PASSED tests/docs_src/test_resources.py::test_template_is_listed_separately_from_resources 711[gw2] [ 5%] PASSED tests/client/test_subscriptions.py::test_exiting_the_context_frees_the_server_slot 712tests/client/test_subscriptions.py::test_concurrent_subscriptions_demux_independently 713[gw2] [ 5%] PASSED tests/client/test_subscriptions.py::test_concurrent_subscriptions_demux_independently 714tests/docs_src/test_resources.py::test_reading_a_template_fills_the_placeholder 715tests/client/test_subscriptions.py::test_change_notifications_still_reach_message_handler 716[gw2] [ 5%] PASSED tests/client/test_subscriptions.py::test_change_notifications_still_reach_message_handler 717tests/client/test_subscriptions.py::test_enter_times_out_when_the_ack_never_arrives 718[gw3] [ 5%] PASSED tests/docs_src/test_resources.py::test_reading_a_template_fills_the_placeholder 719tests/docs_src/test_resources.py::test_uri_params_must_match_function_params 720[gw3] [ 5%] PASSED tests/docs_src/test_resources.py::test_uri_params_must_match_function_params 721tests/docs_src/test_resources.py::test_mime_type_is_what_you_declare 722[gw2] [ 5%] PASSED tests/client/test_subscriptions.py::test_enter_times_out_when_the_ack_never_arrives 723tests/client/test_subscriptions.py::test_an_open_stream_outlives_the_session_read_timeout 724[gw3] [ 5%] PASSED tests/docs_src/test_resources.py::test_mime_type_is_what_you_declare 725tests/docs_src/test_resources.py::test_str_return_is_sent_as_is 726[gw0] [ 5%] XFAIL tests/client/test_auth.py::test_build_metadata[simple-url] 727tests/client/test_auth.py::test_build_metadata[with-trailing-slash] 728[gw3] [ 5%] PASSED tests/docs_src/test_resources.py::test_str_return_is_sent_as_is 729tests/docs_src/test_resources.py::test_dict_return_becomes_json_text 730[gw0] [ 5%] PASSED tests/client/test_auth.py::test_build_metadata[with-trailing-slash] 731tests/client/test_auth.py::test_build_metadata[with-path-param] 732[gw0] [ 5%] PASSED tests/client/test_auth.py::test_build_metadata[with-path-param] 733tests/client/test_auth.py::TestLegacyServerFallback::test_legacy_server_no_prm_falls_back_to_root_oauth_discovery 734[gw0] [ 5%] PASSED tests/client/test_auth.py::TestLegacyServerFallback::test_legacy_server_no_prm_falls_back_to_root_oauth_discovery 735tests/client/test_auth.py::TestLegacyServerFallback::test_legacy_server_with_different_prm_and_root_urls 736[gw0] [ 5%] PASSED tests/client/test_auth.py::TestLegacyServerFallback::test_legacy_server_with_different_prm_and_root_urls 737tests/client/test_auth.py::TestSEP985Discovery::test_path_based_fallback_when_no_www_authenticate 738[gw0] [ 5%] PASSED tests/client/test_auth.py::TestSEP985Discovery::test_path_based_fallback_when_no_www_authenticate 739tests/client/test_auth.py::TestSEP985Discovery::test_root_based_fallback_after_path_based_404 740[gw0] [ 5%] PASSED tests/client/test_auth.py::TestSEP985Discovery::test_root_based_fallback_after_path_based_404 741tests/client/test_auth.py::TestSEP985Discovery::test_www_authenticate_takes_priority_over_well_known 742[gw0] [ 5%] PASSED tests/client/test_auth.py::TestSEP985Discovery::test_www_authenticate_takes_priority_over_well_known 743tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope="read write"-scope-read write] 744[gw3] [ 5%] PASSED tests/docs_src/test_resources.py::test_dict_return_becomes_json_text 745[gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope="read write"-scope-read write] 746tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata="https://api.example.com/.well-known/oauth-protected-resource"-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] 747[gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata="https://api.example.com/.well-known/oauth-protected-resource"-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] 748tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer error="insufficient_scope"-error-insufficient_scope] 749[gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer error="insufficient_scope"-error-insufficient_scope] 750tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope=read-scope-read] 751tests/docs_src/test_resources.py::test_bytes_return_becomes_a_blob 752[gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope=read-scope-read] 753tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata=https://api.example.com/.well-known/oauth-protected-resource-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] 754[gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata=https://api.example.com/.well-known/oauth-protected-resource-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] 755tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer error=invalid_token-error-invalid_token] 756[gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer error=invalid_token-error-invalid_token] 757tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", scope="admin:write resource:read", error="insufficient_scope"-scope-admin:write resource:read] 758[gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", scope="admin:write resource:read", error="insufficient_scope"-scope-admin:write resource:read] 759tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", resource_metadata="https://api.example.com/.well-known/oauth-protected-resource", error="insufficient_scope"-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] 760[gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", resource_metadata="https://api.example.com/.well-known/oauth-protected-resource", error="insufficient_scope"-resource_metadata-https://api.example.com/.well-known/oauth-protected-resource] 761tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", scope=basic-scope-basic] 762[gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", scope=basic-scope-basic] 763tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope="resource:read resource:write user_profile"-scope-resource:read resource:write user_profile] 764[gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope="resource:read resource:write user_profile"-scope-resource:read resource:write user_profile] 765tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata="https://api.example.com/auth/metadata?version=1"-resource_metadata-https://api.example.com/auth/metadata?version=1] 766[gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer resource_metadata="https://api.example.com/auth/metadata?version=1"-resource_metadata-https://api.example.com/auth/metadata?version=1] 767tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[None-scope-no WWW-Authenticate header] 768[gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[None-scope-no WWW-Authenticate header] 769tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[-scope-empty WWW-Authenticate header] 770[gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[-scope-empty WWW-Authenticate header] 771tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer realm="api", error="insufficient_scope"-scope-no scope parameter] 772[gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer realm="api", error="insufficient_scope"-scope-no scope parameter] 773tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer realm="api", scope="read write"-resource_metadata-no resource_metadata parameter] 774[gw0] [ 5%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer realm="api", scope="read write"-resource_metadata-no resource_metadata parameter] 775tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer scope=-scope-malformed scope parameter] 776[gw2] [ 5%] PASSED tests/client/test_subscriptions.py::test_an_open_stream_outlives_the_session_read_timeout 777tests/client/test_subscriptions.py::test_a_duplicate_ack_does_not_overwrite_the_honored_filter 778[gw0] [ 6%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer scope=-scope-malformed scope parameter] 779tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer resource_metadata=-resource_metadata-malformed resource_metadata parameter] 780[gw0] [ 6%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer resource_metadata=-resource_metadata-malformed resource_metadata parameter] 781tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/client-True] 782[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/client-True] 783tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/client-metadata.json-True] 784[gw3] [ 6%] PASSED tests/docs_src/test_resources.py::test_bytes_return_becomes_a_blob 785[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/client-metadata.json-True] 786tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/path/to/client-True] 787[gw1] [ 6%] PASSED tests/client/test_client_extensions.py::test_no_extensions_keeps_tools_call_parsing_byte_identical[empty] 788[gw2] [ 6%] PASSED tests/client/test_subscriptions.py::test_a_duplicate_ack_does_not_overwrite_the_honored_filter 789[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/path/to/client-True] 790tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com:8443/client-True] 791tests/client/test_subscriptions.py::test_a_non_event_frame_with_the_subscription_id_is_teed_not_delivered 792[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com:8443/client-True] 793tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[http://example.com/client-False] 794[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[http://example.com/client-False] 795tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com-False] 796[gw2] [ 6%] PASSED tests/client/test_subscriptions.py::test_a_non_event_frame_with_the_subscription_id_is_teed_not_delivered 797[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com-False] 798tests/client/test_subscriptions.py::test_session_teardown_unblocks_a_sibling_consumer_with_subscription_lost 799tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/-False] 800[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/-False] 801tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[None-False] 802[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[None-False] 803[gw2] [ 6%] PASSED tests/client/test_subscriptions.py::test_session_teardown_unblocks_a_sibling_consumer_with_subscription_lost 804tests/client/test_subscriptions.py::test_server_cancel_before_the_ack_raises_subscription_lost_from_enter 805tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[-False] 806[gw2] [ 6%] PASSED tests/client/test_subscriptions.py::test_server_cancel_before_the_ack_raises_subscription_lost_from_enter 807tests/client/test_subscriptions.py::test_listen_on_an_exited_session_raises_and_leaks_no_route 808[gw2] [ 6%] PASSED tests/client/test_subscriptions.py::test_listen_on_an_exited_session_raises_and_leaks_no_route 809tests/client/test_subscriptions.py::test_listen_on_a_never_entered_session_raises_runtime_error 810[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[-False] 811tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[http://[::1/foo/-False] 812[gw2] [ 6%] PASSED tests/client/test_subscriptions.py::test_listen_on_a_never_entered_session_raises_runtime_error 813tests/client/test_subscriptions.py::test_a_retained_handle_after_exit_does_not_serve_stale_events 814tests/client/test_client_extensions.py::test_claimed_result_resolves_transparently_to_the_resolvers_result 815[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[http://[::1/foo/-False] 816tests/client/test_auth.py::TestCIMD::test_should_use_client_metadata_url_when_server_supports 817[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_should_use_client_metadata_url_when_server_supports 818tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_server_does_not_support 819[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_server_does_not_support 820tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_not_provided 821[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_not_provided 822tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_no_metadata 823[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_no_metadata 824tests/client/test_auth.py::TestCIMD::test_create_client_info_from_metadata_url 825[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_create_client_info_from_metadata_url 826tests/docs_src/test_run.py::test_the_run_call_is_guarded_so_importing_does_not_start_a_server 827tests/client/test_auth.py::TestCIMD::test_oauth_provider_with_valid_client_metadata_url 828[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_oauth_provider_with_valid_client_metadata_url 829tests/client/test_auth.py::TestCIMD::test_oauth_provider_with_invalid_client_metadata_url_raises_error 830[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_oauth_provider_with_invalid_client_metadata_url_raises_error 831tests/client/test_auth.py::TestCIMD::test_auth_flow_uses_cimd_when_server_supports 832[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_auth_flow_uses_cimd_when_server_supports 833tests/client/test_auth.py::TestCIMD::test_auth_flow_falls_back_to_dcr_when_no_cimd_support 834[gw0] [ 6%] PASSED tests/client/test_auth.py::TestCIMD::test_auth_flow_falls_back_to_dcr_when_no_cimd_support 835tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_added_when_as_supports_and_client_has_refresh_token 836[gw0] [ 6%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_added_when_as_supports_and_client_has_refresh_token 837tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_added_with_www_authenticate_scope 838[gw0] [ 6%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_added_with_www_authenticate_scope 839tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_as_does_not_support 840[gw0] [ 6%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_as_does_not_support 841tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_client_has_no_refresh_token_grant 842[gw0] [ 6%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_client_has_no_refresh_token_grant 843tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_duplicated_when_already_present 844[gw0] [ 6%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_duplicated_when_already_present 845tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_scopes_selected 846[gw0] [ 6%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_scopes_selected 847tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_as_scopes_supported_is_none 848[gw0] [ 6%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_as_scopes_supported_is_none 849tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_as_metadata 850[gw0] [ 6%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_as_metadata 851[gw2] [ 6%] PASSED tests/client/test_subscriptions.py::test_a_retained_handle_after_exit_does_not_serve_stale_events 852tests/client/test_subscriptions.py::test_a_stray_ack_outside_the_driver_namespace_still_reaches_message_handler 853tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_grant_types_provided 854[gw0] [ 6%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_grant_types_provided 855tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_default_client_metadata_includes_refresh_token_grant 856[gw0] [ 6%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_default_client_metadata_includes_refresh_token_grant 857tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_auth_flow_adds_offline_access_when_as_advertises 858[gw0] [ 6%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_auth_flow_adds_offline_access_when_as_advertises 859tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_auth_flow_no_offline_access_when_as_does_not_advertise 860[gw0] [ 6%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_auth_flow_no_offline_access_when_as_does_not_advertise 861tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[advertised-and-correct] 862[gw0] [ 6%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[advertised-and-correct] 863tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[not-advertised-and-omitted] 864[gw0] [ 6%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[not-advertised-and-omitted] 865tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[not-advertised-but-correct] 866[gw2] [ 6%] PASSED tests/client/test_subscriptions.py::test_a_stray_ack_outside_the_driver_namespace_still_reaches_message_handler 867[gw0] [ 6%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[not-advertised-but-correct] 868tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[trailing-slash-issuer] 869[gw0] [ 6%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[trailing-slash-issuer] 870tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[advertised-but-omitted] 871[gw0] [ 6%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[advertised-but-omitted] 872tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[wrong-issuer] 873[gw0] [ 6%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[wrong-issuer] 874tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[unexpected-when-not-advertised] 875tests/client/test_subscriptions.py::test_a_bare_string_for_resource_subscriptions_is_rejected 876[gw0] [ 6%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[unexpected-when-not-advertised] 877tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[trailing-slash-not-normalized] 878[gw0] [ 6%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[trailing-slash-not-normalized] 879tests/client/test_auth.py::test_validate_authorization_response_iss_without_metadata 880[gw0] [ 6%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_without_metadata 881tests/client/test_auth.py::test_validate_metadata_issuer_accepts_match 882[gw2] [ 6%] PASSED tests/client/test_subscriptions.py::test_a_bare_string_for_resource_subscriptions_is_rejected 883tests/client/test_subscriptions.py::test_the_route_admits_only_honored_events_and_only_while_live 884[gw0] [ 6%] PASSED tests/client/test_auth.py::test_validate_metadata_issuer_accepts_match 885tests/client/test_auth.py::test_validate_metadata_issuer_rejects_mismatch 886[gw2] [ 6%] PASSED tests/client/test_subscriptions.py::test_the_route_admits_only_honored_events_and_only_while_live 887tests/client/test_subscriptions.py::test_a_peer_flooding_distinct_uris_costs_the_subscription_not_client_memory 888[gw2] [ 6%] PASSED tests/client/test_subscriptions.py::test_a_peer_flooding_distinct_uris_costs_the_subscription_not_client_memory 889tests/client/test_subscriptions.py::test_a_cancelled_on_event_barrier_does_not_lose_the_event 890[gw2] [ 6%] PASSED tests/client/test_subscriptions.py::test_a_cancelled_on_event_barrier_does_not_lose_the_event 891[gw0] [ 6%] PASSED tests/client/test_auth.py::test_validate_metadata_issuer_rejects_mismatch 892tests/client/test_auth.py::test_union_scopes[disjoint-union-order] 893[gw0] [ 6%] PASSED tests/client/test_auth.py::test_union_scopes[disjoint-union-order] 894tests/client/test_auth.py::test_union_scopes[dedup] 895[gw0] [ 7%] PASSED tests/client/test_auth.py::test_union_scopes[dedup] 896tests/client/test_auth.py::test_union_scopes[no-previous] 897[gw0] [ 7%] PASSED tests/client/test_auth.py::test_union_scopes[no-previous] 898tests/client/test_auth.py::test_union_scopes[no-new] 899[gw0] [ 7%] PASSED tests/client/test_auth.py::test_union_scopes[no-new] 900tests/client/test_auth.py::test_union_scopes[both-empty] 901tests/client/test_subscriptions.py::test_events_outside_the_honored_filter_are_never_delivered 902[gw0] [ 7%] PASSED tests/client/test_auth.py::test_union_scopes[both-empty] 903[gw2] [ 7%] PASSED tests/client/test_subscriptions.py::test_events_outside_the_honored_filter_are_never_delivered 904tests/client/test_auth.py::test_credentials_match_issuer_same_issuer 905tests/client/test_subscriptions.py::test_the_on_event_barrier_completes_before_each_event_is_returned 906[gw0] [ 7%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_same_issuer 907tests/client/test_auth.py::test_credentials_match_issuer_different_issuer 908[gw2] [ 7%] PASSED tests/client/test_subscriptions.py::test_the_on_event_barrier_completes_before_each_event_is_returned 909tests/client/test_subscriptions.py::test_client_listen_installs_the_cache_eviction_barrier_exactly_when_a_cache_exists 910[gw0] [ 7%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_different_issuer 911tests/client/test_auth.py::test_credentials_match_issuer_treats_root_slash_as_the_same_issuer[current-has-root-slash] 912[gw0] [ 7%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_treats_root_slash_as_the_same_issuer[current-has-root-slash] 913tests/client/test_auth.py::test_credentials_match_issuer_treats_root_slash_as_the_same_issuer[recorded-has-root-slash] 914[gw2] [ 7%] PASSED tests/client/test_subscriptions.py::test_client_listen_installs_the_cache_eviction_barrier_exactly_when_a_cache_exists 915[gw0] [ 7%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_treats_root_slash_as_the_same_issuer[recorded-has-root-slash] 916tests/client/test_auth.py::test_credentials_match_issuer_root_slash_tolerance_does_not_extend_to_other_paths 917tests/client/test_subscriptions.py::test_the_cache_eviction_barrier_maps_events_and_contains_store_faults 918[gw0] [ 7%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_root_slash_tolerance_does_not_extend_to_other_paths 919tests/client/test_auth.py::test_credentials_match_issuer_no_recorded_issuer_is_left_alone 920[gw2] [ 7%] PASSED tests/client/test_subscriptions.py::test_the_cache_eviction_barrier_maps_events_and_contains_store_faults 921[gw0] [ 7%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_no_recorded_issuer_is_left_alone 922tests/client/test_auth.py::test_credentials_match_issuer_cimd_is_portable 923tests/client/test_subscriptions.py::test_a_raw_request_id_collision_fails_the_subscription_not_the_session 924[gw0] [ 7%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_cimd_is_portable 925tests/client/test_auth.py::test_credentials_match_issuer_url_shaped_dcr_id_is_not_portable 926[gw0] [ 7%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_url_shaped_dcr_id_is_not_portable 927tests/client/test_auth.py::test_handle_token_response_backfills_omitted_scope_from_request 928[gw0] [ 7%] PASSED tests/client/test_auth.py::test_handle_token_response_backfills_omitted_scope_from_request 929tests/client/test_auth.py::test_handle_token_response_raises_on_non_2xx_with_body 930[gw0] [ 7%] PASSED tests/client/test_auth.py::test_handle_token_response_raises_on_non_2xx_with_body 931tests/client/test_auth.py::test_handle_refresh_response_carries_prior_scope_and_refresh_token_when_omitted 932[gw0] [ 7%] PASSED tests/client/test_auth.py::test_handle_refresh_response_carries_prior_scope_and_refresh_token_when_omitted 933tests/client/test_auth.py::test_handle_refresh_response_adopts_rotated_refresh_token_when_returned 934[gw0] [ 7%] PASSED tests/client/test_auth.py::test_handle_refresh_response_adopts_rotated_refresh_token_when_returned 935tests/client/test_auth.py::test_issuer_binding_evaluated_against_the_server_origin_when_prm_discovery_failed 936[gw0] [ 7%] PASSED tests/client/test_auth.py::test_issuer_binding_evaluated_against_the_server_origin_when_prm_discovery_failed 937tests/client/test_auth.py::test_legacy_fallback_metadata_naming_a_different_issuer_is_refused 938[gw0] [ 7%] PASSED tests/client/test_auth.py::test_legacy_fallback_metadata_naming_a_different_issuer_is_refused 939tests/client/test_auth.py::test_legacy_fallback_without_metadata_re_registers_instead_of_presenting_credentials_bound_elsewhere[401] 940[gw0] [ 7%] PASSED tests/client/test_auth.py::test_legacy_fallback_without_metadata_re_registers_instead_of_presenting_credentials_bound_elsewhere[401] 941tests/client/test_auth.py::test_legacy_fallback_without_metadata_re_registers_instead_of_presenting_credentials_bound_elsewhere[403-insufficient-scope] 942[gw0] [ 7%] PASSED tests/client/test_auth.py::test_legacy_fallback_without_metadata_re_registers_instead_of_presenting_credentials_bound_elsewhere[403-insufficient-scope] 943tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[500] 944[gw0] [ 7%] PASSED tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[500] 945tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[503] 946[gw0] [ 7%] PASSED tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[503] 947tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[429] 948[gw0] [ 7%] PASSED tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[429] 949tests/client/test_auth.py::test_a_failing_resource_metadata_location_does_not_matter_when_another_one_answers 950[gw3] [ 7%] PASSED tests/docs_src/test_run.py::test_the_run_call_is_guarded_so_importing_does_not_start_a_server 951[gw2] [ 7%] PASSED tests/client/test_subscriptions.py::test_a_raw_request_id_collision_fails_the_subscription_not_the_session 952[gw0] [ 7%] PASSED tests/client/test_auth.py::test_a_failing_resource_metadata_location_does_not_matter_when_another_one_answers 953tests/client/test_auth.py::test_legacy_fallback_accepts_a_root_slash_issuer_for_a_server_url_in_any_spelling 954tests/docs_src/test_run.py::test_the_transport_never_changes_what_the_server_is 955[gw0] [ 7%] PASSED tests/client/test_auth.py::test_legacy_fallback_accepts_a_root_slash_issuer_for_a_server_url_in_any_spelling 956tests/client/test_auth.py::test_issuer_is_not_stamped_when_registration_falls_back_to_the_resource_origin[asm-discovery-failed] 957tests/client/test_transport_stream_cleanup.py::test_sse_client_closes_all_streams_on_connection_error 958[gw0] [ 7%] PASSED tests/client/test_auth.py::test_issuer_is_not_stamped_when_registration_falls_back_to_the_resource_origin[asm-discovery-failed] 959tests/client/test_auth.py::test_issuer_is_not_stamped_when_registration_falls_back_to_the_resource_origin[asm-metadata-without-registration-endpoint] 960[gw3] [ 7%] PASSED tests/docs_src/test_run.py::test_the_transport_never_changes_what_the_server_is 961[gw0] [ 7%] PASSED tests/client/test_auth.py::test_issuer_is_not_stamped_when_registration_falls_back_to_the_resource_origin[asm-metadata-without-registration-endpoint] 962tests/client/test_auth.py::test_issuer_is_stamped_when_same_origin_fallback_register_is_on_the_discovered_issuer 963tests/docs_src/test_run.py::test_transport_options_are_not_constructor_options 964[gw3] [ 7%] PASSED tests/docs_src/test_run.py::test_transport_options_are_not_constructor_options 965tests/docs_src/test_run.py::test_settings_are_constructor_arguments_and_land_on_settings 966[gw3] [ 7%] PASSED tests/docs_src/test_run.py::test_settings_are_constructor_arguments_and_land_on_settings 967[gw1] [ 7%] PASSED tests/client/test_client_extensions.py::test_claimed_result_resolves_transparently_to_the_resolvers_result 968tests/docs_src/test_sampling_and_roots.py::test_a_sampling_dependency_receives_the_clients_completion[legacy] 969[gw0] [ 7%] PASSED tests/client/test_auth.py::test_issuer_is_stamped_when_same_origin_fallback_register_is_on_the_discovered_issuer 970tests/client/test_caching.py::test_a_set_entry_round_trips_through_get[InMemoryResponseCacheStore] 971[gw0] [ 7%] PASSED tests/client/test_caching.py::test_a_set_entry_round_trips_through_get[InMemoryResponseCacheStore] 972tests/client/test_caching.py::test_get_misses_for_a_key_never_set[InMemoryResponseCacheStore] 973[gw0] [ 7%] PASSED tests/client/test_caching.py::test_get_misses_for_a_key_never_set[InMemoryResponseCacheStore] 974tests/client/test_caching.py::test_keys_differing_in_only_one_field_do_not_collide[InMemoryResponseCacheStore] 975[gw0] [ 7%] PASSED tests/client/test_caching.py::test_keys_differing_in_only_one_field_do_not_collide[InMemoryResponseCacheStore] 976tests/client/test_caching.py::test_swapped_params_key_and_partition_values_are_distinct_keys[InMemoryResponseCacheStore] 977[gw0] [ 7%] PASSED tests/client/test_caching.py::test_swapped_params_key_and_partition_values_are_distinct_keys[InMemoryResponseCacheStore] 978tests/client/test_caching.py::test_keys_with_field_values_that_concatenate_identically_do_not_collide[InMemoryResponseCacheStore] 979[gw0] [ 7%] PASSED tests/client/test_caching.py::test_keys_with_field_values_that_concatenate_identically_do_not_collide[InMemoryResponseCacheStore] 980tests/client/test_caching.py::test_set_replaces_the_entry_for_an_existing_key[InMemoryResponseCacheStore] 981[gw0] [ 7%] PASSED tests/client/test_caching.py::test_set_replaces_the_entry_for_an_existing_key[InMemoryResponseCacheStore] 982tests/client/test_caching.py::test_delete_removes_only_the_given_key[InMemoryResponseCacheStore] 983[gw0] [ 7%] PASSED tests/client/test_caching.py::test_delete_removes_only_the_given_key[InMemoryResponseCacheStore] 984tests/client/test_caching.py::test_delete_is_idempotent[InMemoryResponseCacheStore] 985[gw0] [ 7%] PASSED tests/client/test_caching.py::test_delete_is_idempotent[InMemoryResponseCacheStore] 986tests/client/test_caching.py::test_clear_removes_every_entry_across_methods_and_partitions[InMemoryResponseCacheStore] 987[gw0] [ 7%] PASSED tests/client/test_caching.py::test_clear_removes_every_entry_across_methods_and_partitions[InMemoryResponseCacheStore] 988tests/client/test_caching.py::test_cache_config_defaults_construct_an_unshared_zero_ttl_config 989[gw0] [ 7%] PASSED tests/client/test_caching.py::test_cache_config_defaults_construct_an_unshared_zero_ttl_config 990tests/client/test_caching.py::test_a_custom_store_without_a_partition_is_rejected_at_construction 991[gw0] [ 7%] PASSED tests/client/test_caching.py::test_a_custom_store_without_a_partition_is_rejected_at_construction 992tests/client/test_caching.py::test_a_custom_store_with_an_explicit_partition_constructs 993[gw3] [ 7%] PASSED tests/docs_src/test_sampling_and_roots.py::test_a_sampling_dependency_receives_the_clients_completion[legacy] 994tests/docs_src/test_sampling_and_roots.py::test_a_sampling_dependency_receives_the_clients_completion[auto] 995[gw0] [ 7%] PASSED tests/client/test_caching.py::test_a_custom_store_with_an_explicit_partition_constructs 996tests/client/test_caching.py::test_an_empty_target_id_is_rejected_at_construction 997[gw0] [ 7%] PASSED tests/client/test_caching.py::test_an_empty_target_id_is_rejected_at_construction 998[gw3] [ 7%] PASSED tests/docs_src/test_sampling_and_roots.py::test_a_sampling_dependency_receives_the_clients_completion[auto] 999tests/docs_src/test_sampling_and_roots.py::test_a_roots_dependency_receives_the_clients_folders[legacy] 1000tests/client/test_caching.py::test_a_negative_default_ttl_is_rejected_at_construction 1001[gw0] [ 7%] PASSED tests/client/test_caching.py::test_a_negative_default_ttl_is_rejected_at_construction 1002tests/client/test_caching.py::test_a_new_entry_past_the_cap_evicts_the_least_recently_used_one 1003[gw0] [ 7%] PASSED tests/client/test_caching.py::test_a_new_entry_past_the_cap_evicts_the_least_recently_used_one 1004tests/client/test_caching.py::test_a_get_refreshes_an_entrys_recency 1005[gw0] [ 7%] PASSED tests/client/test_caching.py::test_a_get_refreshes_an_entrys_recency 1006tests/client/test_caching.py::test_replacing_an_entry_at_the_cap_refreshes_its_recency_without_evicting 1007[gw0] [ 7%] PASSED tests/client/test_caching.py::test_replacing_an_entry_at_the_cap_refreshes_its_recency_without_evicting 1008tests/client/test_caching.py::test_a_touched_list_entry_survives_read_key_churn_through_the_cap 1009[gw0] [ 7%] PASSED tests/client/test_caching.py::test_a_touched_list_entry_survives_read_key_churn_through_the_cap 1010tests/client/test_caching.py::test_a_zero_cap_disables_eviction 1011[gw0] [ 7%] PASSED tests/client/test_caching.py::test_a_zero_cap_disables_eviction 1012tests/client/test_client_extensions.py::test_claimed_shape_routes_to_its_owning_extensions_resolver 1013[gw3] [ 7%] PASSED tests/docs_src/test_sampling_and_roots.py::test_a_roots_dependency_receives_the_clients_folders[legacy] 1014tests/client/test_caching.py::test_deleting_an_entry_frees_its_cap_slot 1015[gw0] [ 8%] PASSED tests/client/test_caching.py::test_deleting_an_entry_frees_its_cap_slot 1016tests/client/test_caching.py::test_a_negative_cap_is_rejected_at_construction 1017[gw0] [ 8%] PASSED tests/client/test_caching.py::test_a_negative_cap_is_rejected_at_construction 1018tests/client/test_caching.py::test_hints_from_a_non_modern_session_are_ignored[legacy] 1019tests/docs_src/test_sampling_and_roots.py::test_a_roots_dependency_receives_the_clients_folders[auto] 1020[gw0] [ 8%] PASSED tests/client/test_caching.py::test_hints_from_a_non_modern_session_are_ignored[legacy] 1021tests/client/test_caching.py::test_hints_from_a_non_modern_session_are_ignored[pre-negotiation] 1022[gw0] [ 8%] PASSED tests/client/test_caching.py::test_hints_from_a_non_modern_session_are_ignored[pre-negotiation] 1023tests/client/test_caching.py::test_a_legacy_session_with_a_default_ttl_caches_on_the_private_arm_only 1024[gw0] [ 8%] PASSED tests/client/test_caching.py::test_a_legacy_session_with_a_default_ttl_caches_on_the_private_arm_only 1025tests/client/test_caching.py::test_entries_never_cross_negotiated_eras_on_a_shared_store 1026[gw0] [ 8%] PASSED tests/client/test_caching.py::test_entries_never_cross_negotiated_eras_on_a_shared_store 1027tests/client/test_caching.py::test_coordinators_negotiating_the_same_era_share_entries_through_the_store 1028[gw0] [ 8%] PASSED tests/client/test_caching.py::test_coordinators_negotiating_the_same_era_share_entries_through_the_store 1029tests/client/test_caching.py::test_an_explicit_zero_ttl_is_not_overridden_by_the_default_ttl 1030[gw0] [ 8%] PASSED tests/client/test_caching.py::test_an_explicit_zero_ttl_is_not_overridden_by_the_default_ttl 1031tests/client/test_caching.py::test_a_hint_absent_modern_result_uses_the_default_ttl_privately 1032[gw0] [ 8%] PASSED tests/client/test_caching.py::test_a_hint_absent_modern_result_uses_the_default_ttl_privately 1033tests/client/test_caching.py::test_a_ttl_above_24_hours_is_clamped_to_the_cap 1034[gw0] [ 8%] PASSED tests/client/test_caching.py::test_a_ttl_above_24_hours_is_clamped_to_the_cap 1035tests/client/test_caching.py::test_a_public_result_lands_on_the_public_arm_and_clears_the_private_arm 1036[gw0] [ 8%] PASSED tests/client/test_caching.py::test_a_public_result_lands_on_the_public_arm_and_clears_the_private_arm 1037tests/client/test_caching.py::test_arm_key_layout_is_pinned_for_shared_store_compatibility 1038[gw0] [ 8%] PASSED tests/client/test_caching.py::test_arm_key_layout_is_pinned_for_shared_store_compatibility 1039tests/client/test_caching.py::test_public_entries_do_not_cross_partitions_by_default 1040[gw3] [ 8%] PASSED tests/docs_src/test_sampling_and_roots.py::test_a_roots_dependency_receives_the_clients_folders[auto] 1041tests/docs_src/test_sampling_and_roots.py::test_an_undeclared_capability_fails_before_a_request_is_sent 1042[gw0] [ 8%] PASSED tests/client/test_caching.py::test_public_entries_do_not_cross_partitions_by_default 1043tests/client/test_caching.py::test_share_public_serves_public_entries_across_partitions_but_never_private_ones 1044[gw0] [ 8%] PASSED tests/client/test_caching.py::test_share_public_serves_public_entries_across_partitions_but_never_private_ones 1045tests/client/test_caching.py::test_a_private_scoped_entry_under_the_public_arm_is_not_served 1046[gw3] [ 8%] PASSED tests/docs_src/test_sampling_and_roots.py::test_an_undeclared_capability_fails_before_a_request_is_sent 1047tests/docs_src/test_session_groups.py::test_both_servers_call_their_tool_search 1048[gw0] [ 8%] PASSED tests/client/test_caching.py::test_a_private_scoped_entry_under_the_public_arm_is_not_served 1049tests/client/test_caching.py::test_a_stale_private_entry_does_not_shadow_a_fresh_public_one 1050[gw3] [ 8%] PASSED tests/docs_src/test_session_groups.py::test_both_servers_call_their_tool_search 1051[gw0] [ 8%] PASSED tests/client/test_caching.py::test_a_stale_private_entry_does_not_shadow_a_fresh_public_one 1052tests/docs_src/test_session_groups.py::test_a_connected_server_is_aggregated_into_the_group 1053tests/client/test_caching.py::test_an_entry_without_an_expiry_is_never_fresh 1054[gw0] [ 8%] PASSED tests/client/test_caching.py::test_an_entry_without_an_expiry_is_never_fresh 1055tests/client/test_caching.py::test_write_deletes_the_opposite_arm_before_setting_its_own 1056[gw0] [ 8%] PASSED tests/client/test_caching.py::test_write_deletes_the_opposite_arm_before_setting_its_own 1057tests/client/test_caching.py::test_an_eviction_landing_during_an_async_set_is_compensated 1058[gw3] [ 8%] PASSED tests/docs_src/test_session_groups.py::test_a_connected_server_is_aggregated_into_the_group 1059tests/docs_src/test_session_groups.py::test_colliding_names_are_rejected 1060[gw0] [ 8%] PASSED tests/client/test_caching.py::test_an_eviction_landing_during_an_async_set_is_compensated 1061tests/client/test_caching.py::test_a_cancellation_landing_as_the_set_commits_still_compensates_an_eviction 1062[gw0] [ 8%] PASSED tests/client/test_caching.py::test_a_cancellation_landing_as_the_set_commits_still_compensates_an_eviction 1063tests/client/test_caching.py::test_a_cancellation_during_the_refresh_purge_still_purges_both_arms 1064[gw0] [ 8%] PASSED tests/client/test_caching.py::test_a_cancellation_during_the_refresh_purge_still_purges_both_arms 1065tests/client/test_caching.py::test_a_cancellation_during_an_eviction_still_evicts_both_arms 1066[gw0] [ 8%] PASSED tests/client/test_caching.py::test_a_cancellation_during_an_eviction_still_evicts_both_arms 1067tests/client/test_caching.py::test_evict_key_with_a_wedged_store_delete_returns_at_the_cleanup_bound 1068[gw3] [ 8%] PASSED tests/docs_src/test_session_groups.py::test_colliding_names_are_rejected 1069tests/docs_src/test_session_groups.py::test_component_name_hook_prefixes_every_name 1070[gw0] [ 8%] PASSED tests/client/test_caching.py::test_evict_key_with_a_wedged_store_delete_returns_at_the_cleanup_bound 1071tests/client/test_caching.py::test_a_refresh_purge_with_a_wedged_store_delete_returns_at_the_cleanup_bound 1072[gw3] [ 8%] PASSED tests/docs_src/test_session_groups.py::test_component_name_hook_prefixes_every_name 1073tests/docs_src/test_session_groups.py::test_the_hook_is_a_plain_function_of_name_and_server_info 1074[gw3] [ 8%] PASSED tests/docs_src/test_session_groups.py::test_the_hook_is_a_plain_function_of_name_and_server_info 1075[gw0] [ 8%] PASSED tests/client/test_caching.py::test_a_refresh_purge_with_a_wedged_store_delete_returns_at_the_cleanup_bound 1076tests/client/test_caching.py::test_an_eviction_mid_set_with_a_wedged_store_delete_returns_at_the_cleanup_bound 1077[gw0] [ 8%] PASSED tests/client/test_caching.py::test_an_eviction_mid_set_with_a_wedged_store_delete_returns_at_the_cleanup_bound 1078tests/client/test_caching.py::test_a_raising_store_get_is_a_cache_miss 1079tests/docs_src/test_session_groups.py::test_the_key_is_prefixed_but_the_wire_name_is_not 1080[gw0] [ 8%] PASSED tests/client/test_caching.py::test_a_raising_store_get_is_a_cache_miss 1081[gw1] [ 8%] PASSED tests/client/test_client_extensions.py::test_claimed_shape_routes_to_its_owning_extensions_resolver 1082tests/client/test_caching.py::test_an_entry_rehydrated_into_the_wrong_shape_is_a_warned_miss[dict-value] 1083tests/client/test_client_extensions.py::test_resolver_product_gets_the_direct_paths_output_schema_revalidation 1084[gw0] [ 8%] PASSED tests/client/test_caching.py::test_an_entry_rehydrated_into_the_wrong_shape_is_a_warned_miss[dict-value] 1085[gw2] [ 8%] PASSED tests/client/test_transport_stream_cleanup.py::test_sse_client_closes_all_streams_on_connection_error 1086[gw1] [ 8%] PASSED tests/client/test_client_extensions.py::test_resolver_product_gets_the_direct_paths_output_schema_revalidation 1087tests/client/test_transport_stream_cleanup.py::test_sse_client_closes_all_streams_on_http_error 1088tests/client/test_client_extensions.py::test_resolver_error_result_is_returned_not_raised 1089[gw1] [ 8%] PASSED tests/client/test_client_extensions.py::test_resolver_error_result_is_returned_not_raised 1090tests/client/test_client_extensions.py::test_resolver_receives_the_calls_claim_context 1091tests/client/test_caching.py::test_an_entry_rehydrated_into_the_wrong_shape_is_a_warned_miss[dict-entry] 1092[gw0] [ 8%] PASSED tests/client/test_caching.py::test_an_entry_rehydrated_into_the_wrong_shape_is_a_warned_miss[dict-entry] 1093tests/client/test_caching.py::test_a_raising_opposite_arm_delete_aborts_the_write 1094[gw0] [ 8%] PASSED tests/client/test_caching.py::test_a_raising_opposite_arm_delete_aborts_the_write 1095tests/client/test_caching.py::test_a_failed_opposite_arm_delete_degrades_the_key_to_a_full_miss 1096[gw1] [ 8%] PASSED tests/client/test_client_extensions.py::test_resolver_receives_the_calls_claim_context 1097tests/client/test_client_extensions.py::test_resolver_exception_propagates_untouched 1098[gw0] [ 8%] PASSED tests/client/test_caching.py::test_a_failed_opposite_arm_delete_degrades_the_key_to_a_full_miss 1099tests/client/test_caching.py::test_a_raising_store_set_caches_nothing_and_does_not_raise 1100[gw1] [ 8%] PASSED tests/client/test_client_extensions.py::test_resolver_exception_propagates_untouched 1101tests/client/test_client_extensions.py::test_unclaimed_result_flows_through_unchanged_with_extensions_present 1102[gw3] [ 8%] PASSED tests/docs_src/test_session_groups.py::test_the_key_is_prefixed_but_the_wire_name_is_not 1103tests/docs_src/test_session_groups.py::test_call_tool_routes_to_the_owning_server 1104[gw0] [ 8%] PASSED tests/client/test_caching.py::test_a_raising_store_set_caches_nothing_and_does_not_raise 1105tests/client/test_caching.py::test_a_failed_set_purges_the_pre_existing_own_arm_entry 1106[gw1] [ 8%] PASSED tests/client/test_client_extensions.py::test_unclaimed_result_flows_through_unchanged_with_extensions_present 1107tests/client/test_client_extensions.py::test_input_required_then_plain_result_keeps_the_auto_loop_working 1108[gw3] [ 8%] PASSED tests/docs_src/test_session_groups.py::test_call_tool_routes_to_the_owning_server 1109[gw0] [ 8%] PASSED tests/client/test_caching.py::test_a_failed_set_purges_the_pre_existing_own_arm_entry 1110tests/client/test_caching.py::test_eviction_with_a_raising_delete_still_bumps_the_generation 1111tests/docs_src/test_session_groups.py::test_disconnect_removes_every_component_of_that_server 1112[gw0] [ 8%] PASSED tests/client/test_caching.py::test_eviction_with_a_raising_delete_still_bumps_the_generation 1113tests/client/test_caching.py::test_store_failures_warn_once_per_burst 1114[gw1] [ 8%] PASSED tests/client/test_client_extensions.py::test_input_required_then_plain_result_keeps_the_auto_loop_working 1115tests/client/test_client_extensions.py::test_input_required_then_claimed_result_on_retry_resolves_transparently 1116[gw3] [ 8%] PASSED tests/docs_src/test_session_groups.py::test_disconnect_removes_every_component_of_that_server 1117tests/docs_src/test_shape.py::test_private_mcp_import_detector 1118[gw1] [ 8%] PASSED tests/client/test_client_extensions.py::test_input_required_then_claimed_result_on_retry_resolves_transparently 1119[gw0] [ 8%] PASSED tests/client/test_caching.py::test_store_failures_warn_once_per_burst 1120tests/client/test_caching.py::test_a_set_only_store_failure_warns_once_across_write_cycles 1121tests/client/test_client_extensions.py::test_notification_bindings_fold_into_the_session 1122[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_private_mcp_import_detector 1123[gw1] [ 8%] PASSED tests/client/test_client_extensions.py::test_notification_bindings_fold_into_the_session 1124tests/docs_src/test_shape.py::test_retired_name_detector 1125[gw0] [ 8%] PASSED tests/client/test_caching.py::test_a_set_only_store_failure_warns_once_across_write_cycles 1126tests/client/test_extension.py::test_claim_with_literal_discriminated_model_constructs 1127[gw1] [ 8%] PASSED tests/client/test_extension.py::test_claim_with_literal_discriminated_model_constructs 1128tests/client/test_extension.py::test_claim_accepts_modern_protocol_versions 1129[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_retired_name_detector 1130tests/client/test_caching.py::test_an_eviction_between_capture_and_write_discards_the_write 1131[gw1] [ 8%] PASSED tests/client/test_extension.py::test_claim_accepts_modern_protocol_versions 1132tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial001.py] 1133[gw0] [ 9%] PASSED tests/client/test_caching.py::test_an_eviction_between_capture_and_write_discards_the_write 1134tests/client/test_extension.py::test_claim_rejects_core_result_type_vocabulary 1135[gw1] [ 9%] PASSED tests/client/test_extension.py::test_claim_rejects_core_result_type_vocabulary 1136tests/client/test_caching.py::test_recapturing_a_registered_key_returns_its_current_generation 1137[gw0] [ 9%] PASSED tests/client/test_caching.py::test_recapturing_a_registered_key_returns_its_current_generation 1138[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial001.py] 1139tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial001_client.py] 1140tests/client/test_extension.py::test_claim_rejects_model_subclassing_core_result_types[_ClaimedCallToolResult] 1141tests/client/test_caching.py::test_the_generation_map_drops_the_oldest_key_at_its_cap 1142[gw0] [ 9%] PASSED tests/client/test_caching.py::test_the_generation_map_drops_the_oldest_key_at_its_cap 1143[gw1] [ 9%] PASSED tests/client/test_extension.py::test_claim_rejects_model_subclassing_core_result_types[_ClaimedCallToolResult] 1144tests/client/test_extension.py::test_claim_rejects_model_subclassing_core_result_types[_ClaimedInputRequiredResult] 1145[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial001_client.py] 1146[gw1] [ 9%] PASSED tests/client/test_extension.py::test_claim_rejects_model_subclassing_core_result_types[_ClaimedInputRequiredResult] 1147tests/client/test_caching.py::test_a_refresh_resolving_uncacheable_purges_the_warm_entry 1148tests/client/test_extension.py::test_claim_rejects_model_without_result_type_field 1149[gw0] [ 9%] PASSED tests/client/test_caching.py::test_a_refresh_resolving_uncacheable_purges_the_warm_entry 1150tests/client/test_caching.py::test_evict_key_on_an_unregistered_key_still_deletes_both_arms 1151tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial002.py] 1152[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial002.py] 1153[gw1] [ 9%] PASSED tests/client/test_extension.py::test_claim_rejects_model_without_result_type_field 1154tests/client/test_extension.py::test_claim_rejects_plain_str_result_type_field 1155[gw0] [ 9%] PASSED tests/client/test_caching.py::test_evict_key_on_an_unregistered_key_still_deletes_both_arms 1156tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[tools-list-changed] 1157[gw0] [ 9%] PASSED tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[tools-list-changed] 1158tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[prompts-list-changed] 1159tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial003.py] 1160[gw0] [ 9%] PASSED tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[prompts-list-changed] 1161tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[resources-list-changed] 1162[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial003.py] 1163[gw1] [ 9%] PASSED tests/client/test_extension.py::test_claim_rejects_plain_str_result_type_field 1164tests/client/test_extension.py::test_claim_rejects_mismatched_result_type_literal 1165[gw0] [ 9%] PASSED tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[resources-list-changed] 1166tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial001.py] 1167[gw1] [ 9%] PASSED tests/client/test_extension.py::test_claim_rejects_mismatched_result_type_literal 1168tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[resource-updated] 1169[gw0] [ 9%] PASSED tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[resource-updated] 1170tests/client/test_extension.py::test_claim_rejects_model_not_subclassing_result 1171tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[unrelated] 1172[gw0] [ 9%] PASSED tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[unrelated] 1173[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial001.py] 1174tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial002.py] 1175tests/client/test_client.py::test_client_is_initialized 1176[gw1] [ 9%] PASSED tests/client/test_extension.py::test_claim_rejects_model_not_subclassing_result 1177tests/client/test_extension.py::test_claim_rejects_model_aliasing_core_surface_fields 1178[gw1] [ 9%] PASSED tests/client/test_extension.py::test_claim_rejects_model_aliasing_core_surface_fields 1179tests/client/test_extension.py::test_wire_keys_for_a_bare_field_is_just_its_name 1180[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial002.py] 1181tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial003.py] 1182[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial003.py] 1183[gw0] [ 9%] PASSED tests/client/test_client.py::test_client_is_initialized 1184[gw1] [ 9%] PASSED tests/client/test_extension.py::test_wire_keys_for_a_bare_field_is_just_its_name 1185tests/client/test_client.py::test_client_exposes_negotiated_protocol_version 1186tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial004.py] 1187[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial004.py] 1188[gw0] [ 9%] PASSED tests/client/test_client.py::test_client_exposes_negotiated_protocol_version 1189tests/client/test_client.py::test_client_with_simple_server 1190tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial005.py] 1191tests/client/test_extension.py::test_claim_rejects_reserved_aliases_in_every_alias_form 1192[gw0] [ 9%] PASSED tests/client/test_client.py::test_client_with_simple_server 1193tests/client/test_client.py::test_client_send_ping 1194[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial005.py] 1195tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial006.py] 1196[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial006.py] 1197[gw1] [ 9%] PASSED tests/client/test_extension.py::test_claim_rejects_reserved_aliases_in_every_alias_form 1198tests/client/test_extension.py::test_claim_rejects_method_outside_the_closed_verb_set 1199tests/docs_src/test_shape.py::test_example_imports[docs_src/authorization/tutorial001.py] 1200[gw0] [ 9%] PASSED tests/client/test_client.py::test_client_send_ping 1201tests/client/test_client.py::test_client_list_tools 1202[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/authorization/tutorial001.py] 1203tests/docs_src/test_shape.py::test_example_imports[docs_src/authorization/tutorial002.py] 1204[gw1] [ 9%] PASSED tests/client/test_extension.py::test_claim_rejects_method_outside_the_closed_verb_set 1205[gw0] [ 9%] PASSED tests/client/test_client.py::test_client_list_tools 1206tests/client/test_client.py::test_client_call_tool 1207[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/authorization/tutorial002.py] 1208tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial001.py] 1209tests/client/test_extension.py::test_claim_rejects_empty_protocol_versions 1210[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial001.py] 1211tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial002.py] 1212[gw1] [ 9%] PASSED tests/client/test_extension.py::test_claim_rejects_empty_protocol_versions 1213[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial002.py] 1214tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial003.py] 1215[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial003.py] 1216tests/docs_src/test_shape.py::test_example_imports[docs_src/cancellation/tutorial001.py] 1217tests/client/test_extension.py::test_claim_rejects_non_modern_protocol_versions 1218[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/cancellation/tutorial001.py] 1219tests/docs_src/test_shape.py::test_example_imports[docs_src/cancellation/tutorial002.py] 1220[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/cancellation/tutorial002.py] 1221tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial001.py] 1222[gw1] [ 9%] PASSED tests/client/test_extension.py::test_claim_rejects_non_modern_protocol_versions 1223tests/client/test_extension.py::test_result_claim_is_frozen 1224[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial001.py] 1225tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial001_client.py] 1226[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial001_client.py] 1227tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial002.py] 1228[gw1] [ 9%] PASSED tests/client/test_extension.py::test_result_claim_is_frozen 1229[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial002.py] 1230tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial003.py] 1231[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial003.py] 1232tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial004.py] 1233tests/client/test_extension.py::test_notification_binding_constructs 1234[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial004.py] 1235tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial005.py] 1236[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial005.py] 1237tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial006.py] 1238[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial006.py] 1239tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial007.py] 1240[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial007.py] 1241tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial001.py] 1242[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial001.py] 1243tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial002.py] 1244[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial002.py] 1245tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial003.py] 1246[gw1] [ 9%] PASSED tests/client/test_extension.py::test_notification_binding_constructs 1247[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial003.py] 1248tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial004.py] 1249[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial004.py] 1250tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial001.py] 1251[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial001.py] 1252tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial002.py] 1253[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial002.py] 1254tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial003.py] 1255[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial003.py] 1256tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial004.py] 1257[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial004.py] 1258tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial005.py] 1259[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial005.py] 1260tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial001.py] 1261[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial001.py] 1262tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial002.py] 1263[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial002.py] 1264tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial003.py] 1265[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial003.py] 1266tests/client/test_extension.py::test_notification_binding_accepts_core_known_method 1267tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial001.py] 1268[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial001.py] 1269tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial002.py] 1270[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial002.py] 1271tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial003.py] 1272[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial003.py] 1273tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial001.py] 1274[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial001.py] 1275tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial002.py] 1276[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial002.py] 1277tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial003.py] 1278[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial003.py] 1279tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial004.py] 1280[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial004.py] 1281tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial001.py] 1282[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial001.py] 1283tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial002.py] 1284[gw1] [ 10%] PASSED tests/client/test_extension.py::test_notification_binding_accepts_core_known_method 1285tests/client/test_extension.py::test_notification_binding_is_frozen 1286[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial002.py] 1287[gw2] [ 10%] PASSED tests/client/test_transport_stream_cleanup.py::test_sse_client_closes_all_streams_on_http_error 1288tests/client/transports/test_memory.py::test_with_server 1289tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial003.py] 1290[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial003.py] 1291tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial004.py] 1292[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial004.py] 1293tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial001.py] 1294[gw2] [ 10%] PASSED tests/client/transports/test_memory.py::test_with_server 1295[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial001.py] 1296tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial002.py] 1297[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial002.py] 1298tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial003.py] 1299[gw1] [ 10%] PASSED tests/client/test_extension.py::test_notification_binding_is_frozen 1300[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial003.py] 1301tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial004.py] 1302[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial004.py] 1303tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial001.py] 1304[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial001.py] 1305tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial002.py] 1306tests/client/test_extension.py::test_extension_defaults_advertise_nothing 1307[gw1] [ 10%] PASSED tests/client/test_extension.py::test_extension_defaults_advertise_nothing 1308[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial002.py] 1309tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial003.py] 1310[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial003.py] 1311tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial003_client.py] 1312[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial003_client.py] 1313tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial004.py] 1314[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial004.py] 1315tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial004_client.py] 1316[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial004_client.py] 1317tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial005.py] 1318[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial005.py] 1319tests/client/transports/test_memory.py::test_with_mcpserver 1320tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[io.modelcontextprotocol/ui] 1321tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial006.py] 1322[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial006.py] 1323tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial006_client.py] 1324[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial006_client.py] 1325tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial007.py] 1326[gw1] [ 10%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[io.modelcontextprotocol/ui] 1327tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.example/my_ext] 1328[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial007.py] 1329tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial007_client.py] 1330[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial007_client.py] 1331tests/docs_src/test_shape.py::test_example_imports[docs_src/first_steps/tutorial001.py] 1332[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/first_steps/tutorial001.py] 1333tests/docs_src/test_shape.py::test_example_imports[docs_src/first_steps/tutorial001_client.py] 1334[gw1] [ 10%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.example/my_ext] 1335[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/first_steps/tutorial001_client.py] 1336tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial001.py] 1337[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial001.py] 1338tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial002.py] 1339[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial002.py] 1340[gw2] [ 10%] PASSED tests/client/transports/test_memory.py::test_with_mcpserver 1341tests/client/transports/test_memory.py::test_server_is_running 1342tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial003.py] 1343[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial003.py] 1344tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial004.py] 1345[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial004.py] 1346tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.x-y.z2/n.a-b_c] 1347tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial001.py] 1348[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial001.py] 1349tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial002.py] 1350[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial002.py] 1351tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial003.py] 1352[gw1] [ 10%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.x-y.z2/n.a-b_c] 1353[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial003.py] 1354tests/docs_src/test_shape.py::test_example_imports[docs_src/identity_assertion/tutorial001.py] 1355tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[example/x] 1356[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/identity_assertion/tutorial001.py] 1357tests/docs_src/test_shape.py::test_example_imports[docs_src/identity_assertion/tutorial002.py] 1358[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/identity_assertion/tutorial002.py] 1359tests/docs_src/test_shape.py::test_example_imports[docs_src/index/tutorial001.py] 1360[gw0] [ 10%] PASSED tests/client/test_client.py::test_client_call_tool 1361tests/client/test_client.py::test_read_resource 1362[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/index/tutorial001.py] 1363tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial001.py] 1364[gw2] [ 10%] PASSED tests/client/transports/test_memory.py::test_server_is_running 1365tests/client/transports/test_memory.py::test_list_tools 1366[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial001.py] 1367tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial001_client.py] 1368[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial001_client.py] 1369[gw1] [ 11%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[example/x] 1370tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial002.py] 1371[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial002.py] 1372tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial003.py] 1373tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[a/b] 1374[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial003.py] 1375tests/docs_src/test_shape.py::test_example_imports[docs_src/lifespan/tutorial001.py] 1376[gw0] [ 11%] PASSED tests/client/test_client.py::test_read_resource 1377[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lifespan/tutorial001.py] 1378tests/docs_src/test_shape.py::test_example_imports[docs_src/lifespan/tutorial002.py] 1379[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lifespan/tutorial002.py] 1380tests/docs_src/test_shape.py::test_example_imports[docs_src/logging/tutorial001.py] 1381[gw1] [ 11%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[a/b] 1382tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.example/9start] 1383[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/logging/tutorial001.py] 1384tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial001.py] 1385tests/client/test_client.py::test_read_resource_error_propagates 1386[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial001.py] 1387tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial002.py] 1388[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial002.py] 1389tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial003.py] 1390[gw2] [ 11%] PASSED tests/client/transports/test_memory.py::test_list_tools 1391tests/client/transports/test_memory.py::test_call_tool 1392[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial003.py] 1393tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial004.py] 1394[gw1] [ 11%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.example/9start] 1395[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial004.py] 1396tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial005.py] 1397[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial005.py] 1398tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial006.py] 1399[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial006.py] 1400tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial007.py] 1401tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[noprefix] 1402[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial007.py] 1403tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial001.py] 1404[gw0] [ 11%] PASSED tests/client/test_client.py::test_read_resource_error_propagates 1405tests/client/test_client.py::test_raise_exceptions_propagates_handler_error_on_modern_inproc_path 1406[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial001.py] 1407[gw0] [ 11%] PASSED tests/client/test_client.py::test_raise_exceptions_propagates_handler_error_on_modern_inproc_path 1408tests/client/test_client.py::test_raise_exceptions_false_sanitizes_handler_error_on_modern_inproc_path 1409tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial002.py] 1410[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial002.py] 1411tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial003.py] 1412[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial003.py] 1413tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial004.py] 1414[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial004.py] 1415tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial005.py] 1416[gw0] [ 11%] PASSED tests/client/test_client.py::test_raise_exceptions_false_sanitizes_handler_error_on_modern_inproc_path 1417tests/client/test_client.py::test_modern_inproc_path_refuses_server_initiated_requests 1418[gw0] [ 11%] PASSED tests/client/test_client.py::test_modern_inproc_path_refuses_server_initiated_requests 1419[gw1] [ 11%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[noprefix] 1420[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial005.py] 1421tests/client/test_client.py::test_get_prompt 1422tests/docs_src/test_shape.py::test_example_imports[docs_src/middleware/tutorial001.py] 1423tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[-foo/bar] 1424[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/middleware/tutorial001.py] 1425tests/docs_src/test_shape.py::test_example_imports[docs_src/middleware/tutorial002.py] 1426[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/middleware/tutorial002.py] 1427tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial001.py] 1428[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial001.py] 1429tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial002.py] 1430[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial002.py] 1431tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial003.py] 1432[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial003.py] 1433tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial004.py] 1434[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial004.py] 1435tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial005.py] 1436[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial005.py] 1437tests/docs_src/test_shape.py::test_example_imports[docs_src/oauth_clients/tutorial001.py] 1438[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/oauth_clients/tutorial001.py] 1439tests/docs_src/test_shape.py::test_example_imports[docs_src/oauth_clients/tutorial002.py] 1440[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/oauth_clients/tutorial002.py] 1441tests/docs_src/test_shape.py::test_example_imports[docs_src/opentelemetry/tutorial001.py] 1442[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/opentelemetry/tutorial001.py] 1443tests/docs_src/test_shape.py::test_example_imports[docs_src/pagination/tutorial001.py] 1444[gw0] [ 11%] PASSED tests/client/test_client.py::test_get_prompt 1445tests/client/test_client.py::test_client_session_property_before_enter 1446[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/pagination/tutorial001.py] 1447tests/docs_src/test_shape.py::test_example_imports[docs_src/pagination/tutorial002.py] 1448[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/pagination/tutorial002.py] 1449tests/docs_src/test_shape.py::test_example_imports[docs_src/progress/tutorial001.py] 1450[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/progress/tutorial001.py] 1451[gw1] [ 11%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[-foo/bar] 1452tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[.leading/x] 1453tests/docs_src/test_shape.py::test_example_imports[docs_src/progress/tutorial002.py] 1454[gw0] [ 11%] PASSED tests/client/test_client.py::test_client_session_property_before_enter 1455tests/client/test_client.py::test_client_reentry_raises_runtime_error 1456[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/progress/tutorial002.py] 1457tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial001.py] 1458[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial001.py] 1459tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial002.py] 1460[gw1] [ 11%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[.leading/x] 1461[gw0] [ 11%] PASSED tests/client/test_client.py::test_client_reentry_raises_runtime_error 1462tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[a..b/x] 1463tests/client/test_client.py::test_client_send_progress_notification 1464[gw2] [ 11%] PASSED tests/client/transports/test_memory.py::test_call_tool 1465tests/client/transports/test_memory.py::test_raise_exceptions 1466[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial002.py] 1467tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial003.py] 1468[gw0] [ 11%] PASSED tests/client/test_client.py::test_client_send_progress_notification 1469tests/client/test_client.py::test_client_subscribe_resource 1470[gw1] [ 11%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[a..b/x] 1471[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial003.py] 1472tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial004.py] 1473[gw0] [ 11%] PASSED tests/client/test_client.py::test_client_subscribe_resource 1474tests/client/test_client.py::test_client_unsubscribe_resource 1475tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo-/x] 1476[gw1] [ 11%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo-/x] 1477tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[9foo/x] 1478[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial004.py] 1479[gw0] [ 11%] PASSED tests/client/test_client.py::test_client_unsubscribe_resource 1480tests/client/test_client.py::test_client_set_logging_level 1481tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial005.py] 1482[gw0] [ 11%] PASSED tests/client/test_client.py::test_client_set_logging_level 1483tests/client/test_client.py::test_client_list_resources_with_params 1484[gw1] [ 11%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[9foo/x] 1485tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/-bar] 1486[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial005.py] 1487tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial006.py] 1488[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial006.py] 1489tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial001.py] 1490[gw0] [ 12%] PASSED tests/client/test_client.py::test_client_list_resources_with_params 1491tests/client/test_client.py::test_client_list_resource_templates 1492[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial001.py] 1493[gw2] [ 12%] PASSED tests/client/transports/test_memory.py::test_raise_exceptions 1494tests/client/transports/test_memory.py::test_aexit_with_well_behaved_lifespan_runs_teardown_without_cancel 1495tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial002.py] 1496[gw1] [ 12%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/-bar] 1497tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/bar-] 1498[gw0] [ 12%] PASSED tests/client/test_client.py::test_client_list_resource_templates 1499tests/client/test_client.py::test_list_prompts 1500[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial002.py] 1501[gw1] [ 12%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/bar-] 1502tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial003.py] 1503[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial003.py] 1504tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial004.py] 1505tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/] 1506[gw0] [ 12%] PASSED tests/client/test_client.py::test_list_prompts 1507[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial004.py] 1508tests/docs_src/test_shape.py::test_example_imports[docs_src/real_host/tutorial001.py] 1509[gw2] [ 12%] PASSED tests/client/transports/test_memory.py::test_aexit_with_well_behaved_lifespan_runs_teardown_without_cancel 1510tests/client/transports/test_memory.py::test_aexit_with_blocking_lifespan_is_bounded 1511tests/client/test_client.py::test_complete_with_prompt_reference 1512[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/real_host/tutorial001.py] 1513tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial001.py] 1514[gw1] [ 12%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/] 1515tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[/bar] 1516[gw1] [ 12%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[/bar] 1517tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/ba r] 1518[gw1] [ 12%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/ba r] 1519tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[io.modelcontextprotocol/ui\n] 1520[gw0] [ 12%] PASSED tests/client/test_client.py::test_complete_with_prompt_reference 1521tests/client/test_client.py::test_client_with_url_initializes_streamable_http_transport 1522[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial001.py] 1523tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial002.py] 1524[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial002.py] 1525tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial003.py] 1526[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial003.py] 1527tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial001.py] 1528[gw0] [ 12%] PASSED tests/client/test_client.py::test_client_with_url_initializes_streamable_http_transport 1529[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial001.py] 1530[gw1] [ 12%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[io.modelcontextprotocol/ui\n] 1531tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial002.py] 1532tests/client/test_client.py::test_client_uses_transport_directly 1533[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial002.py] 1534tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial003.py] 1535[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial003.py] 1536tests/docs_src/test_shape.py::test_example_imports[docs_src/sampling_and_roots/tutorial001.py] 1537[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/sampling_and_roots/tutorial001.py] 1538tests/docs_src/test_shape.py::test_example_imports[docs_src/sampling_and_roots/tutorial002.py] 1539[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/sampling_and_roots/tutorial002.py] 1540tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial001.py] 1541tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[] 1542[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial001.py] 1543[gw0] [ 12%] PASSED tests/client/test_client.py::test_client_uses_transport_directly 1544tests/client/test_client.py::test_context_propagation 1545[gw1] [ 12%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[] 1546tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[42] 1547tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial002.py] 1548[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial002.py] 1549[gw1] [ 12%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[42] 1550tests/client/test_extension.py::test_subclass_without_identifier_allowed_at_definition 1551tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial003.py] 1552[gw1] [ 12%] PASSED tests/client/test_extension.py::test_subclass_without_identifier_allowed_at_definition 1553tests/client/test_extension.py::test_advertise_serves_captured_settings 1554[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial003.py] 1555tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial004.py] 1556[gw1] [ 12%] PASSED tests/client/test_extension.py::test_advertise_serves_captured_settings 1557[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial004.py] 1558tests/client/test_extension.py::test_advertise_defaults_to_empty_settings 1559[gw1] [ 12%] PASSED tests/client/test_extension.py::test_advertise_defaults_to_empty_settings 1560[gw0] [ 12%] PASSED tests/client/test_client.py::test_context_propagation 1561tests/client/test_client.py::test_client_auto_mode_probes_discover_then_adopts 1562tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial001.py] 1563[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial001.py] 1564tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[noprefix] 1565[gw1] [ 12%] PASSED tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[noprefix] 1566tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial002.py] 1567[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial002.py] 1568tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[foo/] 1569[gw1] [ 12%] PASSED tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[foo/] 1570tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial003.py] 1571[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial003.py] 1572tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial004.py] 1573[gw0] [ 12%] PASSED tests/client/test_client.py::test_client_auto_mode_probes_discover_then_adopts 1574tests/client/test_client.py::test_client_auto_mode_negotiates_modern_over_a_stream_loop 1575tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[] 1576[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial004.py] 1577tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial005.py] 1578[gw1] [ 12%] PASSED tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[] 1579[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial005.py] 1580tests/client/test_input_required.py::test_single_round_dispatches_then_retries_to_terminal_result 1581tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial006.py] 1582[gw1] [ 12%] PASSED tests/client/test_input_required.py::test_single_round_dispatches_then_retries_to_terminal_result 1583tests/client/test_input_required.py::test_multi_round_loops_until_retry_returns_non_input_required 1584[gw2] [ 12%] PASSED tests/client/transports/test_memory.py::test_aexit_with_blocking_lifespan_is_bounded 1585[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial006.py] 1586tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial007.py] 1587[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial007.py] 1588tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial008.py] 1589[gw1] [ 12%] PASSED tests/client/test_input_required.py::test_multi_round_loops_until_retry_returns_non_input_required 1590tests/client/test_input_required.py::test_exceeding_max_rounds_raises_with_the_configured_cap 1591tests/docs/test_build_config.py::test_language_nav_titles_sections_from_the_recorded_page_titles_but_keeps_link_labels 1592[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial008.py] 1593tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial009.py] 1594[gw1] [ 12%] PASSED tests/client/test_input_required.py::test_exceeding_max_rounds_raises_with_the_configured_cap 1595tests/client/test_input_required.py::test_dispatch_returning_error_data_aborts_the_loop_as_mcp_error 1596[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial009.py] 1597tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial001.py] 1598[gw0] [ 12%] PASSED tests/client/test_client.py::test_client_auto_mode_negotiates_modern_over_a_stream_loop 1599[gw2] [ 12%] PASSED tests/docs/test_build_config.py::test_language_nav_titles_sections_from_the_recorded_page_titles_but_keeps_link_labels 1600tests/docs/test_build_config.py::test_alternate_lists_english_then_each_language_as_code_labelled_links_relative_to_the_site_built 1601tests/client/test_client.py::test_client_pinned_modern_mode_works_over_a_stream_loop 1602[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial001.py] 1603tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial002.py] 1604[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial002.py] 1605tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial003.py] 1606[gw2] [ 13%] PASSED tests/docs/test_build_config.py::test_alternate_lists_english_then_each_language_as_code_labelled_links_relative_to_the_site_built 1607[gw0] [ 13%] PASSED tests/client/test_client.py::test_client_pinned_modern_mode_works_over_a_stream_loop 1608[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial003.py] 1609tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_anyio.py] 1610[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_anyio.py] 1611tests/client/test_client.py::test_client_legacy_mode_still_handshakes_over_a_stream_loop 1612tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_asyncio.py] 1613[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_asyncio.py] 1614tests/docs/test_build_config.py::test_lang_config_builds_the_staged_tree_into_site_code_without_an_api_reference 1615tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_trio.py] 1616[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_trio.py] 1617tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial005.py] 1618[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial005.py] 1619[gw0] [ 13%] PASSED tests/client/test_client.py::test_client_legacy_mode_still_handshakes_over_a_stream_loop 1620tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial006.py] 1621[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial006.py] 1622tests/client/test_client.py::test_client_auto_mode_recovers_from_a_timed_out_probe_over_a_stream_loop 1623tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial007.py] 1624[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial007.py] 1625tests/docs_src/test_shape.py::test_example_imports[docs_src/testing/tutorial001.py] 1626[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/testing/tutorial001.py] 1627[gw1] [ 13%] PASSED tests/client/test_input_required.py::test_dispatch_returning_error_data_aborts_the_loop_as_mcp_error 1628tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial001.py] 1629[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial001.py] 1630tests/client/test_input_required.py::test_request_state_passes_through_byte_identical 1631tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial002.py] 1632[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial002.py] 1633tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial003.py] 1634[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial003.py] 1635tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial004.py] 1636[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial004.py] 1637tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial005.py] 1638[gw2] [ 13%] PASSED tests/docs/test_build_config.py::test_lang_config_builds_the_staged_tree_into_site_code_without_an_api_reference 1639tests/docs/test_build_config.py::test_lang_config_for_a_language_not_in_the_registry_exits_with_a_message 1640[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial005.py] 1641tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial001.py] 1642[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial001.py] 1643tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial002.py] 1644[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial002.py] 1645tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial003.py] 1646[gw2] [ 13%] PASSED tests/docs/test_build_config.py::test_lang_config_for_a_language_not_in_the_registry_exits_with_a_message 1647[gw1] [ 13%] PASSED tests/client/test_input_required.py::test_request_state_passes_through_byte_identical 1648[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial003.py] 1649tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial004.py] 1650tests/docs/test_translations.py::test_sections_tile_the_page_and_blank_lines_belong_to_the_heading_after_them 1651[gw2] [ 13%] PASSED tests/docs/test_translations.py::test_sections_tile_the_page_and_blank_lines_belong_to_the_heading_after_them 1652tests/docs/test_translations.py::test_provenance_front_matter_round_trips_and_keeps_all_digit_hashes_as_strings 1653[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial004.py] 1654tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial005.py] 1655[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial005.py] 1656tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial006.py] 1657[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial006.py] 1658tests/client/test_input_required.py::test_state_only_legs_back_off_exponentially_to_the_cap[trio-mockclock] 1659[gw2] [ 13%] PASSED tests/docs/test_translations.py::test_provenance_front_matter_round_trips_and_keeps_all_digit_hashes_as_strings 1660tests/docs/test_translations.py::test_heading_ids_are_the_ones_the_site_renderer_produces 1661tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial007.py] 1662[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial007.py] 1663tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial008.py] 1664[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial008.py] 1665tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial001.py] 1666[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial001.py] 1667tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial002.py] 1668[gw0] [ 13%] PASSED tests/client/test_client.py::test_client_auto_mode_recovers_from_a_timed_out_probe_over_a_stream_loop 1669[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial002.py] 1670tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial003.py] 1671tests/client/test_client.py::test_client_auto_mode_falls_back_to_initialize_on_legacy_signal[-32601] 1672[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial003.py] 1673tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial004.py] 1674[gw1] [ 13%] PASSED tests/client/test_input_required.py::test_state_only_legs_back_off_exponentially_to_the_cap[trio-mockclock] 1675tests/client/test_input_required.py::test_backoff_counter_resets_after_a_leg_with_input_requests[trio-mockclock] 1676[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial004.py] 1677tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial005.py] 1678[gw0] [ 13%] PASSED tests/client/test_client.py::test_client_auto_mode_falls_back_to_initialize_on_legacy_signal[-32601] 1679[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial005.py] 1680tests/docs_src/test_shape.py::test_example_imports[docs_src/whats_new/tutorial001.py] 1681[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/whats_new/tutorial001.py] 1682tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial001.py] 1683[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial001.py] 1684tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial001_client.py] 1685tests/client/test_client.py::test_client_auto_mode_falls_back_to_initialize_on_legacy_signal[-32001] 1686[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial001_client.py] 1687tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial002.py] 1688[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial002.py] 1689tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial003.py] 1690[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial003.py] 1691[gw1] [ 13%] PASSED tests/client/test_input_required.py::test_backoff_counter_resets_after_a_leg_with_input_requests[trio-mockclock] 1692tests/client/test_input_required.py::test_input_requests_are_dispatched_concurrently 1693tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial001.py] 1694[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial001.py] 1695tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial002.py] 1696[gw0] [ 13%] PASSED tests/client/test_client.py::test_client_auto_mode_falls_back_to_initialize_on_legacy_signal[-32001] 1697[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial002.py] 1698tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial003.py] 1699tests/client/test_client.py::test_client_auto_mode_falls_back_to_initialize_on_legacy_signal[-32603] 1700[gw0] [ 13%] PASSED tests/client/test_client.py::test_client_auto_mode_falls_back_to_initialize_on_legacy_signal[-32603] 1701tests/client/test_client.py::test_modern_list_tools_drops_tools_with_invalid_x_mcp_header_but_legacy_does_not 1702[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial003.py] 1703tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial004.py] 1704[gw1] [ 13%] PASSED tests/client/test_input_required.py::test_input_requests_are_dispatched_concurrently 1705tests/client/test_input_required.py::test_default_max_rounds_constant 1706[gw0] [ 13%] PASSED tests/client/test_client.py::test_modern_list_tools_drops_tools_with_invalid_x_mcp_header_but_legacy_does_not 1707[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial004.py] 1708tests/client/test_client.py::test_a_complete_listing_prunes_per_tool_state_for_tools_it_no_longer_contains 1709tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial005.py] 1710[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial005.py] 1711[gw1] [ 13%] PASSED tests/client/test_input_required.py::test_default_max_rounds_constant 1712[gw0] [ 13%] PASSED tests/client/test_client.py::test_a_complete_listing_prunes_per_tool_state_for_tools_it_no_longer_contains 1713tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial006.py] 1714[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial006.py] 1715tests/client/test_client.py::test_a_complete_listing_prunes_output_schemas_on_a_legacy_session_too 1716tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_tools-tools/list] 1717tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/authorization/tutorial001.py] 1718[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/authorization/tutorial001.py] 1719tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/authorization/tutorial002.py] 1720[gw0] [ 13%] PASSED tests/client/test_client.py::test_a_complete_listing_prunes_output_schemas_on_a_legacy_session_too 1721[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/authorization/tutorial002.py] 1722tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial001.py] 1723tests/client/test_client.py::test_a_listing_with_a_next_cursor_prunes_no_per_tool_state 1724[gw0] [ 14%] PASSED tests/client/test_client.py::test_a_listing_with_a_next_cursor_prunes_no_per_tool_state 1725tests/client/test_client.py::test_a_cursor_page_fetch_prunes_no_per_tool_state 1726[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial001.py] 1727tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial002.py] 1728[gw0] [ 14%] PASSED tests/client/test_client.py::test_a_cursor_page_fetch_prunes_no_per_tool_state 1729tests/client/test_client.py::test_client_rejects_handshake_era_mode_at_construction 1730[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial002.py] 1731tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial003.py] 1732[gw0] [ 14%] PASSED tests/client/test_client.py::test_client_rejects_handshake_era_mode_at_construction 1733tests/client/test_client.py::test_call_tool_auto_loop_dispatches_elicitation_then_returns_final_result 1734[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial003.py] 1735tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/cancellation/tutorial001.py] 1736[gw2] [ 14%] PASSED tests/docs/test_translations.py::test_heading_ids_are_the_ones_the_site_renderer_produces 1737tests/docs/test_translations.py::test_heading_the_source_scan_cannot_pin_makes_the_page_an_error 1738[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/cancellation/tutorial001.py] 1739tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/cancellation/tutorial002.py] 1740[gw0] [ 14%] PASSED tests/client/test_client.py::test_call_tool_auto_loop_dispatches_elicitation_then_returns_final_result 1741tests/client/test_client.py::test_call_tool_auto_loop_dispatches_sampling_then_returns_final_result 1742[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/cancellation/tutorial002.py] 1743tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial001.py] 1744[gw1] [ 14%] PASSED tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_tools-tools/list] 1745[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial001.py] 1746tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial001_client.py] 1747tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resources-resources/list] 1748[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial001_client.py] 1749tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial002.py] 1750[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial002.py] 1751tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial003.py] 1752[gw0] [ 14%] PASSED tests/client/test_client.py::test_call_tool_auto_loop_dispatches_sampling_then_returns_final_result 1753[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial003.py] 1754tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial004.py] 1755tests/client/test_client.py::test_call_tool_auto_loop_dispatches_list_roots_then_returns_final_result 1756[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial004.py] 1757tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial005.py] 1758[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial005.py] 1759tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial006.py] 1760[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial006.py] 1761tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial007.py] 1762[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial007.py] 1763[gw0] [ 14%] PASSED tests/client/test_client.py::test_call_tool_auto_loop_dispatches_list_roots_then_returns_final_result 1764tests/client/test_client.py::test_call_tool_auto_loop_round_trips_evolving_request_state_across_three_rounds 1765tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial001.py] 1766[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial001.py] 1767tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial002.py] 1768[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial002.py] 1769tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial003.py] 1770[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial003.py] 1771tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial004.py] 1772[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial004.py] 1773tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial001.py] 1774[gw0] [ 14%] PASSED tests/client/test_client.py::test_call_tool_auto_loop_round_trips_evolving_request_state_across_three_rounds 1775tests/client/test_client.py::test_call_tool_auto_loop_raises_mcp_error_when_no_callback_registered 1776[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial001.py] 1777tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial002.py] 1778[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial002.py] 1779tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial003.py] 1780[gw1] [ 14%] PASSED tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resources-resources/list] 1781[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial003.py] 1782[gw0] [ 14%] PASSED tests/client/test_client.py::test_call_tool_auto_loop_raises_mcp_error_when_no_callback_registered 1783tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_prompts-prompts/list] 1784tests/client/test_client.py::test_get_prompt_auto_loop_resolves_input_required_via_callbacks 1785tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial004.py] 1786[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial004.py] 1787tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial005.py] 1788[gw0] [ 14%] PASSED tests/client/test_client.py::test_get_prompt_auto_loop_resolves_input_required_via_callbacks 1789tests/client/test_client.py::test_read_resource_auto_loop_resolves_input_required_via_callbacks 1790[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial005.py] 1791tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial001.py] 1792[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial001.py] 1793tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial002.py] 1794[gw0] [ 14%] PASSED tests/client/test_client.py::test_read_resource_auto_loop_resolves_input_required_via_callbacks 1795[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial002.py] 1796tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial003.py] 1797[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial003.py] 1798tests/client/test_client_caching.py::test_an_explicit_target_id_overrides_both_url_and_in_process_identity 1799tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial001.py] 1800[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial001.py] 1801[gw0] [ 14%] PASSED tests/client/test_client_caching.py::test_an_explicit_target_id_overrides_both_url_and_in_process_identity 1802tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial002.py] 1803tests/client/test_client_caching.py::test_userinfo_variants_of_a_server_url_share_one_cache_identity 1804[gw0] [ 14%] PASSED tests/client/test_client_caching.py::test_userinfo_variants_of_a_server_url_share_one_cache_identity 1805[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial002.py] 1806tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial003.py] 1807tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[scheme-case] 1808[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial003.py] 1809tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial001.py] 1810[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial001.py] 1811tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial002.py] 1812[gw0] [ 14%] PASSED tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[scheme-case] 1813tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[empty-query] 1814[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial002.py] 1815tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial003.py] 1816[gw1] [ 14%] PASSED tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_prompts-prompts/list] 1817[gw0] [ 14%] PASSED tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[empty-query] 1818[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial003.py] 1819tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resource_templates-resources/templates/list] 1820tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[empty-fragment] 1821tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial004.py] 1822[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial004.py] 1823[gw0] [ 14%] PASSED tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[empty-fragment] 1824tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[tab-in-userinfo] 1825tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial001.py] 1826[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial001.py] 1827tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial002.py] 1828[gw0] [ 14%] PASSED tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[tab-in-userinfo] 1829tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[tab-in-path] 1830[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial002.py] 1831tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial003.py] 1832[gw0] [ 14%] PASSED tests/client/test_client_caching.py::test_stripping_userinfo_changes_no_other_byte_of_the_url[tab-in-path] 1833tests/client/test_client_caching.py::test_a_url_without_an_authority_passes_through_unchanged 1834[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial003.py] 1835[gw0] [ 14%] PASSED tests/client/test_client_caching.py::test_a_url_without_an_authority_passes_through_unchanged 1836tests/client/test_client_caching.py::test_the_server_url_is_sha256_hashed_before_it_enters_key_material 1837tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial004.py] 1838[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial004.py] 1839[gw0] [ 14%] PASSED tests/client/test_client_caching.py::test_the_server_url_is_sha256_hashed_before_it_enters_key_material 1840tests/client/test_client_caching.py::test_urls_differing_only_in_query_have_distinct_cache_identities 1841tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial001.py] 1842[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial001.py] 1843tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial002.py] 1844[gw0] [ 15%] PASSED tests/client/test_client_caching.py::test_urls_differing_only_in_query_have_distinct_cache_identities 1845tests/client/test_client_caching.py::test_two_clients_on_one_in_process_server_get_distinct_cache_identities 1846[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial002.py] 1847tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial003.py] 1848[gw0] [ 15%] PASSED tests/client/test_client_caching.py::test_two_clients_on_one_in_process_server_get_distinct_cache_identities 1849tests/client/test_client_caching.py::test_a_transport_object_gets_a_per_client_cache_identity 1850[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial003.py] 1851tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial004.py] 1852[gw0] [ 15%] PASSED tests/client/test_client_caching.py::test_a_transport_object_gets_a_per_client_cache_identity 1853tests/client/test_client_caching.py::test_a_custom_store_without_a_url_or_target_id_is_rejected[in-process] 1854[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial004.py] 1855[gw1] [ 15%] PASSED tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resource_templates-resources/templates/list] 1856tests/client/test_list_methods_cursor.py::test_list_tools_with_strict_server_validation 1857[gw0] [ 15%] PASSED tests/client/test_client_caching.py::test_a_custom_store_without_a_url_or_target_id_is_rejected[in-process] 1858tests/client/test_client_caching.py::test_a_custom_store_without_a_url_or_target_id_is_rejected[transport] 1859tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial001.py] 1860[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial001.py] 1861[gw0] [ 15%] PASSED tests/client/test_client_caching.py::test_a_custom_store_without_a_url_or_target_id_is_rejected[transport] 1862tests/client/test_client_caching.py::test_a_custom_store_with_a_url_server_constructs_and_is_used 1863[gw0] [ 15%] PASSED tests/client/test_client_caching.py::test_a_custom_store_with_a_url_server_constructs_and_is_used 1864tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial002.py] 1865[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial002.py] 1866tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial003.py] 1867tests/client/test_client_caching.py::test_a_custom_store_with_an_explicit_target_id_constructs_for_any_server 1868[gw0] [ 15%] PASSED tests/client/test_client_caching.py::test_a_custom_store_with_an_explicit_target_id_constructs_for_any_server 1869[gw2] [ 15%] PASSED tests/docs/test_translations.py::test_heading_the_source_scan_cannot_pin_makes_the_page_an_error 1870[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial003.py] 1871tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial003_client.py] 1872tests/docs/test_translations.py::test_many_attribute_blocks_pin_the_last_id_only_when_they_end_the_heading 1873tests/client/test_client_caching.py::test_cache_none_disables_the_cache_and_the_handler_wrap 1874[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial003_client.py] 1875tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial004.py] 1876[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial004.py] 1877[gw2] [ 15%] PASSED tests/docs/test_translations.py::test_many_attribute_blocks_pin_the_last_id_only_when_they_end_the_heading 1878tests/docs/test_translations.py::test_reimpose_restores_fences_pins_ids_and_leaves_reordered_links_where_the_translation_put_them 1879tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial004_client.py] 1880[gw0] [ 15%] PASSED tests/client/test_client_caching.py::test_cache_none_disables_the_cache_and_the_handler_wrap 1881[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial004_client.py] 1882tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial005.py] 1883[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial005.py] 1884tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial006.py] 1885[gw2] [ 15%] PASSED tests/docs/test_translations.py::test_reimpose_restores_fences_pins_ids_and_leaves_reordered_links_where_the_translation_put_them 1886tests/docs/test_translations.py::test_unwrap_ends_the_reply_with_exactly_the_trailing_newlines_of_the_english 1887[gw2] [ 15%] PASSED tests/docs/test_translations.py::test_unwrap_ends_the_reply_with_exactly_the_trailing_newlines_of_the_english 1888tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[heading-dropped] 1889[gw2] [ 15%] PASSED tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[heading-dropped] 1890[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial006.py] 1891tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial006_client.py] 1892tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[heading-level] 1893tests/client/test_client_caching.py::test_the_default_cache_uses_a_per_client_in_memory_store 1894[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial006_client.py] 1895tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial007.py] 1896[gw2] [ 15%] PASSED tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[heading-level] 1897tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[fence-added] 1898[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial007.py] 1899tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial007_client.py] 1900[gw0] [ 15%] PASSED tests/client/test_client_caching.py::test_the_default_cache_uses_a_per_client_in_memory_store 1901tests/client/test_client_caching.py::test_the_negotiated_version_supplier_tracks_the_session_lifecycle 1902[gw2] [ 15%] PASSED tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[fence-added] 1903[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial007_client.py] 1904tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/first_steps/tutorial001.py] 1905[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/first_steps/tutorial001.py] 1906tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[fence-moved-to-another-section] 1907tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/first_steps/tutorial001_client.py] 1908[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/first_steps/tutorial001_client.py] 1909[gw2] [ 15%] PASSED tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[fence-moved-to-another-section] 1910tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/handling_errors/tutorial001.py] 1911[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/handling_errors/tutorial001.py] 1912tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[fence-unclosed] 1913[gw2] [ 15%] PASSED tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[fence-unclosed] 1914tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/handling_errors/tutorial002.py] 1915[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/handling_errors/tutorial002.py] 1916tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[target-mangled] 1917tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/handling_errors/tutorial003.py] 1918[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/handling_errors/tutorial003.py] 1919[gw2] [ 15%] PASSED tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[target-mangled] 1920tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/handling_errors/tutorial004.py] 1921[gw0] [ 15%] PASSED tests/client/test_client_caching.py::test_the_negotiated_version_supplier_tracks_the_session_lifecycle 1922tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[link-moved-to-another-section] 1923[gw2] [ 15%] PASSED tests/docs/test_translations.py::test_reimpose_names_each_structural_mismatch[link-moved-to-another-section] 1924[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/handling_errors/tutorial004.py] 1925tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/header_parameters/tutorial001.py] 1926tests/client/test_client_caching.py::test_a_list_changed_notification_evicts_without_a_user_handler 1927tests/docs/test_translations.py::test_validate_flags_code_spans_markers_banned_terms_and_abridgement 1928[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/header_parameters/tutorial001.py] 1929tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/header_parameters/tutorial002.py] 1930[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/header_parameters/tutorial002.py] 1931tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/header_parameters/tutorial003.py] 1932[gw0] [ 15%] PASSED tests/client/test_client_caching.py::test_a_list_changed_notification_evicts_without_a_user_handler 1933tests/client/test_client_caching.py::test_a_user_handler_receives_the_notification_the_eviction_consumed 1934[gw2] [ 15%] PASSED tests/docs/test_translations.py::test_validate_flags_code_spans_markers_banned_terms_and_abridgement 1935[gw0] [ 15%] PASSED tests/client/test_client_caching.py::test_a_user_handler_receives_the_notification_the_eviction_consumed 1936tests/client/test_client_caching.py::test_non_notification_items_pass_through_to_the_user_handler_untouched 1937[gw0] [ 15%] PASSED tests/client/test_client_caching.py::test_non_notification_items_pass_through_to_the_user_handler_untouched 1938tests/client/test_client_caching.py::test_a_raising_eviction_does_not_block_notification_delivery 1939[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/header_parameters/tutorial003.py] 1940tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/identity_assertion/tutorial001.py] 1941[gw0] [ 15%] PASSED tests/client/test_client_caching.py::test_a_raising_eviction_does_not_block_notification_delivery 1942tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial001.py] 1943[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/identity_assertion/tutorial001.py] 1944tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/identity_assertion/tutorial002.py] 1945[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/identity_assertion/tutorial002.py] 1946tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/index/tutorial001.py] 1947[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/index/tutorial001.py] 1948tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/legacy_clients/tutorial001.py] 1949[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/legacy_clients/tutorial001.py] 1950tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/legacy_clients/tutorial001_client.py] 1951tests/docs/test_translations.py::test_validate_counts_list_items_and_table_rows_whatever_the_language_of_a_placeholder 1952[gw2] [ 15%] PASSED tests/docs/test_translations.py::test_validate_counts_list_items_and_table_rows_whatever_the_language_of_a_placeholder 1953tests/docs/test_translations.py::test_glossary_of_the_wrong_shape_stops_translate_with_exit_2_but_never_breaks_stage[key] 1954[gw0] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial001.py] 1955tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial002.py] 1956[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/legacy_clients/tutorial001_client.py] 1957tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/legacy_clients/tutorial002.py] 1958[gw0] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial002.py] 1959tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial003.py] 1960[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/legacy_clients/tutorial002.py] 1961[gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial003.py] 1962tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial004.py] 1963[gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial004.py] 1964tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial005.py] 1965tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/legacy_clients/tutorial003.py] 1966[gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/legacy_clients/tutorial003.py] 1967tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lifespan/tutorial001.py] 1968[gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/mrtr/tutorial005.py] 1969tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/oauth_clients/tutorial001.py] 1970[gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/oauth_clients/tutorial001.py] 1971[gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lifespan/tutorial001.py] 1972tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lifespan/tutorial002.py] 1973[gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/lifespan/tutorial002.py] 1974tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/logging/tutorial001.py] 1975[gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/logging/tutorial001.py] 1976tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/oauth_clients/tutorial002.py] 1977[gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/oauth_clients/tutorial002.py] 1978tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/opentelemetry/tutorial001.py] 1979[gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/opentelemetry/tutorial001.py] 1980tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/pagination/tutorial001.py] 1981[gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/pagination/tutorial001.py] 1982tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/pagination/tutorial002.py] 1983[gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/pagination/tutorial002.py] 1984tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/progress/tutorial001.py] 1985[gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/progress/tutorial001.py] 1986tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/progress/tutorial002.py] 1987[gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/progress/tutorial002.py] 1988tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial001.py] 1989[gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial001.py] 1990tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial002.py] 1991[gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial002.py] 1992tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial003.py] 1993[gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial003.py] 1994tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial004.py] 1995[gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial004.py] 1996tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial005.py] 1997[gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial005.py] 1998tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial006.py] 1999[gw0] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/prompts/tutorial006.py] 2000tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/protocol_versions/tutorial001.py] loading 6,895 hidden lines…
8896[gw3] [ 74%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_booleans_against_true_false_rendering 8897tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[exact] 8898[gw3] [ 74%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[exact] 8899tests/server/test_stateless_mode.py::test_elicit_form_with_related_id_rides_the_request_channel 8900tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[trailing-zero-fraction] 8901tests/shared/test_exceptions.py::test_url_elicitation_required_error_create_with_single_elicitation 8902[gw1] [ 74%] PASSED tests/server/test_stateless_mode.py::test_elicit_form_with_related_id_rides_the_request_channel 8903tests/server/test_stateless_mode.py::test_send_log_message_rides_the_request_channel_when_opted_in 8904[gw3] [ 74%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[trailing-zero-fraction] 8905tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[long-zero-fraction] 8906[gw1] [ 74%] PASSED tests/server/test_stateless_mode.py::test_send_log_message_rides_the_request_channel_when_opted_in 8907tests/server/test_stateless_mode.py::test_unrelated_notification_is_dropped_silently 8908[gw3] [ 74%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[long-zero-fraction] 8909tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[real-fraction] 8910[gw1] [ 74%] PASSED tests/server/test_stateless_mode.py::test_unrelated_notification_is_dropped_silently 8911tests/server/test_stateless_mode.py::test_loop_connection_outbound_does_not_raise_no_back_channel 8912[gw3] [ 74%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[real-fraction] 8913[gw2] [ 74%] PASSED tests/server/mcpserver/test_server.py::test_tool_raising_mcp_error_is_not_logged_by_mcpserver 8914[gw0] [ 74%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_create_with_single_elicitation 8915tests/shared/test_exceptions.py::test_url_elicitation_required_error_create_with_multiple_elicitations 8916tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[scientific-notation-never-numeric] 8917[gw1] [ 74%] PASSED tests/server/test_stateless_mode.py::test_loop_connection_outbound_does_not_raise_no_back_channel 8918[gw0] [ 74%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_create_with_multiple_elicitations 8919[gw3] [ 74%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[scientific-notation-never-numeric] 8920tests/shared/test_exceptions.py::test_url_elicitation_required_error_custom_message 8921tests/server/test_stateless_mode.py::test_from_envelope_connection_ping_raises_no_back_channel 8922[gw1] [ 74%] PASSED tests/server/test_stateless_mode.py::test_from_envelope_connection_ping_raises_no_back_channel 8923tests/server/test_stdio.py::test_stdio_server_round_trips_messages_over_injected_streams 8924tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[different-value] 8925[gw3] [ 74%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[different-value] 8926[gw0] [ 74%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_custom_message 8927tests/shared/test_exceptions.py::test_url_elicitation_required_error_from_error_data 8928[gw0] [ 74%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_from_error_data 8929tests/server/mcpserver/test_server.py::test_resolver_raising_tool_error_is_anticipated 8930tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[negative] 8931tests/shared/test_exceptions.py::test_url_elicitation_required_error_from_error_data_wrong_code 8932[gw0] [ 74%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_from_error_data_wrong_code 8933tests/shared/test_exceptions.py::test_url_elicitation_required_error_serialization_roundtrip 8934[gw3] [ 74%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[negative] 8935tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[beyond-ieee754-safe-range-exact] 8936[gw0] [ 74%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_serialization_roundtrip 8937tests/shared/test_exceptions.py::test_url_elicitation_required_error_data_contains_elicitations 8938[gw3] [ 75%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[beyond-ieee754-safe-range-exact] 8939tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[beyond-ieee754-safe-range-off-by-one] 8940[gw0] [ 75%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_data_contains_elicitations 8941tests/shared/test_exceptions.py::test_url_elicitation_required_error_inherits_from_mcp_error 8942[gw3] [ 75%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[beyond-ieee754-safe-range-off-by-one] 8943tests/shared/test_inbound.py::test_validate_mcp_param_headers_non_primitive_body_value_rejects_only_when_a_header_claims_it 8944[gw1] [ 75%] PASSED tests/server/test_stdio.py::test_stdio_server_round_trips_messages_over_injected_streams 8945tests/server/test_stdio.py::test_stdio_server_invalid_utf8 8946[gw3] [ 75%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_non_primitive_body_value_rejects_only_when_a_header_claims_it 8947tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_a_recognized_header_supplied_more_than_once 8948[gw0] [ 75%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_inherits_from_mcp_error 8949tests/shared/test_exceptions.py::test_url_elicitation_required_error_exception_message 8950[gw0] [ 75%] PASSED tests/shared/test_exceptions.py::test_url_elicitation_required_error_exception_message 8951[gw3] [ 75%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_a_recognized_header_supplied_more_than_once 8952tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_a_header_exceeding_the_int_conversion_limit 8953tests/shared/test_exceptions.py::test_from_jsonrpc_error_preserves_code_message_and_data 8954[gw0] [ 75%] PASSED tests/shared/test_exceptions.py::test_from_jsonrpc_error_preserves_code_message_and_data 8955[gw3] [ 75%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_a_header_exceeding_the_int_conversion_limit 8956tests/shared/test_extension.py::test_server_extension_module_reexports_shared_validator 8957tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integral_float_bodies_numerically 8958[gw3] [ 75%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integral_float_bodies_numerically 8959tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_non_canonical_base64[non-canonical-trailing-bits] 8960[gw2] [ 75%] PASSED tests/server/mcpserver/test_server.py::test_resolver_raising_tool_error_is_anticipated 8961[gw1] [ 75%] PASSED tests/server/test_stdio.py::test_stdio_server_invalid_utf8 8962[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_server_extension_module_reexports_shared_validator 8963tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[io.modelcontextprotocol/ui] 8964[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[io.modelcontextprotocol/ui] 8965tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[com.example/my_ext] 8966[gw3] [ 75%] PASSED tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_non_canonical_base64[non-canonical-trailing-bits] 8967tests/server/mcpserver/test_server.py::test_resolver_crash_is_logged_as_the_tools_crash 8968[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[com.example/my_ext] 8969tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[com.x-y.z2/n.a-b_c] 8970tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_non_canonical_base64[missing-padding] 8971[gw3] [ 75%] PASSED tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_non_canonical_base64[missing-padding] 8972tests/shared/test_jsonrpc_dispatcher.py::test_server_middleware_observes_cancelled_notification 8973[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[com.x-y.z2/n.a-b_c] 8974tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[example/x] 8975tests/server/test_stdio.py::test_stdio_server_takes_stdin_off_the_descriptor_table_while_serving 8976[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[example/x] 8977tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[a/b] 8978[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[a/b] 8979tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[com.example/9start] 8980[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[com.example/9start] 8981tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[noprefix] 8982[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[noprefix] 8983tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[-foo/bar] 8984[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[-foo/bar] 8985[gw1] [ 75%] PASSED tests/server/test_stdio.py::test_stdio_server_takes_stdin_off_the_descriptor_table_while_serving 8986[gw3] [ 75%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_server_middleware_observes_cancelled_notification 8987tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_with_caller_supplied_string_id_is_verbatim_on_the_wire 8988tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[.leading/x] 8989[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[.leading/x] 8990tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[a..b/x] 8991tests/server/test_stdio.py::test_stdio_server_reads_stdin_in_place_when_descriptor_isolation_fails[dup] 8992[gw2] [ 75%] PASSED tests/server/mcpserver/test_server.py::test_resolver_crash_is_logged_as_the_tools_crash 8993[gw3] [ 75%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_with_caller_supplied_string_id_is_verbatim_on_the_wire 8994tests/shared/test_otel.py::test_extract_trace_context_degrades_to_no_parent_on_malformed_traceparent 8995[gw3] [ 75%] PASSED tests/shared/test_otel.py::test_extract_trace_context_degrades_to_no_parent_on_malformed_traceparent 8996tests/shared/test_otel.py::test_client_and_server_spans 8997[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[a..b/x] 8998tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo-/x] 8999[gw1] [ 75%] PASSED tests/server/test_stdio.py::test_stdio_server_reads_stdin_in_place_when_descriptor_isolation_fails[dup] 9000tests/server/mcpserver/test_server.py::test_argument_validator_that_crashes_is_the_tools_crash 9001[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo-/x] 9002tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[9foo/x] 9003[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[9foo/x] 9004tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/-bar] 9005tests/server/test_stdio.py::test_stdio_server_reads_stdin_in_place_when_descriptor_isolation_fails[dup2] 9006[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/-bar] 9007tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/bar-] 9008[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/bar-] 9009tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/] 9010[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/] 9011tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[/bar] 9012[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[/bar] 9013[gw1] [ 75%] PASSED tests/server/test_stdio.py::test_stdio_server_reads_stdin_in_place_when_descriptor_isolation_fails[dup2] 9014tests/server/test_stdio.py::test_stdio_server_reads_stdin_in_place_when_descriptor_isolation_fails[dup2_destroys_target] 9015[gw2] [ 75%] PASSED tests/server/mcpserver/test_server.py::test_argument_validator_that_crashes_is_the_tools_crash 9016tests/server/mcpserver/test_server.py::test_argument_validator_raising_mcp_error_is_a_protocol_error 9017tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/ba r] 9018[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/ba r] 9019tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[io.modelcontextprotocol/ui\n] 9020[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[io.modelcontextprotocol/ui\n] 9021[gw2] [ 75%] PASSED tests/server/mcpserver/test_server.py::test_argument_validator_raising_mcp_error_is_a_protocol_error 9022tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[] 9023[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[] 9024[gw1] [ 75%] PASSED tests/server/test_stdio.py::test_stdio_server_reads_stdin_in_place_when_descriptor_isolation_fails[dup2_destroys_target] 9025tests/server/mcpserver/test_server.py::test_resource_error_escaping_a_tool_is_anticipated 9026tests/server/test_stdio.py::test_stdio_server_exits_cleanly_when_the_stdin_restore_fails 9027tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[None] 9028[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[None] 9029tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[42] 9030[gw1] [ 75%] PASSED tests/server/test_stdio.py::test_stdio_server_exits_cleanly_when_the_stdin_restore_fails 9031tests/server/test_stdio.py::test_stdio_server_takes_stdout_off_the_descriptor_table_while_serving 9032[gw0] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[42] 9033tests/shared/test_httpx_utils.py::test_default_client_uses_mcp_timeouts_and_httpx_redirect_default 9034[gw2] [ 75%] PASSED tests/server/mcpserver/test_server.py::test_resource_error_escaping_a_tool_is_anticipated 9035tests/server/mcpserver/test_server.py::test_resource_crash_escaping_a_tool_is_the_tools_crash 9036[gw3] [ 75%] PASSED tests/shared/test_otel.py::test_client_and_server_spans 9037tests/shared/test_otel.py::test_client_span_records_error_status_when_peer_answers_with_jsonrpc_error 9038[gw1] [ 75%] PASSED tests/server/test_stdio.py::test_stdio_server_takes_stdout_off_the_descriptor_table_while_serving 9039tests/server/test_stdio.py::test_stdio_server_diverts_stdout_to_the_null_device_when_stderr_is_unusable 9040[gw1] [ 75%] PASSED tests/server/test_stdio.py::test_stdio_server_diverts_stdout_to_the_null_device_when_stderr_is_unusable 9041[gw0] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_default_client_uses_mcp_timeouts_and_httpx_redirect_default 9042tests/server/test_stdio.py::test_a_second_stdio_server_on_the_same_process_streams_is_refused 9043tests/shared/test_httpx_utils.py::test_custom_parameters 9044[gw2] [ 75%] PASSED tests/server/mcpserver/test_server.py::test_resource_crash_escaping_a_tool_is_the_tools_crash 9045tests/server/mcpserver/test_server.py::test_tool_that_recovers_from_a_missing_resource_logs_nothing 9046[gw1] [ 75%] PASSED tests/server/test_stdio.py::test_a_second_stdio_server_on_the_same_process_streams_is_refused 9047tests/server/test_stdio.py::test_a_refused_claim_releases_the_stream_it_already_took 9048[gw3] [ 75%] PASSED tests/shared/test_otel.py::test_client_span_records_error_status_when_peer_answers_with_jsonrpc_error 9049tests/shared/test_path_security.py::test_contains_path_traversal[a/b/c-False] 9050[gw0] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_custom_parameters 9051tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-http://mcp.example/mcp/] 9052[gw1] [ 75%] PASSED tests/server/test_stdio.py::test_a_refused_claim_releases_the_stream_it_already_took 9053tests/server/test_stdio.py::test_the_claim_engages_even_when_stderr_is_closed 9054[gw3] [ 75%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/b/c-False] 9055[gw0] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-http://mcp.example/mcp/] 9056tests/shared/test_path_security.py::test_contains_path_traversal[readme.txt-False] 9057tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-/other/path] 9058[gw2] [ 76%] PASSED tests/server/mcpserver/test_server.py::test_tool_that_recovers_from_a_missing_resource_logs_nothing 9059[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[readme.txt-False] 9060[gw0] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-/other/path] 9061tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example:8080/mcp-http://mcp.example:8080/v2/mcp] 9062tests/server/mcpserver/test_server.py::test_static_resource_raising_unexpected_exception_is_logged_once_at_error_with_its_traceback 9063tests/shared/test_path_security.py::test_contains_path_traversal[-False] 9064[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[-False] 9065[gw0] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example:8080/mcp-http://mcp.example:8080/v2/mcp] 9066tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-http://MCP.EXAMPLE:80/mcp/] 9067[gw1] [ 76%] PASSED tests/server/test_stdio.py::test_the_claim_engages_even_when_stderr_is_closed 9068tests/server/test_stdio.py::test_stdio_server_serves_in_place_when_the_diversion_cannot_be_opened 9069tests/shared/test_path_security.py::test_contains_path_traversal[.-False] 9070[gw0] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-http://MCP.EXAMPLE:80/mcp/] 9071tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-https://mcp.example:443/mcp] 9072[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[.-False] 9073tests/shared/test_path_security.py::test_contains_path_traversal[./a/b-False] 9074[gw0] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-https://mcp.example:443/mcp] 9075tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://other.example/mcp] 9076[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[./a/b-False] 9077[gw1] [ 76%] PASSED tests/server/test_stdio.py::test_stdio_server_serves_in_place_when_the_diversion_cannot_be_opened 9078tests/server/test_stdio.py::test_a_degraded_session_does_not_close_the_sys_stream_it_served 9079tests/shared/test_path_security.py::test_contains_path_traversal[a/../b-False] 9080[gw2] [ 76%] PASSED tests/server/mcpserver/test_server.py::test_static_resource_raising_unexpected_exception_is_logged_once_at_error_with_its_traceback 9081tests/server/mcpserver/test_server.py::test_resource_template_raising_unexpected_exception_is_logged_once_at_error_with_its_traceback 9082[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/../b-False] 9083tests/shared/test_path_security.py::test_contains_path_traversal[a/b/../c-False] 9084[gw0] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://other.example/mcp] 9085tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://mcp.example:8080/mcp] 9086[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/b/../c-False] 9087tests/shared/test_path_security.py::test_contains_path_traversal[a/b/../../c-False] 9088[gw2] [ 76%] PASSED tests/server/mcpserver/test_server.py::test_resource_template_raising_unexpected_exception_is_logged_once_at_error_with_its_traceback 9089tests/server/mcpserver/test_server.py::test_read_resource_wraps_a_crash_as_unexpected_resource_error_chained_to_the_original 9090[gw0] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://mcp.example:8080/mcp] 9091tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://sub.mcp.example/mcp] 9092[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/b/../../c-False] 9093tests/shared/test_path_security.py::test_contains_path_traversal[..-True] 9094[gw2] [ 76%] PASSED tests/server/mcpserver/test_server.py::test_read_resource_wraps_a_crash_as_unexpected_resource_error_chained_to_the_original 9095[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[..-True] 9096tests/server/mcpserver/test_server.py::test_custom_resource_subclass_crash_is_wrapped_and_logged_like_a_function_resource 9097tests/shared/test_path_security.py::test_contains_path_traversal[../etc-True] 9098[gw0] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://sub.mcp.example/mcp] 9099tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[https://mcp.example:8443/mcp] 9100[gw0] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[https://mcp.example:8443/mcp] 9101[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[../etc-True] 9102tests/shared/test_path_security.py::test_contains_path_traversal[../../etc/passwd-True] 9103tests/shared/test_inbound.py::test_validate_mcp_param_headers_union_typed_annotation_invalidates_the_whole_tool 9104[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_union_typed_annotation_invalidates_the_whole_tool 9105[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[../../etc/passwd-True] 9106tests/shared/test_path_security.py::test_contains_path_traversal[a/../../b-True] 9107[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/../../b-True] 9108[gw2] [ 76%] PASSED tests/server/mcpserver/test_server.py::test_custom_resource_subclass_crash_is_wrapped_and_logged_like_a_function_resource 9109tests/server/mcpserver/test_server.py::test_static_resource_raising_resource_not_found_error_is_invalid_params_logged_at_info 9110tests/shared/test_path_security.py::test_contains_path_traversal[./../../etc-True] 9111[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[./../../etc-True] 9112tests/shared/test_path_security.py::test_contains_path_traversal[1.0..2.0-False] 9113[gw2] [ 76%] PASSED tests/server/mcpserver/test_server.py::test_static_resource_raising_resource_not_found_error_is_invalid_params_logged_at_info 9114tests/server/mcpserver/test_server.py::test_deliberate_resource_error_passes_its_message_through_and_is_logged_at_info 9115[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[1.0..2.0-False] 9116tests/shared/test_path_security.py::test_contains_path_traversal[foo..bar-False] 9117tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_the_clients_own_rendering_of_large_integral_floats 9118[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_the_clients_own_rendering_of_large_integral_floats 9119tests/shared/test_inbound.py::test_validate_mcp_param_headers_handles_unrenderable_huge_integer_bodies_without_raising 9120[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_handles_unrenderable_huge_integer_bodies_without_raising 9121tests/shared/test_inbound.py::test_mcp_param_headers_omits_values_with_no_scalar_rendering 9122[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_omits_values_with_no_scalar_rendering 9123tests/shared/test_inbound.py::test_find_duplicated_routing_header_detects_repeats_of_routing_headers_only 9124[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_find_duplicated_routing_header_detects_repeats_of_routing_headers_only 9125tests/shared/test_jsonrpc_dispatcher.py::test_concurrent_send_raw_requests_correlate_by_id_when_responses_arrive_out_of_order 9126[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[foo..bar-False] 9127tests/shared/test_path_security.py::test_contains_path_traversal[..foo-False] 9128[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[..foo-False] 9129tests/shared/test_path_security.py::test_contains_path_traversal[foo..-False] 9130[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[foo..-False] 9131tests/shared/test_path_security.py::test_contains_path_traversal[..\\etc-True] 9132[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[..\\etc-True] 9133tests/shared/test_path_security.py::test_contains_path_traversal[a\\..\\..\\b-True] 9134[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a\\..\\..\\b-True] 9135tests/shared/test_path_security.py::test_contains_path_traversal[a\\b\\c-False] 9136[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a\\b\\c-False] 9137tests/shared/test_path_security.py::test_contains_path_traversal[a/..\\..\\b-True] 9138[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/..\\..\\b-True] 9139tests/shared/test_path_security.py::test_is_absolute_path[relative/path-False] 9140[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[relative/path-False] 9141tests/shared/test_path_security.py::test_is_absolute_path[file.txt-False] 9142[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[file.txt-False] 9143tests/shared/test_path_security.py::test_is_absolute_path[-False] 9144[gw2] [ 76%] PASSED tests/server/mcpserver/test_server.py::test_deliberate_resource_error_passes_its_message_through_and_is_logged_at_info 9145tests/server/mcpserver/test_server.py::test_prompt_raising_unexpected_exception_is_logged_once 9146[gw2] [ 76%] PASSED tests/server/mcpserver/test_server.py::test_prompt_raising_unexpected_exception_is_logged_once 9147tests/server/mcpserver/test_server.py::test_call_tool_wraps_a_crash_as_unexpected_tool_error_chained_to_the_original 9148[gw2] [ 76%] PASSED tests/server/mcpserver/test_server.py::test_call_tool_wraps_a_crash_as_unexpected_tool_error_chained_to_the_original 9149tests/server/mcpserver/test_server.py::test_call_tool_keeps_a_deliberate_tool_error_a_plain_tool_error 9150[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[-False] 9151tests/shared/test_path_security.py::test_is_absolute_path[.-False] 9152[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[.-False] 9153tests/shared/test_path_security.py::test_is_absolute_path[..-False] 9154[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[..-False] 9155tests/shared/test_path_security.py::test_is_absolute_path[/-True] 9156[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[/-True] 9157tests/shared/test_path_security.py::test_is_absolute_path[/etc/passwd-True] 9158[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[/etc/passwd-True] 9159tests/shared/test_path_security.py::test_is_absolute_path[/a-True] 9160[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[/a-True] 9161tests/shared/test_path_security.py::test_is_absolute_path[C:-True] 9162[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[C:-True] 9163tests/shared/test_path_security.py::test_is_absolute_path[C:\\Windows-True] 9164[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[C:\\Windows-True] 9165tests/shared/test_path_security.py::test_is_absolute_path[c:/foo-True] 9166[gw2] [ 76%] PASSED tests/server/mcpserver/test_server.py::test_call_tool_keeps_a_deliberate_tool_error_a_plain_tool_error 9167tests/server/mcpserver/test_server.py::test_nested_tool_crash_stays_unexpected_through_the_outer_tool 9168[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[c:/foo-True] 9169tests/shared/test_path_security.py::test_is_absolute_path[Z:\\-True] 9170[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[Z:\\-True] 9171tests/shared/test_path_security.py::test_is_absolute_path[\\\\server\\share-True] 9172[gw3] [ 76%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[\\\\server\\share-True] 9173[gw0] [ 76%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_concurrent_send_raw_requests_correlate_by_id_when_responses_arrive_out_of_order 9174tests/shared/test_jsonrpc_dispatcher.py::test_handler_raising_exception_sends_code_zero_with_str_message 9175tests/shared/test_path_security.py::test_is_absolute_path[\\foo-True] 9176[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[\\foo-True] 9177tests/shared/test_path_security.py::test_is_absolute_path[C:relative-True] 9178[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[C:relative-True] 9179tests/shared/test_path_security.py::test_is_absolute_path[x:y-True] 9180[gw0] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_handler_raising_exception_sends_code_zero_with_str_message 9181tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_interrupt_mode_interrupts_handler_and_writes_no_response 9182[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[x:y-True] 9183tests/shared/test_path_security.py::test_is_absolute_path[a:debug-True] 9184[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[a:debug-True] 9185tests/shared/test_path_security.py::test_is_absolute_path[1:foo-False] 9186[gw2] [ 77%] PASSED tests/server/mcpserver/test_server.py::test_nested_tool_crash_stays_unexpected_through_the_outer_tool 9187[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[1:foo-False] 9188tests/shared/test_path_security.py::test_is_absolute_path[ab:c-False] 9189[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[ab:c-False] 9190tests/server/mcpserver/test_server.py::test_context_exposes_client_capabilities_from_connection 9191tests/shared/test_path_security.py::test_is_absolute_path[\u03a9:namespace-False] 9192[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[\u03a9:namespace-False] 9193tests/shared/test_path_security.py::test_is_absolute_path[\xe9:foo-False] 9194[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[\xe9:foo-False] 9195tests/shared/test_path_security.py::test_safe_join_simple 9196[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_safe_join_simple 9197tests/shared/test_path_security.py::test_safe_join_resolves_relative_base 9198[gw2] [ 77%] PASSED tests/server/mcpserver/test_server.py::test_context_exposes_client_capabilities_from_connection 9199[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_safe_join_resolves_relative_base 9200tests/server/mcpserver/test_server.py::test_context_input_responses_and_request_state_are_none_on_initial_round 9201tests/shared/test_path_security.py::test_safe_join_rejects_dotdot_escape 9202[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_dotdot_escape 9203tests/shared/test_path_security.py::test_safe_join_rejects_balanced_then_escape 9204[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_balanced_then_escape 9205tests/shared/test_path_security.py::test_safe_join_allows_balanced_dotdot 9206[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_safe_join_allows_balanced_dotdot 9207tests/shared/test_path_security.py::test_safe_join_rejects_absolute_part 9208[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_absolute_part 9209tests/shared/test_path_security.py::test_safe_join_rejects_absolute_in_later_part 9210[gw2] [ 77%] PASSED tests/server/mcpserver/test_server.py::test_context_input_responses_and_request_state_are_none_on_initial_round 9211[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_absolute_in_later_part 9212tests/server/mcpserver/test_server.py::test_context_notify_methods_publish_to_the_configured_bus 9213tests/shared/test_path_security.py::test_safe_join_rejects_windows_drive 9214[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_windows_drive 9215tests/shared/test_path_security.py::test_safe_join_rejects_null_byte 9216[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_null_byte 9217tests/shared/test_path_security.py::test_safe_join_rejects_null_byte_in_later_part 9218[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_null_byte_in_later_part 9219tests/shared/test_path_security.py::test_safe_join_rejects_symlink_escape 9220[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_symlink_escape 9221tests/shared/test_path_security.py::test_safe_join_base_equals_target 9222[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_safe_join_base_equals_target 9223tests/shared/test_path_security.py::test_path_escape_error_is_value_error 9224[gw3] [ 77%] PASSED tests/shared/test_path_security.py::test_path_escape_error_is_value_error 9225tests/shared/test_peer.py::test_peer_sample_sends_create_message_and_returns_typed_result 9226[gw2] [ 77%] PASSED tests/server/mcpserver/test_server.py::test_context_notify_methods_publish_to_the_configured_bus 9227[gw3] [ 77%] PASSED tests/shared/test_peer.py::test_peer_sample_sends_create_message_and_returns_typed_result 9228tests/server/mcpserver/test_server.py::test_programmatic_entry_points_carry_the_subscription_bus 9229tests/shared/test_peer.py::test_peer_sample_validates_result_alias_only 9230[gw0] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_interrupt_mode_interrupts_handler_and_writes_no_response 9231tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_signal_mode_sets_event_and_drops_the_completed_handlers_result 9232[gw3] [ 77%] PASSED tests/shared/test_peer.py::test_peer_sample_validates_result_alias_only 9233tests/shared/test_peer.py::test_peer_sample_with_tools_returns_with_tools_result 9234[gw3] [ 77%] PASSED tests/shared/test_peer.py::test_peer_sample_with_tools_returns_with_tools_result 9235[gw2] [ 77%] PASSED tests/server/mcpserver/test_server.py::test_programmatic_entry_points_carry_the_subscription_bus 9236tests/server/mcpserver/test_server.py::test_server_advertises_change_notifications_on_the_modern_wire_by_default 9237tests/shared/test_peer.py::test_peer_sample_with_tool_choice_only_returns_with_tools_result 9238[gw3] [ 77%] PASSED tests/shared/test_peer.py::test_peer_sample_with_tool_choice_only_returns_with_tools_result 9239[gw2] [ 77%] PASSED tests/server/mcpserver/test_server.py::test_server_advertises_change_notifications_on_the_modern_wire_by_default 9240tests/server/mcpserver/test_server.py::test_subscriptions_false_neither_advertises_nor_serves_listen 9241[gw2] [ 77%] PASSED tests/server/mcpserver/test_server.py::test_subscriptions_false_neither_advertises_nor_serves_listen 9242tests/server/mcpserver/test_server.py::test_notify_still_succeeds_when_subscriptions_are_off 9243tests/shared/test_peer.py::test_peer_elicit_form_sends_elicitation_create_with_form_params 9244[gw2] [ 77%] PASSED tests/server/mcpserver/test_server.py::test_notify_still_succeeds_when_subscriptions_are_off 9245tests/server/mcpserver/test_server.py::test_context_mcp_server_outside_request_raises 9246[gw2] [ 77%] PASSED tests/server/mcpserver/test_server.py::test_context_mcp_server_outside_request_raises 9247[gw3] [ 77%] PASSED tests/shared/test_peer.py::test_peer_elicit_form_sends_elicitation_create_with_form_params 9248tests/server/mcpserver/test_server.py::test_context_request_context_outside_request_raises 9249tests/shared/test_peer.py::test_peer_elicit_url_sends_elicitation_create_with_url_params 9250[gw2] [ 77%] PASSED tests/server/mcpserver/test_server.py::test_context_request_context_outside_request_raises 9251tests/server/mcpserver/test_server.py::test_context_notify_outside_a_request_raises 9252[gw2] [ 77%] PASSED tests/server/mcpserver/test_server.py::test_context_notify_outside_a_request_raises 9253tests/server/mcpserver/test_server.py::test_context_exposes_its_mcp_server 9254[gw2] [ 77%] PASSED tests/server/mcpserver/test_server.py::test_context_exposes_its_mcp_server 9255tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[ftp://mcp.example/mcp] 9256[gw2] [ 77%] PASSED tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[ftp://mcp.example/mcp] 9257tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[301] 9258[gw2] [ 77%] PASSED tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[301] 9259tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[302] 9260[gw2] [ 77%] PASSED tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[302] 9261[gw0] [ 77%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_signal_mode_sets_event_and_drops_the_completed_handlers_result 9262tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[303] 9263[gw2] [ 77%] PASSED tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[303] 9264tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[301] 9265tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_drops_the_error_of_a_handler_that_fails_after_cancel[unmapped-exception] 9266[gw2] [ 77%] PASSED tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[301] 9267tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[302] 9268[gw2] [ 77%] PASSED tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[302] 9269tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[303] 9270[gw3] [ 77%] PASSED tests/shared/test_peer.py::test_peer_elicit_url_sends_elicitation_create_with_url_params 9271[gw2] [ 77%] PASSED tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[303] 9272tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[307] 9273tests/shared/test_peer.py::test_peer_list_roots_sends_roots_list_and_returns_typed_result 9274[gw2] [ 77%] PASSED tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[307] 9275tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[308] 9276[gw1] [ 77%] PASSED tests/server/test_stdio.py::test_a_degraded_session_does_not_close_the_sys_stream_it_served 9277[gw3] [ 77%] PASSED tests/shared/test_peer.py::test_peer_list_roots_sends_roots_list_and_returns_typed_result 9278[gw2] [ 77%] PASSED tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[308] 9279tests/shared/test_peer.py::test_peer_list_roots_with_meta_sends_meta_in_params 9280tests/server/test_stdio.py::test_mcpserver_run_stdio_serves_until_stdin_closes 9281tests/shared/test_httpx_utils.py::test_https_to_http_on_same_host_is_outside_origin 9282[gw2] [ 77%] PASSED tests/shared/test_httpx_utils.py::test_https_to_http_on_same_host_is_outside_origin 9283tests/shared/test_httpx_utils.py::test_client_configured_to_follow_redirects_is_still_scoped_to_origin 9284[gw2] [ 77%] PASSED tests/shared/test_httpx_utils.py::test_client_configured_to_follow_redirects_is_still_scoped_to_origin 9285tests/shared/test_httpx_utils.py::test_redirect_past_the_client_max_redirects_budget_is_handed_back_unfollowed 9286[gw3] [ 77%] PASSED tests/shared/test_peer.py::test_peer_list_roots_with_meta_sends_meta_in_params 9287[gw2] [ 77%] PASSED tests/shared/test_httpx_utils.py::test_redirect_past_the_client_max_redirects_budget_is_handed_back_unfollowed 9288tests/shared/test_httpx_utils.py::test_redirect_location_with_userinfo_is_not_followed 9289tests/shared/test_peer.py::test_peer_list_roots_is_deprecated_sep_2577 9290[gw1] [ 77%] PASSED tests/server/test_stdio.py::test_mcpserver_run_stdio_serves_until_stdin_closes 9291tests/server/test_stdio.py::test_mcpserver_run_stdio_runs_lifespan_cleanup_after_stdin_closes 9292[gw2] [ 77%] PASSED tests/shared/test_httpx_utils.py::test_redirect_location_with_userinfo_is_not_followed 9293tests/shared/test_httpx_utils.py::test_userinfo_of_the_configured_url_kept_by_a_relative_location_is_followed 9294[gw2] [ 78%] PASSED tests/shared/test_httpx_utils.py::test_userinfo_of_the_configured_url_kept_by_a_relative_location_is_followed 9295tests/shared/test_httpx_utils.py::test_request_within_origin_returns_a_read_response 9296[gw3] [ 78%] PASSED tests/shared/test_peer.py::test_peer_list_roots_is_deprecated_sep_2577 9297tests/shared/test_peer.py::test_dump_params_merges_meta_over_model_meta 9298[gw2] [ 78%] PASSED tests/shared/test_httpx_utils.py::test_request_within_origin_returns_a_read_response 9299[gw3] [ 78%] PASSED tests/shared/test_peer.py::test_dump_params_merges_meta_over_model_meta 9300tests/shared/test_httpx_utils.py::test_sse_within_origin_sends_event_stream_headers_and_caller_headers 9301[gw2] [ 78%] PASSED tests/shared/test_httpx_utils.py::test_sse_within_origin_sends_event_stream_headers_and_caller_headers 9302[gw1] [ 78%] PASSED tests/server/test_stdio.py::test_mcpserver_run_stdio_runs_lifespan_cleanup_after_stdin_closes 9303tests/shared/test_httpx_utils.py::test_auth_flow_requests_are_not_redirected 9304tests/shared/test_peer.py::test_dump_params_serializes_meta_by_alias 9305tests/server/test_stdio.py::test_mcpserver_run_stdio_serves_a_modern_connection 9306[gw2] [ 78%] PASSED tests/shared/test_httpx_utils.py::test_auth_flow_requests_are_not_redirected 9307tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[no-params] 9308[gw3] [ 78%] PASSED tests/shared/test_peer.py::test_dump_params_serializes_meta_by_alias 9309[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[no-params] 9310tests/shared/test_peer.py::test_peer_notify_forwards_to_wrapped_outbound 9311tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[no-meta] 9312[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[no-meta] 9313tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-version] 9314[gw3] [ 78%] PASSED tests/shared/test_peer.py::test_peer_notify_forwards_to_wrapped_outbound 9315[gw1] [ 78%] PASSED tests/server/test_stdio.py::test_mcpserver_run_stdio_serves_a_modern_connection 9316[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-version] 9317tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-client-caps] 9318tests/server/test_subscriptions.py::test_in_memory_bus_fans_out_until_unsubscribed 9319tests/shared/test_peer.py::test_peer_ping_sends_ping_and_returns_none 9320[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-client-caps] 9321tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-both] 9322[gw3] [ 78%] PASSED tests/shared/test_peer.py::test_peer_ping_sends_ping_and_returns_none 9323[gw1] [ 78%] PASSED tests/server/test_subscriptions.py::test_in_memory_bus_fans_out_until_unsubscribed 9324tests/server/test_subscriptions.py::test_in_memory_bus_keeps_equal_callables_distinct 9325[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-both] 9326tests/shared/test_inbound.py::test_envelope_rung_accepts_pair_only_envelope_without_client_info 9327[gw0] [ 78%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_drops_the_error_of_a_handler_that_fails_after_cancel[unmapped-exception] 9328[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_envelope_rung_accepts_pair_only_envelope_without_client_info 9329tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[params-none] 9330tests/shared/test_request_clock.py::test_a_wait_that_began_before_the_clock_started_leaves_the_whole_budget[trio-mockclock] 9331[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[params-none] 9332tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_drops_the_error_of_a_handler_that_fails_after_cancel[mcp-error] 9333tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[meta-none] 9334[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[meta-none] 9335tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[meta-non-mapping] 9336[gw1] [ 78%] PASSED tests/server/test_subscriptions.py::test_in_memory_bus_keeps_equal_callables_distinct 9337[gw3] [ 78%] PASSED tests/shared/test_request_clock.py::test_a_wait_that_began_before_the_clock_started_leaves_the_whole_budget[trio-mockclock] 9338tests/shared/test_request_clock.py::test_the_clock_stops_and_resumes_on_asyncio 9339[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[meta-non-mapping] 9340tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[int] 9341tests/server/test_subscriptions.py::test_ack_first_honored_subset_and_stamped_graceful_result 9342[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[int] 9343tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[null] 9344[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[null] 9345tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[list] 9346[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[list] 9347tests/shared/test_inbound.py::test_non_string_protocol_version_over_http_still_rejects_at_the_header_rung 9348[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_non_string_protocol_version_over_http_still_rejects_at_the_header_rung 9349tests/shared/test_inbound.py::test_absent_version_header_rejects_before_the_string_guard[int] 9350[gw1] [ 78%] PASSED tests/server/test_subscriptions.py::test_ack_first_honored_subset_and_stamped_graceful_result 9351tests/server/test_subscriptions.py::test_only_requested_event_kinds_are_delivered 9352[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_absent_version_header_rejects_before_the_string_guard[int] 9353tests/shared/test_inbound.py::test_absent_version_header_rejects_before_the_string_guard[null] 9354[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_absent_version_header_rejects_before_the_string_guard[null] 9355tests/shared/test_inbound.py::test_version_rung_rejects_unsupported_with_data_shape 9356[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_version_rung_rejects_unsupported_with_data_shape 9357tests/shared/test_inbound.py::test_version_rung_data_reflects_supplied_supported_list 9358[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_version_rung_data_reflects_supplied_supported_list 9359tests/shared/test_inbound.py::test_unsupported_protocol_version_rejection_is_the_version_rung_standalone 9360[gw1] [ 78%] PASSED tests/server/test_subscriptions.py::test_only_requested_event_kinds_are_delivered 9361[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_unsupported_protocol_version_rejection_is_the_version_rung_standalone 9362tests/shared/test_inbound.py::test_header_rung_does_not_reject_when_headers_arg_is_none 9363tests/server/test_subscriptions.py::test_empty_filter_honors_nothing_and_delivers_nothing 9364[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_header_rung_does_not_reject_when_headers_arg_is_none 9365tests/shared/test_inbound.py::test_header_rung_passes_when_header_matches_envelope 9366[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_header_rung_passes_when_header_matches_envelope 9367[gw1] [ 78%] PASSED tests/server/test_subscriptions.py::test_empty_filter_honors_nothing_and_delivers_nothing 9368tests/shared/test_inbound.py::test_header_rung_rejects_on_disagreement[mismatch] 9369[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_on_disagreement[mismatch] 9370tests/server/test_subscriptions.py::test_publish_after_close_is_dropped 9371tests/shared/test_inbound.py::test_header_rung_rejects_on_disagreement[header-absent] 9372[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_on_disagreement[header-absent] 9373tests/shared/test_inbound.py::test_header_rung_rejects_method_header_disagreement[method-mismatch] 9374[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_method_header_disagreement[method-mismatch] 9375[gw1] [ 78%] PASSED tests/server/test_subscriptions.py::test_publish_after_close_is_dropped 9376[gw3] [ 78%] PASSED tests/shared/test_request_clock.py::test_the_clock_stops_and_resumes_on_asyncio 9377tests/shared/test_inbound.py::test_header_rung_rejects_method_header_disagreement[method-case-mismatch] 9378[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_method_header_disagreement[method-case-mismatch] 9379tests/shared/test_inbound.py::test_header_rung_rejects_missing_method_header 9380tests/shared/test_sse.py::test_sse_client_basic_connection 9381tests/shared/test_request_clock.py::test_a_wait_that_begins_after_the_budget_ran_out_does_not_swallow_the_timeout 9382[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_missing_method_header 9383tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[tools/call-name] 9384[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[tools/call-name] 9385tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[prompts/get-name] 9386[gw3] [ 78%] PASSED tests/shared/test_request_clock.py::test_a_wait_that_begins_after_the_budget_ran_out_does_not_swallow_the_timeout 9387[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[prompts/get-name] 9388tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[resources/read-uri] 9389tests/shared/test_sse.py::test_raw_sse_connection 9390[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[resources/read-uri] 9391tests/shared/test_inbound.py::test_header_rung_decodes_base64_sentinel_before_comparing_name 9392[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_header_rung_decodes_base64_sentinel_before_comparing_name 9393tests/shared/test_inbound.py::test_header_rung_does_not_require_name_header_for_non_name_bearing_method 9394[gw0] [ 78%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_drops_the_error_of_a_handler_that_fails_after_cancel[mcp-error] 9395tests/shared/test_jsonrpc_dispatcher.py::test_a_raising_unanswered_hook_is_contained[hook-bug] 9396[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_header_rung_does_not_require_name_header_for_non_name_bearing_method 9397tests/shared/test_inbound.py::test_header_rung_does_not_require_name_header_when_body_omits_the_named_param 9398[gw3] [ 78%] PASSED tests/shared/test_sse.py::test_raw_sse_connection 9399[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_header_rung_does_not_require_name_header_when_body_omits_the_named_param 9400tests/shared/test_inbound.py::test_all_rungs_pass_yields_route 9401[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_all_rungs_pass_yields_route 9402tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[mixed_characters] 9403tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[initialize] 9404[gw3] [ 78%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[mixed_characters] 9405tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[single_character] 9406[gw2] [ 78%] PASSED tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[initialize] 9407tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[myorg/custom] 9408[gw3] [ 78%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[single_character] 9409tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[max_length_128] 9410[gw3] [ 78%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[max_length_128] 9411tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_empty_name 9412[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[myorg/custom] 9413[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_empty_name 9414tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_name_exceeding_max_length 9415tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[does/not/exist] 9416[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[does/not/exist] 9417[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_name_exceeding_max_length 9418tests/shared/test_inbound.py::test_ladder_first_failure_wins 9419tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_spaces] 9420[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_ladder_first_failure_wins 9421tests/shared/test_inbound.py::test_error_code_http_status_table[-32700-400] 9422[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_spaces] 9423tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_commas] 9424[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_commas] 9425[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32700-400] 9426tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_slashes] 9427[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_slashes] 9428tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_at_symbol] 9429tests/shared/test_inbound.py::test_error_code_http_status_table[-32600-400] 9430[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32600-400] 9431[gw1] [ 79%] PASSED tests/shared/test_sse.py::test_sse_client_basic_connection 9432[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_at_symbol] 9433tests/shared/test_sse.py::test_sse_client_on_session_created 9434tests/shared/test_inbound.py::test_error_code_http_status_table[-32602-400] 9435[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32602-400] 9436tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_trailing_newline] 9437tests/shared/test_inbound.py::test_error_code_http_status_table[-32020-400] 9438[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32020-400] 9439[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_trailing_newline] 9440tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[max_length_with_trailing_newline] 9441tests/shared/test_inbound.py::test_error_code_http_status_table[-32021-400] 9442[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32021-400] 9443tests/shared/test_inbound.py::test_error_code_http_status_table[-32022-400] 9444[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[max_length_with_trailing_newline] 9445tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_multiple_invalid_chars 9446[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_multiple_invalid_chars 9447[gw1] [ 79%] PASSED tests/shared/test_sse.py::test_sse_client_on_session_created 9448tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?sessionId=abc123-abc123] 9449[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32022-400] 9450tests/shared/test_inbound.py::test_error_code_http_status_table[-32601-404] 9451tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_unicode_characters 9452[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_unicode_characters 9453tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_leading_dash 9454[gw1] [ 79%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?sessionId=abc123-abc123] 9455tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?session_id=def456-def456] 9456[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_leading_dash 9457[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32601-404] 9458tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_trailing_dash 9459tests/shared/test_inbound.py::test_error_code_http_status_covers_every_ladder_code 9460[gw1] [ 79%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?session_id=def456-def456] 9461tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?sessionId=abc&session_id=def-abc] 9462[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_trailing_dash 9463tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_leading_dot 9464[gw1] [ 79%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?sessionId=abc&session_id=def-abc] 9465[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_covers_every_ladder_code 9466tests/shared/test_inbound.py::test_verdict_dataclasses_are_frozen 9467[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_verdict_dataclasses_are_frozen 9468tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?other=value-None] 9469[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_leading_dot 9470tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_trailing_dot 9471[gw1] [ 79%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?other=value-None] 9472tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[plain] 9473tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages-None] 9474[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_trailing_dot 9475tests/shared/test_tool_name_validation.py::test_issue_tool_name_warning_logs_warnings 9476[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[plain] 9477tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[with internal space] 9478[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[with internal space] 9479tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[] 9480[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_issue_tool_name_warning_logs_warnings 9481tests/shared/test_tool_name_validation.py::test_issue_tool_name_warning_no_logging_for_empty_warnings 9482[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_issue_tool_name_warning_no_logging_for_empty_warnings 9483tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_returns_true_for_valid_name 9484[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[] 9485tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[ edge-ws ] 9486[gw1] [ 79%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages-None] 9487tests/shared/test_sse.py::test_extract_session_id_from_endpoint[-None] 9488[gw1] [ 79%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[-None] 9489tests/shared/test_sse.py::test_sse_client_on_session_created_not_called_when_no_session_id 9490[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[ edge-ws ] 9491[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_returns_true_for_valid_name 9492tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_returns_false_for_invalid_name 9493tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[r\xe9sum\xe9] 9494[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[r\xe9sum\xe9] 9495[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_returns_false_for_invalid_name 9496tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_logs_warnings_for_invalid_name 9497tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[a\r\nb] 9498[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[a\r\nb] 9499[gw1] [ 79%] PASSED tests/shared/test_sse.py::test_sse_client_on_session_created_not_called_when_no_session_id 9500tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[=?base64?Zm9v?=] 9501[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[=?base64?Zm9v?=] 9502tests/shared/test_sse.py::test_sse_client_happy_request_and_response 9503[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_logs_warnings_for_invalid_name 9504tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_no_warnings_for_clean_valid_name 9505[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_no_warnings_for_clean_valid_name 9506tests/shared/test_tool_name_validation.py::test_edge_cases[only_dots] 9507[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_edge_cases[only_dots] 9508tests/shared/test_inbound.py::test_decode_header_value_passes_none_and_plain_through 9509[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_decode_header_value_passes_none_and_plain_through 9510tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_malformed_sentinel[=?base64?not base64!?=] 9511[gw0] [ 79%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_a_raising_unanswered_hook_is_contained[hook-bug] 9512tests/shared/test_jsonrpc_dispatcher.py::test_a_raising_unanswered_hook_is_contained[connection-closing] 9513[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_malformed_sentinel[=?base64?not base64!?=] 9514tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_malformed_sentinel[=?base64?gA==?=] 9515[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_malformed_sentinel[=?base64?gA==?=] 9516tests/shared/test_inbound.py::test_name_bearing_methods_table_matches_spec 9517[gw1] [ 79%] PASSED tests/shared/test_sse.py::test_sse_client_happy_request_and_response 9518[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_name_bearing_methods_table_matches_spec 9519tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[none] 9520tests/shared/test_sse.py::test_sse_client_exception_handling 9521tests/shared/test_tool_name_validation.py::test_edge_cases[only_dashes] 9522[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_edge_cases[only_dashes] 9523tests/shared/test_tool_name_validation.py::test_edge_cases[only_slashes] 9524[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[none] 9525tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[non-mapping] 9526[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[non-mapping] 9527tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[no-properties] 9528[gw2] [ 79%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[no-properties] 9529tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[properties-non-mapping] 9530[gw3] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_edge_cases[only_slashes] 9531tests/shared/test_tool_name_validation.py::test_edge_cases[mixed_valid_invalid] 9532[gw1] [ 80%] PASSED tests/shared/test_sse.py::test_sse_client_exception_handling 9533[gw2] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[properties-non-mapping] 9534tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[no-annotation] 9535[gw3] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_edge_cases[mixed_valid_invalid] 9536[gw2] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[no-annotation] 9537tests/shared/test_uri_template.py::test_parse_literal_only 9538tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-string] 9539[gw2] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-string] 9540tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-integer] 9541tests/shared/test_sse.py::test_sse_client_basic_connection_mounted_app 9542[gw2] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-integer] 9543tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-boolean] 9544[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_literal_only 9545tests/shared/test_uri_template.py::test_is_template[file://docs/{name}-True] 9546[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[file://docs/{name}-True] 9547[gw2] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-boolean] 9548tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[two-distinct] 9549tests/shared/test_uri_template.py::test_is_template[file://docs/readme.txt-False] 9550[gw2] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[two-distinct] 9551tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[non-mapping-prop] 9552[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[file://docs/readme.txt-False] 9553tests/shared/test_uri_template.py::test_is_template[-False] 9554[gw2] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[non-mapping-prop] 9555[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[-False] 9556tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[nested-on-properties-chain] 9557[gw1] [ 80%] PASSED tests/shared/test_sse.py::test_sse_client_basic_connection_mounted_app 9558tests/shared/test_uri_template.py::test_is_template[{a}-True] 9559tests/shared/test_sse.py::test_request_context_propagation 9560[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[{a}-True] 9561[gw2] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[nested-on-properties-chain] 9562tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-default-is-data] 9563[gw2] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-default-is-data] 9564tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-examples-is-data] 9565tests/shared/test_uri_template.py::test_is_template[{-False] 9566[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[{-False] 9567[gw2] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-examples-is-data] 9568tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-const-is-data] 9569tests/shared/test_uri_template.py::test_is_template[}-False] 9570[gw2] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-const-is-data] 9571tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-enum-is-data] 9572[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[}-False] 9573tests/shared/test_uri_template.py::test_is_template[}{-False] 9574[gw2] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-enum-is-data] 9575tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[ref-is-not-dereferenced] 9576[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[}{-False] 9577tests/shared/test_uri_template.py::test_is_template[prefix{+path}/suffix-True] 9578[gw1] [ 80%] PASSED tests/shared/test_sse.py::test_request_context_propagation 9579tests/shared/test_sse.py::test_request_context_isolation 9580[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[prefix{+path}/suffix-True] 9581[gw2] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[ref-is-not-dereferenced] 9582tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[malformed-or-empty-applicators-ignored] 9583[gw2] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[malformed-or-empty-applicators-ignored] 9584tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[empty] 9585tests/shared/test_uri_template.py::test_is_template[{invalid syntax but still a template}-True] 9586[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[{invalid syntax but still a template}-True] 9587[gw2] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[empty] 9588tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[space] 9589tests/shared/test_uri_template.py::test_parse_simple_variable 9590[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_simple_variable 9591[gw2] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[space] 9592tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[colon] 9593tests/shared/test_uri_template.py::test_parse_all_operators[{+path}-+] 9594[gw2] [ 80%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[colon] 9595tests/shared/test_uri_template.py::test_parse_rejects_empty_spec_in_list 9596[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{+path}-+] 9597tests/shared/test_uri_template.py::test_parse_all_operators[{#frag}-#] 9598[gw2] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_empty_spec_in_list 9599tests/shared/test_uri_template.py::test_parse_rejects_prefix_modifier 9600[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{#frag}-#] 9601[gw2] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_prefix_modifier 9602tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{var*}] 9603tests/shared/test_uri_template.py::test_parse_all_operators[{.ext}-.] 9604[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{.ext}-.] 9605[gw0] [ 80%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_a_raising_unanswered_hook_is_contained[connection-closing] 9606tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_raises_connection_closed_when_read_stream_eofs_mid_await 9607[gw2] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{var*}] 9608tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{+var*}] 9609[gw2] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{+var*}] 9610[gw0] [ 80%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_raises_connection_closed_when_read_stream_eofs_mid_await 9611tests/shared/test_uri_template.py::test_parse_all_operators[{/seg}-/] 9612tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{#var*}] 9613[gw2] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{#var*}] 9614[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{/seg}-/] 9615tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{?var*}] 9616[gw2] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{?var*}] 9617tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{&var*}] 9618tests/shared/test_jsonrpc_dispatcher.py::test_run_returns_cleanly_when_read_stream_receive_end_is_closed 9619[gw0] [ 80%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_run_returns_cleanly_when_read_stream_receive_end_is_closed 9620[gw2] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{&var*}] 9621tests/shared/test_uri_template.py::test_parse_all_operators[{;param}-;] 9622tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{/a*}/x{/b*}] 9623[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{;param}-;] 9624tests/shared/test_uri_template.py::test_parse_all_operators[{?q}-?] 9625tests/shared/test_jsonrpc_dispatcher.py::test_run_cancels_in_flight_handlers_when_read_stream_eofs 9626[gw0] [ 80%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_run_cancels_in_flight_handlers_when_read_stream_eofs 9627tests/shared/test_jsonrpc_dispatcher.py::test_run_closes_write_stream_on_exit 9628[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{?q}-?] 9629tests/shared/test_uri_template.py::test_parse_all_operators[{&next}-&] 9630[gw2] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{/a*}/x{/b*}] 9631tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a,b}] 9632[gw2] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a,b}] 9633tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a}/x/{+b}] 9634[gw2] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a}/x/{+b}] 9635tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a},{+b}] 9636[gw2] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a},{+b}] 9637tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{#a}/x/{+b}] 9638[gw0] [ 80%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_run_closes_write_stream_on_exit 9639tests/shared/test_jsonrpc_dispatcher.py::test_late_response_after_timeout_is_dropped_without_crashing 9640[gw2] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{#a}/x/{+b}] 9641[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{&next}-&] 9642tests/shared/test_uri_template.py::test_parse_multiple_variables_in_expression 9643[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_multiple_variables_in_expression 9644tests/shared/test_uri_template.py::test_parse_multiple_expressions 9645tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a}.foo.{#b}] 9646[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_multiple_expressions 9647tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{?a,b}-expected0] 9648[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a}.foo.{#b}] 9649tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{b}] 9650[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{b}] 9651tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a}{b}] 9652[gw1] [ 81%] PASSED tests/shared/test_sse.py::test_request_context_isolation 9653tests/shared/test_sse.py::test_sse_message_id_coercion 9654[gw1] [ 81%] PASSED tests/shared/test_sse.py::test_sse_message_id_coercion 9655tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/-/messages/] 9656[gw1] [ 81%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/-/messages/] 9657tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[messages/-/messages/] 9658[gw1] [ 81%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[messages/-/messages/] 9659tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/-/] 9660[gw1] [ 81%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/-/] 9661tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[http://example.com/messages/-ValueError] 9662[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a}{b}] 9663tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a}{b}] 9664[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a}{b}] 9665tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{;a}{b}] 9666[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{?a,b}-expected0] 9667tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{?a,b}{&c}-expected1] 9668[gw1] [ 81%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[http://example.com/messages/-ValueError] 9669[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{;a}{b}] 9670tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{b}X{+p}] 9671[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{?a,b}{&c}-expected1] 9672[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{b}X{+p}] 9673tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[//example.com/messages/-ValueError] 9674tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}-expected2] 9675tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+p}X{a}{b}] 9676[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+p}X{a}{b}] 9677[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}-expected2] 9678[gw1] [ 81%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[//example.com/messages/-ValueError] 9679tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[ftp://example.com/messages/-ValueError] 9680tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[pre{a}{b}post] 9681[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[pre{a}{b}post] 9682tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{&c}-expected3] 9683[gw0] [ 81%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_late_response_after_timeout_is_dropped_without_crashing 9684tests/shared/test_jsonrpc_dispatcher.py::test_raise_handler_exceptions_true_propagates_out_of_run 9685[gw0] [ 81%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_raise_handler_exceptions_true_propagates_out_of_run 9686tests/shared/test_jsonrpc_dispatcher.py::test_ctx_send_raw_request_tags_outbound_with_server_message_metadata 9687[gw0] [ 81%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_ctx_send_raw_request_tags_outbound_with_server_message_metadata 9688tests/shared/test_jsonrpc_dispatcher.py::test_courtesy_cancel_on_timeout_tags_outbound_with_server_message_metadata 9689[gw0] [ 81%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_courtesy_cancel_on_timeout_tags_outbound_with_server_message_metadata 9690tests/shared/test_jsonrpc_dispatcher.py::test_dispatch_context_request_with_dropped_resumption_hints_still_sends_courtesy_cancel 9691[gw0] [ 81%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_dispatch_context_request_with_dropped_resumption_hints_still_sends_courtesy_cancel 9692tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_sends_courtesy_cancellation_on_the_wire 9693tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+b}] 9694[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+b}] 9695tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+a}{b}] 9696[gw1] [ 81%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[ftp://example.com/messages/-ValueError] 9697[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+a}{b}] 9698[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{&c}-expected3] 9699tests/shared/test_uri_template.py::test_parse_explode_modifier 9700[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_explode_modifier 9701tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{#a}{b}] 9702tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/?param=value-ValueError] 9703[gw1] [ 81%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/?param=value-ValueError] 9704tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/#fragment-ValueError] 9705tests/shared/test_uri_template.py::test_parse_explode_supported_operators[{.labels*}] 9706[gw0] [ 81%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_sends_courtesy_cancellation_on_the_wire 9707tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_during_blocked_request_write_still_sends_courtesy_cancellation 9708[gw1] [ 81%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/#fragment-ValueError] 9709[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{#a}{b}] 9710tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a}{+b}] 9711tests/shared/test_sse.py::test_sse_client_handles_empty_keepalive_pings 9712[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_explode_supported_operators[{.labels*}] 9713tests/shared/test_uri_template.py::test_parse_explode_supported_operators[{;params*}] 9714[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a}{+b}] 9715[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_explode_supported_operators[{;params*}] 9716tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a}{+b}] 9717[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a}{+b}] 9718tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[x{name}{+path}y] 9719[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[x{name}{+path}y] 9720tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[X{+a}{b}] 9721[gw0] [ 81%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_during_blocked_request_write_still_sends_courtesy_cancellation 9722tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_during_delivered_request_write_sends_courtesy_cancellation 9723tests/shared/test_uri_template.py::test_parse_mixed_explode_and_plain 9724[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_mixed_explode_and_plain 9725tests/shared/test_uri_template.py::test_parse_varname_with_dots_and_underscores 9726[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[X{+a}{b}] 9727tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+p}{n}] 9728[gw1] [ 81%] PASSED tests/shared/test_sse.py::test_sse_client_handles_empty_keepalive_pings 9729tests/shared/test_sse.py::test_sse_client_follows_redirect_within_origin_on_connect 9730[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_varname_with_dots_and_underscores 9731[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+p}{n}] 9732tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{x}Y{+p}{n}] 9733tests/shared/test_uri_template.py::test_parse_rejects_unclosed_expression 9734[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_expression 9735[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{x}Y{+p}{n}] 9736tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{?a}{+b}x] 9737[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{?a}{+b}x] 9738[gw1] [ 81%] PASSED tests/shared/test_sse.py::test_sse_client_follows_redirect_within_origin_on_connect 9739tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}-{+p}{b}] 9740tests/shared/test_uri_template.py::test_parse_rejects_empty_expression 9741[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_empty_expression 9742tests/shared/test_sse.py::test_sse_client_does_not_follow_redirect_to_another_origin_on_connect 9743[gw1] [ 81%] PASSED tests/shared/test_sse.py::test_sse_client_does_not_follow_redirect_to_another_origin_on_connect 9744tests/shared/test_uri_template.py::test_parse_rejects_operator_without_variable 9745[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}-{+p}{b}] 9746tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+p}-{b}] 9747tests/shared/test_sse.py::test_sse_session_cleanup_on_disconnect 9748[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+p}-{b}] 9749tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{name}{+path}{.ext}] 9750[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{name}{+path}{.ext}] 9751tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{base}{+p}{;k}] 9752[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_operator_without_variable 9753tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[-bad] 9754[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{base}{+p}{;k}] 9755[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[-bad] 9756tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad-name] 9757tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+b}{c}] 9758[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+b}{c}] 9759tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+p}{b}Y{c}] 9760[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad-name] 9761tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad name] 9762[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+p}{b}Y{c}] 9763tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[X{a}{+p}{b}Y{c}] 9764[gw2] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[X{a}{+p}{b}Y{c}] 9765tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{/p*}{b}] 9766[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad name] 9767tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad/name] 9768[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad/name] 9769tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo..bar] 9770[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{/p*}{b}] 9771tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{/p*}] 9772[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo..bar] 9773tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo.] 9774[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{/p*}] 9775tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/seg}{;k*}] 9776[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo.] 9777[gw1] [ 82%] PASSED tests/shared/test_sse.py::test_sse_session_cleanup_on_disconnect 9778tests/shared/test_streamable_http.py::test_accept_header_validation 9779tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo\n] 9780[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/seg}{;k*}] 9781tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[item://{id}{;opts*}] 9782[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo\n] 9783tests/shared/test_uri_template.py::test_parse_accepts_dotted_varname 9784[gw1] [ 82%] PASSED tests/shared/test_streamable_http.py::test_accept_header_validation 9785[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[item://{id}{;opts*}] 9786tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[api{;key}{+rest}] 9787[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_accepts_dotted_varname 9788tests/shared/test_streamable_http.py::test_accept_header_wildcard[*/*] 9789tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{x}/{x}] 9790[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[api{;key}{+rest}] 9791tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{/b*}] 9792[gw1] [ 82%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[*/*] 9793[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{x}/{x}] 9794[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{/b*}] 9795tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{.b*}] 9796tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{x,x}] 9797[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{x,x}] 9798tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/*, text/*] 9799tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{a}{b}{a}] 9800[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{.b*}] 9801tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a*}{;b*}] 9802[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{a}{b}{a}] 9803[gw1] [ 82%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/*, text/*] 9804tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{+x}/foo/{x}] 9805[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a*}{;b*}] 9806tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{b}{.c*}] 9807[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{+x}/foo/{x}] 9808[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{b}{.c*}] 9809tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[/x{?a}{?b}] 9810tests/shared/test_streamable_http.py::test_accept_header_wildcard[text/*, application/json] 9811[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[/x{?a}{?b}] 9812tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[/x{?a}/y{?b}] 9813[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[/x{?a}/y{?b}] 9814tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+a}{/b*}] 9815[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+a}{/b*}] 9816tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://docs/{+path}] 9817[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://docs/{+path}] 9818tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://{+path}.txt] 9819tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[{?a}{&b}{?c}] 9820[gw1] [ 82%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[text/*, application/json] 9821tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/json, text/*] 9822[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://{+path}.txt] 9823[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[{?a}{&b}{?c}] 9824tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://{+path}/edit] 9825[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://{+path}/edit] 9826tests/shared/test_uri_template.py::test_query_tail_roundtrip_correct_spellings 9827[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_query_tail_roundtrip_correct_spellings 9828tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api/{+path}{?v,page}] 9829[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api/{+path}{?v,page}] 9830[gw1] [ 82%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/json, text/*] 9831tests/shared/test_streamable_http.py::test_accept_header_wildcard[*/*;q=0.8] 9832tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api/{+path}{&next}] 9833[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api/{+path}{&next}] 9834tests/shared/test_uri_template.py::test_invalid_uri_template_is_value_error 9835[gw1] [ 82%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[*/*;q=0.8] 9836tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[page{#section}] 9837[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[page{#section}] 9838tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{a}{#b}] 9839tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/*;q=0.9, text/*;q=0.8] 9840[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_invalid_uri_template_is_value_error 9841tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{{name}}] 9842[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{{name}}] 9843[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{a}{#b}] 9844tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}/sep/{b}] 9845[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}/sep/{b}] 9846[gw0] [ 82%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_during_delivered_request_write_sends_courtesy_cancellation 9847tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a},{b}] 9848tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{a{b}c}] 9849[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{a{b}c}] 9850tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{{]{}}{}] 9851[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{{]{}}{}] 9852tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancelled_before_request_write_starts_sends_no_courtesy_cancellation 9853[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a},{b}] 9854tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{/b}] 9855[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{/b}] 9856tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{.b}] 9857[gw1] [ 82%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/*;q=0.9, text/*;q=0.8] 9858tests/shared/test_streamable_http.py::test_accept_header_incompatible[text/html] 9859tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{a,{b}] 9860[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{a,{b}] 9861tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{-0] 9862[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{.b}] 9863tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{;b}] 9864[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{-0] 9865[gw1] [ 82%] PASSED tests/shared/test_streamable_http.py::test_accept_header_incompatible[text/html] 9866tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{{-0] 9867[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{{-0] 9868tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[file://{name-7] 9869[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{;b}] 9870tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+path}{.ext}] 9871tests/shared/test_streamable_http.py::test_accept_header_incompatible[application/*] 9872[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+path}{.ext}] 9873tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[prefix/{+path}{.ext}] 9874[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[file://{name-7] 9875tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{a}{-3] 9876[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{a}{-3] 9877[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[prefix/{+path}{.ext}] 9878tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[tree://nodes{/path*}] 9879[gw2] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[tree://nodes{/path*}] 9880tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api{;key}/{+rest}] 9881[gw1] [ 82%] PASSED tests/shared/test_streamable_http.py::test_accept_header_incompatible[application/*] 9882tests/shared/test_streamable_http.py::test_accept_header_incompatible[text/*] 9883[gw0] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancelled_before_request_write_starts_sends_no_courtesy_cancellation 9884[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api{;key}/{+rest}] 9885[gw1] [ 83%] PASSED tests/shared/test_streamable_http.py::test_accept_header_incompatible[text/*] 9886tests/shared/test_uri_template.py::test_expand[{;name}-variables30-;name] 9887[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{;name}-variables30-;name] 9888tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_with_resumption_hints_suppresses_the_courtesy_cancellation 9889tests/shared/test_streamable_http.py::test_content_type_validation 9890tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[}{-1] 9891[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[}{-1] 9892[gw1] [ 83%] PASSED tests/shared/test_streamable_http.py::test_content_type_validation 9893tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[}}] 9894tests/shared/test_uri_template.py::test_expand[{;name}-variables31-;name=,] 9895[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[}}] 9896tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[}] 9897tests/shared/test_streamable_http.py::test_json_validation 9898[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[}] 9899[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{;name}-variables31-;name=,] 9900tests/shared/test_uri_template.py::test_expand[{?name}-variables32-?name=] 9901[gw1] [ 83%] PASSED tests/shared/test_streamable_http.py::test_json_validation 9902[gw0] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_with_resumption_hints_suppresses_the_courtesy_cancellation 9903[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{?name}-variables32-?name=] 9904tests/shared/test_streamable_http.py::test_json_parsing 9905tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[a}b] 9906[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[a}b] 9907tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[{a}}{b}] 9908tests/shared/test_uri_template.py::test_expand[{&name}-variables33-&name=] 9909[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{&name}-variables33-&name=] 9910[gw1] [ 83%] PASSED tests/shared/test_streamable_http.py::test_json_parsing 9911tests/shared/test_uri_template.py::test_expand[{;name}-variables34-;name] 9912tests/shared/test_jsonrpc_dispatcher.py::test_timeout_with_resumption_hints_suppresses_the_courtesy_cancellation 9913[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[{a}}{b}] 9914tests/shared/test_uri_template.py::test_parse_stray_close_brace_between_expressions 9915tests/shared/test_streamable_http.py::test_method_not_allowed 9916[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{;name}-variables34-;name] 9917tests/shared/test_uri_template.py::test_expand[{?q,page}-variables35-?q=x] 9918[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_stray_close_brace_between_expressions 9919tests/shared/test_uri_template.py::test_parse_rejects_oversized_template 9920[gw1] [ 83%] PASSED tests/shared/test_streamable_http.py::test_method_not_allowed 9921tests/shared/test_streamable_http.py::test_session_validation 9922[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{?q,page}-variables35-?q=x] 9923tests/shared/test_uri_template.py::test_expand[{a,b}-variables36-x] 9924[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{a,b}-variables36-x] 9925tests/shared/test_uri_template.py::test_expand[{?page}-variables37-] 9926[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_oversized_template 9927[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{?page}-variables37-] 9928tests/shared/test_uri_template.py::test_expand[{/path*}-variables38-] 9929[gw1] [ 83%] PASSED tests/shared/test_streamable_http.py::test_session_validation 9930tests/shared/test_streamable_http.py::test_session_id_pattern 9931tests/shared/test_uri_template.py::test_parse_rejects_too_many_variables 9932[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_too_many_variables 9933[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{/path*}-variables38-] 9934tests/shared/test_uri_template.py::test_expand[file://static-variables39-file://static] 9935tests/shared/test_uri_template.py::test_parse_counts_variables_not_expressions 9936[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_counts_variables_not_expressions 9937[gw1] [ 83%] PASSED tests/shared/test_streamable_http.py::test_session_id_pattern 9938tests/shared/test_streamable_http.py::test_transport_whose_idle_period_ran_out_answers_as_terminated 9939tests/shared/test_uri_template.py::test_parse_custom_limits_allow_larger 9940[gw0] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_timeout_with_resumption_hints_suppresses_the_courtesy_cancellation 9941[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[file://static-variables39-file://static] 9942tests/shared/test_uri_template.py::test_expand_encodes_special_chars_in_simple 9943[gw1] [ 83%] PASSED tests/shared/test_streamable_http.py::test_transport_whose_idle_period_ran_out_answers_as_terminated 9944[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_custom_limits_allow_larger 9945tests/shared/test_uri_template.py::test_equality_based_on_template_string 9946tests/shared/test_jsonrpc_dispatcher.py::test_cancel_on_abandon_false_suppresses_the_courtesy_cancellation_on_timeout 9947tests/shared/test_streamable_http.py::test_transport_reports_stream_closure_when_host_exits_without_terminating 9948[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand_encodes_special_chars_in_simple 9949tests/shared/test_uri_template.py::test_expand_preserves_special_chars_in_reserved 9950[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_equality_based_on_template_string 9951tests/shared/test_uri_template.py::test_frozen 9952[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand_preserves_special_chars_in_reserved 9953tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[42] 9954[gw0] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancel_on_abandon_false_suppresses_the_courtesy_cancellation_on_timeout 9955[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_frozen 9956[gw1] [ 83%] PASSED tests/shared/test_streamable_http.py::test_transport_reports_stream_closure_when_host_exits_without_terminating 9957tests/shared/test_streamable_http.py::test_session_termination 9958[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[42] 9959tests/shared/test_uri_template.py::test_expand[{var}-variables0-value] 9960[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{var}-variables0-value] 9961tests/shared/test_uri_template.py::test_expand[{var}-variables1-hello%20world] 9962tests/shared/test_jsonrpc_dispatcher.py::test_transport_write_timeout_propagates_raw_when_no_request_timeout_is_set 9963tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[None] 9964[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[None] 9965tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[3.14] 9966[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{var}-variables1-hello%20world] 9967tests/shared/test_uri_template.py::test_expand[{var}-variables2-a%2Fb] 9968[gw1] [ 83%] PASSED tests/shared/test_streamable_http.py::test_session_termination 9969[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[3.14] 9970tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[value3] 9971tests/shared/test_streamable_http.py::test_response 9972[gw0] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_transport_write_timeout_propagates_raw_when_no_request_timeout_is_set 9973tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_courtesy_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] 9974[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{var}-variables2-a%2Fb] 9975tests/shared/test_uri_template.py::test_expand[file://docs/{name}-variables3-file://docs/readme.txt] 9976[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[file://docs/{name}-variables3-file://docs/readme.txt] 9977tests/shared/test_uri_template.py::test_expand[{+var}-variables4-a/b/c] 9978[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables4-a/b/c] 9979tests/shared/test_uri_template.py::test_expand[{+var}-variables5-a?b#c] 9980[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[value3] 9981tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[value4] 9982[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables5-a?b#c] 9983tests/shared/test_uri_template.py::test_expand[{+var}-variables6-path%2Fto] 9984[gw1] [ 83%] PASSED tests/shared/test_streamable_http.py::test_response 9985tests/shared/test_streamable_http.py::test_json_response 9986[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables6-path%2Fto] 9987tests/shared/test_uri_template.py::test_expand[{+var}-variables7-50%25] 9988[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[value4] 9989[gw0] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_courtesy_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] 9990tests/shared/test_jsonrpc_dispatcher.py::test_timeout_courtesy_cancel_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] 9991[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables7-50%25] 9992tests/shared/test_uri_template.py::test_expand[{+var}-variables8-50%252] 9993[gw1] [ 83%] PASSED tests/shared/test_streamable_http.py::test_json_response 9994tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[bytes] 9995tests/shared/test_streamable_http.py::test_json_response_accept_json_only 9996[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables8-50%252] 9997tests/shared/test_uri_template.py::test_expand[{+var}-variables9-a%2Fb%20c] 9998[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables9-a%2Fb%20c] 9999tests/shared/test_uri_template.py::test_expand[{#var}-variables10-#a%2Fb] 10000[gw2] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[bytes] 10001[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{#var}-variables10-#a%2Fb] 10002tests/shared/test_uri_template.py::test_expand[{var}-variables11-path%252Fto] 10003[gw1] [ 84%] PASSED tests/shared/test_streamable_http.py::test_json_response_accept_json_only 10004tests/shared/test_streamable_http.py::test_json_response_missing_accept_header 10005tests/shared/test_uri_template.py::test_match[{var}-hello-expected0] 10006[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{var}-variables11-path%252Fto] 10007[gw0] [ 84%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_timeout_courtesy_cancel_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] 10008tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_error_response_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] 10009tests/shared/test_uri_template.py::test_expand[file://docs/{+path}-variables12-file://docs/src/main.py] 10010[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[file://docs/{+path}-variables12-file://docs/src/main.py] 10011tests/shared/test_uri_template.py::test_expand[{#var}-variables13-#section] 10012[gw1] [ 84%] PASSED tests/shared/test_streamable_http.py::test_json_response_missing_accept_header 10013[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[{var}-hello-expected0] 10014[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{#var}-variables13-#section] 10015tests/shared/test_uri_template.py::test_expand[{#var}-variables14-#a/b] 10016tests/shared/test_streamable_http.py::test_json_response_incorrect_accept_header 10017tests/shared/test_uri_template.py::test_match[file://docs/{name}-file://docs/readme.txt-expected1] 10018[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{#var}-variables14-#a/b] 10019tests/shared/test_uri_template.py::test_expand[file{.ext}-variables15-file.txt] 10020[gw1] [ 84%] PASSED tests/shared/test_streamable_http.py::test_json_response_incorrect_accept_header 10021[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[file{.ext}-variables15-file.txt] 10022tests/shared/test_uri_template.py::test_expand[{/seg}-variables16-/docs] 10023tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[*/*] 10024[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{/seg}-variables16-/docs] 10025[gw1] [ 84%] PASSED tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[*/*] 10026[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[file://docs/{name}-file://docs/readme.txt-expected1] 10027tests/shared/test_uri_template.py::test_match[{a}/{b}-foo/bar-expected2] 10028[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[{a}/{b}-foo/bar-expected2] 10029tests/shared/test_uri_template.py::test_expand[{;id}-variables17-;id=42] 10030[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{;id}-variables17-;id=42] 10031[gw0] [ 84%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_error_response_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] 10032tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_answers_in_flight_request_with_connection_closed 10033tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[application/*] 10034tests/shared/test_uri_template.py::test_expand[{;id}-variables18-;id] 10035tests/shared/test_uri_template.py::test_match[file://docs/{+path}-file://docs/src/main.py-expected3] 10036[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{;id}-variables18-;id] 10037tests/shared/test_uri_template.py::test_expand[{?q}-variables19-?q=search] 10038[gw1] [ 84%] PASSED tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[application/*] 10039[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{?q}-variables19-?q=search] 10040tests/shared/test_uri_template.py::test_expand[{?q}-variables20-?q=] 10041tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[application/*;q=0.9] 10042[gw0] [ 84%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_answers_in_flight_request_with_connection_closed 10043[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[file://docs/{+path}-file://docs/src/main.py-expected3] 10044tests/shared/test_uri_template.py::test_match[{+var}-a/b/c-expected4] 10045[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{?q}-variables20-?q=] 10046tests/shared/test_uri_template.py::test_expand[/search{?q,lang}-variables21-/search?q=mcp&lang=en] 10047[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[/search{?q,lang}-variables21-/search?q=mcp&lang=en] 10048[gw1] [ 84%] PASSED tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[application/*;q=0.9] 10049tests/shared/test_streamable_http.py::test_get_sse_stream 10050tests/shared/test_uri_template.py::test_expand[?a=1{&b}-variables22-?a=1&b=2] 10051[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[?a=1{&b}-variables22-?a=1&b=2] 10052[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[{+var}-a/b/c-expected4] 10053tests/shared/test_uri_template.py::test_match[page{#section}-page#intro-expected5] 10054tests/shared/test_uri_template.py::test_expand[{x,y}-variables23-1,2] 10055tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_cancel_during_delivered_result_write_writes_no_second_answer 10056[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{x,y}-variables23-1,2] 10057tests/shared/test_uri_template.py::test_expand[{/list}-variables24-/a,b,c] 10058[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[page{#section}-page#intro-expected5] 10059[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{/list}-variables24-/a,b,c] 10060tests/shared/test_uri_template.py::test_expand[{?list}-variables25-?list=a,b] 10061tests/shared/test_uri_template.py::test_match[{+path}{/name}-a/b/c/readme-expected6] 10062[gw1] [ 84%] PASSED tests/shared/test_streamable_http.py::test_get_sse_stream 10063tests/shared/test_streamable_http.py::test_get_validation 10064[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{?list}-variables25-?list=a,b] 10065tests/shared/test_uri_template.py::test_expand[{/path*}-variables26-/a/b/c] 10066[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[{+path}{/name}-a/b/c/readme-expected6] 10067tests/shared/test_uri_template.py::test_match[{+path}{.ext}-src/main.py-expected7] 10068[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{/path*}-variables26-/a/b/c] 10069[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[{+path}{.ext}-src/main.py-expected7] 10070tests/shared/test_uri_template.py::test_expand[{.labels*}-variables27-.x.y] 10071tests/shared/test_uri_template.py::test_match[prefix/{+path}{.ext}-prefix/a/b.txt-expected8] 10072[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{.labels*}-variables27-.x.y] 10073tests/shared/test_uri_template.py::test_expand[{;keys*}-variables28-;keys=a;keys=b] 10074[gw1] [ 84%] PASSED tests/shared/test_streamable_http.py::test_get_validation 10075[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[prefix/{+path}{.ext}-prefix/a/b.txt-expected8] 10076tests/shared/test_uri_template.py::test_match[{#section}{/page}-#intro/1-expected9] 10077[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{;keys*}-variables28-;keys=a;keys=b] 10078tests/shared/test_streamable_http.py::test_client_includes_protocol_version_header_after_init 10079[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[{#section}{/page}-#intro/1-expected9] 10080tests/shared/test_uri_template.py::test_match[{owner}@{+path}-alice@src/main-expected10] 10081tests/shared/test_uri_template.py::test_expand[{;keys*}-variables29-;keys=a;keys;keys=b] 10082[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_expand[{;keys*}-variables29-;keys=a;keys;keys=b] 10083tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%3Fb-expected1] 10084[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%3Fb-expected1] 10085[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[{owner}@{+path}-alice@src/main-expected10] 10086tests/shared/test_uri_template.py::test_match[{+path}@{name}-src@main@v1-expected11] 10087tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%23b-expected2] 10088[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[{+path}@{name}-src@main@v1-expected11] 10089tests/shared/test_uri_template.py::test_match[file{.ext}-file.txt-expected12] 10090[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%23b-expected2] 10091tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%26b-expected3] 10092[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[file{.ext}-file.txt-expected12] 10093tests/shared/test_uri_template.py::test_match[api{/version}-api/v1-expected13] 10094[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%26b-expected3] 10095tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[file{.ext}-file.a%2Eb-expected4] 10096[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[file{.ext}-file.a%2Eb-expected4] 10097tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[api{/v}-api/a%2Fb-expected5] 10098[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[api{/version}-api/v1-expected13] 10099tests/shared/test_uri_template.py::test_match[item{;id}-item;id=42-expected14] 10100[gw1] [ 84%] PASSED tests/shared/test_streamable_http.py::test_client_includes_protocol_version_header_after_init 10101[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[item{;id}-item;id=42-expected14] 10102[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[api{/v}-api/a%2Fb-expected5] 10103tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[search{?q}-search?q=a%26b-expected6] 10104[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[search{?q}-search?q=a%26b-expected6] 10105tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{;filter}-;filter=a%3Bb-expected7] 10106tests/shared/test_streamable_http.py::test_server_validates_protocol_version_header 10107tests/shared/test_uri_template.py::test_match[item{;id}-item;id-expected15] 10108[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[item{;id}-item;id-expected15] 10109tests/shared/test_uri_template.py::test_match[item{;keys*}-item;keys=a;keys=b-expected16] 10110[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{;filter}-;filter=a%3Bb-expected7] 10111tests/shared/test_uri_template.py::test_match_reserved_expansion_handles_slash 10112[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_reserved_expansion_handles_slash 10113[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[item{;keys*}-item;keys=a;keys=b-expected16] 10114tests/shared/test_uri_template.py::test_match[item{;keys*}-item;keys=a;keys;keys=b-expected17] 10115tests/shared/test_uri_template.py::test_match_double_encoding_decoded_once 10116[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_double_encoding_decoded_once 10117[gw1] [ 84%] PASSED tests/shared/test_streamable_http.py::test_server_validates_protocol_version_header 10118[gw2] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[item{;keys*}-item;keys=a;keys;keys=b-expected17] 10119tests/shared/test_uri_template.py::test_match[item{;keys*}-item-expected18] 10120tests/shared/test_uri_template.py::test_match_rejects_oversized_uri 10121tests/shared/test_streamable_http.py::test_server_backwards_compatibility_no_protocol_version 10122[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[item{;keys*}-item-expected18] 10123tests/shared/test_uri_template.py::test_match[search{?q}-search?q=hello-expected19] 10124[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=hello-expected19] 10125[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_rejects_oversized_uri 10126tests/shared/test_uri_template.py::test_match_accepts_uri_within_custom_limit 10127[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_accepts_uri_within_custom_limit 10128tests/shared/test_uri_template.py::test_match_default_uri_length_limit 10129tests/shared/test_uri_template.py::test_match[search{?q}-search?q=-expected20] 10130[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=-expected20] 10131[gw1] [ 85%] PASSED tests/shared/test_streamable_http.py::test_server_backwards_compatibility_no_protocol_version 10132tests/shared/test_streamable_http.py::test_client_crash_handled 10133tests/shared/test_uri_template.py::test_match[search{?q}-search-expected21] 10134[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search-expected21] 10135tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?q=mcp&lang=en-expected22] 10136[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_default_uri_length_limit 10137tests/shared/test_uri_template.py::test_match_explode_encoded_separator_in_segment 10138[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?q=mcp&lang=en-expected22] 10139tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?lang=en&q=mcp-expected23] 10140[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_explode_encoded_separator_in_segment 10141tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{var}-variables0] 10142[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{var}-variables0] 10143tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file://docs/{name}-variables1] 10144[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?lang=en&q=mcp-expected23] 10145tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?q=mcp-expected24] 10146[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file://docs/{name}-variables1] 10147tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file://docs/{+path}-variables2] 10148[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file://docs/{+path}-variables2] 10149[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?q=mcp-expected24] 10150tests/shared/test_uri_template.py::test_match[search{?q,lang}-search-expected25] 10151[gw0] [ 85%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_cancel_during_delivered_result_write_writes_no_second_answer 10152tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[search{?q,lang}-variables3] 10153[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[search{?q,lang}-variables3] 10154tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file{.ext}-variables4] 10155[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file{.ext}-variables4] 10156tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[/files{/path*}-variables5] 10157[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[/files{/path*}-variables5] 10158tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{var}-variables6] 10159[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q,lang}-search-expected25] 10160tests/shared/test_uri_template.py::test_match[search{?q}-search?q=mcp&utm=x&ref=y-expected26] 10161[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=mcp&utm=x&ref=y-expected26] 10162tests/shared/test_jsonrpc_dispatcher.py::test_request_write_failure_propagates_and_leaves_no_pending_entry 10163tests/shared/test_uri_template.py::test_match[search{?q}-search?q=hello%20world-expected27] 10164[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{var}-variables6] 10165[gw0] [ 85%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_request_write_failure_propagates_and_leaves_no_pending_entry 10166tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;id}-variables7] 10167[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;id}-variables7] 10168[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=hello%20world-expected27] 10169tests/shared/test_uri_template.py::test_match[search{?q}-search?q=C++-expected28] 10170tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;id}-variables8] 10171[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;id}-variables8] 10172tests/shared/test_jsonrpc_dispatcher.py::test_request_write_on_torn_down_transport_raises_connection_closed 10173tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[page{#section}-variables9] 10174[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=C++-expected28] 10175[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[page{#section}-variables9] 10176tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file{.ext}-variables10] 10177[gw1] [ 85%] PASSED tests/shared/test_streamable_http.py::test_client_crash_handled 10178tests/shared/test_uri_template.py::test_match[search{?q}-search?q=1.0+build.5-expected29] 10179[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file{.ext}-variables10] 10180tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[api{/v}-variables11] 10181tests/shared/test_streamable_http.py::test_handle_sse_event_skips_empty_data 10182[gw0] [ 85%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_request_write_on_torn_down_transport_raises_connection_closed 10183[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[api{/v}-variables11] 10184[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=1.0+build.5-expected29] 10185tests/shared/test_uri_template.py::test_match[logs://{service}{?level}-logs://api?level=error#section1-expected30] 10186tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[x{name}y-variables12] 10187[gw1] [ 85%] PASSED tests/shared/test_streamable_http.py::test_handle_sse_event_skips_empty_data 10188tests/shared/test_jsonrpc_dispatcher.py::test_notify_after_connection_close_is_dropped_with_debug_log 10189[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[logs://{service}{?level}-logs://api?level=error#section1-expected30] 10190[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[x{name}y-variables12] 10191tests/shared/test_streamable_http.py::test_close_sse_stream_callback_not_provided_for_old_protocol_version 10192tests/shared/test_uri_template.py::test_match[search{?q}-search#frag-expected31] 10193tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;keys*}-variables13] 10194[gw1] [ 85%] PASSED tests/shared/test_streamable_http.py::test_close_sse_stream_callback_not_provided_for_old_protocol_version 10195[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search#frag-expected31] 10196tests/shared/test_uri_template.py::test_match[api{?v}{&page,limit}-api?limit=10&v=2-expected32] 10197tests/shared/test_streamable_http.py::test_close_sse_stream_callback_not_provided_for_unknown_protocol_version 10198[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;keys*}-variables13] 10199tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;keys*}-variables14] 10200[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[api{?v}{&page,limit}-api?limit=10&v=2-expected32] 10201[gw1] [ 85%] PASSED tests/shared/test_streamable_http.py::test_close_sse_stream_callback_not_provided_for_unknown_protocol_version 10202[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;keys*}-variables14] 10203tests/shared/test_uri_template.py::test_match[api{&page}-api&page=2-expected33] 10204tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{/path*}-variables15] 10205tests/shared/test_streamable_http.py::test_initialize_with_unknown_protocol_version_gets_no_priming_event 10206[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[api{&page}-api&page=2-expected33] 10207[gw0] [ 85%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_notify_after_connection_close_is_dropped_with_debug_log 10208[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{/path*}-variables15] 10209tests/shared/test_jsonrpc_dispatcher.py::test_notify_on_torn_down_transport_is_dropped_with_debug_log 10210tests/shared/test_uri_template.py::test_match[api?x{?page}-api?x?page=2-expected34] 10211[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[api?x{?page}-api?x?page=2-expected34] 10212tests/shared/test_uri_template.py::test_match[page{#section}{?q}-page#intro?q=x-expected35] 10213[gw1] [ 85%] PASSED tests/shared/test_streamable_http.py::test_initialize_with_unknown_protocol_version_gets_no_priming_event 10214tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{/path*}-variables16] 10215tests/shared/test_streamable_http.py::test_server_close_sse_stream_via_context 10216[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[page{#section}{?q}-page#intro?q=x-expected35] 10217[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{/path*}-variables16] 10218tests/shared/test_uri_template.py::test_match[page#lit{?q}-page#lit?q=x-expected36] 10219[gw0] [ 85%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_notify_on_torn_down_transport_is_dropped_with_debug_log 10220tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[host{.labels*}-variables17] 10221[gw2] [ 85%] PASSED tests/shared/test_uri_template.py::test_match[page#lit{?q}-page#lit?q=x-expected36] 10222tests/shared/test_jsonrpc_dispatcher.py::test_notification_handler_exception_is_contained 10223tests/test_examples.py::test_docs_examples[docs/whats-new.md:169-171] 10224[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[host{.labels*}-variables17] 10225tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables18] 10226[gw0] [ 85%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_notification_handler_exception_is_contained 10227tests/shared/test_jsonrpc_dispatcher.py::test_spawned_notification_handlers_run_concurrently 10228[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables18] 10229tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables19] 10230[gw0] [ 85%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_spawned_notification_handlers_run_concurrently 10231[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables19] 10232tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables20] 10233tests/shared/test_jsonrpc_dispatcher.py::test_ctx_message_metadata_carries_inbound_request_metadata 10234[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables20] 10235tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[api{;key}=base/{+path}-variables21] 10236[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[api{;key}=base/{+path}-variables21] 10237tests/shared/test_uri_template.py::test_match_simple_var_accepts_empty 10238[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_simple_var_accepts_empty 10239tests/shared/test_uri_template.py::test_match_inverts_expand_for_every_parseable_template 10240[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_ctx_message_metadata_carries_inbound_request_metadata 10241[gw3] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_inverts_expand_for_every_parseable_template 10242tests/shared/test_jsonrpc_dispatcher.py::test_transport_stamped_can_send_request_makes_the_request_channel_refuse 10243tests/shared/test_uri_template.py::test_match_never_raises 10244[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_transport_stamped_can_send_request_makes_the_request_channel_refuse 10245tests/shared/test_jsonrpc_dispatcher.py::test_ctx_message_metadata_carries_inbound_notification_metadata 10246[gw3] [ 86%] PASSED tests/shared/test_uri_template.py::test_match_never_raises 10247tests/test_examples.py::test_simple_echo 10248[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_ctx_message_metadata_carries_inbound_notification_metadata 10249tests/shared/test_jsonrpc_dispatcher.py::test_ctx_progress_with_only_progress_value_omits_total_and_message 10250[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_ctx_progress_with_only_progress_value_omits_total_and_message 10251tests/shared/test_jsonrpc_dispatcher.py::test_ctx_after_handler_return_reports_closed_and_drops_backchannel_traffic 10252[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_ctx_after_handler_return_reports_closed_and_drops_backchannel_traffic 10253tests/shared/test_jsonrpc_dispatcher.py::test_inline_methods_are_handled_before_next_message_is_dequeued 10254[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_inline_methods_are_handled_before_next_message_is_dequeued 10255tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_omits_empty_meta_and_empty_params_on_the_wire 10256[gw2] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:169-171] 10257tests/test_examples.py::test_docs_examples[docs/whats-new.md:173-175] 10258[gw3] [ 86%] PASSED tests/test_examples.py::test_simple_echo 10259[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_omits_empty_meta_and_empty_params_on_the_wire 10260tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_merges_progress_token_into_caller_meta 10261tests/test_examples.py::test_complex_inputs 10262[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_merges_progress_token_into_caller_meta 10263tests/shared/test_jsonrpc_dispatcher.py::test_handler_raising_validation_error_sends_invalid_params 10264[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_handler_raising_validation_error_sends_invalid_params 10265tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_before_run_raises_runtimeerror 10266[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_before_run_raises_runtimeerror 10267tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_after_connection_close_raises_connection_closed 10268[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_after_connection_close_raises_connection_closed 10269tests/shared/test_jsonrpc_dispatcher.py::test_transport_exception_in_read_stream_is_logged_and_dropped 10270[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_transport_exception_in_read_stream_is_logged_and_dropped 10271tests/shared/test_jsonrpc_dispatcher.py::test_on_stream_exception_observes_transport_exceptions 10272[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_on_stream_exception_observes_transport_exceptions 10273[gw2] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:173-175] 10274tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:19-21] 10275tests/shared/test_jsonrpc_dispatcher.py::test_on_stream_exception_observer_raising_is_contained 10276[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_on_stream_exception_observer_raising_is_contained 10277tests/shared/test_jsonrpc_dispatcher.py::test_progress_notification_for_unknown_token_falls_through_to_on_notify 10278[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_progress_notification_for_unknown_token_falls_through_to_on_notify 10279tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_notification_for_unknown_request_id_skips_cancel_but_reaches_on_notify 10280[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_notification_for_unknown_request_id_skips_cancel_but_reaches_on_notify 10281tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_notification_for_in_flight_request_is_teed_to_on_notify 10282[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_notification_for_in_flight_request_is_teed_to_on_notify 10283[gw3] [ 86%] PASSED tests/test_examples.py::test_complex_inputs 10284tests/test_examples.py::test_direct_call_tool_result_return 10285tests/shared/test_jsonrpc_dispatcher.py::test_handler_inherits_sender_contextvars[spawned] 10286[gw2] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:19-21] 10287tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:44-46] 10288[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_handler_inherits_sender_contextvars[spawned] 10289tests/shared/test_jsonrpc_dispatcher.py::test_handler_inherits_sender_contextvars[inline] 10290[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_handler_inherits_sender_contextvars[inline] 10291tests/shared/test_jsonrpc_dispatcher.py::test_response_write_after_peer_drop_is_swallowed 10292[gw2] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:44-46] 10293tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:68-70] 10294[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_response_write_after_peer_drop_is_swallowed 10295[gw3] [ 86%] PASSED tests/test_examples.py::test_direct_call_tool_result_return 10296tests/test_examples.py::test_desktop 10297tests/shared/test_jsonrpc_dispatcher.py::test_cancel_outbound_after_write_stream_closed_is_swallowed 10298[gw2] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:68-70] 10299tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:101-103] 10300[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancel_outbound_after_write_stream_closed_is_swallowed 10301tests/shared/test_jsonrpc_dispatcher.py::test_resolve_pending_drops_outcome_when_waiter_stream_already_closed 10302[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_resolve_pending_drops_outcome_when_waiter_stream_already_closed 10303tests/shared/test_jsonrpc_dispatcher.py::test_fan_out_closed_drops_signal_when_waiter_already_has_outcome 10304[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_fan_out_closed_drops_signal_when_waiter_already_has_outcome 10305tests/shared/test_jsonrpc_dispatcher.py::test_plan_outbound_with_resumption_token_returns_client_metadata_and_suppresses_abandon_cancel 10306[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_plan_outbound_with_resumption_token_returns_client_metadata_and_suppresses_abandon_cancel 10307tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_projects_opts_headers_onto_message_metadata 10308[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_projects_opts_headers_onto_message_metadata 10309tests/shared/test_jsonrpc_dispatcher.py::test_response_with_string_id_correlates_to_int_keyed_pending_request 10310[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_response_with_string_id_correlates_to_int_keyed_pending_request 10311tests/shared/test_jsonrpc_dispatcher.py::test_error_response_with_string_id_correlates_to_int_keyed_pending_request 10312[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_error_response_with_string_id_correlates_to_int_keyed_pending_request 10313tests/shared/test_jsonrpc_dispatcher.py::test_progress_with_string_token_reaches_callback_for_int_keyed_request 10314[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_progress_with_string_token_reaches_callback_for_int_keyed_request 10315tests/shared/test_jsonrpc_dispatcher.py::test_coerce_request_id_passes_through_non_numeric_string_and_int 10316[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_coerce_request_id_passes_through_non_numeric_string_and_int 10317tests/shared/test_jsonrpc_dispatcher.py::test_jsonrpc_error_response_with_null_id_is_dropped 10318[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_jsonrpc_error_response_with_null_id_is_dropped 10319tests/shared/test_jsonrpc_dispatcher.py::test_notify_without_params_omits_params_key_on_the_wire 10320[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_notify_without_params_omits_params_key_on_the_wire 10321tests/shared/test_jsonrpc_dispatcher.py::test_transport_builder_exception_on_request_is_answered_with_internal_error 10322[gw2] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:101-103] 10323tests/test_examples.py::test_docs_examples[docs/deprecated.md:57-61] 10324[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_transport_builder_exception_on_request_is_answered_with_internal_error 10325tests/shared/test_jsonrpc_dispatcher.py::test_transport_builder_exception_on_notification_drops_only_that_notification 10326[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_transport_builder_exception_on_notification_drops_only_that_notification 10327tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_with_bool_request_id_does_not_cancel_request_one 10328[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_with_bool_request_id_does_not_cancel_request_one 10329tests/shared/test_jsonrpc_dispatcher.py::test_progress_with_bool_token_or_bool_progress_does_not_fire_callback 10330[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_progress_with_bool_token_or_bool_progress_does_not_fire_callback 10331tests/shared/test_jsonrpc_dispatcher.py::test_request_with_bool_meta_progress_token_is_not_adopted 10332[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_request_with_bool_meta_progress_token_is_not_adopted 10333tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_correlates_across_string_and_int_request_id_forms[string-cancel-for-int-request] 10334[gw1] [ 86%] PASSED tests/shared/test_streamable_http.py::test_server_close_sse_stream_via_context 10335[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_correlates_across_string_and_int_request_id_forms[string-cancel-for-int-request] 10336tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_correlates_across_string_and_int_request_id_forms[int-cancel-for-string-request] 10337tests/shared/test_streamable_http.py::test_standalone_get_stream_reconnection 10338[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_correlates_across_string_and_int_request_id_forms[int-cancel-for-string-request] 10339tests/shared/test_jsonrpc_dispatcher.py::test_completed_handler_does_not_evict_reused_request_id_from_in_flight 10340[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_completed_handler_does_not_evict_reused_request_id_from_in_flight 10341tests/shared/test_jsonrpc_dispatcher.py::test_duplicate_request_id_completion_of_first_handler_keeps_second_cancellable 10342[gw3] [ 86%] PASSED tests/test_examples.py::test_desktop 10343tests/test_examples.py::test_docs_examples[README.md:47-63] 10344[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_duplicate_request_id_completion_of_first_handler_keeps_second_cancellable 10345tests/shared/test_jsonrpc_dispatcher.py::test_plan_outbound_with_related_request_id_drops_resumption_hints_but_keeps_abandon_cancel 10346[gw0] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_plan_outbound_with_related_request_id_drops_resumption_hints_but_keeps_abandon_cancel 10347tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:13-15] 10348[gw2] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/deprecated.md:57-61] 10349tests/test_examples.py::test_docs_examples[docs/deprecated.md:65-71] 10350[gw0] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:13-15] 10351tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:21-25] 10352[gw0] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:21-25] 10353tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:46-48] 10354[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[README.md:47-63] 10355tests/test_examples.py::test_docs_examples[README.md:90-103] 10356[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[README.md:90-103] 10357tests/test_examples.py::test_docs_examples[docs/index.md:43-45] 10358[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/deprecated.md:65-71] 10359[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:46-48] 10360tests/test_examples.py::test_docs_examples[docs/deprecated.md:81-86] 10361tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:93-95] 10362[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/index.md:43-45] 10363tests/test_examples.py::test_docs_examples[docs/whats-new.md:18-22] 10364[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/deprecated.md:81-86] 10365tests/test_examples.py::test_docs_examples[docs/deprecated.md:90-97] 10366[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:93-95] 10367tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:99-102] 10368[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:99-102] 10369tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:112-114] 10370[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:18-22] 10371[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/deprecated.md:90-97] 10372tests/test_examples.py::test_docs_examples[docs/deprecated.md:108-114] 10373tests/test_examples.py::test_docs_examples[docs/whats-new.md:40-42] 10374[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:112-114] 10375tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:11-13] 10376[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/deprecated.md:108-114] 10377tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:7-9] 10378[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:11-13] 10379tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:68-70] 10380[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:7-9] 10381tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:25-29] 10382[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:68-70] 10383tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:98-100] 10384[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:98-100] 10385tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:141-143] 10386[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:25-29] 10387tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:51-58] 10388[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:141-143] 10389tests/test_examples.py::test_docs_examples[docs/handlers/logging.md:11-13] 10390[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/logging.md:11-13] 10391tests/test_examples.py::test_docs_examples[docs/handlers/logging.md:21-24] 10392[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:51-58] 10393tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:69-73] 10394[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:69-73] 10395tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:77-81] 10396[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/logging.md:21-24] 10397tests/test_examples.py::test_docs_examples[docs/handlers/context.md:11-13] 10398[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/context.md:11-13] 10399tests/test_examples.py::test_docs_examples[docs/handlers/context.md:80-82] 10400[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:77-81] 10401tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:91-95] 10402[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/context.md:80-82] 10403tests/test_examples.py::test_docs_examples[docs/handlers/context.md:86-89] 10404[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:40-42] 10405tests/test_examples.py::test_docs_examples[docs/whats-new.md:56-86] 10406[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/context.md:86-89] 10407tests/test_examples.py::test_docs_examples[docs/handlers/context.md:98-100] 10408[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:91-95] 10409tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:107-112] 10410[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/context.md:98-100] 10411tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:11-13] 10412[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:11-13] 10413tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:27-47] 10414[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:56-86] 10415tests/test_examples.py::test_docs_examples[docs/whats-new.md:96-98] 10416[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:107-112] 10417tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:138-140] 10418[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:27-47] 10419tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:100-102] 10420[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:96-98] 10421tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:166-168] 10422[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:138-140] 10423tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:166-168] 10424[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:166-168] 10425tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:180-182] 10426[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:100-102] 10427tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:20-22] 10428[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:166-168] 10429[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:180-182] 10430tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:206-208] 10431tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:172-175] 10432[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:20-22] 10433tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:47-49] 10434[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:172-175] 10435tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:189-191] 10436[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:206-208] 10437tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:222-224] 10438[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:189-191] 10439tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:231-233] 10440[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:222-224] 10441tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:11-13] 10442[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:47-49] 10443tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:118-120] 10444[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:231-233] 10445tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:246-254] 10446[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:118-120] 10447tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:132-134] 10448[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:11-13] 10449tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:84-86] 10450[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:246-254] 10451tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:289-291] 10452[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:84-86] 10453[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:132-134] 10454tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:114-116] 10455tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:11-13] 10456[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:11-13] 10457tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:52-54] 10458[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:114-116] 10459tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:147-149] 10460[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:52-54] 10461tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:67-69] 10462[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:147-149] 10463tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:163-165] 10464[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:289-291] 10465tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:305-309] 10466[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:67-69] 10467tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:104-132] 10468[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:305-309] 10469tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:334-336] 10470[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:163-165] 10471tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:178-180] 10472[gw0] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:104-132] 10473tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:140-149] 10474[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:334-336] 10475tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:338-342] 10476[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:140-149] 10477tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:155-157] 10478[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:178-180] 10479tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:24-26] 10480[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:338-342] 10481tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:350-352] 10482[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:155-157] 10483tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:169-171] 10484[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:24-26] 10485tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:162-164] 10486[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:350-352] 10487tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:360-362] 10488[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:162-164] 10489tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:179-181] 10490[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:169-171] 10491tests/test_examples.py::test_docs_examples[docs/handlers/sampling-and-roots.md:14-16] 10492[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:360-362] 10493tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:379-383] 10494[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:179-181] 10495tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:218-220] 10496[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:379-383] 10497tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:405-407] 10498[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/sampling-and-roots.md:14-16] 10499tests/test_examples.py::test_docs_examples[docs/handlers/sampling-and-roots.md:27-29] 10500[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:218-220] 10501tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:232-234] 10502[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/sampling-and-roots.md:27-29] 10503tests/test_examples.py::test_docs_examples[docs/handlers/lifespan.md:11-13] 10504[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:232-234] 10505tests/test_examples.py::test_docs_examples[docs/servers/tools.md:9-11] 10506[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:405-407] 10507tests/test_examples.py::test_docs_examples[docs/get-started/first-steps.md:37-39] 10508[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/first-steps.md:37-39] 10509[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/lifespan.md:11-13] 10510tests/test_examples.py::test_docs_examples[docs/handlers/lifespan.md:65-67] 10511tests/test_examples.py::test_docs_examples[docs/get-started/first-steps.md:89-91] 10512[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:9-11] 10513tests/test_examples.py::test_docs_examples[docs/servers/tools.md:47-50] 10514[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/first-steps.md:89-91] 10515tests/test_examples.py::test_docs_examples[docs/get-started/index.md:24-36] 10516[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/lifespan.md:65-67] 10517tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:24-26] 10518[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:47-50] 10519tests/test_examples.py::test_docs_examples[docs/servers/tools.md:72-74] 10520[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:72-74] 10521tests/test_examples.py::test_docs_examples[docs/servers/tools.md:98-100] 10522[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:24-26] 10523tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:38-40] 10524[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/index.md:24-36] 10525tests/test_examples.py::test_docs_examples[docs/get-started/testing.md:11-13] 10526[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:38-40] 10527tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:54-56] 10528[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:98-100] 10529tests/test_examples.py::test_docs_examples[docs/servers/tools.md:127-129] 10530[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/testing.md:11-13] 10531tests/test_examples.py::test_docs_examples[docs/get-started/testing.md:39-70] 10532[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:54-56] 10533tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:79-81] 10534[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/testing.md:39-70] 10535tests/test_examples.py::test_docs_examples[docs/get-started/real-host.md:9-11] 10536[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:127-129] 10537tests/test_examples.py::test_docs_examples[docs/servers/tools.md:147-149] 10538[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:79-81] 10539tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:96-101] 10540[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/real-host.md:9-11] 10541tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:11-13] 10542[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:96-101] 10543tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:122-126] 10544[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:122-126] 10545tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:136-138] 10546[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:11-13] 10547tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:32-35] 10548[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:147-149] 10549tests/test_examples.py::test_docs_examples[docs/servers/completions.md:11-13] 10550[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:136-138] 10551tests/test_examples.py::test_docs_examples[docs/handlers/cancellation.md:13-15] 10552[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:32-35] 10553tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:53-55] 10554[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:11-13] 10555tests/test_examples.py::test_docs_examples[docs/servers/completions.md:24-26] 10556[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/cancellation.md:13-15] 10557[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:53-55] 10558tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:74-76] 10559tests/test_examples.py::test_docs_examples[docs/handlers/cancellation.md:29-31] 10560[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:24-26] 10561tests/test_examples.py::test_docs_examples[docs/servers/completions.md:46-48] 10562[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/cancellation.md:29-31] 10563tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:21-23] 10564[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:74-76] 10565tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:99-101] 10566[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:21-23] 10567tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:33-35] 10568[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:46-48] 10569tests/test_examples.py::test_docs_examples[docs/servers/completions.md:55-57] 10570[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:99-101] 10571tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:109-111] 10572[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:109-111] 10573tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:119-121] 10574[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:33-35] 10575tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:93-95] 10576[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:55-57] 10577tests/test_examples.py::test_docs_examples[docs/servers/completions.md:61-63] 10578[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:61-63] 10579tests/test_examples.py::test_docs_examples[docs/servers/completions.md:71-73] 10580[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:119-121] 10581tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:154-156] 10582[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:93-95] 10583tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:107-109] 10584[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:154-156] 10585tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:11-13] 10586[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:71-73] 10587tests/test_examples.py::test_docs_examples[docs/servers/completions.md:94-96] 10588[gw0] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:107-109] 10589tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:158-160] 10590[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:94-96] 10591tests/test_examples.py::test_docs_examples[docs/servers/completions.md:106-108] 10592[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:11-13] 10593tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:22-24] 10594[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:106-108] 10595tests/test_examples.py::test_docs_examples[docs/servers/media.md:11-13] 10596[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:158-160] 10597tests/test_examples.py::test_docs_examples[docs/run/opentelemetry.md:9-11] 10598[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:22-24] 10599tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:42-47] 10600[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:11-13] 10601tests/test_examples.py::test_docs_examples[docs/servers/media.md:21-24] 10602[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/opentelemetry.md:9-11] 10603tests/test_examples.py::test_docs_examples[docs/run/opentelemetry.md:83-89] 10604[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/opentelemetry.md:83-89] 10605tests/test_examples.py::test_docs_examples[docs/run/index.md:22-24] 10606[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:21-24] 10607tests/test_examples.py::test_docs_examples[docs/servers/media.md:50-52] 10608[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/index.md:22-24] 10609tests/test_examples.py::test_docs_examples[docs/run/index.md:58-60] 10610[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:42-47] 10611tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:51-53] 10612[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/index.md:58-60] 10613tests/test_examples.py::test_docs_examples[docs/run/index.md:95-97] 10614[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:50-52] 10615tests/test_examples.py::test_docs_examples[docs/servers/media.md:56-59] 10616[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/index.md:95-97] 10617tests/test_examples.py::test_docs_examples[docs/run/deploy.md:20-22] 10618[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:51-53] 10619tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:87-89] 10620[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:56-59] 10621tests/test_examples.py::test_docs_examples[docs/servers/media.md:67-69] 10622[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/deploy.md:20-22] 10623[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:67-69] 10624tests/test_examples.py::test_docs_examples[docs/run/deploy.md:95-97] 10625tests/test_examples.py::test_docs_examples[docs/servers/media.md:88-90] 10626[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/deploy.md:95-97] 10627tests/test_examples.py::test_docs_examples[docs/run/deploy.md:130-132] 10628[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:88-90] 10629tests/test_examples.py::test_docs_examples[docs/servers/media.md:96-98] 10630[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/deploy.md:130-132] 10631tests/test_examples.py::test_docs_examples[docs/run/deploy.md:162-164] 10632[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:87-89] 10633tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:93-95] 10634[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:96-98] 10635tests/test_examples.py::test_docs_examples[docs/servers/media.md:106-108] 10636[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/deploy.md:162-164] 10637tests/test_examples.py::test_docs_examples[docs/run/asgi.md:11-13] 10638[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:93-95] 10639tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:122-124] 10640[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:106-108] 10641tests/test_examples.py::test_docs_examples[docs/servers/media.md:120-123] 10642[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:11-13] 10643tests/test_examples.py::test_docs_examples[docs/run/asgi.md:52-54] 10644[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:122-124] 10645tests/test_examples.py::test_docs_examples[docs/client/index.md:11-13] 10646[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:120-123] 10647tests/test_examples.py::test_docs_examples[docs/servers/resources.md:11-13] 10648[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:52-54] 10649tests/test_examples.py::test_docs_examples[docs/run/asgi.md:82-84] 10650[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:11-13] 10651[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/resources.md:11-13] 10652tests/test_examples.py::test_docs_examples[docs/servers/resources.md:36-38] 10653tests/test_examples.py::test_docs_examples[docs/client/index.md:21-23] 10654[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:82-84] 10655tests/test_examples.py::test_docs_examples[docs/run/asgi.md:93-95] 10656[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:21-23] 10657tests/test_examples.py::test_docs_examples[docs/client/index.md:57-59] 10658[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/resources.md:36-38] 10659tests/test_examples.py::test_docs_examples[docs/servers/resources.md:59-61] 10660[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:57-59] 10661tests/test_examples.py::test_docs_examples[docs/client/index.md:63-67] 10662[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:93-95] 10663tests/test_examples.py::test_docs_examples[docs/run/asgi.md:103-105] 10664[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/resources.md:59-61] 10665tests/test_examples.py::test_docs_examples[docs/servers/resources.md:78-80] 10666[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:63-67] 10667tests/test_examples.py::test_docs_examples[docs/client/index.md:96-98] 10668[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/resources.md:78-80] 10669tests/test_examples.py::test_docs_examples[docs/servers/resources.md:103-105] 10670[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:103-105] 10671tests/test_examples.py::test_docs_examples[docs/run/asgi.md:116-118] 10672[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:96-98] 10673tests/test_examples.py::test_docs_examples[docs/client/index.md:102-106] 10674[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:116-118] 10675tests/test_examples.py::test_docs_examples[docs/run/authorization.md:21-23] 10676[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/resources.md:103-105] 10677tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:23-25] 10678[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:102-106] 10679[gw1] [ 89%] PASSED tests/shared/test_streamable_http.py::test_standalone_get_stream_reconnection 10680tests/test_examples.py::test_docs_examples[docs/client/index.md:130-134] 10681tests/shared/test_streamable_http.py::test_standalone_stream_teardown_mid_listen_is_not_an_error 10682[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/authorization.md:21-23] 10683tests/test_examples.py::test_docs_examples[docs/run/authorization.md:93-95] 10684[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:130-134] 10685tests/test_examples.py::test_docs_examples[docs/client/index.md:152-154] 10686[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:23-25] 10687tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:54-56] 10688[gw1] [ 89%] PASSED tests/shared/test_streamable_http.py::test_standalone_stream_teardown_mid_listen_is_not_an_error 10689[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/run/authorization.md:93-95] 10690tests/shared/test_streamable_http.py::test_standalone_stream_teardown_between_dequeues_is_not_an_error 10691[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:54-56] 10692[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:152-154] 10693tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:63-65] 10694tests/test_examples.py::test_docs_examples[docs/client/identity-assertion.md:24-26] 10695tests/test_examples.py::test_docs_examples[docs/client/index.md:166-168] 10696[gw1] [ 89%] PASSED tests/shared/test_streamable_http.py::test_standalone_stream_teardown_between_dequeues_is_not_an_error 10697tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[simple_alphanumeric] 10698[gw1] [ 89%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[simple_alphanumeric] 10699tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_underscores] 10700[gw1] [ 89%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_underscores] 10701tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_dashes] 10702[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:63-65] 10703tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:95-97] 10704[gw0] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/identity-assertion.md:24-26] 10705tests/test_examples.py::test_docs_examples[docs/client/identity-assertion.md:83-85] 10706[gw1] [ 89%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_dashes] 10707[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:166-168] 10708tests/test_examples.py::test_docs_examples[docs/client/index.md:172-176] 10709tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_dots] 10710[gw1] [ 89%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_dots] 10711tests/shared/test_uri_template.py::test_match[search{?q}-search?&q=hello&-expected37] 10712[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?&q=hello&-expected37] 10713tests/shared/test_uri_template.py::test_match[search{?q}-search?q=first&q=second-expected38] 10714[gw0] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/identity-assertion.md:83-85] 10715tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:11-13] 10716[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=first&q=second-expected38] 10717tests/shared/test_uri_template.py::test_match[api://x{?token}-api://x?%74oken=evil&token=real-expected39] 10718[gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:95-97] 10719tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:159-161] 10720[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match[api://x{?token}-api://x?%74oken=evil&token=real-expected39] 10721[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:172-176] 10722tests/test_examples.py::test_docs_examples[docs/client/index.md:180-183] 10723tests/shared/test_uri_template.py::test_match[api://x{?token}-api://x?%74oken=evil-expected40] 10724[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match[api://x{?token}-api://x?%74oken=evil-expected40] 10725tests/shared/test_uri_template.py::test_match[?a=1{&b}-?a=1&b=2-expected41] 10726[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match[?a=1{&b}-?a=1&b=2-expected41] 10727tests/shared/test_uri_template.py::test_match[/files{/path*}-/files/a/b/c-expected42] 10728[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match[/files{/path*}-/files/a/b/c-expected42] 10729tests/shared/test_uri_template.py::test_match[/files{/path*}-/files-expected43] 10730[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:180-183] 10731tests/test_examples.py::test_docs_examples[docs/client/index.md:191-193] 10732[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match[/files{/path*}-/files-expected43] 10733[gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:159-161] 10734tests/test_examples.py::test_docs_examples[docs/advanced/middleware.md:21-23] 10735tests/shared/test_uri_template.py::test_match[/files{/path*}/edit-/files/a/b/edit-expected44] 10736[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match[/files{/path*}/edit-/files/a/b/edit-expected44] 10737tests/shared/test_uri_template.py::test_match[host{.labels*}-host.example.com-expected45] 10738[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match[host{.labels*}-host.example.com-expected45] 10739[gw0] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:11-13] 10740tests/shared/test_uri_template.py::test_match[///{a}////{b}////-///x////y////-expected46] 10741[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match[///{a}////{b}////-///x////y////-expected46] 10742tests/shared/test_uri_template.py::test_match_no_match[file://docs/{name}-file://other/readme.txt] 10743tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:34-36] 10744[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_no_match[file://docs/{name}-file://other/readme.txt] 10745tests/shared/test_uri_template.py::test_match_no_match[{a}/{b}-foo] 10746[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_no_match[{a}/{b}-foo] 10747tests/shared/test_uri_template.py::test_match_no_match[file{.ext}-file] 10748[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_no_match[file{.ext}-file] 10749tests/shared/test_uri_template.py::test_match_no_match[static-different] 10750[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_no_match[static-different] 10751tests/shared/test_uri_template.py::test_match_no_match[/users/{id}-/users/123/extra] 10752[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_no_match[/users/{id}-/users/123/extra] 10753tests/shared/test_uri_template.py::test_match_no_match[/users/{id}/posts/{pid}-/users/1/posts/2/extra] 10754[gw0] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:34-36] 10755[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_no_match[/users/{id}/posts/{pid}-/users/1/posts/2/extra] 10756[gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/middleware.md:21-23] 10757tests/test_examples.py::test_docs_examples[docs/advanced/middleware.md:67-69] 10758tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:40-42] 10759tests/shared/test_uri_template.py::test_match_no_match[///{a}////{b}////-//x////y////] 10760[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_no_match[///{a}////{b}////-//x////y////] 10761tests/shared/test_uri_template.py::test_match_no_match[item{;id}-item;identity=john] 10762[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_no_match[item{;id}-item;identity=john] 10763tests/shared/test_uri_template.py::test_match_no_match[item{;id}-item;ident] 10764[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_no_match[item{;id}-item;ident] 10765tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}-item;admin=true] 10766[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}-item;admin=true] 10767tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}-item;keys=a;admin=true] 10768[gw0] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:40-42] 10769[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}-item;keys=a;admin=true] 10770tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:46-48] 10771tests/shared/test_uri_template.py::test_match_no_match[api/{name}{?q}-wrong/path?q=x] 10772[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_no_match[api/{name}{?q}-wrong/path?q=x] 10773[gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/middleware.md:67-69] 10774tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:17-19] 10775tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}{?q}-item;wrong=x?q=1] 10776[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}{?q}-item;wrong=x?q=1] 10777tests/shared/test_uri_template.py::test_match_explode_preserves_empty_list_items 10778[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_explode_preserves_empty_list_items 10779tests/shared/test_uri_template.py::test_match_adjacent_vars_disambiguated_by_literal 10780[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_adjacent_vars_disambiguated_by_literal 10781tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[prefix-{id}-variables0] 10782[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[prefix-{id}-variables0] 10783tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[u{s}-variables1] 10784[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[u{s}-variables1] 10785tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[_{x}-variables2] 10786[gw0] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:46-48] 10787tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:68-70] 10788[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[_{x}-variables2] 10789tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[~{v}~-variables3] 10790[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[~{v}~-variables3] 10791tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[L{a}L{b}-variables4] 10792[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[L{a}L{b}-variables4] 10793tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[api/{name}-variables5] 10794[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[api/{name}-variables5] 10795[gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:17-19] 10796tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:42-55] 10797tests/shared/test_uri_template.py::test_match_no_backtracking_on_pathological_input[{a}-{+b}x---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------] 10798[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_no_backtracking_on_pathological_input[{a}-{+b}x---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------] 10799[gw0] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:68-70] 10800tests/test_examples.py::test_docs_examples[docs/client/caching.md:9-11] 10801tests/shared/test_uri_template.py::test_match_no_backtracking_on_pathological_input[{a}L{b}L{c}L{d}M-LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL] 10802[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_no_backtracking_on_pathological_input[{a}L{b}L{c}L{d}M-LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL] 10803tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[file://{+path}-http://x] 10804[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[file://{+path}-http://x] 10805tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[file://{+path}.txt-file://x] 10806[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[file://{+path}.txt-file://x] 10807tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[{a}@{+path}-no-at-sign-here] 10808[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[{a}@{+path}-no-at-sign-here] 10809tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[foo{+a}oob-fooob] 10810[gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:42-55] 10811[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:191-193] 10812tests/test_examples.py::test_docs_examples[docs/client/index.md:204-206] 10813tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:89-91] 10814[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[foo{+a}oob-fooob] 10815tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api://{+path}-api://foo?bar] 10816[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api://{+path}-api://foo?bar] 10817[gw0] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/caching.md:9-11] 10818tests/test_examples.py::test_docs_examples[docs/client/caching.md:28-30] 10819tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[X{/path*}-Xnoslash] 10820[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:204-206] 10821tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:11-13] 10822[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[X{/path*}-Xnoslash] 10823[gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:89-91] 10824tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[X{/path*}-X/a?b] 10825tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:100-102] 10826[gw1] [ 90%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[X{/path*}-X/a?b] 10827tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api{;key}suffix/{+p}-api;keyZ/x] 10828[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:11-13] 10829tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:15-17] 10830[gw1] [ 91%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api{;key}suffix/{+p}-api;keyZ/x] 10831[gw3] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:100-102] 10832tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:124-126] 10833[gw0] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/caching.md:28-30] 10834tests/test_examples.py::test_docs_examples[docs/client/caching.md:48-50] 10835tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api://{+path}/{id}-api://foo] 10836[gw1] [ 91%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api://{+path}/{id}-api://foo] 10837[gw2] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:15-17] 10838tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[docs/{+path}/v/{name}-docs/v/x] 10839tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:23-25] 10840[gw1] [ 91%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[docs/{+path}/v/{name}-docs/v/x] 10841tests/shared/test_uri_template.py::test_match_prefix_scan_edge_cases[api{;key}=base/{+path}-api;key=base/a/b-expected0] 10842[gw1] [ 91%] PASSED tests/shared/test_uri_template.py::test_match_prefix_scan_edge_cases[api{;key}=base/{+path}-api;key=base/a/b-expected0] 10843tests/shared/test_uri_template.py::test_match_prefix_scan_edge_cases[api{;key}=base/{+path}-api;key=v=base/x-expected1] 10844[gw1] [ 91%] PASSED tests/shared/test_uri_template.py::test_match_prefix_scan_edge_cases[api{;key}=base/{+path}-api;key=v=base/x-expected1] 10845[gw3] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:124-126] 10846tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:137-139] 10847tests/shared/test_uri_template.py::test_match_suffix_ifemp_equals_in_value[item{;id}-item;id=a=b-expected0] 10848[gw1] [ 91%] PASSED tests/shared/test_uri_template.py::test_match_suffix_ifemp_equals_in_value[item{;id}-item;id=a=b-expected0] 10849tests/shared/test_uri_template.py::test_match_suffix_ifemp_equals_in_value[{;a}{;b}-;a=x=y;b=z-expected1] 10850[gw1] [ 91%] PASSED tests/shared/test_uri_template.py::test_match_suffix_ifemp_equals_in_value[{;a}{;b}-;a=x=y;b=z-expected1] 10851[gw2] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:23-25] 10852tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:45-47] 10853[gw0] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/caching.md:48-50] 10854tests/test_examples.py::test_docs_examples[docs/client/caching.md:76-80] 10855tests/shared/test_uri_template.py::test_match_prefix_ifemp_empty_before_non_stop_literal 10856[gw1] [ 91%] PASSED tests/shared/test_uri_template.py::test_match_prefix_ifemp_empty_before_non_stop_literal 10857[gw3] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:137-139] 10858tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:164-166] 10859tests/shared/test_uri_template.py::test_match_large_uri_against_greedy_template 10860[gw2] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:45-47] 10861tests/test_examples.py::test_docs_examples[docs/client/transports.md:13-15] 10862[gw0] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/caching.md:76-80] 10863tests/test_examples.py::test_docs_examples[docs/client/oauth-clients.md:11-13] 10864[gw1] [ 91%] PASSED tests/shared/test_uri_template.py::test_match_large_uri_against_greedy_template 10865tests/shared/test_uri_template.py::test_match_decodes_percent_encoding 10866[gw0] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/oauth-clients.md:11-13] 10867tests/test_examples.py::test_docs_examples[docs/client/oauth-clients.md:110-112] 10868[gw2] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/transports.md:13-15] 10869tests/test_examples.py::test_docs_examples[docs/client/transports.md:33-35] 10870[gw1] [ 91%] PASSED tests/shared/test_uri_template.py::test_match_decodes_percent_encoding 10871[gw3] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:164-166] 10872tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:178-180] 10873tests/shared/test_uri_template.py::test_match_escapes_template_literals 10874[gw1] [ 91%] PASSED tests/shared/test_uri_template.py::test_match_escapes_template_literals 10875tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[file://docs/{name}-file://docs/a%2Fb-expected0] 10876[gw0] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/oauth-clients.md:110-112] 10877[gw2] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/transports.md:33-35] 10878[gw1] [ 91%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[file://docs/{name}-file://docs/a%2Fb-expected0] 10879tests/test_examples.py::test_docs_examples[docs/client/transports.md:55-57] 10880tests/test_types.py::test_tool_choice 10881[gw0] [ 91%] PASSED tests/test_types.py::test_tool_choice 10882tests/test_types.py::test_sampling_message_with_user_role 10883[gw3] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:178-180] 10884tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:15-17] 10885[gw3] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:15-17] 10886tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:39-41] 10887tests/types/test_methods.py::test_snake_case_spellings_of_required_aliased_fields_reject_as_missing 10888[gw1] [ 91%] PASSED tests/types/test_methods.py::test_snake_case_spellings_of_required_aliased_fields_reject_as_missing 10889tests/types/test_methods.py::test_extension_map_rows_parse_through_the_same_functions 10890[gw1] [ 91%] PASSED tests/types/test_methods.py::test_extension_map_rows_parse_through_the_same_functions 10891tests/types/test_methods.py::test_inconsistent_extension_maps_raise_runtime_error_after_the_surface_hit 10892[gw1] [ 91%] PASSED tests/types/test_methods.py::test_inconsistent_extension_maps_raise_runtime_error_after_the_surface_hit 10893tests/types/test_methods.py::test_input_required_unions_discriminate_identically_in_both_arm_orders 10894[gw0] [ 91%] PASSED tests/test_types.py::test_sampling_message_with_user_role 10895tests/test_types.py::test_sampling_message_with_assistant_role 10896[gw0] [ 91%] PASSED tests/test_types.py::test_sampling_message_with_assistant_role 10897tests/test_types.py::test_sampling_message_backward_compatibility 10898[gw0] [ 91%] PASSED tests/test_types.py::test_sampling_message_backward_compatibility 10899tests/test_types.py::test_create_message_request_params_with_tools 10900[gw0] [ 91%] PASSED tests/test_types.py::test_create_message_request_params_with_tools 10901tests/test_types.py::test_create_message_result_with_tool_use 10902[gw0] [ 91%] PASSED tests/test_types.py::test_create_message_result_with_tool_use 10903tests/test_types.py::test_create_message_result_basic 10904[gw0] [ 91%] PASSED tests/test_types.py::test_create_message_result_basic 10905tests/test_types.py::test_client_capabilities_with_sampling_tools 10906[gw0] [ 91%] PASSED tests/test_types.py::test_client_capabilities_with_sampling_tools 10907tests/test_types.py::test_tool_preserves_json_schema_2020_12_fields 10908[gw0] [ 91%] PASSED tests/test_types.py::test_tool_preserves_json_schema_2020_12_fields 10909tests/test_types.py::test_list_tools_result_preserves_json_schema_2020_12_fields 10910[gw0] [ 91%] PASSED tests/test_types.py::test_list_tools_result_preserves_json_schema_2020_12_fields 10911tests/test_types.py::test_concrete_wire_results_always_dump_result_type_complete 10912[gw2] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/transports.md:55-57] 10913tests/test_examples.py::test_docs_examples[docs/client/transports.md:111-113] 10914[gw0] [ 91%] PASSED tests/test_types.py::test_concrete_wire_results_always_dump_result_type_complete 10915tests/test_types.py::test_cacheable_results_default_to_immediately_stale_private 10916[gw0] [ 91%] PASSED tests/test_types.py::test_cacheable_results_default_to_immediately_stale_private 10917tests/test_types.py::test_empty_result_dumps_no_fields_by_default 10918[gw0] [ 91%] PASSED tests/test_types.py::test_empty_result_dumps_no_fields_by_default 10919tests/test_types.py::test_empty_result_dumps_result_type_only_when_explicitly_tagged 10920[gw0] [ 91%] PASSED tests/test_types.py::test_empty_result_dumps_result_type_only_when_explicitly_tagged 10921tests/test_types.py::test_input_required_result_dumps_its_discriminating_tag 10922[gw0] [ 91%] PASSED tests/test_types.py::test_input_required_result_dumps_its_discriminating_tag 10923tests/test_types.py::test_input_required_result_requires_at_least_one_of_input_requests_or_request_state 10924[gw0] [ 91%] PASSED tests/test_types.py::test_input_required_result_requires_at_least_one_of_input_requests_or_request_state 10925tests/test_types.py::test_mcp_types_namespace_mirrors_mcp_types_exactly 10926[gw0] [ 91%] PASSED tests/test_types.py::test_mcp_types_namespace_mirrors_mcp_types_exactly 10927tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[jsonrpc] 10928[gw2] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/transports.md:111-113] 10929tests/test_examples.py::test_docs_examples[docs/client/transports.md:131-133] 10930[gw0] [ 91%] PASSED tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[jsonrpc] 10931tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[methods] 10932[gw0] [ 91%] PASSED tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[methods] 10933tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[version] 10934[gw0] [ 91%] PASSED tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[version] 10935[gw3] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:39-41] 10936tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:60-62] 10937tests/test_types.py::test_bare_import_mcp_binds_the_types_submodule 10938[gw2] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/client/transports.md:131-133] 10939tests/test_examples.py::test_docs_examples[docs/advanced/pagination.md:13-15] 10940[gw1] [ 91%] PASSED tests/types/test_methods.py::test_input_required_unions_discriminate_identically_in_both_arm_orders 10941tests/types/test_methods.py::test_sampling_union_keeps_the_complete_arm_first_because_order_is_load_bearing 10942[gw3] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:60-62] 10943tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:78-80] 10944[gw2] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/pagination.md:13-15] 10945tests/test_examples.py::test_docs_examples[docs/advanced/pagination.md:45-47] 10946[gw1] [ 91%] PASSED tests/types/test_methods.py::test_sampling_union_keeps_the_complete_arm_first_because_order_is_load_bearing 10947tests/types/test_methods.py::test_validate_functions_accept_reject_and_gate_like_their_parse_siblings 10948[gw1] [ 92%] PASSED tests/types/test_methods.py::test_validate_functions_accept_reject_and_gate_like_their_parse_siblings 10949tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2024-11-05] 10950[gw2] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/pagination.md:45-47] 10951tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:11-13] 10952[gw3] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:78-80] 10953tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:90-92] 10954[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2024-11-05] 10955tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-03-26] 10956[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-03-26] 10957tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-06-18] 10958[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-06-18] 10959tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-11-25] 10960[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-11-25] 10961tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2026-07-28] 10962[gw2] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:11-13] 10963tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:27-29] 10964[gw3] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:90-92] 10965tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:119-121] 10966[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2026-07-28] 10967tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2024-11-05] 10968[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2024-11-05] 10969tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-03-26] 10970[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-03-26] 10971tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-06-18] 10972[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-06-18] 10973tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-11-25] 10974[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-11-25] 10975[gw3] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:119-121] 10976tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:141-143] 10977[gw2] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:27-29] 10978tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:35-37] 10979[gw2] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:35-37] 10980tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:45-47] 10981tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2024-11-05] 10982[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2024-11-05] 10983tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-03-26] 10984[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-03-26] 10985tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-06-18] 10986[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-06-18] 10987tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-11-25] 10988[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-11-25] 10989tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2024-11-05] 10990[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2024-11-05] 10991tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-03-26] 10992[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-03-26] 10993tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-06-18] 10994[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-06-18] 10995tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-11-25] 10996[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-11-25] 10997tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2024-11-05] 10998[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2024-11-05] 10999tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-03-26] 11000[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-03-26] 11001tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-06-18] 11002[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-06-18] 11003tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-11-25] 11004[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-11-25] 11005tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2025-03-26] 11006[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2025-03-26] 11007tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2025-06-18] 11008[gw3] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:141-143] 11009tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:172-174] 11010[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2025-06-18] 11011tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2025-11-25] 11012[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2025-11-25] 11013tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2024-11-05] 11014[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2024-11-05] 11015[gw2] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:45-47] 11016tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-03-26] 11017[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-03-26] 11018tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-06-18] 11019tests/transports/stdio/test_windows.py::test_a_native_server_emitting_crlf_line_endings_round_trips_messages 11020[gw3] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:172-174] 11021[gw2] [ 92%] SKIPPED tests/transports/stdio/test_windows.py::test_a_native_server_emitting_crlf_line_endings_round_trips_messages 11022tests/transports/stdio/test_windows.py::test_a_tool_spawned_python_child_with_default_stdin_completes_promptly 11023[gw2] [ 92%] SKIPPED tests/transports/stdio/test_windows.py::test_a_tool_spawned_python_child_with_default_stdin_completes_promptly 11024tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:178-180] 11025tests/types/test_methods.py::test_maps_define_exactly_the_expected_methods_for_every_known_version 11026[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-06-18] 11027tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-11-25] 11028[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-11-25] 11029tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2024-11-05] 11030[gw2] [ 92%] PASSED tests/types/test_methods.py::test_maps_define_exactly_the_expected_methods_for_every_known_version 11031tests/types/test_methods.py::test_spec_client_method_sets_are_the_client_direction_projection_of_the_surface_maps 11032[gw2] [ 92%] PASSED tests/types/test_methods.py::test_spec_client_method_sets_are_the_client_direction_projection_of_the_surface_maps 11033tests/types/test_methods.py::test_elicit_result_surface_accepts_null_content_values_at_every_version_that_defines_it 11034[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2024-11-05] 11035[gw2] [ 92%] PASSED tests/types/test_methods.py::test_elicit_result_surface_accepts_null_content_values_at_every_version_that_defines_it 11036tests/types/test_methods.py::test_discovery_capabilities_preserve_nested_json_values 11037tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2025-03-26] 11038[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2025-03-26] 11039[gw2] [ 92%] PASSED tests/types/test_methods.py::test_discovery_capabilities_preserve_nested_json_values 11040tests/types/test_methods.py::test_elicit_request_surface_accepts_loose_property_schemas 11041tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2025-06-18] 11042[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2025-06-18] 11043tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2025-11-25] 11044[gw2] [ 92%] PASSED tests/types/test_methods.py::test_elicit_request_surface_accepts_loose_property_schemas 11045tests/types/test_methods.py::test_2025_11_25_tool_schema_surfaces_accept_boolean_sub_schemas 11046[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2025-11-25] 11047[gw2] [ 92%] PASSED tests/types/test_methods.py::test_2025_11_25_tool_schema_surfaces_accept_boolean_sub_schemas 11048tests/types/test_methods.py::test_response_map_keys_mirror_the_request_map_keys 11049tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2024-11-05] 11050[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2024-11-05] 11051tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2025-03-26] 11052[gw2] [ 92%] PASSED tests/types/test_methods.py::test_response_map_keys_mirror_the_request_map_keys 11053tests/types/test_methods.py::test_response_row_values_match_the_pinned_classes_and_unions 11054[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2025-03-26] 11055tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2025-06-18] 11056[gw2] [ 92%] PASSED tests/types/test_methods.py::test_response_row_values_match_the_pinned_classes_and_unions 11057[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2025-06-18] 11058[gw3] [ 92%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:178-180] 11059tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:197-201] 11060tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2025-11-25] 11061[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2025-11-25] 11062tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2024-11-05] 11063tests/types/test_methods.py::test_surface_keys_agree_with_their_classes_and_the_monolith_maps 11064[gw2] [ 92%] PASSED tests/types/test_methods.py::test_surface_keys_agree_with_their_classes_and_the_monolith_maps 11065[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2024-11-05] 11066tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-03-26] 11067[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-03-26] 11068tests/types/test_methods.py::test_built_in_maps_are_immutable 11069[gw2] [ 93%] PASSED tests/types/test_methods.py::test_built_in_maps_are_immutable 11070tests/types/test_methods.py::test_cacheable_methods_mirror_the_cacheable_method_literal 11071tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-06-18] 11072[gw3] [ 93%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:197-201] 11073tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:208-210] 11074[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-06-18] 11075tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-11-25] 11076[gw2] [ 93%] PASSED tests/types/test_methods.py::test_cacheable_methods_mirror_the_cacheable_method_literal 11077[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-11-25] 11078tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2024-11-05] 11079[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2024-11-05] 11080tests/types/test_methods.py::test_input_required_methods_mirror_the_monolith_input_required_arms 11081tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2025-03-26] 11082[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2025-03-26] 11083tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2025-06-18] 11084[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2025-06-18] 11085tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2025-11-25] 11086[gw2] [ 93%] PASSED tests/types/test_methods.py::test_input_required_methods_mirror_the_monolith_input_required_arms 11087tests/types/test_methods.py::test_is_input_required_matches_typed_and_wire_shapes 11088[gw2] [ 93%] PASSED tests/types/test_methods.py::test_is_input_required_matches_typed_and_wire_shapes 11089[gw3] [ 93%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:208-210] 11090tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:228-231] 11091tests/types/test_methods.py::test_minimal_request_bodies_parse_through_every_request_row 11092[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2025-11-25] 11093tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2024-11-05] 11094[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2024-11-05] 11095[gw2] [ 93%] PASSED tests/types/test_methods.py::test_minimal_request_bodies_parse_through_every_request_row 11096tests/types/test_methods.py::test_minimal_notification_bodies_parse_through_every_notification_row 11097[gw2] [ 93%] PASSED tests/types/test_methods.py::test_minimal_notification_bodies_parse_through_every_notification_row 11098tests/types/test_methods.py::test_minimal_result_bodies_parse_through_every_result_row 11099tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-03-26] 11100[gw3] [ 93%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:228-231] 11101tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:250-252] 11102[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-03-26] 11103tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-06-18] 11104[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-06-18] 11105tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-11-25] 11106[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-11-25] 11107tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2024-11-05] 11108[gw2] [ 93%] PASSED tests/types/test_methods.py::test_minimal_result_bodies_parse_through_every_result_row 11109[gw3] [ 93%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:250-252] 11110tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:258-260] 11111[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2024-11-05] 11112tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2025-03-26] 11113[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2025-03-26] 11114tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2025-06-18] 11115[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2025-06-18] 11116tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2025-11-25] 11117tests/types/test_methods.py::test_non_file_root_uri_passes_the_surface_step_and_rejects_at_the_monolith_step 11118[gw3] [ 93%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:258-260] 11119tests/test_types.py::test_jsonrpc_request 11120[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2025-11-25] 11121tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2024-11-05] 11122[gw3] [ 93%] PASSED tests/test_types.py::test_jsonrpc_request 11123tests/test_types.py::test_method_initialization 11124[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2024-11-05] 11125[gw3] [ 93%] PASSED tests/test_types.py::test_method_initialization 11126tests/test_types.py::test_tool_use_content 11127tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-03-26] 11128[gw3] [ 93%] PASSED tests/test_types.py::test_tool_use_content 11129tests/test_types.py::test_tool_result_content 11130[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-03-26] 11131tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-06-18] 11132[gw3] [ 93%] PASSED tests/test_types.py::test_tool_result_content 11133tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2026-07-28] 11134[gw2] [ 93%] PASSED tests/types/test_methods.py::test_non_file_root_uri_passes_the_surface_step_and_rejects_at_the_monolith_step 11135tests/types/test_methods.py::test_absent_map_keys_raise_key_error_for_every_gate_shape 11136[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-06-18] 11137tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-11-25] 11138[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-11-25] 11139[gw3] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2026-07-28] 11140tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2024-11-05] 11141tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2024-11-05] 11142[gw3] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2024-11-05] 11143tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-03-26] 11144[gw2] [ 93%] PASSED tests/types/test_methods.py::test_absent_map_keys_raise_key_error_for_every_gate_shape 11145[gw3] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-03-26] 11146[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2024-11-05] 11147tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-06-18] 11148tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-03-26] 11149[gw3] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-06-18] 11150tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-11-25] 11151[gw3] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-11-25] 11152tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2026-07-28] 11153[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-03-26] 11154tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-06-18] 11155[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-06-18] 11156tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-11-25] 11157[gw3] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2026-07-28] 11158tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2024-11-05] 11159[gw3] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2024-11-05] 11160tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-03-26] 11161[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-11-25] 11162tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2024-11-05] 11163[gw3] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-03-26] 11164tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-06-18] 11165[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2024-11-05] 11166tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-03-26] 11167[gw3] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-06-18] 11168tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-11-25] 11169[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-03-26] 11170tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-06-18] 11171[gw3] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-11-25] 11172[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-06-18] 11173tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-11-25] 11174tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2026-07-28] 11175[gw3] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2026-07-28] 11176[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-11-25] 11177tests/types/test_methods.py::test_unknown_version_strings_raise_value_error_on_every_parse_function 11178tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tasks--] 11179tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2024-11-05] 11180[gw3] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2024-11-05] 11181tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-03-26] 11182[gw1] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tasks--] 11183tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ClientCapabilities--] 11184[gw3] [ 93%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-03-26] 11185[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ClientCapabilities--] 11186[gw2] [ 94%] PASSED tests/types/test_methods.py::test_unknown_version_strings_raise_value_error_on_every_parse_function 11187tests/types/test_methods.py::test_2026_07_28_requests_missing_a_required_meta_entry_reject_as_missing 11188tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-06-18] 11189tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Argument--] 11190[gw2] [ 94%] PASSED tests/types/test_methods.py::test_2026_07_28_requests_missing_a_required_meta_entry_reject_as_missing 11191[gw3] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-06-18] 11192tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-11-25] 11193tests/types/test_methods.py::test_2026_07_28_requests_accept_meta_without_the_optional_client_info 11194[gw2] [ 94%] PASSED tests/types/test_methods.py::test_2026_07_28_requests_accept_meta_without_the_optional_client_info 11195tests/types/test_methods.py::test_2026_07_28_results_require_result_type 11196[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Argument--] 11197tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Context--] 11198[gw3] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-11-25] 11199[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Context--] 11200tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Completion--] 11201tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2026-07-28] 11202[gw3] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2026-07-28] 11203[gw2] [ 94%] PASSED tests/types/test_methods.py::test_2026_07_28_results_require_result_type 11204tests/types/test_methods.py::test_empty_result_body_parses_at_versions_that_define_it 11205[gw2] [ 94%] PASSED tests/types/test_methods.py::test_empty_result_body_parses_at_versions_that_define_it 11206[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Completion--] 11207tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteResult--] 11208tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2024-11-05] 11209[gw3] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2024-11-05] 11210[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteResult--] 11211tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-03-26] 11212tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitResult--] 11213tests/types/test_methods.py::test_2026_07_28_shaped_result_extras_pass_at_earlier_versions 11214[gw2] [ 94%] PASSED tests/types/test_methods.py::test_2026_07_28_shaped_result_extras_pass_at_earlier_versions 11215tests/types/test_methods.py::test_embedded_input_request_entries_without_method_reject_at_the_surface_step 11216[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitResult--] 11217tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params1--] 11218[gw2] [ 94%] PASSED tests/types/test_methods.py::test_embedded_input_request_entries_without_method_reject_at_the_surface_step 11219[gw3] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-03-26] 11220tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-06-18] 11221[gw3] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-06-18] 11222tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-11-25] 11223[gw3] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-11-25] 11224[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params1--] 11225tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitationCompleteNotification--] 11226[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitationCompleteNotification--] 11227tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Error--] 11228tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2024-11-05] 11229[gw3] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2024-11-05] 11230tests/types/test_methods.py::test_input_required_url_elicit_without_elicitation_id_parses_at_2026 11231[gw2] [ 94%] PASSED tests/types/test_methods.py::test_input_required_url_elicit_without_elicitation_id_parses_at_2026 11232tests/types/test_methods.py::test_none_params_omit_the_key_so_required_params_reject 11233[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Error--] 11234tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params2--] 11235[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params2--] 11236tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskPayloadResult--] 11237tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-03-26] 11238[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskPayloadResult--] 11239tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params3--] 11240[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params3--] 11241tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Icon--] 11242[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Icon--] 11243[gw2] [ 94%] PASSED tests/types/test_methods.py::test_none_params_omit_the_key_so_required_params_reject 11244tests/types/test_methods.py::test_serialize_server_result_keeps_2026_only_keys_at_2026_07_28 11245[gw2] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_keeps_2026_only_keys_at_2026_07_28 11246tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2024-11-05] 11247[gw2] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2024-11-05] 11248tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Implementation--] 11249[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Implementation--] 11250tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCNotification--] 11251[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCNotification--] 11252tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-03-26] 11253[gw2] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-03-26] 11254[gw3] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-03-26] 11255tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-06-18] 11256tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.LoggingMessageNotificationParams--] 11257[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.LoggingMessageNotificationParams--] 11258tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ModelHint--] 11259[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ModelHint--] 11260[gw3] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-06-18] 11261tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RootsListChangedNotification--] 11262[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RootsListChangedNotification--] 11263tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Prompts--] 11264[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Prompts--] 11265tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Resources--] 11266tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-11-25] 11267[gw3] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-11-25] 11268[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Resources--] 11269tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2026-07-28] 11270tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-06-18] 11271[gw2] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-06-18] 11272tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-11-25] 11273tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tools--] 11274[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tools--] 11275tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Requests1--] 11276[gw3] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2026-07-28] 11277tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2024-11-05] 11278[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Requests1--] 11279tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tasks1--] 11280[gw3] [ 94%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2024-11-05] 11281tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ModelPreferences--] 11282[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tasks1--] 11283tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tools1--] 11284[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tools1--] 11285[gw3] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ModelPreferences--] 11286tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Notification--] 11287tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ServerCapabilities--] 11288[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ServerCapabilities--] 11289[gw3] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Notification--] 11290tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.NotificationParams--] 11291[gw3] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.NotificationParams--] 11292tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedResult--] 11293[gw2] [ 94%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-11-25] 11294tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SetLevelRequestParams--] 11295[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SetLevelRequestParams--] 11296tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SubscribeRequestParams--] 11297[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SubscribeRequestParams--] 11298tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskMetadata--] 11299[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskMetadata--] 11300tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TextResourceContents--] 11301[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TextResourceContents--] 11302[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedResult--] 11303tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptArgument--] 11304[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptArgument--] 11305tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptListChangedNotification--] 11306tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolAnnotations--] 11307[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolAnnotations--] 11308tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolChoice--] 11309tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2026-07-28] 11310[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolChoice--] 11311[gw2] [ 95%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2026-07-28] 11312tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolExecution--] 11313tests/types/test_methods.py::test_serialize_server_result_preserves_open_type_extras 11314[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolExecution--] 11315tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolListChangedNotification--] 11316[gw2] [ 95%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_open_type_extras 11317tests/types/test_methods.py::test_serialize_server_result_drops_top_level_server_info_on_discover_but_keeps_the_meta_stamp 11318[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolListChangedNotification--] 11319tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolUseContent--] 11320[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolUseContent--] 11321[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptListChangedNotification--] 11322tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptReference--] 11323[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptReference--] 11324tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceRequestParams--] 11325[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceRequestParams--] 11326tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RelatedTaskMetadata--] 11327[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RelatedTaskMetadata--] 11328tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Request--] 11329[gw2] [ 95%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_top_level_server_info_on_discover_but_keeps_the_meta_stamp 11330tests/types/test_methods.py::test_serialize_server_result_drops_an_unknown_nested_tool_field 11331tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.UnsubscribeRequestParams--] 11332[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.UnsubscribeRequestParams--] 11333tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Annotations--] 11334[gw2] [ 95%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_an_unknown_nested_tool_field 11335tests/types/test_methods.py::test_serialize_server_result_raises_key_error_for_an_absent_row_and_value_error_for_an_unknown_version 11336[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Annotations--] 11337tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.AudioContent--] 11338[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.AudioContent--] 11339tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolRequestParams--] 11340[gw2] [ 95%] PASSED tests/types/test_methods.py::test_serialize_server_result_raises_key_error_for_an_absent_row_and_value_error_for_an_unknown_version 11341tests/types/test_methods.py::test_importing_the_module_builds_no_adapters_and_identical_rows_share_one 11342[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolRequestParams--] 11343[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Request--] 11344tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RequestParams--] 11345[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RequestParams--] 11346tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceContents--] 11347[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceContents--] 11348tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceListChangedNotification--] 11349[gw2] [ 95%] PASSED tests/types/test_methods.py::test_importing_the_module_builds_no_adapters_and_identical_rows_share_one 11350tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelTaskRequest--] 11351[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelTaskRequest--] 11352tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelledNotificationParams--] 11353[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelledNotificationParams--] 11354tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.BaseMetadata--] 11355tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteRequestParams--] 11356[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteRequestParams--] 11357[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.BaseMetadata--] 11358tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequestFormParams--] 11359[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequestFormParams--] 11360tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequestURLParams--] 11361[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceListChangedNotification--] 11362tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceTemplateReference--] 11363[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceTemplateReference--] 11364tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceUpdatedNotificationParams--] 11365[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceUpdatedNotificationParams--] 11366tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Result--] 11367[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Result--] 11368tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.BlobResourceContents--] 11369[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.BlobResourceContents--] 11370tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params--] 11371tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Root--] 11372[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params--] 11373[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequestURLParams--] 11374tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.EmbeddedResource--] 11375tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Elicitation--] 11376[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.EmbeddedResource--] 11377[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Root--] 11378tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeRequestParams--] 11379[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Elicitation--] 11380tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Roots--] 11381tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptRequestParams--] 11382[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptRequestParams--] 11383tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskPayloadRequest--] 11384[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskPayloadRequest--] 11385[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeRequestParams--] 11386tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeResult--] 11387[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Roots--] 11388tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskRequest--] 11389[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeResult--] 11390tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Sampling--] 11391[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskRequest--] 11392tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ImageContent--] 11393tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializedNotification--] 11394[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializedNotification--] 11395[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Sampling--] 11396[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ImageContent--] 11397tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Elicitation1--] 11398tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCErrorResponse--] 11399tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolRequest--] 11400[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolRequest--] 11401tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelTaskResult--] 11402[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelTaskResult--] 11403[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCErrorResponse--] 11404tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCRequest--] 11405[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Elicitation1--] 11406tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Sampling1--] 11407[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Sampling1--] 11408tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelledNotification--] 11409tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Requests--] 11410[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCRequest--] 11411[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelledNotification--] 11412tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteRequest--] 11413[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteRequest--] 11414[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Requests--] 11415tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceResult--] 11416[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceResult--] 11417tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateTaskResult--] 11418tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCResultResponse--] 11419tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Resource--] 11420[gw3] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCResultResponse--] 11421tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListRootsRequest--] 11422[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Resource--] 11423tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceLink--] 11424[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceLink--] 11425tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceTemplate--] 11426[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceTemplate--] 11427tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceUpdatedNotification--] 11428[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListRootsRequest--] 11429tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListRootsResult--] 11430[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListRootsResult--] 11431tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.LoggingMessageNotification--] 11432[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateTaskResult--] 11433tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptRequest--] 11434[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptRequest--] 11435tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskResult--] 11436[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskResult--] 11437tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeRequest--] 11438[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeRequest--] 11439tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListPromptsRequest--] 11440[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListPromptsRequest--] 11441tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListPromptsResult--] 11442[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.LoggingMessageNotification--] 11443tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedRequestParams--] 11444[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedRequestParams--] 11445tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PingRequest--] 11446[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceUpdatedNotification--] 11447tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SetLevelRequest--] 11448[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SetLevelRequest--] 11449tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SubscribeRequest--] 11450[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SubscribeRequest--] 11451tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Task--] 11452[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PingRequest--] 11453[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListPromptsResult--] 11454tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourceTemplatesRequest--] 11455[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourceTemplatesRequest--] 11456tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourceTemplatesResult--] 11457[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Task--] 11458[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourceTemplatesResult--] 11459tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourcesRequest--] 11460tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskStatusNotificationParams--] 11461tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ProgressNotificationParams--] 11462[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ProgressNotificationParams--] 11463tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Prompt--] 11464[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Prompt--] 11465tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceRequest--] 11466[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourcesRequest--] 11467tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptResult--] 11468[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskStatusNotificationParams--] 11469tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TextContent--] 11470[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceRequest--] 11471tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourcesResult--] 11472[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TextContent--] 11473[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptResult--] 11474tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageResult--] 11475[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourcesResult--] 11476tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListTasksRequest--] 11477[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListTasksRequest--] 11478tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListTasksResult--] 11479tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tool--] 11480[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tool--] 11481tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Data--] 11482[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageResult--] 11483tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SamplingMessage--] 11484[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListTasksResult--] 11485[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Data--] 11486tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListToolsRequest--] 11487[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SamplingMessage--] 11488tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageRequestParams--] 11489[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListToolsRequest--] 11490tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.UnsubscribeRequest--] 11491tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListToolsResult--] 11492[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageRequestParams--] 11493tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageRequest--] 11494[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.UnsubscribeRequest--] 11495[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListToolsResult--] 11496tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedRequest--] 11497tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitResult--] 11498[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitResult--] 11499[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageRequest--] 11500tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.BaseMetadata--] 11501tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Error--] 11502[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedRequest--] 11503tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ProgressNotification--] 11504[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Error--] 11505tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Icon--] 11506[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ProgressNotification--] 11507[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.BaseMetadata--] 11508tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Argument--] 11509[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Argument--] 11510tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Context--] 11511tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptMessage--] 11512[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptMessage--] 11513tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskStatusNotification--] 11514[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Icon--] 11515[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskStatusNotification--] 11516tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolResultContent--] 11517[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolResultContent--] 11518[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Context--] 11519tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Completion--] 11520tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Implementation--] 11521[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Implementation--] 11522tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCNotification--] 11523tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolResult--] 11524[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Completion--] 11525tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequestFormParams--] 11526[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequestFormParams--] 11527tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequestURLParams--] 11528[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCNotification--] 11529tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ModelHint--] 11530[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ModelHint--] 11531tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ModelPreferences--] 11532[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolResult--] 11533tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequest--] 11534[gw3] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequest--] 11535tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolChoice--] 11536[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequestURLParams--] 11537tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Request--] 11538[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Request--] 11539tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceContents--] 11540[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceContents--] 11541[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ModelPreferences--] 11542tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Notification--] 11543[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Notification--] 11544tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptArgument--] 11545[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolChoice--] 11546tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolUseContent--] 11547[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolUseContent--] 11548tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Data1--] 11549[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Data1--] 11550tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Annotations--] 11551[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Annotations--] 11552tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.AudioContent--] 11553tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceTemplateReference--] 11554[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceTemplateReference--] 11555tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Root--] 11556[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.AudioContent--] 11557[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Root--] 11558tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.BlobResourceContents--] 11559tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Prompts--] 11560[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Prompts--] 11561[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptArgument--] 11562tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptReference--] 11563[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.BlobResourceContents--] 11564tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CacheableResult--] 11565tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Resources--] 11566[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Resources--] 11567[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptReference--] 11568tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ImageContent--] 11569[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CacheableResult--] 11570tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteResult--] 11571tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Tools--] 11572[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Tools--] 11573[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ImageContent--] 11574tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionFilter--] 11575tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCErrorResponse--] 11576[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteResult--] 11577[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCErrorResponse--] 11578[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionFilter--] 11579tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.TextResourceContents--] 11580tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCRequest--] 11581tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.EmbeddedResource--] 11582[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCRequest--] 11583[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.EmbeddedResource--] 11584tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptListChangedNotification--] 11585[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.TextResourceContents--] 11586tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolAnnotations--] 11587tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListRootsRequest--] 11588[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListRootsRequest--] 11589[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolAnnotations--] 11590[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptListChangedNotification--] 11591tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceResult--] 11592tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListRootsResult--] 11593tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ServerCapabilities--] 11594[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ServerCapabilities--] 11595[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceResult--] 11596[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListRootsResult--] 11597tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsAcknowledgedNotificationParams--] 11598[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsAcknowledgedNotificationParams--] 11599tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.NotificationParams--] 11600tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenResult--] 11601tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Resource--] 11602[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.NotificationParams--] 11603tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedResult--] 11604[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenResult--] 11605tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.TextContent--] 11606[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedResult--] 11607tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ProgressNotificationParams--] 11608[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ProgressNotificationParams--] 11609[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.TextContent--] 11610tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Tool--] 11611[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Tool--] 11612[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Resource--] 11613tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceLink--] 11614[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceLink--] 11615tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceListChangedNotification--] 11616tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Prompt--] 11617tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolListChangedNotification--] 11618[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolListChangedNotification--] 11619tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CancelledNotificationParams--] 11620[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Prompt--] 11621[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceListChangedNotification--] 11622tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceTemplate--] 11623tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Sampling--] 11624[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CancelledNotificationParams--] 11625tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Elicitation--] 11626[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceTemplate--] 11627[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Sampling--] 11628tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ClientCapabilities--] 11629tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceUpdatedNotificationParams--] 11630[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Elicitation--] 11631tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourcesResult--] 11632[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ClientCapabilities--] 11633[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourcesResult--] 11634[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceUpdatedNotificationParams--] 11635tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListToolsResult--] 11636tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Result--] 11637tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.DiscoverResult--] 11638[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListToolsResult--] 11639tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.LoggingMessageNotificationParams--] 11640[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Result--] 11641tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceUpdatedNotification--] 11642[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.DiscoverResult--] 11643tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequest--] 11644[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.LoggingMessageNotificationParams--] 11645[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceUpdatedNotification--] 11646tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsAcknowledgedNotification--] 11647tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Data--] 11648[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Data--] 11649tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ProgressNotification--] 11650[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsAcknowledgedNotification--] 11651[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequest--] 11652tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCResultResponse--] 11653[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCResultResponse--] 11654tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenRequestParams--] 11655tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListPromptsResult--] 11656[gw3] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenRequestParams--] 11657[gw1] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ProgressNotification--] 11658tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptMessage--] 11659[gw1] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptMessage--] 11660tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolResultContent--] 11661[gw2] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListPromptsResult--] 11662tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourceTemplatesResult--] 11663tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.RequestParams--] 11664[gw1] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.RequestParams--] 11665tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteRequestParams--] 11666[gw1] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteRequestParams--] 11667tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.DiscoverRequest--] 11668[gw3] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolResultContent--] 11669tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolResult--] 11670[gw3] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolResult--] 11671[gw2] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourceTemplatesResult--] 11672tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteRequest--] 11673[gw2] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteRequest--] 11674[gw1] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.DiscoverRequest--] 11675tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptResult--] 11676tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CancelledNotification--] 11677tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageResult--] 11678[gw3] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CancelledNotification--] 11679tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListToolsRequest--] 11680[gw1] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptResult--] 11681[gw2] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageResult--] 11682tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.LoggingMessageNotification--] 11683[gw3] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListToolsRequest--] 11684tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedRequest--] 11685[gw1] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.LoggingMessageNotification--] 11686tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedRequestParams--] 11687tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListPromptsRequest--] 11688[gw3] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedRequest--] 11689tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceRequestParams--] 11690[gw2] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListPromptsRequest--] 11691tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourceTemplatesRequest--] 11692[gw1] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedRequestParams--] 11693tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenRequest--] 11694[gw1] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenRequest--] 11695[gw3] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceRequestParams--] 11696tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SamplingMessage--] 11697[gw2] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourceTemplatesRequest--] 11698tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageRequestParams--] 11699tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourcesRequest--] 11700[gw3] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SamplingMessage--] 11701[gw1] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageRequestParams--] 11702tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptRequestParams--] 11703tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolRequestParams--] 11704[gw2] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourcesRequest--] 11705tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageRequest--] 11706[gw1] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptRequestParams--] 11707tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.InputResponseRequestParams--] 11708[gw1] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.InputResponseRequestParams--] 11709[gw3] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolRequestParams--] 11710tests/types/test_parity.py::test_every_surface_class_is_accounted_for 11711tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceRequest--] 11712[gw2] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageRequest--] 11713[gw1] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceRequest--] 11714[gw3] [ 98%] PASSED tests/types/test_parity.py::test_every_surface_class_is_accounted_for 11715tests/types/test_request_name_param.py::test_request_base_declares_no_name_param 11716tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptRequest--] 11717tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolRequest--] 11718[gw2] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptRequest--] 11719tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.InputRequiredResult--] 11720[gw2] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.InputRequiredResult--] 11721[gw3] [ 98%] PASSED tests/types/test_request_name_param.py::test_request_base_declares_no_name_param 11722tests/types/test_request_name_param.py::test_core_request_types_inherit_none 11723[gw1] [ 98%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolRequest--] 11724[gw3] [ 98%] PASSED tests/types/test_request_name_param.py::test_core_request_types_inherit_none 11725tests/types/test_request_name_param.py::test_subclass_overrides_by_bare_assignment 11726[gw3] [ 98%] PASSED tests/types/test_request_name_param.py::test_subclass_overrides_by_bare_assignment 11727tests/types/test_parity.py::test_every_public_monolith_model_is_exported_from_mcp_types 11728tests/types/test_request_name_param.py::test_name_param_is_not_a_pydantic_field 11729[gw2] [ 98%] PASSED tests/types/test_parity.py::test_every_public_monolith_model_is_exported_from_mcp_types 11730[gw1] [ 98%] PASSED tests/types/test_request_name_param.py::test_name_param_is_not_a_pydantic_field 11731tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[] 11732tests/types/test_version.py::test_is_version_at_least_ordering[2025-06-18-2024-11-05-True] 11733[gw3] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[] 11734tests/types/test_version.py::test_is_version_at_least_ordering[2025-11-25-2025-11-25-True] 11735[gw2] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2025-06-18-2024-11-05-True] 11736tests/types/test_version.py::test_is_version_at_least_ordering[2025-06-18-2025-11-25-False] 11737[gw1] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2025-11-25-2025-11-25-True] 11738tests/types/test_version.py::test_is_version_at_least_ordering[2024-11-05-2024-11-05-True] 11739tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[2025-11-26] 11740[gw1] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2024-11-05-2024-11-05-True] 11741[gw3] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[2025-11-26] 11742tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[draft] 11743[gw3] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[draft] 11744[gw2] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2025-06-18-2025-11-25-False] 11745tests/types/test_version.py::test_is_version_at_least_ordering[2024-11-05-2025-03-26-False] 11746[gw2] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2024-11-05-2025-03-26-False] 11747tests/types/test_version.py::test_is_version_at_least_ordering[2025-11-25-2025-06-18-True] 11748tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-03-26] 11749tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[zzz] 11750[gw1] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2025-11-25-2025-06-18-True] 11751tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[9999-99-99] 11752[gw2] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[zzz] 11753tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2026-07-28] 11754[gw3] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-03-26] 11755[gw1] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[9999-99-99] 11756tests/types/test_version.py::test_is_version_at_least_unknown_minimum_raises 11757[gw1] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_minimum_raises 11758[gw2] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2026-07-28] 11759tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2024-11-05] 11760[gw1] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2024-11-05] 11761tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-03-26] 11762[gw1] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-03-26] 11763tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-06-18] 11764[gw3] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-06-18] 11765tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2024-11-05] 11766tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-06-18] 11767[gw1] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-06-18] 11768tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-11-25] 11769tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-06-18] 11770[gw1] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-06-18] 11771[gw3] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-11-25] 11772tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2024-11-05] 11773[gw2] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2024-11-05] 11774tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-11-25] 11775tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-11-25] 11776[gw2] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-11-25] 11777tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2026-07-28] 11778[gw2] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2026-07-28] 11779[gw3] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2024-11-05] 11780[gw1] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-11-25] 11781tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2024-11-05] 11782[gw2] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2024-11-05] 11783tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2026-07-28] 11784tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-03-26] 11785tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-03-26] 11786[gw3] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-03-26] 11787[gw1] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2026-07-28] 11788[gw2] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-03-26] 11789tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-06-18] 11790[gw3] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-06-18] 11791tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2026-07-28] 11792tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-11-25] 11793[gw1] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-11-25] 11794[gw2] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2026-07-28] 11795tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2024-11-05] 11796[gw1] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2024-11-05] 11797tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-03-26] 11798[gw2] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-03-26] 11799tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-06-18] 11800tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-11-25] 11801[gw2] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-11-25] 11802tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2026-07-28] 11803[gw1] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2026-07-28] 11804[gw3] [ 99%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-06-18] 11805tests/types/test_version.py::test_supported_versions_are_known 11806tests/types/test_version.py::test_known_versions_are_strictly_ordered 11807tests/types/test_wire_frames.py::test_request_frame_carries_the_envelope_and_the_dumped_request_body 11808[gw3] [ 99%] PASSED tests/types/test_version.py::test_supported_versions_are_known 11809[gw2] [ 99%] PASSED tests/types/test_wire_frames.py::test_request_frame_carries_the_envelope_and_the_dumped_request_body 11810[gw1] [ 99%] PASSED tests/types/test_version.py::test_known_versions_are_strictly_ordered 11811tests/types/test_wire_frames.py::test_notification_frame_has_no_id_and_carries_the_dumped_params 11812tests/types/test_wire_frames.py::test_non_empty_result_dump_carries_result_type_complete_before_the_sieve 11813tests/types/test_wire_frames.py::test_cacheable_list_result_dump_carries_default_caching_directives 11814[gw3] [ 99%] PASSED tests/types/test_wire_frames.py::test_notification_frame_has_no_id_and_carries_the_dumped_params 11815[gw2] [ 99%] PASSED tests/types/test_wire_frames.py::test_non_empty_result_dump_carries_result_type_complete_before_the_sieve 11816[gw1] [ 99%] PASSED tests/types/test_wire_frames.py::test_cacheable_list_result_dump_carries_default_caching_directives 11817tests/types/test_wire_frames.py::test_empty_result_frame_dumps_an_empty_result_object 11818tests/types/test_wire_frames.py::test_input_required_result_frame_carries_the_tag_and_the_embedded_requests 11819[gw3] [ 99%] PASSED tests/types/test_wire_frames.py::test_empty_result_frame_dumps_an_empty_result_object 11820tests/types/test_wire_frames.py::test_error_frame_wraps_error_data_in_the_jsonrpc_envelope 11821[gw1] [ 99%] PASSED tests/types/test_wire_frames.py::test_error_frame_wraps_error_data_in_the_jsonrpc_envelope 11822[gw2] [ 99%] PASSED tests/types/test_wire_frames.py::test_input_required_result_frame_carries_the_tag_and_the_embedded_requests 11823[gw0] [ 99%] PASSED tests/test_types.py::test_bare_import_mcp_binds_the_types_submodule 11824tests/transports/stdio/test_lifecycle.py::test_a_server_that_exits_on_stdin_close_is_reaped_and_never_terminated 11825[gw0] [ 99%] PASSED tests/transports/stdio/test_lifecycle.py::test_a_server_that_exits_on_stdin_close_is_reaped_and_never_terminated 11826tests/transports/stdio/test_lifecycle.py::test_cancelling_the_client_mid_session_terminates_the_whole_server_tree 11827[gw0] [ 99%] PASSED tests/transports/stdio/test_lifecycle.py::test_cancelling_the_client_mid_session_terminates_the_whole_server_tree 11828tests/transports/stdio/test_lifecycle.py::test_a_server_that_exits_mid_session_keeps_its_own_exit_code 11829[gw0] [ 99%] PASSED tests/transports/stdio/test_lifecycle.py::test_a_server_that_exits_mid_session_keeps_its_own_exit_code 11830tests/transports/stdio/test_lifecycle.py::test_server_stderr_output_reaches_the_errlog_file 11831[gw0] [ 99%] PASSED tests/transports/stdio/test_lifecycle.py::test_server_stderr_output_reaches_the_errlog_file 11832tests/transports/stdio/test_lifecycle.py::test_fallback_process_reports_death_through_returncode_without_a_wait_call 11833[gw0] [ 99%] PASSED tests/transports/stdio/test_lifecycle.py::test_fallback_process_reports_death_through_returncode_without_a_wait_call 11834tests/transports/stdio/test_lifecycle.py::test_fallback_process_wait_is_cancellable_while_the_child_lives 11835[gw0] [ 99%] PASSED tests/transports/stdio/test_lifecycle.py::test_fallback_process_wait_is_cancellable_while_the_child_lives 11836tests/transports/stdio/test_posix.py::test_a_gracefully_exiting_servers_child_survives_the_client_shutdown 11837[gw0] [ 99%] PASSED tests/transports/stdio/test_posix.py::test_a_gracefully_exiting_servers_child_survives_the_client_shutdown 11838tests/transports/stdio/test_posix.py::test_a_surviving_childs_write_to_the_inherited_stdout_fails_with_epipe 11839[gw0] [ 99%] PASSED tests/transports/stdio/test_posix.py::test_a_surviving_childs_write_to_the_inherited_stdout_fails_with_epipe 11840tests/transports/stdio/test_windows.py::test_a_gracefully_exited_servers_child_is_reaped_when_the_job_handle_closes 11841[gw0] [ 99%] SKIPPED tests/transports/stdio/test_windows.py::test_a_gracefully_exited_servers_child_is_reaped_when_the_job_handle_closes 11842tests/transports/stdio/test_windows.py::test_a_selector_event_loop_session_uses_the_fallback_process_and_exits_cleanly[anyio_backend0] 11843[gw0] [ 99%] SKIPPED tests/transports/stdio/test_windows.py::test_a_selector_event_loop_session_uses_the_fallback_process_and_exits_cleanly[anyio_backend0] 11844tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-03-26] 11845[gw0] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-03-26] 11846tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-06-18] 11847[gw0] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-06-18] 11848tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-11-25] 11849[gw0] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-11-25] 11850tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[server/discover-2026-07-28] 11851[gw0] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[server/discover-2026-07-28] 11852tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[subscriptions/listen-2026-07-28] 11853[gw0] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[subscriptions/listen-2026-07-28] 11854tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2024-11-05] 11855[gw0] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2024-11-05] 11856tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-03-26] 11857[gw0] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-03-26] 11858tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-06-18] 11859[gw0] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-06-18] 11860tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-11-25] 11861[gw0] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-11-25] 11862tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2026-07-28] 11863[gw0] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2026-07-28] 11864tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2024-11-05] 11865[gw0] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2024-11-05] 11866tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-03-26] 11867[gw0] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-03-26] 11868tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-06-18] 11869[gw0] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-06-18] 11870tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-11-25] 11871[gw0] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-11-25] 11872tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2026-07-28] 11873[gw0] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2026-07-28] 11874tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2024-11-05] 11875[gw0] [ 99%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2024-11-05] 11876tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-03-26] 11877[gw0] [ 99%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-03-26] 11878tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-06-18] 11879[gw0] [ 99%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-06-18] 11880tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-11-25] 11881[gw0] [ 99%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-11-25] 11882tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2024-11-05] 11883[gw0] [ 99%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2024-11-05] 11884tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-03-26] 11885[gw0] [ 99%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-03-26] 11886tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-06-18] 11887[gw0] [ 99%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-06-18] 11888tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-11-25] 11889[gw0] [ 99%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-11-25] 11890tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2024-11-05] 11891[gw0] [100%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2024-11-05] 1189211893============ 5904 passed, 8 skipped, 1 xfailed in 64.00s (0:01:04) =============11894Finished executing pytestCheckPhase11895pytestCheckPhase completed in 1 minutes 14 seconds