python3.14-mcp-2.3.0
checks.x86_64-linux.pkgs-mistral-vibe
· build #10861
· raw
1bld1: building x2jjabm5qxaa9lw2gcdqn0fb8wwgpj2l-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/a08jyab2fks34a8g7qwn6nz95df81hyf-python3.14-mcp-2.3.0-dist41checking for references to /build/ in /nix/store/a08jyab2fks34a8g7qwn6nz95df81hyf-python3.14-mcp-2.3.0-dist...42patching script interpreter paths in /nix/store/a08jyab2fks34a8g7qwn6nz95df81hyf-python3.14-mcp-2.3.0-dist43shrinking RPATHs of ELF executables and libraries in /nix/store/p7ws1z57f84387d9g5y9jkhzwc2xnbj0-python3.14-mcp-2.3.044checking for references to /build/ in /nix/store/p7ws1z57f84387d9g5y9jkhzwc2xnbj0-python3.14-mcp-2.3.0...45patching script interpreter paths in /nix/store/p7ws1z57f84387d9g5y9jkhzwc2xnbj0-python3.14-mcp-2.3.046stripping (with command strip and flags -S -p) in /nix/store/p7ws1z57f84387d9g5y9jkhzwc2xnbj0-python3.14-mcp-2.3.0/lib /nix/store/p7ws1z57f84387d9g5y9jkhzwc2xnbj0-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/p7ws1z57f84387d9g5y9jkhzwc2xnbj0-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 68tests/docs_src/test_media.py::test_in_memory_bytes_with_a_format_become_the_same_image_content_block 69tests/client/test_streamable_http.py::test_none_disables_the_sse_event_limit 70[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_mcp_requirement_pins_release_versions 71tests/cli/test_claude.py::test_mcp_requirement_leaves_dev_versions_unpinned 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/cli/test_claude.py::test_mcp_requirement_falls_back_when_mcp_is_not_installed 77tests/client/test_client_caching.py::test_an_expired_entry_is_refetched 78[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_mcp_requirement_falls_back_when_mcp_is_not_installed 79tests/cli/test_claude.py::test_generates_uv_run_command 80[gw3] [ 0%] PASSED tests/docs_src/test_media.py::test_in_memory_bytes_with_a_format_become_the_same_image_content_block 81[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_an_expired_entry_is_refetched 82[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_generates_uv_run_command 83tests/client/test_client_caching.py::test_each_list_verb_caches_independently_under_its_own_method 84tests/docs_src/test_media.py::test_path_file_is_read_when_the_result_is_built 85tests/cli/test_claude.py::test_file_spec_without_object_suffix 86[gw3] [ 0%] PASSED tests/docs_src/test_media.py::test_path_file_is_read_when_the_result_is_built 87tests/docs_src/test_media.py::test_raw_data_without_a_format_falls_back_to_a_default_mime_type 88[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_file_spec_without_object_suffix 89tests/cli/test_claude.py::test_with_packages_sorted_and_deduplicated 90[gw3] [ 0%] PASSED tests/docs_src/test_media.py::test_raw_data_without_a_format_falls_back_to_a_default_mime_type 91[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_each_list_verb_caches_independently_under_its_own_method 92tests/docs_src/test_media.py::test_icons_are_visible_where_they_were_declared 93tests/client/test_client_caching.py::test_read_resource_caches_per_uri 94[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_with_packages_sorted_and_deduplicated 95tests/cli/test_claude.py::test_explicit_mcp_cli_kept_alongside_pinned_requirement 96[gw3] [ 0%] PASSED tests/docs_src/test_media.py::test_icons_are_visible_where_they_were_declared 97[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_explicit_mcp_cli_kept_alongside_pinned_requirement 98tests/cli/test_claude.py::test_with_editable_adds_flag 99tests/docs_src/test_middleware.py::test_timing_record_predicate 100[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_read_resource_caches_per_uri 101[gw3] [ 0%] PASSED tests/docs_src/test_middleware.py::test_timing_record_predicate 102[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_with_editable_adds_flag 103tests/client/test_client_caching.py::test_cursor_continuations_neither_read_nor_write_the_cache 104tests/cli/test_claude.py::test_env_vars_written 105tests/docs_src/test_middleware.py::test_middleware_observes_every_inbound_message 106[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_env_vars_written 107[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_cursor_continuations_neither_read_nor_write_the_cache 108tests/cli/test_claude.py::test_existing_env_vars_merged_new_wins 109[gw2] [ 0%] PASSED tests/client/test_streamable_http.py::test_none_disables_the_sse_event_limit 110tests/client/test_client_caching.py::test_an_expired_cursor_rejection_evicts_the_methods_entry 111tests/client/test_streamable_http.py::test_configured_sse_limit_fails_an_oversized_resumption_event 112[gw3] [ 0%] PASSED tests/docs_src/test_middleware.py::test_middleware_observes_every_inbound_message 113[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_existing_env_vars_merged_new_wins 114tests/docs_src/test_middleware.py::test_the_result_passes_through_unchanged 115tests/cli/test_claude.py::test_existing_env_vars_preserved_without_new 116[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_an_expired_cursor_rejection_evicts_the_methods_entry 117[gw2] [ 0%] PASSED tests/client/test_streamable_http.py::test_configured_sse_limit_fails_an_oversized_resumption_event 118tests/client/test_client_caching.py::test_an_expired_cursor_rejection_under_bypass_does_not_evict 119[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_existing_env_vars_preserved_without_new 120tests/client/test_streamable_http.py::test_configured_sse_limit_does_not_replay_an_oversized_reconnected_event 121[gw3] [ 0%] PASSED tests/docs_src/test_middleware.py::test_the_result_passes_through_unchanged 122tests/cli/test_claude.py::test_other_servers_preserved 123tests/docs_src/test_middleware.py::test_a_notification_has_no_request_id 124[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_an_expired_cursor_rejection_under_bypass_does_not_evict 125[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_other_servers_preserved 126[gw2] [ 0%] PASSED tests/client/test_streamable_http.py::test_configured_sse_limit_does_not_replay_an_oversized_reconnected_event 127tests/client/test_client_caching.py::test_a_non_cursor_error_on_a_continuation_does_not_evict 128tests/cli/test_claude.py::test_existing_config_with_a_bom_is_accepted[utf-8-sig] 129tests/client/test_streamable_http.py::test_non_sse_reconnection_response_retries_before_failing_the_request 130[gw3] [ 0%] PASSED tests/docs_src/test_middleware.py::test_a_notification_has_no_request_id 131tests/docs_src/test_middleware.py::test_raising_before_call_next_refuses_the_message 132[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_existing_config_with_a_bom_is_accepted[utf-8-sig] 133[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_a_non_cursor_error_on_a_continuation_does_not_evict 134tests/cli/test_claude.py::test_existing_config_with_a_bom_is_accepted[utf-16] 135[gw2] [ 0%] PASSED tests/client/test_streamable_http.py::test_non_sse_reconnection_response_retries_before_failing_the_request 136tests/client/test_client_caching.py::test_bypass_neither_serves_nor_disturbs_a_warm_entry 137tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[add-add-False] 138[gw3] [ 0%] PASSED tests/docs_src/test_middleware.py::test_raising_before_call_next_refuses_the_message 139[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_existing_config_with_a_bom_is_accepted[utf-16] 140[gw2] [ 0%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[add-add-False] 141tests/docs_src/test_middleware.py::test_an_unhandled_method_raises_through_the_middleware 142tests/cli/test_claude.py::test_raises_when_config_dir_missing 143tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[--False] 144[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_bypass_neither_serves_nor_disturbs_a_warm_entry 145[gw2] [ 0%] PASSED tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[--False] 146[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_raises_when_config_dir_missing 147tests/client/test_client_caching.py::test_refresh_skips_the_read_and_stores_the_refetched_result 148tests/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] 149tests/cli/test_claude.py::test_get_uv_path[/usr/local/bin/uv-/usr/local/bin/uv] 150[gw2] [ 0%] 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] 151[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_get_uv_path[/usr/local/bin/uv-/usr/local/bin/uv] 152[gw3] [ 0%] PASSED tests/docs_src/test_middleware.py::test_an_unhandled_method_raises_through_the_middleware 153tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[ add-=?base64?IGFkZA==?=-True] 154tests/docs_src/test_middleware.py::test_initialize_cannot_be_replaced_only_wrapped 155tests/cli/test_claude.py::test_get_uv_path[None-uv] 156[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_refresh_skips_the_read_and_stores_the_refetched_result 157tests/client/test_client_caching.py::test_refresh_storing_a_ttl_zero_result_purges_the_warm_entry 158[gw2] [ 0%] 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] 159[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_get_uv_path[None-uv] 160[gw3] [ 0%] PASSED tests/docs_src/test_middleware.py::test_initialize_cannot_be_replaced_only_wrapped 161tests/client/test_streamable_http.py::test_mcp_name_header_values_are_base64_wrapped_when_unsafe_for_an_http_field[add -=?base64?YWRkIA==?=-True] 162tests/docs_src/test_middleware.py::test_a_tool_call_over_the_cap_is_refused_while_the_earlier_calls_still_run 163tests/cli/test_claude.py::test_windows_drive_letter_not_split[C:\\Users\\server.py-C:\\Users\\server.py] 164[gw2] [ 0%] 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] 165tests/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] 166[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_refresh_storing_a_ttl_zero_result_purges_the_warm_entry 167tests/client/test_client_caching.py::test_a_list_call_carrying_meta_is_fetched_and_replaces_the_warm_entry 168[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_windows_drive_letter_not_split[C:\\Users\\server.py-C:\\Users\\server.py] 169[gw2] [ 0%] 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] 170tests/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] 171tests/cli/test_claude.py::test_windows_drive_letter_not_split[C:\\Users\\server.py:app-C:\\Users\\server.py:app] 172[gw2] [ 0%] 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] 173[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_a_list_call_carrying_meta_is_fetched_and_replaces_the_warm_entry 174tests/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] 175[gw3] [ 0%] PASSED tests/docs_src/test_middleware.py::test_a_tool_call_over_the_cap_is_refused_while_the_earlier_calls_still_run 176[gw0] [ 0%] PASSED tests/cli/test_claude.py::test_windows_drive_letter_not_split[C:\\Users\\server.py:app-C:\\Users\\server.py:app] 177tests/client/test_client_caching.py::test_a_read_resource_carrying_meta_is_fetched_and_replaces_the_warm_entry 178tests/docs_src/test_middleware.py::test_other_requests_are_answered_with_the_cap_reached 179[gw2] [ 0%] 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] 180tests/client/test_streamable_http.py::test_post_request_merges_per_message_metadata_headers 181tests/cli/test_utils.py::test_parse_file_path_accepts_valid_specs[server.py-None] 182[gw1] [ 0%] PASSED tests/client/test_client_caching.py::test_a_read_resource_carrying_meta_is_fetched_and_replaces_the_warm_entry 183[gw3] [ 0%] PASSED tests/docs_src/test_middleware.py::test_other_requests_are_answered_with_the_cap_reached 184tests/client/test_client_caching.py::test_cache_mode_is_inert_when_caching_is_disabled 185tests/docs_src/test_middleware.py::test_a_refused_call_is_accepted_once_a_running_call_finishes 186[gw0] [ 0%] PASSED tests/cli/test_utils.py::test_parse_file_path_accepts_valid_specs[server.py-None] 187tests/cli/test_utils.py::test_parse_file_path_accepts_valid_specs[foo.py:srv_obj-srv_obj] 188[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_post_request_merges_per_message_metadata_headers 189tests/client/test_streamable_http.py::test_pre_session_bare_404_maps_to_method_not_found 190[gw1] [ 1%] PASSED tests/client/test_client_caching.py::test_cache_mode_is_inert_when_caching_is_disabled 191tests/client/test_client_caching.py::test_a_seeded_read_resource_skips_the_cache_and_ignores_cache_mode[request_state] 192[gw0] [ 1%] PASSED tests/cli/test_utils.py::test_parse_file_path_accepts_valid_specs[foo.py:srv_obj-srv_obj] 193[gw3] [ 1%] PASSED tests/docs_src/test_middleware.py::test_a_refused_call_is_accepted_once_a_running_call_finishes 194[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_pre_session_bare_404_maps_to_method_not_found 195tests/client/test_streamable_http.py::test_initialize_post_clears_cached_pv_header_and_unstamped_posts_read_it 196tests/cli/test_utils.py::test_parse_file_path_missing 197tests/docs_src/test_middleware.py::test_a_tool_call_that_raises_gives_its_slot_back 198[gw0] [ 1%] PASSED tests/cli/test_utils.py::test_parse_file_path_missing 199tests/cli/test_utils.py::test_parse_file_exit_on_dir 200[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_initialize_post_clears_cached_pv_header_and_unstamped_posts_read_it 201tests/client/test_streamable_http.py::test_modern_cancelled_frame_aborts_the_matching_in_flight_post 202[gw1] [ 1%] PASSED tests/client/test_client_caching.py::test_a_seeded_read_resource_skips_the_cache_and_ignores_cache_mode[request_state] 203[gw0] [ 1%] PASSED tests/cli/test_utils.py::test_parse_file_exit_on_dir 204[gw3] [ 1%] PASSED tests/docs_src/test_middleware.py::test_a_tool_call_that_raises_gives_its_slot_back 205tests/client/test_client_caching.py::test_a_seeded_read_resource_skips_the_cache_and_ignores_cache_mode[input_responses] 206tests/cli/test_utils.py::test_build_uv_command_pins_the_running_mcp_version 207tests/docs_src/test_middleware.py::test_a_cancelled_tool_call_gives_its_slot_back 208[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frame_aborts_the_matching_in_flight_post 209tests/client/test_streamable_http.py::test_legacy_cancelled_frame_posts_and_leaves_the_stream_open[no-version-yet] 210[gw0] [ 1%] PASSED tests/cli/test_utils.py::test_build_uv_command_pins_the_running_mcp_version 211tests/cli/test_utils.py::test_build_uv_command_leaves_source_builds_unpinned 212[gw1] [ 1%] PASSED tests/client/test_client_caching.py::test_a_seeded_read_resource_skips_the_cache_and_ignores_cache_mode[input_responses] 213tests/client/test_client_caching.py::test_a_terminal_read_reached_through_driver_rounds_is_never_cached 214[gw0] [ 1%] PASSED tests/cli/test_utils.py::test_build_uv_command_leaves_source_builds_unpinned 215tests/cli/test_utils.py::test_build_uv_command_adds_editable_and_packages 216[gw3] [ 1%] PASSED tests/docs_src/test_middleware.py::test_a_cancelled_tool_call_gives_its_slot_back 217[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_legacy_cancelled_frame_posts_and_leaves_the_stream_open[no-version-yet] 218tests/docs_src/test_middleware.py::test_answering_with_an_error_result_returns_it_to_the_caller_instead_of_raising 219tests/client/test_streamable_http.py::test_legacy_cancelled_frame_posts_and_leaves_the_stream_open[2025-11-25] 220[gw0] [ 1%] PASSED tests/cli/test_utils.py::test_build_uv_command_adds_editable_and_packages 221tests/cli/test_utils.py::test_get_npx_unix_like 222[gw3] [ 1%] PASSED tests/docs_src/test_middleware.py::test_answering_with_an_error_result_returns_it_to_the_caller_instead_of_raising 223[gw1] [ 1%] PASSED tests/client/test_client_caching.py::test_a_terminal_read_reached_through_driver_rounds_is_never_cached 224[gw0] [ 1%] PASSED tests/cli/test_utils.py::test_get_npx_unix_like 225tests/client/test_client_caching.py::test_a_refresh_that_resolves_to_input_required_purges_the_warm_entry 226[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_legacy_cancelled_frame_posts_and_leaves_the_stream_open[2025-11-25] 227tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[unknown-id] 228tests/docs_src/test_middleware.py::test_calls_made_one_after_another_never_reach_the_cap 229tests/cli/test_utils.py::test_get_npx_windows 230[gw0] [ 1%] PASSED tests/cli/test_utils.py::test_get_npx_windows 231tests/cli/test_utils.py::test_get_npx_returns_none_when_npx_missing 232[gw3] [ 1%] PASSED tests/docs_src/test_middleware.py::test_calls_made_one_after_another_never_reach_the_cap 233[gw0] [ 1%] PASSED tests/cli/test_utils.py::test_get_npx_returns_none_when_npx_missing 234[gw1] [ 1%] PASSED tests/client/test_client_caching.py::test_a_refresh_that_resolves_to_input_required_purges_the_warm_entry 235[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[unknown-id] 236tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[bool-must-not-alias-request-id-1] 237tests/docs_src/test_mrtr.py::test_first_call_returns_an_input_required_result 238tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_sets_client_info 239tests/client/test_client_caching.py::test_a_listing_served_from_a_shared_store_rebuilds_output_schemas 240[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_sets_client_info 241[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_first_call_returns_an_input_required_result 242tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_with_scopes 243[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[bool-must-not-alias-request-id-1] 244tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[string-1-must-not-match-int-1] 245tests/docs_src/test_mrtr.py::test_the_auto_loop_drives_the_call_to_completion 246[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_with_scopes 247tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_with_client_secret_post 248[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[string-1-must-not-match-int-1] 249tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[no-request-id] 250[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_init_with_client_secret_post 251[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_the_auto_loop_drives_the_call_to_completion 252tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_client_credentials 253tests/docs_src/test_mrtr.py::test_the_auto_loop_without_a_callback_raises_mcp_error 254[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[no-request-id] 255[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_client_credentials 256tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[no-params] 257tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_client_secret_post_includes_client_id 258[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_the_auto_loop_without_a_callback_raises_mcp_error 259tests/docs_src/test_mrtr.py::test_retry_with_input_responses_and_request_state_completes_the_call 260[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_client_secret_post_includes_client_id 261[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_modern_cancelled_frames_matching_no_post_are_swallowed[no-params] 262tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_without_scopes 263tests/client/test_streamable_http.py::test_handler_scoped_cancelled_frames_are_translated_at_modern_too 264[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_retry_with_input_responses_and_request_state_completes_the_call 265tests/docs_src/test_mrtr.py::test_the_manual_loop_drives_the_call_to_completion 266[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestClientCredentialsOAuthProvider::test_exchange_token_without_scopes 267tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_init_sets_client_info 268[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_handler_scoped_cancelled_frames_are_translated_at_modern_too 269tests/client/test_streamable_http.py::test_cancel_for_a_request_sent_under_2025_still_posts_after_modern_adoption 270[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_init_sets_client_info 271[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_the_manual_loop_drives_the_call_to_completion 272tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_exchange_token_client_credentials 273tests/docs_src/test_mrtr.py::test_the_in_memory_client_negotiates_2026_07_28 274[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_exchange_token_client_credentials 275[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_cancel_for_a_request_sent_under_2025_still_posts_after_modern_adoption 276[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_the_in_memory_client_negotiates_2026_07_28 277tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_exchange_token_without_scopes 278tests/client/test_streamable_http.py::test_scope_cancel_aborts_a_modern_listen_post_end_to_end 279tests/docs_src/test_mrtr.py::test_a_pre_2026_session_has_nowhere_to_put_the_result 280[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestPrivateKeyJWTOAuthProvider::test_exchange_token_without_scopes 281tests/client/auth/extensions/test_client_credentials.py::TestSignedJWTParameters::test_create_assertion_provider 282[gw2] [ 1%] PASSED tests/client/test_streamable_http.py::test_scope_cancel_aborts_a_modern_listen_post_end_to_end 283tests/client/test_streamable_http.py::test_a_finished_post_task_does_not_evict_a_reused_ids_new_registration 284[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestSignedJWTParameters::test_create_assertion_provider 285tests/client/auth/extensions/test_client_credentials.py::TestSignedJWTParameters::test_create_assertion_provider_with_additional_claims 286[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_a_pre_2026_session_has_nowhere_to_put_the_result 287tests/docs_src/test_mrtr.py::test_fulfil_refuses_a_request_it_cannot_answer 288[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestSignedJWTParameters::test_create_assertion_provider_with_additional_claims 289[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_fulfil_refuses_a_request_it_cannot_answer 290tests/client/auth/extensions/test_client_credentials.py::TestStaticAssertionProvider::test_returns_static_token 291tests/docs_src/test_mrtr.py::test_a_prompt_returns_an_input_required_result_on_the_first_round 292[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::TestStaticAssertionProvider::test_returns_static_token 293tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[secret-as-configured] 294[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[secret-as-configured] 295[gw1] [ 1%] PASSED tests/client/test_client_caching.py::test_a_listing_served_from_a_shared_store_rebuilds_output_schemas 296[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_a_prompt_returns_an_input_required_result_on_the_first_round 297tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[secret-root-slash] 298tests/docs_src/test_mrtr.py::test_the_prompt_auto_loop_returns_the_final_messages 299tests/client/test_client_caching.py::test_validation_from_a_served_listing_rejects_missing_structured_content 300[gw0] [ 1%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[secret-root-slash] 301tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[jwt-as-configured] 302[gw3] [ 1%] PASSED tests/docs_src/test_mrtr.py::test_the_prompt_auto_loop_returns_the_final_messages 303tests/docs_src/test_mrtr.py::test_a_custom_codec_round_trips_what_it_sealed 304[gw1] [ 1%] PASSED tests/client/test_client_caching.py::test_validation_from_a_served_listing_rejects_missing_structured_content 305tests/client/test_client_caching.py::test_a_cache_hit_listing_still_mirrors_x_mcp_headers_on_tools_call 306[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[jwt-as-configured] 307tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[jwt-root-slash] 308[gw3] [ 2%] PASSED tests/docs_src/test_mrtr.py::test_a_custom_codec_round_trips_what_it_sealed 309tests/docs_src/test_mrtr.py::test_a_custom_codec_raises_invalid_request_state_for_any_bad_token 310[gw3] [ 2%] PASSED tests/docs_src/test_mrtr.py::test_a_custom_codec_raises_invalid_request_state_for_any_bad_token 311[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_with_configured_issuer_exchanges_at_that_issuer[jwt-root-slash] 312tests/client/auth/extensions/test_client_credentials.py::test_provider_picks_its_configured_issuer_among_several_advertised_servers[secret] 313tests/docs_src/test_mrtr.py::test_a_custom_codec_rejects_every_alias_of_a_minted_token 314[gw3] [ 2%] PASSED tests/docs_src/test_mrtr.py::test_a_custom_codec_rejects_every_alias_of_a_minted_token 315tests/docs_src/test_oauth_clients.py::test_in_memory_storage_satisfies_the_token_storage_protocol 316[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_picks_its_configured_issuer_among_several_advertised_servers[secret] 317tests/client/auth/extensions/test_client_credentials.py::test_provider_picks_its_configured_issuer_among_several_advertised_servers[jwt] 318[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_in_memory_storage_satisfies_the_token_storage_protocol 319[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_cache_hit_listing_still_mirrors_x_mcp_headers_on_tools_call 320tests/docs_src/test_oauth_clients.py::test_storage_round_trips_tokens_and_client_info 321tests/client/test_client_caching.py::test_a_shared_store_hit_prunes_a_header_map_the_writers_filter_dropped 322[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_picks_its_configured_issuer_among_several_advertised_servers[jwt] 323tests/client/auth/extensions/test_client_credentials.py::test_constructing_without_issuer_is_deprecated[secret] 324[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_storage_round_trips_tokens_and_client_info 325tests/docs_src/test_oauth_clients.py::test_the_provider_is_an_httpx_auth 326[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_constructing_without_issuer_is_deprecated[secret] 327[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_the_provider_is_an_httpx_auth 328tests/client/auth/extensions/test_client_credentials.py::test_constructing_without_issuer_is_deprecated[jwt] 329tests/docs_src/test_oauth_clients.py::test_the_metadata_defaults_are_the_authorization_code_flow 330[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_shared_store_hit_prunes_a_header_map_the_writers_filter_dropped 331[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_constructing_without_issuer_is_deprecated[jwt] 332tests/client/test_client_caching.py::test_a_tools_list_changed_notification_makes_the_next_list_refetch 333[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_the_metadata_defaults_are_the_authorization_code_flow 334tests/client/auth/extensions/test_client_credentials.py::test_without_issuer_the_exchange_follows_whichever_server_was_discovered[secret] 335tests/docs_src/test_oauth_clients.py::test_redirect_uris_is_required 336[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_redirect_uris_is_required 337tests/docs_src/test_oauth_clients.py::test_the_redirect_handler_receives_the_authorization_url 338[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_without_issuer_the_exchange_follows_whichever_server_was_discovered[secret] 339tests/client/auth/extensions/test_client_credentials.py::test_without_issuer_the_exchange_follows_whichever_server_was_discovered[jwt] 340[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_the_redirect_handler_receives_the_authorization_url 341[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_tools_list_changed_notification_makes_the_next_list_refetch 342tests/docs_src/test_oauth_clients.py::test_client_credentials_provider_has_no_human_in_the_loop 343tests/client/test_client_caching.py::test_a_resource_updated_notification_evicts_that_uris_read_entry 344[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_without_issuer_the_exchange_follows_whichever_server_was_discovered[jwt] 345[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_client_credentials_provider_has_no_human_in_the_loop 346tests/client/auth/extensions/test_client_credentials.py::test_an_issuer_that_is_not_an_http_url_is_rejected_at_construction 347tests/docs_src/test_oauth_clients.py::test_client_credentials_provider_builds_its_own_metadata 348[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_an_issuer_that_is_not_an_http_url_is_rejected_at_construction 349[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_client_credentials_provider_builds_its_own_metadata 350tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_metadata_for_a_different_issuer[secret] 351tests/docs_src/test_oauth_clients.py::test_issuer_is_an_optional_keyword_on_both_machine_to_machine_providers[ClientCredentialsOAuthProvider] 352[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_issuer_is_an_optional_keyword_on_both_machine_to_machine_providers[ClientCredentialsOAuthProvider] 353[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_resource_updated_notification_evicts_that_uris_read_entry 354tests/docs_src/test_oauth_clients.py::test_issuer_is_an_optional_keyword_on_both_machine_to_machine_providers[PrivateKeyJWTOAuthProvider] 355tests/client/test_client_caching.py::test_the_modern_in_process_path_drops_the_eviction_notification 356[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_metadata_for_a_different_issuer[secret] 357[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_issuer_is_an_optional_keyword_on_both_machine_to_machine_providers[PrivateKeyJWTOAuthProvider] 358tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_metadata_for_a_different_issuer[jwt] 359tests/docs_src/test_oauth_clients.py::test_the_two_remaining_keyword_arguments_have_defaults 360[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_the_modern_in_process_path_drops_the_eviction_notification 361[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_the_two_remaining_keyword_arguments_have_defaults 362tests/client/test_client_caching.py::test_a_discover_result_never_enters_the_response_cache 363tests/docs_src/test_oauth_clients.py::test_the_one_more_provider_is_private_key_jwt 364[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_metadata_for_a_different_issuer[jwt] 365[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_the_one_more_provider_is_private_key_jwt 366tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_to_exchange_without_metadata_when_issuer_configured[secret] 367tests/docs_src/test_oauth_clients.py::test_every_oauth_error_is_an_oauth_flow_error 368[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_discover_result_never_enters_the_response_cache 369[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_every_oauth_error_is_an_oauth_flow_error 370tests/client/test_client_caching.py::test_a_negative_inbound_ttl_is_served_as_zero_and_never_cached[-5] 371tests/docs_src/test_oauth_clients.py::test_not_everything_is_a_flow_error 372[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_to_exchange_without_metadata_when_issuer_configured[secret] 373[gw3] [ 2%] PASSED tests/docs_src/test_oauth_clients.py::test_not_everything_is_a_flow_error 374tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_to_exchange_without_metadata_when_issuer_configured[jwt] 375tests/docs_src/test_opentelemetry.py::test_a_plain_server_is_traced_with_no_extra_code 376[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_negative_inbound_ttl_is_served_as_zero_and_never_cached[-5] 377tests/client/test_client_caching.py::test_a_negative_inbound_ttl_is_served_as_zero_and_never_cached[-5.0] 378[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_provider_refuses_to_exchange_without_metadata_when_issuer_configured[jwt] 379tests/client/auth/extensions/test_client_credentials.py::test_a_refused_authorization_server_is_forgotten_so_the_next_request_rediscovers[secret] 380[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_negative_inbound_ttl_is_served_as_zero_and_never_cached[-5.0] 381tests/client/test_client_caching.py::test_a_negative_discover_ttl_still_connects_modern_in_auto_mode[-5] 382[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_negative_discover_ttl_still_connects_modern_in_auto_mode[-5] 383[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_a_refused_authorization_server_is_forgotten_so_the_next_request_rediscovers[secret] 384tests/client/test_client_caching.py::test_a_negative_discover_ttl_still_connects_modern_in_auto_mode[-5.0] 385tests/client/auth/extensions/test_client_credentials.py::test_a_refused_authorization_server_is_forgotten_so_the_next_request_rediscovers[jwt] 386[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_negative_discover_ttl_still_connects_modern_in_auto_mode[-5.0] 387tests/client/test_client_caching.py::test_each_notification_evicts_exactly_its_entries_end_to_end 388[gw0] [ 2%] PASSED tests/client/auth/extensions/test_client_credentials.py::test_a_refused_authorization_server_is_forgotten_so_the_next_request_rediscovers[jwt] 389tests/client/auth/extensions/test_identity_assertion.py::test_on_401_exchanges_assertion_at_configured_issuer_and_retries 390[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_on_401_exchanges_assertion_at_configured_issuer_and_retries 391tests/client/auth/extensions/test_identity_assertion.py::test_resource_server_metadata_is_never_consulted 392[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_resource_server_metadata_is_never_consulted 393tests/client/auth/extensions/test_identity_assertion.py::test_asm_404_at_configured_issuer_raises_before_minting_assertion 394[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_each_notification_evicts_exactly_its_entries_end_to_end 395tests/client/test_client_caching.py::test_private_entries_never_cross_partitions_between_clients_sharing_a_store 396[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_asm_404_at_configured_issuer_raises_before_minting_assertion 397tests/client/auth/extensions/test_identity_assertion.py::test_asm_5xx_stops_discovery_and_raises 398[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_asm_5xx_stops_discovery_and_raises 399tests/client/auth/extensions/test_identity_assertion.py::test_asm_with_wrong_issuer_is_rejected_before_minting_assertion 400[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_private_entries_never_cross_partitions_between_clients_sharing_a_store 401tests/client/test_client_caching.py::test_a_server_stamped_public_entry_does_not_cross_partitions_by_default 402[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_asm_with_wrong_issuer_is_rejected_before_minting_assertion 403tests/client/auth/extensions/test_identity_assertion.py::test_asm_with_off_origin_token_endpoint_is_rejected_before_minting_assertion 404[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_asm_with_off_origin_token_endpoint_is_rejected_before_minting_assertion 405tests/client/auth/extensions/test_identity_assertion.py::test_403_insufficient_scope_unions_challenged_scope_with_configured 406[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_a_server_stamped_public_entry_does_not_cross_partitions_by_default 407tests/client/test_client_caching.py::test_share_public_serves_a_server_stamped_public_entry_across_partitions 408[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_403_insufficient_scope_unions_challenged_scope_with_configured 409tests/client/auth/extensions/test_identity_assertion.py::test_403_without_insufficient_scope_does_not_reauthorize 410[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_share_public_serves_a_server_stamped_public_entry_across_partitions 411tests/client/test_client_caching.py::test_same_partition_clients_share_read_entries_through_the_store 412[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_403_without_insufficient_scope_does_not_reauthorize 413tests/client/auth/extensions/test_identity_assertion.py::test_token_endpoint_error_surfaces_as_oauth_token_error 414[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_same_partition_clients_share_read_entries_through_the_store 415[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_token_endpoint_error_surfaces_as_oauth_token_error 416tests/client/auth/extensions/test_identity_assertion.py::test_client_secret_basic_sends_basic_header_not_body_secret 417tests/client/test_client_caching.py::test_mutating_returned_results_never_corrupts_the_cached_entry 418[gw3] [ 2%] PASSED tests/docs_src/test_opentelemetry.py::test_a_plain_server_is_traced_with_no_extra_code 419[gw0] [ 2%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_client_secret_basic_sends_basic_header_not_body_secret 420tests/docs_src/test_opentelemetry.py::test_client_and_server_share_one_trace 421tests/client/auth/extensions/test_identity_assertion.py::test_stored_token_is_reused_without_reauthorizing 422[gw1] [ 2%] PASSED tests/client/test_client_caching.py::test_mutating_returned_results_never_corrupts_the_cached_entry 423tests/client/test_client_caching.py::test_a_cache_hit_still_yields_to_the_event_loop 424[gw0] [ 3%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_stored_token_is_reused_without_reauthorizing 425tests/client/auth/extensions/test_identity_assertion.py::test_second_401_re_exchanges_without_refetching_asm 426[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_a_cache_hit_still_yields_to_the_event_loop 427tests/client/test_client_caching.py::test_a_legacy_peer_injecting_cache_hints_caches_nothing 428[gw0] [ 3%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_second_401_re_exchanges_without_refetching_asm 429tests/client/auth/extensions/test_identity_assertion.py::test_no_configured_scope_omits_scope_and_backfills_from_request 430[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_a_legacy_peer_injecting_cache_hints_caches_nothing 431[gw0] [ 3%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_no_configured_scope_omits_scope_and_backfills_from_request 432tests/client/test_client_caching.py::test_a_verb_cancelled_mid_write_leaves_no_stale_arm_pair 433tests/client/auth/extensions/test_identity_assertion.py::test_empty_client_secret_is_rejected 434[gw0] [ 3%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_empty_client_secret_is_rejected 435tests/client/auth/extensions/test_identity_assertion.py::test_empty_issuer_is_rejected 436[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_a_verb_cancelled_mid_write_leaves_no_stale_arm_pair 437[gw0] [ 3%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_empty_issuer_is_rejected 438tests/client/test_client_caching.py::test_an_eviction_landing_mid_fetch_discards_that_fetchs_write 439tests/client/auth/extensions/test_identity_assertion.py::test_origin_normalizes_default_ports 440[gw3] [ 3%] PASSED tests/docs_src/test_opentelemetry.py::test_client_and_server_share_one_trace 441[gw0] [ 3%] PASSED tests/client/auth/extensions/test_identity_assertion.py::test_origin_normalizes_default_ports 442tests/docs_src/test_pagination.py::test_mcpserver_never_pages 443tests/client/test_auth.py::TestPKCEParameters::test_pkce_generation 444[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_an_eviction_landing_mid_fetch_discards_that_fetchs_write 445[gw0] [ 3%] PASSED tests/client/test_auth.py::TestPKCEParameters::test_pkce_generation 446tests/client/test_client_caching.py::test_read_resource_bypass_neither_serves_nor_disturbs_a_warm_entry 447tests/client/test_auth.py::TestPKCEParameters::test_pkce_uniqueness 448[gw0] [ 3%] PASSED tests/client/test_auth.py::TestPKCEParameters::test_pkce_uniqueness 449tests/client/test_auth.py::TestOAuthContext::test_oauth_provider_initialization 450[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_read_resource_bypass_neither_serves_nor_disturbs_a_warm_entry 451[gw3] [ 3%] PASSED tests/docs_src/test_pagination.py::test_mcpserver_never_pages 452tests/client/test_client_caching.py::test_read_resource_refresh_refetches_and_restores 453tests/docs_src/test_pagination.py::test_first_page_has_ten_resources_and_a_cursor 454[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthContext::test_oauth_provider_initialization 455tests/client/test_auth.py::TestOAuthContext::test_context_url_parsing 456[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthContext::test_context_url_parsing 457[gw3] [ 3%] PASSED tests/docs_src/test_pagination.py::test_first_page_has_ten_resources_and_a_cursor 458tests/client/test_auth.py::TestOAuthContext::test_token_validity_checking 459tests/docs_src/test_pagination.py::test_the_cursor_resumes_where_the_last_page_stopped 460[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_read_resource_refresh_refetches_and_restores 461tests/client/test_client_caching.py::test_a_closed_client_raises_on_every_cacheable_verb_instead_of_serving_the_cache 462[gw2] [ 3%] PASSED tests/client/test_streamable_http.py::test_a_finished_post_task_does_not_evict_a_reused_ids_new_registration 463[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthContext::test_token_validity_checking 464tests/client/test_auth.py::TestOAuthContext::test_clear_tokens 465[gw3] [ 3%] PASSED tests/docs_src/test_pagination.py::test_the_cursor_resumes_where_the_last_page_stopped 466tests/docs_src/test_pagination.py::test_the_last_page_carries_no_cursor 467tests/client/test_streamable_http.py::test_a_non_resumable_sse_drop_resolves_the_request_with_an_error 468[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthContext::test_clear_tokens 469[gw1] [ 3%] PASSED tests/client/test_client_caching.py::test_a_closed_client_raises_on_every_cacheable_verb_instead_of_serving_the_cache 470tests/client/test_auth.py::TestOAuthFlow::test_build_protected_resource_discovery_urls 471tests/client/test_client_extensions.py::test_mapping_extensions_get_the_migration_error 472[gw3] [ 3%] PASSED tests/docs_src/test_pagination.py::test_the_last_page_carries_no_cursor 473[gw2] [ 3%] PASSED tests/client/test_streamable_http.py::test_a_non_resumable_sse_drop_resolves_the_request_with_an_error 474tests/client/test_streamable_http.py::test_a_superseded_posts_late_real_response_cannot_answer_the_successor 475tests/docs_src/test_pagination.py::test_the_client_loop_collects_all_one_hundred_in_order 476[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFlow::test_build_protected_resource_discovery_urls 477tests/client/test_auth.py::TestOAuthFlow::test_create_oauth_metadata_request 478[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFlow::test_create_oauth_metadata_request 479[gw1] [ 3%] PASSED tests/client/test_client_extensions.py::test_mapping_extensions_get_the_migration_error 480tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_legacy_fallback_when_no_prm 481tests/client/test_client_extensions.py::test_one_extension_claiming_a_tag_twice_reads_as_one_owner 482[gw3] [ 3%] PASSED tests/docs_src/test_pagination.py::test_the_client_loop_collects_all_one_hundred_in_order 483[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_legacy_fallback_when_no_prm 484tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_path_aware_when_auth_server_has_path 485tests/docs_src/test_pagination.py::test_the_client_loop_runs_once_against_a_server_that_does_not_page 486[gw1] [ 3%] PASSED tests/client/test_client_extensions.py::test_one_extension_claiming_a_tag_twice_reads_as_one_owner 487[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_path_aware_when_auth_server_has_path 488tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_root_when_auth_server_has_no_path 489tests/client/test_client_extensions.py::test_bare_extension_instance_is_rejected_with_the_fix_named 490[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_root_when_auth_server_has_no_path 491tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_root_when_auth_server_has_only_slash 492[gw3] [ 3%] PASSED tests/docs_src/test_pagination.py::test_the_client_loop_runs_once_against_a_server_that_does_not_page 493tests/docs_src/test_pagination.py::test_an_invented_cursor_is_an_error 494[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_root_when_auth_server_has_only_slash 495[gw1] [ 3%] PASSED tests/client/test_client_extensions.py::test_bare_extension_instance_is_rejected_with_the_fix_named 496tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_fallback_order 497tests/client/test_client_extensions.py::test_invalid_per_instance_identifier_raises_the_validators_error 498[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_fallback_order 499tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_fallback_conditions 500[gw3] [ 3%] PASSED tests/docs_src/test_pagination.py::test_an_invented_cursor_is_an_error 501[gw1] [ 3%] PASSED tests/client/test_client_extensions.py::test_invalid_per_instance_identifier_raises_the_validators_error 502tests/docs_src/test_progress.py::test_context_parameter_is_invisible_to_the_model 503tests/client/test_client_extensions.py::test_duplicate_extension_identifiers_are_rejected_naming_the_identifier 504[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_oauth_discovery_fallback_conditions 505[gw3] [ 3%] PASSED tests/docs_src/test_progress.py::test_context_parameter_is_invisible_to_the_model 506tests/client/test_auth.py::TestOAuthFallback::test_handle_metadata_response_success 507tests/docs_src/test_progress.py::test_each_report_becomes_one_callback_invocation_in_order 508[gw1] [ 3%] PASSED tests/client/test_client_extensions.py::test_duplicate_extension_identifiers_are_rejected_naming_the_identifier 509tests/client/test_client_extensions.py::test_conflicting_claims_across_extensions_name_both_owners 510[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_handle_metadata_response_success 511tests/client/test_auth.py::TestOAuthFallback::test_prioritize_www_auth_scope_over_prm 512[gw1] [ 3%] PASSED tests/client/test_client_extensions.py::test_conflicting_claims_across_extensions_name_both_owners 513[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_prioritize_www_auth_scope_over_prm 514[gw3] [ 3%] PASSED tests/docs_src/test_progress.py::test_each_report_becomes_one_callback_invocation_in_order 515tests/client/test_client_extensions.py::test_conflicting_notification_bindings_name_both_owners 516tests/client/test_auth.py::TestOAuthFallback::test_prioritize_prm_scopes_when_no_www_auth_scope 517tests/docs_src/test_progress.py::test_over_a_wire_dispatcher_callbacks_race_the_result 518[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_prioritize_prm_scopes_when_no_www_auth_scope 519tests/client/test_auth.py::TestOAuthFallback::test_omit_scope_when_no_prm_scopes_or_www_auth 520[gw1] [ 3%] PASSED tests/client/test_client_extensions.py::test_conflicting_notification_bindings_name_both_owners 521[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_omit_scope_when_no_prm_scopes_or_www_auth 522tests/client/test_client_extensions.py::test_declarations_are_read_exactly_once_at_construction 523[gw3] [ 3%] PASSED tests/docs_src/test_progress.py::test_over_a_wire_dispatcher_callbacks_race_the_result 524tests/client/test_auth.py::TestOAuthFallback::test_token_exchange_request_authorization_code 525tests/docs_src/test_progress.py::test_without_a_callback_report_progress_is_a_no_op 526[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_token_exchange_request_authorization_code 527tests/client/test_auth.py::TestOAuthFallback::test_refresh_token_request 528[gw3] [ 3%] PASSED tests/docs_src/test_progress.py::test_without_a_callback_report_progress_is_a_no_op 529tests/docs_src/test_progress.py::test_progress_callback_is_per_call_not_per_client 530[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_refresh_token_request 531tests/client/test_auth.py::TestOAuthFallback::test_basic_auth_token_exchange 532[gw3] [ 3%] PASSED tests/docs_src/test_progress.py::test_progress_callback_is_per_call_not_per_client 533tests/docs_src/test_progress.py::test_omitting_total_reaches_the_callback_as_none 534[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_basic_auth_token_exchange 535tests/client/test_auth.py::TestOAuthFallback::test_basic_auth_refresh_token 536[gw0] [ 3%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_basic_auth_refresh_token 537[gw3] [ 3%] PASSED tests/docs_src/test_progress.py::test_omitting_total_reaches_the_callback_as_none 538[gw1] [ 3%] PASSED tests/client/test_client_extensions.py::test_declarations_are_read_exactly_once_at_construction 539tests/client/test_auth.py::TestOAuthFallback::test_none_auth_method 540tests/client/test_client_extensions.py::test_settings_dict_is_held_by_reference_not_copied 541tests/docs_src/test_prompts.py::test_function_becomes_the_prompt 542[gw0] [ 4%] PASSED tests/client/test_auth.py::TestOAuthFallback::test_none_auth_method 543tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_included_with_recent_protocol_version 544[gw1] [ 4%] PASSED tests/client/test_client_extensions.py::test_settings_dict_is_held_by_reference_not_copied 545[gw3] [ 4%] PASSED tests/docs_src/test_prompts.py::test_function_becomes_the_prompt 546tests/client/test_client_extensions.py::test_no_extensions_keeps_tools_call_parsing_byte_identical[none] 547tests/docs_src/test_prompts.py::test_returned_string_becomes_one_user_message 548[gw0] [ 4%] PASSED tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_included_with_recent_protocol_version 549tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_excluded_with_old_protocol_version 550[gw0] [ 4%] PASSED tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_excluded_with_old_protocol_version 551[gw3] [ 4%] PASSED tests/docs_src/test_prompts.py::test_returned_string_becomes_one_user_message 552tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_included_with_protected_resource_metadata 553tests/docs_src/test_prompts.py::test_missing_required_argument_is_a_protocol_error 554[gw0] [ 4%] PASSED tests/client/test_auth.py::TestProtectedResourceMetadata::test_resource_param_included_with_protected_resource_metadata 555tests/client/test_auth.py::test_auth_flow_follows_a_same_origin_redirect_of_its_own_request 556[gw1] [ 4%] PASSED tests/client/test_client_extensions.py::test_no_extensions_keeps_tools_call_parsing_byte_identical[none] 557[gw0] [ 4%] PASSED tests/client/test_auth.py::test_auth_flow_follows_a_same_origin_redirect_of_its_own_request 558tests/client/test_client_extensions.py::test_no_extensions_keeps_tools_call_parsing_byte_identical[empty] 559tests/client/test_auth.py::test_auth_flow_does_not_follow_a_redirect_of_its_own_request_to_another_origin 560[gw3] [ 4%] PASSED tests/docs_src/test_prompts.py::test_missing_required_argument_is_a_protocol_error 561tests/docs_src/test_prompts.py::test_message_list_becomes_a_multi_turn_template 562[gw0] [ 4%] PASSED tests/client/test_auth.py::test_auth_flow_does_not_follow_a_redirect_of_its_own_request_to_another_origin 563tests/client/test_auth.py::test_auth_flow_stops_following_a_redirecting_request_after_a_few_hops 564[gw0] [ 4%] PASSED tests/client/test_auth.py::test_auth_flow_stops_following_a_redirecting_request_after_a_few_hops 565tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[404-True] 566[gw1] [ 4%] PASSED tests/client/test_client_extensions.py::test_no_extensions_keeps_tools_call_parsing_byte_identical[empty] 567tests/client/test_client_extensions.py::test_claimed_result_resolves_transparently_to_the_resolvers_result 568[gw0] [ 4%] PASSED tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[404-True] 569tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[307-True] 570[gw3] [ 4%] PASSED tests/docs_src/test_prompts.py::test_message_list_becomes_a_multi_turn_template 571[gw0] [ 4%] PASSED tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[307-True] 572tests/docs_src/test_prompts.py::test_title_and_argument_descriptions 573tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[500-False] 574[gw1] [ 4%] PASSED tests/client/test_client_extensions.py::test_claimed_result_resolves_transparently_to_the_resolvers_result 575[gw0] [ 4%] PASSED tests/client/test_auth.py::test_auth_metadata_response_says_whether_to_try_the_next_discovery_url[500-False] 576tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-03-26-False] 577tests/client/test_client_extensions.py::test_claimed_shape_routes_to_its_owning_extensions_resolver 578[gw3] [ 4%] PASSED tests/docs_src/test_prompts.py::test_title_and_argument_descriptions 579tests/docs_src/test_prompts.py::test_default_value_makes_the_argument_optional 580[gw0] [ 4%] PASSED tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-03-26-False] 581tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-06-18-True] 582[gw0] [ 4%] PASSED tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-06-18-True] 583tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-11-25-True] 584[gw3] [ 4%] PASSED tests/docs_src/test_prompts.py::test_default_value_makes_the_argument_optional 585tests/docs_src/test_protocol_versions.py::test_auto_lands_on_the_modern_version 586[gw0] [ 4%] PASSED tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[2025-11-25-True] 587tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[zzz-False] 588[gw1] [ 4%] PASSED tests/client/test_client_extensions.py::test_claimed_shape_routes_to_its_owning_extensions_resolver 589tests/client/test_client_extensions.py::test_resolver_product_gets_the_direct_paths_output_schema_revalidation 590[gw0] [ 4%] PASSED tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[zzz-False] 591[gw3] [ 4%] PASSED tests/docs_src/test_protocol_versions.py::test_auto_lands_on_the_modern_version 592tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[9999-99-99-False] 593tests/docs_src/test_protocol_versions.py::test_legacy_forces_the_initialize_handshake 594[gw0] [ 4%] PASSED tests/client/test_auth.py::test_should_include_resource_param_by_protocol_version[9999-99-99-False] 595tests/client/test_auth.py::test_validate_resource_rejects_mismatched_resource 596[gw3] [ 4%] PASSED tests/docs_src/test_protocol_versions.py::test_legacy_forces_the_initialize_handshake 597tests/docs_src/test_protocol_versions.py::test_version_pin_sends_nothing_and_knows_nothing 598[gw0] [ 4%] PASSED tests/client/test_auth.py::test_validate_resource_rejects_mismatched_resource 599[gw1] [ 4%] PASSED tests/client/test_client_extensions.py::test_resolver_product_gets_the_direct_paths_output_schema_revalidation 600tests/client/test_auth.py::test_validate_resource_accepts_matching_resource 601tests/client/test_client_extensions.py::test_resolver_error_result_is_returned_not_raised 602[gw0] [ 4%] PASSED tests/client/test_auth.py::test_validate_resource_accepts_matching_resource 603tests/client/test_auth.py::test_validate_resource_custom_callback 604[gw3] [ 4%] PASSED tests/docs_src/test_protocol_versions.py::test_version_pin_sends_nothing_and_knows_nothing 605[gw0] [ 4%] PASSED tests/client/test_auth.py::test_validate_resource_custom_callback 606tests/client/test_auth.py::test_validate_resource_accepts_root_url_with_trailing_slash 607tests/docs_src/test_protocol_versions.py::test_handshake_era_version_is_not_a_valid_pin 608[gw1] [ 4%] PASSED tests/client/test_client_extensions.py::test_resolver_error_result_is_returned_not_raised 609[gw3] [ 4%] PASSED tests/docs_src/test_protocol_versions.py::test_handshake_era_version_is_not_a_valid_pin 610[gw0] [ 4%] PASSED tests/client/test_auth.py::test_validate_resource_accepts_root_url_with_trailing_slash 611tests/client/test_auth.py::test_validate_resource_accepts_server_url_with_trailing_slash 612tests/docs_src/test_protocol_versions.py::test_prior_discover_round_trips 613tests/client/test_client_extensions.py::test_resolver_receives_the_calls_claim_context 614[gw0] [ 4%] PASSED tests/client/test_auth.py::test_validate_resource_accepts_server_url_with_trailing_slash 615tests/client/test_auth.py::test_get_resource_url_uses_canonical_when_prm_mismatches 616[gw3] [ 4%] PASSED tests/docs_src/test_protocol_versions.py::test_prior_discover_round_trips 617[gw0] [ 4%] PASSED tests/client/test_auth.py::test_get_resource_url_uses_canonical_when_prm_mismatches 618tests/docs_src/test_protocol_versions.py::test_discover_result_survives_json 619tests/client/test_auth.py::TestRegistrationResponse::test_handle_registration_response_reads_before_accessing_text 620[gw0] [ 4%] PASSED tests/client/test_auth.py::TestRegistrationResponse::test_handle_registration_response_reads_before_accessing_text 621tests/client/test_auth.py::TestRegistrationResponse::test_registration_error_names_an_unfollowed_redirect 622[gw3] [ 4%] PASSED tests/docs_src/test_protocol_versions.py::test_discover_result_survives_json 623tests/docs_src/test_protocol_versions.py::test_prior_discover_is_ignored_unless_mode_is_a_pin 624[gw1] [ 4%] PASSED tests/client/test_client_extensions.py::test_resolver_receives_the_calls_claim_context 625[gw0] [ 4%] PASSED tests/client/test_auth.py::TestRegistrationResponse::test_registration_error_names_an_unfollowed_redirect 626tests/client/test_client_extensions.py::test_resolver_exception_propagates_untouched 627tests/client/test_auth.py::test_registration_response_with_substituted_metadata_yields_the_credentials 628[gw0] [ 4%] PASSED tests/client/test_auth.py::test_registration_response_with_substituted_metadata_yields_the_credentials 629[gw3] [ 4%] PASSED tests/docs_src/test_protocol_versions.py::test_prior_discover_is_ignored_unless_mode_is_a_pin 630tests/client/test_auth.py::test_registration_response_does_not_seed_the_issuer_binding_from_the_body[string] 631tests/docs_src/test_real_host.py::test_the_host_sees_exactly_what_the_decorators_registered 632[gw0] [ 4%] PASSED tests/client/test_auth.py::test_registration_response_does_not_seed_the_issuer_binding_from_the_body[string] 633tests/client/test_auth.py::test_registration_response_does_not_seed_the_issuer_binding_from_the_body[not-a-string] 634[gw1] [ 4%] PASSED tests/client/test_client_extensions.py::test_resolver_exception_propagates_untouched 635tests/client/test_client_extensions.py::test_unclaimed_result_flows_through_unchanged_with_extensions_present 636[gw3] [ 4%] PASSED tests/docs_src/test_real_host.py::test_the_host_sees_exactly_what_the_decorators_registered 637[gw0] [ 4%] PASSED tests/client/test_auth.py::test_registration_response_does_not_seed_the_issuer_binding_from_the_body[not-a-string] 638tests/client/test_auth.py::test_a_2xx_body_that_is_not_client_information_is_an_oauth_registration_error[not-json] 639tests/docs_src/test_real_host.py::test_a_tool_call_round_trips_the_way_a_host_drives_it 640[gw0] [ 4%] PASSED tests/client/test_auth.py::test_a_2xx_body_that_is_not_client_information_is_an_oauth_registration_error[not-json] 641tests/client/test_auth.py::test_a_2xx_body_that_is_not_client_information_is_an_oauth_registration_error[not-an-object] 642[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] 643tests/client/test_auth.py::test_a_2xx_body_that_is_not_client_information_is_an_oauth_registration_error[not-utf8] 644[gw0] [ 4%] PASSED tests/client/test_auth.py::test_a_2xx_body_that_is_not_client_information_is_an_oauth_registration_error[not-utf8] 645[gw1] [ 4%] PASSED tests/client/test_client_extensions.py::test_unclaimed_result_flows_through_unchanged_with_extensions_present 646[gw3] [ 4%] PASSED tests/docs_src/test_real_host.py::test_a_tool_call_round_trips_the_way_a_host_drives_it 647tests/docs_src/test_real_host.py::test_the_resource_a_host_can_attach_to_context 648tests/client/test_auth.py::test_token_exchange_reports_an_unimplemented_registered_auth_method 649tests/client/test_client_extensions.py::test_input_required_then_plain_result_keeps_the_auto_loop_working 650[gw0] [ 4%] PASSED tests/client/test_auth.py::test_token_exchange_reports_an_unimplemented_registered_auth_method 651tests/client/test_auth.py::test_prepare_token_auth_leaves_a_private_key_jwt_client_to_its_provider 652[gw0] [ 4%] PASSED tests/client/test_auth.py::test_prepare_token_auth_leaves_a_private_key_jwt_client_to_its_provider 653tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_uses_registration_endpoint_from_metadata 654[gw3] [ 4%] PASSED tests/docs_src/test_real_host.py::test_the_resource_a_host_can_attach_to_context 655[gw0] [ 4%] PASSED tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_uses_registration_endpoint_from_metadata 656tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_falls_back_to_default_register_endpoint_when_no_metadata 657tests/docs_src/test_resources.py::test_function_becomes_a_listed_resource 658[gw2] [ 4%] PASSED tests/client/test_streamable_http.py::test_a_superseded_posts_late_real_response_cannot_answer_the_successor 659[gw0] [ 5%] PASSED tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_falls_back_to_default_register_endpoint_when_no_metadata 660tests/client/test_streamable_http.py::test_a_202_to_a_request_resolves_the_waiter_with_an_error 661[gw1] [ 5%] PASSED tests/client/test_client_extensions.py::test_input_required_then_plain_result_keeps_the_auto_loop_working 662tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_falls_back_when_metadata_has_no_registration_endpoint 663[gw3] [ 5%] PASSED tests/docs_src/test_resources.py::test_function_becomes_a_listed_resource 664tests/client/test_client_extensions.py::test_input_required_then_claimed_result_on_retry_resolves_transparently 665tests/docs_src/test_resources.py::test_read_returns_the_return_value_as_text 666[gw0] [ 5%] PASSED tests/client/test_auth.py::TestCreateClientRegistrationRequest::test_falls_back_when_metadata_has_no_registration_endpoint 667[gw2] [ 5%] PASSED tests/client/test_streamable_http.py::test_a_202_to_a_request_resolves_the_waiter_with_an_error 668tests/client/test_streamable_http.py::test_exhausted_reconnection_attempts_resolve_the_request_with_an_error 669tests/client/test_auth.py::test_registration_request_sends_application_type 670[gw0] [ 5%] PASSED tests/client/test_auth.py::test_registration_request_sends_application_type 671[gw3] [ 5%] PASSED tests/docs_src/test_resources.py::test_read_returns_the_return_value_as_text 672tests/client/test_auth.py::TestAuthFlow::test_auth_flow_with_valid_tokens 673tests/docs_src/test_resources.py::test_template_is_listed_separately_from_resources 674[gw1] [ 5%] PASSED tests/client/test_client_extensions.py::test_input_required_then_claimed_result_on_retry_resolves_transparently 675[gw0] [ 5%] PASSED tests/client/test_auth.py::TestAuthFlow::test_auth_flow_with_valid_tokens 676tests/client/test_client_extensions.py::test_notification_bindings_fold_into_the_session 677tests/client/test_auth.py::TestAuthFlow::test_auth_flow_with_no_tokens 678[gw3] [ 5%] PASSED tests/docs_src/test_resources.py::test_template_is_listed_separately_from_resources 679tests/docs_src/test_resources.py::test_reading_a_template_fills_the_placeholder 680[gw0] [ 5%] PASSED tests/client/test_auth.py::TestAuthFlow::test_auth_flow_with_no_tokens 681[gw3] [ 5%] PASSED tests/docs_src/test_resources.py::test_reading_a_template_fills_the_placeholder 682[gw1] [ 5%] PASSED tests/client/test_client_extensions.py::test_notification_bindings_fold_into_the_session 683tests/docs_src/test_resources.py::test_uri_params_must_match_function_params 684tests/client/test_auth.py::TestAuthFlow::test_auth_flow_no_unnecessary_retry_after_oauth 685tests/client/test_extension.py::test_claim_with_literal_discriminated_model_constructs 686[gw0] [ 5%] PASSED tests/client/test_auth.py::TestAuthFlow::test_auth_flow_no_unnecessary_retry_after_oauth 687[gw3] [ 5%] PASSED tests/docs_src/test_resources.py::test_uri_params_must_match_function_params 688[gw1] [ 5%] PASSED tests/client/test_extension.py::test_claim_with_literal_discriminated_model_constructs 689tests/docs_src/test_resources.py::test_mime_type_is_what_you_declare 690tests/client/test_auth.py::TestAuthFlow::test_token_exchange_accepts_201_status 691tests/client/test_extension.py::test_claim_accepts_modern_protocol_versions 692[gw1] [ 5%] PASSED tests/client/test_extension.py::test_claim_accepts_modern_protocol_versions 693tests/client/test_extension.py::test_claim_rejects_core_result_type_vocabulary 694[gw3] [ 5%] PASSED tests/docs_src/test_resources.py::test_mime_type_is_what_you_declare 695[gw1] [ 5%] PASSED tests/client/test_extension.py::test_claim_rejects_core_result_type_vocabulary 696[gw0] [ 5%] PASSED tests/client/test_auth.py::TestAuthFlow::test_token_exchange_accepts_201_status 697tests/docs_src/test_resources.py::test_str_return_is_sent_as_is 698tests/client/test_extension.py::test_claim_rejects_model_subclassing_core_result_types[_ClaimedCallToolResult] 699tests/client/test_auth.py::TestAuthFlow::test_403_insufficient_scope_updates_scope_from_header 700[gw1] [ 5%] PASSED tests/client/test_extension.py::test_claim_rejects_model_subclassing_core_result_types[_ClaimedCallToolResult] 701tests/client/test_extension.py::test_claim_rejects_model_subclassing_core_result_types[_ClaimedInputRequiredResult] 702[gw2] [ 5%] PASSED tests/client/test_streamable_http.py::test_exhausted_reconnection_attempts_resolve_the_request_with_an_error 703tests/client/test_streamable_http.py::test_resolving_an_abandoned_request_after_the_reader_closed_is_contained 704[gw1] [ 5%] PASSED tests/client/test_extension.py::test_claim_rejects_model_subclassing_core_result_types[_ClaimedInputRequiredResult] 705[gw3] [ 5%] PASSED tests/docs_src/test_resources.py::test_str_return_is_sent_as_is 706[gw0] [ 5%] PASSED tests/client/test_auth.py::TestAuthFlow::test_403_insufficient_scope_updates_scope_from_header 707tests/client/test_extension.py::test_claim_rejects_model_without_result_type_field 708tests/docs_src/test_resources.py::test_dict_return_becomes_json_text 709tests/client/test_auth.py::test_403_step_up_preserves_scope_from_stored_token 710[gw1] [ 5%] PASSED tests/client/test_extension.py::test_claim_rejects_model_without_result_type_field 711tests/client/test_extension.py::test_claim_rejects_plain_str_result_type_field 712[gw3] [ 5%] PASSED tests/docs_src/test_resources.py::test_dict_return_becomes_json_text 713[gw0] [ 5%] PASSED tests/client/test_auth.py::test_403_step_up_preserves_scope_from_stored_token 714tests/docs_src/test_resources.py::test_bytes_return_becomes_a_blob 715tests/client/test_auth.py::test_scope_step_up_discovers_the_authorization_server_before_reauthorizing 716[gw1] [ 5%] PASSED tests/client/test_extension.py::test_claim_rejects_plain_str_result_type_field 717tests/client/test_extension.py::test_claim_rejects_mismatched_result_type_literal 718[gw1] [ 5%] PASSED tests/client/test_extension.py::test_claim_rejects_mismatched_result_type_literal 719tests/client/test_extension.py::test_claim_rejects_model_not_subclassing_result 720[gw0] [ 5%] PASSED tests/client/test_auth.py::test_scope_step_up_discovers_the_authorization_server_before_reauthorizing 721[gw3] [ 5%] PASSED tests/docs_src/test_resources.py::test_bytes_return_becomes_a_blob 722tests/client/test_auth.py::test_403_without_a_scope_challenge_is_returned_to_the_caller 723[gw1] [ 5%] PASSED tests/client/test_extension.py::test_claim_rejects_model_not_subclassing_result 724tests/client/test_extension.py::test_claim_rejects_model_aliasing_core_surface_fields 725tests/docs_src/test_run.py::test_the_run_call_is_guarded_so_importing_does_not_start_a_server 726[gw1] [ 5%] PASSED tests/client/test_extension.py::test_claim_rejects_model_aliasing_core_surface_fields 727[gw0] [ 5%] PASSED tests/client/test_auth.py::test_403_without_a_scope_challenge_is_returned_to_the_caller 728tests/client/test_extension.py::test_wire_keys_for_a_bare_field_is_just_its_name 729tests/client/test_auth.py::test_build_metadata[simple-url] 730[gw1] [ 5%] PASSED tests/client/test_extension.py::test_wire_keys_for_a_bare_field_is_just_its_name 731tests/client/test_extension.py::test_claim_rejects_reserved_aliases_in_every_alias_form 732[gw1] [ 5%] PASSED tests/client/test_extension.py::test_claim_rejects_reserved_aliases_in_every_alias_form 733[gw3] [ 5%] PASSED tests/docs_src/test_run.py::test_the_run_call_is_guarded_so_importing_does_not_start_a_server 734tests/docs_src/test_run.py::test_the_transport_never_changes_what_the_server_is 735tests/client/test_extension.py::test_claim_rejects_method_outside_the_closed_verb_set 736[gw2] [ 5%] PASSED tests/client/test_streamable_http.py::test_resolving_an_abandoned_request_after_the_reader_closed_is_contained 737[gw1] [ 5%] PASSED tests/client/test_extension.py::test_claim_rejects_method_outside_the_closed_verb_set 738tests/client/test_streamable_http.py::test_trailing_slash_redirect_within_origin_is_followed_by_the_transport 739tests/client/test_extension.py::test_claim_rejects_empty_protocol_versions 740[gw1] [ 5%] PASSED tests/client/test_extension.py::test_claim_rejects_empty_protocol_versions 741tests/client/test_extension.py::test_claim_rejects_non_modern_protocol_versions 742[gw1] [ 5%] PASSED tests/client/test_extension.py::test_claim_rejects_non_modern_protocol_versions 743[gw3] [ 5%] PASSED tests/docs_src/test_run.py::test_the_transport_never_changes_what_the_server_is 744tests/client/test_extension.py::test_result_claim_is_frozen 745tests/docs_src/test_run.py::test_transport_options_are_not_constructor_options 746[gw1] [ 5%] PASSED tests/client/test_extension.py::test_result_claim_is_frozen 747tests/client/test_extension.py::test_notification_binding_constructs 748[gw3] [ 5%] PASSED tests/docs_src/test_run.py::test_transport_options_are_not_constructor_options 749[gw2] [ 5%] PASSED tests/client/test_streamable_http.py::test_trailing_slash_redirect_within_origin_is_followed_by_the_transport 750tests/docs_src/test_run.py::test_settings_are_constructor_arguments_and_land_on_settings 751[gw1] [ 5%] PASSED tests/client/test_extension.py::test_notification_binding_constructs 752tests/client/test_streamable_http.py::test_redirect_to_another_origin_fails_that_call_and_keeps_the_session 753tests/client/test_extension.py::test_notification_binding_accepts_core_known_method 754[gw3] [ 5%] PASSED tests/docs_src/test_run.py::test_settings_are_constructor_arguments_and_land_on_settings 755[gw1] [ 5%] PASSED tests/client/test_extension.py::test_notification_binding_accepts_core_known_method 756tests/docs_src/test_sampling_and_roots.py::test_a_sampling_dependency_receives_the_clients_completion[legacy] 757tests/client/test_extension.py::test_notification_binding_is_frozen 758[gw1] [ 5%] PASSED tests/client/test_extension.py::test_notification_binding_is_frozen 759tests/client/test_extension.py::test_extension_defaults_advertise_nothing 760[gw1] [ 5%] PASSED tests/client/test_extension.py::test_extension_defaults_advertise_nothing 761tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[io.modelcontextprotocol/ui] 762[gw2] [ 5%] PASSED tests/client/test_streamable_http.py::test_redirect_to_another_origin_fails_that_call_and_keeps_the_session 763tests/client/test_streamable_http.py::test_redirected_notification_is_dropped_and_the_next_message_still_goes_out 764[gw1] [ 5%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[io.modelcontextprotocol/ui] 765tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.example/my_ext] 766[gw1] [ 5%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.example/my_ext] 767tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.x-y.z2/n.a-b_c] 768[gw2] [ 5%] PASSED tests/client/test_streamable_http.py::test_redirected_notification_is_dropped_and_the_next_message_still_goes_out 769[gw1] [ 5%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.x-y.z2/n.a-b_c] 770tests/client/test_streamable_http.py::test_get_stream_gives_up_without_retrying_when_the_endpoint_redirects_elsewhere 771[gw3] [ 5%] PASSED tests/docs_src/test_sampling_and_roots.py::test_a_sampling_dependency_receives_the_clients_completion[legacy] 772tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[example/x] 773tests/docs_src/test_sampling_and_roots.py::test_a_sampling_dependency_receives_the_clients_completion[auto] 774[gw1] [ 5%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[example/x] 775[gw2] [ 5%] PASSED tests/client/test_streamable_http.py::test_get_stream_gives_up_without_retrying_when_the_endpoint_redirects_elsewhere 776tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[a/b] 777tests/client/test_streamable_http.py::test_resumption_redirected_elsewhere_resolves_that_request_with_an_error 778[gw1] [ 6%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[a/b] 779tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.example/9start] 780[gw2] [ 6%] PASSED tests/client/test_streamable_http.py::test_resumption_redirected_elsewhere_resolves_that_request_with_an_error 781[gw1] [ 6%] PASSED tests/client/test_extension.py::test_grammar_conformant_identifiers_accepted_at_class_definition[com.example/9start] 782tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[noprefix] 783tests/client/test_streamable_http.py::test_https_endpoint_redirected_to_plain_http_is_explained_and_the_https_form_suggested 784[gw1] [ 6%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[noprefix] 785[gw3] [ 6%] PASSED tests/docs_src/test_sampling_and_roots.py::test_a_sampling_dependency_receives_the_clients_completion[auto] 786tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[-foo/bar] 787[gw2] [ 6%] PASSED tests/client/test_streamable_http.py::test_https_endpoint_redirected_to_plain_http_is_explained_and_the_https_form_suggested 788tests/docs_src/test_sampling_and_roots.py::test_a_roots_dependency_receives_the_clients_folders[legacy] 789tests/client/test_streamable_http.py::test_unfollowed_redirect_location_is_named_without_its_query_string 790[gw1] [ 6%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[-foo/bar] 791tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[.leading/x] 792[gw1] [ 6%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[.leading/x] 793[gw2] [ 6%] PASSED tests/client/test_streamable_http.py::test_unfollowed_redirect_location_is_named_without_its_query_string 794tests/client/test_streamable_http.py::test_https_endpoint_redirected_to_plain_http_elsewhere_never_suggests_the_http_url 795tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[a..b/x] 796[gw1] [ 6%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[a..b/x] 797tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo-/x] 798[gw2] [ 6%] PASSED tests/client/test_streamable_http.py::test_https_endpoint_redirected_to_plain_http_elsewhere_never_suggests_the_http_url 799[gw1] [ 6%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo-/x] 800tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[9foo/x] 801tests/client/test_subscriptions.py::test_listen_surfaces_the_honored_filter_and_subscription_id 802[gw1] [ 6%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[9foo/x] 803tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/-bar] 804[gw3] [ 6%] PASSED tests/docs_src/test_sampling_and_roots.py::test_a_roots_dependency_receives_the_clients_folders[legacy] 805[gw1] [ 6%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/-bar] 806tests/docs_src/test_sampling_and_roots.py::test_a_roots_dependency_receives_the_clients_folders[auto] 807tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/bar-] 808[gw2] [ 6%] PASSED tests/client/test_subscriptions.py::test_listen_surfaces_the_honored_filter_and_subscription_id 809tests/client/test_subscriptions.py::test_listen_delivers_all_four_typed_event_kinds 810[gw1] [ 6%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/bar-] 811tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/] 812[gw1] [ 6%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/] 813tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[/bar] 814[gw2] [ 6%] PASSED tests/client/test_subscriptions.py::test_listen_delivers_all_four_typed_event_kinds 815tests/client/test_subscriptions.py::test_unconsumed_duplicate_events_coalesce 816[gw1] [ 6%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[/bar] 817tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/ba r] 818[gw3] [ 6%] PASSED tests/docs_src/test_sampling_and_roots.py::test_a_roots_dependency_receives_the_clients_folders[auto] 819tests/docs_src/test_sampling_and_roots.py::test_an_undeclared_capability_fails_before_a_request_is_sent 820[gw1] [ 6%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[foo/ba r] 821tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[io.modelcontextprotocol/ui\n] 822[gw1] [ 6%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[io.modelcontextprotocol/ui\n] 823tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[] 824[gw3] [ 6%] PASSED tests/docs_src/test_sampling_and_roots.py::test_an_undeclared_capability_fails_before_a_request_is_sent 825[gw1] [ 6%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[] 826tests/docs_src/test_session_groups.py::test_both_servers_call_their_tool_search 827tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[42] 828[gw1] [ 6%] PASSED tests/client/test_extension.py::test_malformed_identifier_rejected_at_class_definition[42] 829tests/client/test_extension.py::test_subclass_without_identifier_allowed_at_definition 830[gw1] [ 6%] PASSED tests/client/test_extension.py::test_subclass_without_identifier_allowed_at_definition 831[gw3] [ 6%] PASSED tests/docs_src/test_session_groups.py::test_both_servers_call_their_tool_search 832tests/client/test_extension.py::test_advertise_serves_captured_settings 833tests/docs_src/test_session_groups.py::test_a_connected_server_is_aggregated_into_the_group 834[gw1] [ 6%] PASSED tests/client/test_extension.py::test_advertise_serves_captured_settings 835tests/client/test_extension.py::test_advertise_defaults_to_empty_settings 836[gw1] [ 6%] PASSED tests/client/test_extension.py::test_advertise_defaults_to_empty_settings 837tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[noprefix] 838[gw3] [ 6%] PASSED tests/docs_src/test_session_groups.py::test_a_connected_server_is_aggregated_into_the_group 839[gw1] [ 6%] PASSED tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[noprefix] 840tests/docs_src/test_session_groups.py::test_colliding_names_are_rejected 841tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[foo/] 842[gw1] [ 6%] PASSED tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[foo/] 843tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[] 844[gw1] [ 6%] PASSED tests/client/test_extension.py::test_advertise_validates_identifier_eagerly[] 845[gw3] [ 6%] PASSED tests/docs_src/test_session_groups.py::test_colliding_names_are_rejected 846tests/client/test_input_required.py::test_single_round_dispatches_then_retries_to_terminal_result 847tests/docs_src/test_session_groups.py::test_component_name_hook_prefixes_every_name 848[gw1] [ 6%] PASSED tests/client/test_input_required.py::test_single_round_dispatches_then_retries_to_terminal_result 849tests/client/test_input_required.py::test_multi_round_loops_until_retry_returns_non_input_required 850[gw3] [ 6%] PASSED tests/docs_src/test_session_groups.py::test_component_name_hook_prefixes_every_name 851tests/docs_src/test_session_groups.py::test_the_hook_is_a_plain_function_of_name_and_server_info 852[gw3] [ 6%] PASSED tests/docs_src/test_session_groups.py::test_the_hook_is_a_plain_function_of_name_and_server_info 853[gw1] [ 6%] PASSED tests/client/test_input_required.py::test_multi_round_loops_until_retry_returns_non_input_required 854tests/client/test_input_required.py::test_exceeding_max_rounds_raises_with_the_configured_cap 855tests/docs_src/test_session_groups.py::test_the_key_is_prefixed_but_the_wire_name_is_not 856[gw1] [ 6%] PASSED tests/client/test_input_required.py::test_exceeding_max_rounds_raises_with_the_configured_cap 857[gw3] [ 6%] PASSED tests/docs_src/test_session_groups.py::test_the_key_is_prefixed_but_the_wire_name_is_not 858tests/client/test_input_required.py::test_dispatch_returning_error_data_aborts_the_loop_as_mcp_error 859tests/docs_src/test_session_groups.py::test_call_tool_routes_to_the_owning_server 860[gw1] [ 6%] PASSED tests/client/test_input_required.py::test_dispatch_returning_error_data_aborts_the_loop_as_mcp_error 861tests/client/test_input_required.py::test_request_state_passes_through_byte_identical 862[gw1] [ 6%] PASSED tests/client/test_input_required.py::test_request_state_passes_through_byte_identical 863tests/client/test_input_required.py::test_state_only_legs_back_off_exponentially_to_the_cap[trio-mockclock] 864[gw1] [ 6%] PASSED tests/client/test_input_required.py::test_state_only_legs_back_off_exponentially_to_the_cap[trio-mockclock] 865[gw3] [ 6%] PASSED tests/docs_src/test_session_groups.py::test_call_tool_routes_to_the_owning_server 866tests/docs_src/test_session_groups.py::test_disconnect_removes_every_component_of_that_server 867tests/client/test_input_required.py::test_backoff_counter_resets_after_a_leg_with_input_requests[trio-mockclock] 868[gw1] [ 6%] PASSED tests/client/test_input_required.py::test_backoff_counter_resets_after_a_leg_with_input_requests[trio-mockclock] 869tests/client/test_input_required.py::test_input_requests_are_dispatched_concurrently 870[gw3] [ 6%] PASSED tests/docs_src/test_session_groups.py::test_disconnect_removes_every_component_of_that_server 871tests/docs_src/test_shape.py::test_private_mcp_import_detector 872[gw1] [ 6%] PASSED tests/client/test_input_required.py::test_input_requests_are_dispatched_concurrently 873tests/client/test_input_required.py::test_default_max_rounds_constant 874[gw3] [ 6%] PASSED tests/docs_src/test_shape.py::test_private_mcp_import_detector 875[gw1] [ 6%] PASSED tests/client/test_input_required.py::test_default_max_rounds_constant 876tests/docs_src/test_shape.py::test_retired_name_detector 877tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_tools-tools/list] 878[gw3] [ 6%] PASSED tests/docs_src/test_shape.py::test_retired_name_detector 879tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial001.py] 880[gw3] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial001.py] 881tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial001_client.py] 882[gw3] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial001_client.py] 883tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial002.py] 884[gw3] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial002.py] 885tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial003.py] 886[gw3] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/apps/tutorial003.py] 887tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial001.py] 888[gw3] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial001.py] 889[gw1] [ 6%] PASSED tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_tools-tools/list] 890tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial002.py] 891tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resources-resources/list] 892[gw3] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial002.py] 893tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial003.py] 894[gw3] [ 6%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial003.py] 895tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial004.py] 896[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial004.py] 897tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial005.py] 898[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial005.py] 899tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial006.py] 900[gw1] [ 7%] PASSED tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resources-resources/list] 901[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/asgi/tutorial006.py] 902tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_prompts-prompts/list] 903tests/docs_src/test_shape.py::test_example_imports[docs_src/authorization/tutorial001.py] 904[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/authorization/tutorial001.py] 905tests/docs_src/test_shape.py::test_example_imports[docs_src/authorization/tutorial002.py] 906[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/authorization/tutorial002.py] 907tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial001.py] 908[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial001.py] 909tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial002.py] 910[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial002.py] 911tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial003.py] 912[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/caching/tutorial003.py] 913tests/docs_src/test_shape.py::test_example_imports[docs_src/cancellation/tutorial001.py] 914[gw1] [ 7%] PASSED tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_prompts-prompts/list] 915tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resource_templates-resources/templates/list] 916[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/cancellation/tutorial001.py] 917tests/docs_src/test_shape.py::test_example_imports[docs_src/cancellation/tutorial002.py] 918[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/cancellation/tutorial002.py] 919tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial001.py] 920[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial001.py] 921tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial001_client.py] 922[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial001_client.py] 923tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial002.py] 924[gw1] [ 7%] PASSED tests/client/test_list_methods_cursor.py::test_list_methods_params_parameter[list_resource_templates-resources/templates/list] 925tests/client/test_list_methods_cursor.py::test_list_tools_with_strict_server_validation 926[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial002.py] 927tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial003.py] 928[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial003.py] 929tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial004.py] 930[gw1] [ 7%] PASSED tests/client/test_list_methods_cursor.py::test_list_tools_with_strict_server_validation 931tests/client/test_list_methods_cursor.py::test_list_tools_with_lowlevel_server 932[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial004.py] 933tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial005.py] 934[gw1] [ 7%] PASSED tests/client/test_list_methods_cursor.py::test_list_tools_with_lowlevel_server 935tests/client/test_list_roots_callback.py::test_list_roots_callback 936[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial005.py] 937tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial006.py] 938[gw1] [ 7%] PASSED tests/client/test_list_roots_callback.py::test_list_roots_callback 939[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial006.py] 940tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial007.py] 941tests/client/test_logging_callback.py::test_logging_callback 942[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client/tutorial007.py] 943tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial001.py] 944[gw2] [ 7%] PASSED tests/client/test_subscriptions.py::test_unconsumed_duplicate_events_coalesce 945[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial001.py] 946tests/client/test_subscriptions.py::test_graceful_server_close_ends_the_loop_cleanly 947tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial002.py] 948[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial002.py] 949tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial003.py] 950[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial003.py] 951[gw2] [ 7%] PASSED tests/client/test_subscriptions.py::test_graceful_server_close_ends_the_loop_cleanly 952tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial004.py] 953tests/client/test_subscriptions.py::test_abrupt_stream_end_raises_subscription_lost 954[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_callbacks/tutorial004.py] 955tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial001.py] 956[gw2] [ 7%] PASSED tests/client/test_subscriptions.py::test_abrupt_stream_end_raises_subscription_lost 957[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial001.py] 958tests/client/test_subscriptions.py::test_listen_on_a_legacy_connection_raises_the_typed_steer 959tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial002.py] 960[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial002.py] 961tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial003.py] 962[gw1] [ 7%] PASSED tests/client/test_logging_callback.py::test_logging_callback 963[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial003.py] 964tests/client/test_notification_response.py::test_non_compliant_notification_response 965tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial004.py] 966[gw2] [ 7%] PASSED tests/client/test_subscriptions.py::test_listen_on_a_legacy_connection_raises_the_typed_steer 967[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial004.py] 968tests/client/test_subscriptions.py::test_server_rejection_raises_from_enter_not_from_iteration 969tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial005.py] 970[gw1] [ 7%] PASSED tests/client/test_notification_response.py::test_non_compliant_notification_response 971[gw2] [ 7%] PASSED tests/client/test_subscriptions.py::test_server_rejection_raises_from_enter_not_from_iteration 972[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/client_transports/tutorial005.py] 973[gw0] [ 7%] XFAIL tests/client/test_auth.py::test_build_metadata[simple-url] 974tests/client/test_notification_response.py::test_unexpected_content_type_sends_jsonrpc_error 975tests/client/test_subscriptions.py::test_immediate_result_without_ack_opens_already_closed 976tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial001.py] 977[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial001.py] 978tests/client/test_auth.py::test_build_metadata[with-trailing-slash] 979tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial002.py] 980[gw2] [ 7%] PASSED tests/client/test_subscriptions.py::test_immediate_result_without_ack_opens_already_closed 981tests/client/test_subscriptions.py::test_server_sent_cancelled_for_the_listen_id_raises_subscription_lost 982[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial002.py] 983[gw1] [ 7%] PASSED tests/client/test_notification_response.py::test_unexpected_content_type_sends_jsonrpc_error 984tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial003.py] 985tests/client/test_notification_response.py::test_http_error_status_sends_jsonrpc_error 986[gw0] [ 7%] PASSED tests/client/test_auth.py::test_build_metadata[with-trailing-slash] 987tests/client/test_auth.py::test_build_metadata[with-path-param] 988[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/completions/tutorial003.py] 989tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial001.py] 990[gw2] [ 7%] PASSED tests/client/test_subscriptions.py::test_server_sent_cancelled_for_the_listen_id_raises_subscription_lost 991[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial001.py] 992tests/client/test_subscriptions.py::test_exiting_the_context_frees_the_server_slot 993[gw0] [ 7%] PASSED tests/client/test_auth.py::test_build_metadata[with-path-param] 994tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial002.py] 995tests/client/test_auth.py::TestLegacyServerFallback::test_legacy_server_no_prm_falls_back_to_root_oauth_discovery 996[gw1] [ 7%] PASSED tests/client/test_notification_response.py::test_http_error_status_sends_jsonrpc_error 997tests/client/test_notification_response.py::test_http_error_on_notification_does_not_hang 998[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial002.py] 999tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial003.py] 1000[gw2] [ 7%] PASSED tests/client/test_subscriptions.py::test_exiting_the_context_frees_the_server_slot 1001[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/context/tutorial003.py] 1002tests/client/test_subscriptions.py::test_concurrent_subscriptions_demux_independently 1003tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial001.py] 1004[gw0] [ 7%] PASSED tests/client/test_auth.py::TestLegacyServerFallback::test_legacy_server_no_prm_falls_back_to_root_oauth_discovery 1005[gw1] [ 7%] PASSED tests/client/test_notification_response.py::test_http_error_on_notification_does_not_hang 1006tests/client/test_notification_response.py::test_invalid_json_response_sends_jsonrpc_error 1007[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial001.py] 1008tests/client/test_auth.py::TestLegacyServerFallback::test_legacy_server_with_different_prm_and_root_urls 1009tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial002.py] 1010[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial002.py] 1011tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial003.py] 1012[gw3] [ 7%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial003.py] 1013[gw0] [ 7%] PASSED tests/client/test_auth.py::TestLegacyServerFallback::test_legacy_server_with_different_prm_and_root_urls 1014[gw2] [ 8%] PASSED tests/client/test_subscriptions.py::test_concurrent_subscriptions_demux_independently 1015tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial004.py] 1016tests/client/test_auth.py::TestSEP985Discovery::test_path_based_fallback_when_no_www_authenticate 1017tests/client/test_subscriptions.py::test_change_notifications_still_reach_message_handler 1018[gw1] [ 8%] PASSED tests/client/test_notification_response.py::test_invalid_json_response_sends_jsonrpc_error 1019[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/dependencies/tutorial004.py] 1020tests/client/test_notification_response.py::test_client_surfaces_jsonrpc_error_from_non_2xx_body_with_correlated_id 1021tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial001.py] 1022[gw0] [ 8%] PASSED tests/client/test_auth.py::TestSEP985Discovery::test_path_based_fallback_when_no_www_authenticate 1023[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial001.py] 1024[gw2] [ 8%] PASSED tests/client/test_subscriptions.py::test_change_notifications_still_reach_message_handler 1025tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial002.py] 1026tests/client/test_auth.py::TestSEP985Discovery::test_root_based_fallback_after_path_based_404 1027tests/client/test_subscriptions.py::test_enter_times_out_when_the_ack_never_arrives 1028[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial002.py] 1029tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial003.py] 1030[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial003.py] 1031[gw1] [ 8%] PASSED tests/client/test_notification_response.py::test_client_surfaces_jsonrpc_error_from_non_2xx_body_with_correlated_id 1032[gw0] [ 8%] PASSED tests/client/test_auth.py::TestSEP985Discovery::test_root_based_fallback_after_path_based_404 1033tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial004.py] 1034tests/client/test_notification_response.py::test_client_falls_back_to_generic_error_when_non_2xx_body_is_a_jsonrpc_result 1035tests/client/test_auth.py::TestSEP985Discovery::test_www_authenticate_takes_priority_over_well_known 1036[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/deploy/tutorial004.py] 1037tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial001.py] 1038[gw0] [ 8%] PASSED tests/client/test_auth.py::TestSEP985Discovery::test_www_authenticate_takes_priority_over_well_known 1039[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial001.py] 1040tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope="read write"-scope-read write] 1041tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial002.py] 1042[gw1] [ 8%] PASSED tests/client/test_notification_response.py::test_client_falls_back_to_generic_error_when_non_2xx_body_is_a_jsonrpc_result 1043tests/client/test_notification_response.py::test_client_falls_back_to_session_terminated_when_404_body_is_malformed_json 1044[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial002.py] 1045[gw0] [ 8%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope="read write"-scope-read write] 1046tests/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] 1047tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial003.py] 1048[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial003.py] 1049[gw0] [ 8%] 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] 1050tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial004.py] 1051tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer error="insufficient_scope"-error-insufficient_scope] 1052[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/elicitation/tutorial004.py] 1053tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial001.py] 1054[gw1] [ 8%] PASSED tests/client/test_notification_response.py::test_client_falls_back_to_session_terminated_when_404_body_is_malformed_json 1055[gw0] [ 8%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer error="insufficient_scope"-error-insufficient_scope] 1056tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope=read-scope-read] 1057tests/client/test_output_schema_validation.py::test_tool_structured_output_client_side_validation_basemodel 1058[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial001.py] 1059tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial002.py] 1060[gw0] [ 8%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer scope=read-scope-read] 1061[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial002.py] 1062tests/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] 1063tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial003.py] 1064[gw0] [ 8%] 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] 1065[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial003.py] 1066tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer error=invalid_token-error-invalid_token] 1067[gw1] [ 8%] PASSED tests/client/test_output_schema_validation.py::test_tool_structured_output_client_side_validation_basemodel 1068tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial003_client.py] 1069tests/client/test_output_schema_validation.py::test_tool_structured_output_client_side_validation_primitive 1070[gw0] [ 8%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer error=invalid_token-error-invalid_token] 1071tests/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] 1072[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial003_client.py] 1073tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial004.py] 1074[gw0] [ 8%] 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] 1075tests/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] 1076[gw1] [ 8%] PASSED tests/client/test_output_schema_validation.py::test_tool_structured_output_client_side_validation_primitive 1077[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial004.py] 1078tests/client/test_output_schema_validation.py::test_tool_structured_output_client_side_validation_dict_typed 1079tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial004_client.py] 1080[gw0] [ 8%] 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] 1081[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial004_client.py] 1082tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", scope=basic-scope-basic] 1083tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial005.py] 1084[gw0] [ 8%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_valid_cases[Bearer realm="api", scope=basic-scope-basic] 1085[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial005.py] 1086tests/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] 1087[gw1] [ 8%] PASSED tests/client/test_output_schema_validation.py::test_tool_structured_output_client_side_validation_dict_typed 1088tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial006.py] 1089tests/client/test_output_schema_validation.py::test_tool_structured_output_client_side_validation_missing_required 1090[gw0] [ 8%] 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] 1091[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial006.py] 1092tests/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] 1093tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial006_client.py] 1094[gw0] [ 8%] 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] 1095tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[None-scope-no WWW-Authenticate header] 1096[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial006_client.py] 1097tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial007.py] 1098[gw1] [ 8%] PASSED tests/client/test_output_schema_validation.py::test_tool_structured_output_client_side_validation_missing_required 1099[gw0] [ 8%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[None-scope-no WWW-Authenticate header] 1100tests/client/test_output_schema_validation.py::test_tool_not_listed_warning 1101tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[-scope-empty WWW-Authenticate header] 1102[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial007.py] 1103tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial007_client.py] 1104[gw0] [ 8%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[-scope-empty WWW-Authenticate header] 1105[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/extensions/tutorial007_client.py] 1106tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer realm="api", error="insufficient_scope"-scope-no scope parameter] 1107[gw1] [ 8%] PASSED tests/client/test_output_schema_validation.py::test_tool_not_listed_warning 1108tests/docs_src/test_shape.py::test_example_imports[docs_src/first_steps/tutorial001.py] 1109tests/client/test_output_schema_validation.py::test_output_schema_ref_outside_the_document_is_rejected 1110[gw0] [ 8%] 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] 1111[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/first_steps/tutorial001.py] 1112tests/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] 1113tests/docs_src/test_shape.py::test_example_imports[docs_src/first_steps/tutorial001_client.py] 1114[gw0] [ 8%] 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] 1115tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer scope=-scope-malformed scope parameter] 1116[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/first_steps/tutorial001_client.py] 1117[gw1] [ 8%] PASSED tests/client/test_output_schema_validation.py::test_output_schema_ref_outside_the_document_is_rejected 1118tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial001.py] 1119tests/client/test_probe.py::test_a_valid_discover_result_is_adopted_without_initializing 1120[gw0] [ 8%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer scope=-scope-malformed scope parameter] 1121tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer resource_metadata=-resource_metadata-malformed resource_metadata parameter] 1122[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial001.py] 1123tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial002.py] 1124[gw1] [ 8%] PASSED tests/client/test_probe.py::test_a_valid_discover_result_is_adopted_without_initializing 1125tests/client/test_probe.py::test_an_unparseable_discover_result_falls_back_to_initialize 1126[gw0] [ 8%] PASSED tests/client/test_auth.py::TestWWWAuthenticate::test_extract_field_from_www_auth_invalid_cases[Bearer resource_metadata=-resource_metadata-malformed resource_metadata parameter] 1127[gw3] [ 8%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial002.py] 1128tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/client-True] 1129tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial003.py] 1130[gw1] [ 8%] PASSED tests/client/test_probe.py::test_an_unparseable_discover_result_falls_back_to_initialize 1131tests/client/test_probe.py::test_a_discover_result_advertising_only_legacy_versions_falls_back_to_initialize 1132[gw0] [ 8%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/client-True] 1133tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/client-metadata.json-True] 1134[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial003.py] 1135[gw1] [ 9%] PASSED tests/client/test_probe.py::test_a_discover_result_advertising_only_legacy_versions_falls_back_to_initialize 1136tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial004.py] 1137tests/client/test_probe.py::test_any_jsonrpc_error_from_the_probe_falls_back_to_initialize[method-not-found-32601] 1138[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/client-metadata.json-True] 1139[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/handling_errors/tutorial004.py] 1140tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/path/to/client-True] 1141tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial001.py] 1142[gw1] [ 9%] PASSED tests/client/test_probe.py::test_any_jsonrpc_error_from_the_probe_falls_back_to_initialize[method-not-found-32601] 1143tests/client/test_probe.py::test_any_jsonrpc_error_from_the_probe_falls_back_to_initialize[invalid-request-32600] 1144[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/path/to/client-True] 1145[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial001.py] 1146tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com:8443/client-True] 1147tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial002.py] 1148[gw1] [ 9%] PASSED tests/client/test_probe.py::test_any_jsonrpc_error_from_the_probe_falls_back_to_initialize[invalid-request-32600] 1149tests/client/test_probe.py::test_any_jsonrpc_error_from_the_probe_falls_back_to_initialize[internal-error-32603] 1150[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com:8443/client-True] 1151tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[http://example.com/client-False] 1152[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial002.py] 1153[gw1] [ 9%] PASSED tests/client/test_probe.py::test_any_jsonrpc_error_from_the_probe_falls_back_to_initialize[internal-error-32603] 1154tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial003.py] 1155tests/client/test_probe.py::test_any_jsonrpc_error_from_the_probe_falls_back_to_initialize[parse-error-32700] 1156[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[http://example.com/client-False] 1157tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com-False] 1158[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/header_parameters/tutorial003.py] 1159[gw1] [ 9%] PASSED tests/client/test_probe.py::test_any_jsonrpc_error_from_the_probe_falls_back_to_initialize[parse-error-32700] 1160tests/docs_src/test_shape.py::test_example_imports[docs_src/identity_assertion/tutorial001.py] 1161tests/client/test_probe.py::test_unsupported_version_with_a_mutual_modern_version_retries_once_then_adopts 1162[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com-False] 1163tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/-False] 1164[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/identity_assertion/tutorial001.py] 1165[gw1] [ 9%] PASSED tests/client/test_probe.py::test_unsupported_version_with_a_mutual_modern_version_retries_once_then_adopts 1166tests/docs_src/test_shape.py::test_example_imports[docs_src/identity_assertion/tutorial002.py] 1167[gw2] [ 9%] PASSED tests/client/test_subscriptions.py::test_enter_times_out_when_the_ack_never_arrives 1168tests/client/test_probe.py::test_unsupported_version_naming_only_handshake_versions_falls_back_to_initialize 1169[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[https://example.com/-False] 1170tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[None-False] 1171tests/client/test_subscriptions.py::test_an_open_stream_outlives_the_session_read_timeout 1172[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/identity_assertion/tutorial002.py] 1173[gw1] [ 9%] PASSED tests/client/test_probe.py::test_unsupported_version_naming_only_handshake_versions_falls_back_to_initialize 1174tests/client/test_probe.py::test_unsupported_version_with_disjoint_modern_only_supported_reraises 1175tests/docs_src/test_shape.py::test_example_imports[docs_src/index/tutorial001.py] 1176[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[None-False] 1177tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[-False] 1178[gw1] [ 9%] PASSED tests/client/test_probe.py::test_unsupported_version_with_disjoint_modern_only_supported_reraises 1179[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/index/tutorial001.py] 1180tests/client/test_probe.py::test_unsupported_version_with_unparseable_data_falls_back_to_initialize[no-data] 1181[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[-False] 1182tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial001.py] 1183tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[http://[::1/foo/-False] 1184[gw1] [ 9%] PASSED tests/client/test_probe.py::test_unsupported_version_with_unparseable_data_falls_back_to_initialize[no-data] 1185[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial001.py] 1186tests/client/test_probe.py::test_unsupported_version_with_unparseable_data_falls_back_to_initialize[malformed-supported] 1187tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial001_client.py] 1188[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_is_valid_client_metadata_url[http://[::1/foo/-False] 1189tests/client/test_auth.py::TestCIMD::test_should_use_client_metadata_url_when_server_supports 1190[gw1] [ 9%] PASSED tests/client/test_probe.py::test_unsupported_version_with_unparseable_data_falls_back_to_initialize[malformed-supported] 1191[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial001_client.py] 1192[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_should_use_client_metadata_url_when_server_supports 1193tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial002.py] 1194tests/client/test_probe.py::test_unsupported_version_with_unparseable_data_falls_back_to_initialize[missing-supported] 1195tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_server_does_not_support 1196[gw1] [ 9%] PASSED tests/client/test_probe.py::test_unsupported_version_with_unparseable_data_falls_back_to_initialize[missing-supported] 1197[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial002.py] 1198[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_server_does_not_support 1199tests/client/test_probe.py::test_a_second_unsupported_version_after_the_corrective_retry_does_not_loop 1200tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial003.py] 1201tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_not_provided 1202[gw1] [ 9%] PASSED tests/client/test_probe.py::test_a_second_unsupported_version_after_the_corrective_retry_does_not_loop 1203[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/legacy_clients/tutorial003.py] 1204[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_not_provided 1205tests/docs_src/test_shape.py::test_example_imports[docs_src/lifespan/tutorial001.py] 1206tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_no_metadata 1207tests/client/test_probe.py::test_handshake_unsupported_after_a_timed_out_probe_reprobes_and_adopts 1208[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_should_not_use_client_metadata_url_when_no_metadata 1209[gw1] [ 9%] PASSED tests/client/test_probe.py::test_handshake_unsupported_after_a_timed_out_probe_reprobes_and_adopts 1210[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lifespan/tutorial001.py] 1211tests/docs_src/test_shape.py::test_example_imports[docs_src/lifespan/tutorial002.py] 1212tests/client/test_auth.py::TestCIMD::test_create_client_info_from_metadata_url 1213tests/client/test_probe.py::test_handshake_unsupported_without_a_mutual_version_reraises[disjoint] 1214[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_create_client_info_from_metadata_url 1215[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lifespan/tutorial002.py] 1216tests/client/test_auth.py::TestCIMD::test_oauth_provider_with_valid_client_metadata_url 1217tests/docs_src/test_shape.py::test_example_imports[docs_src/logging/tutorial001.py] 1218[gw1] [ 9%] PASSED tests/client/test_probe.py::test_handshake_unsupported_without_a_mutual_version_reraises[disjoint] 1219tests/client/test_probe.py::test_handshake_unsupported_without_a_mutual_version_reraises[no-data] 1220[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_oauth_provider_with_valid_client_metadata_url 1221[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/logging/tutorial001.py] 1222tests/client/test_auth.py::TestCIMD::test_oauth_provider_with_invalid_client_metadata_url_raises_error 1223tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial001.py] 1224[gw1] [ 9%] PASSED tests/client/test_probe.py::test_handshake_unsupported_without_a_mutual_version_reraises[no-data] 1225tests/client/test_probe.py::test_handshake_unsupported_reprobes_at_most_once 1226[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_oauth_provider_with_invalid_client_metadata_url_raises_error 1227[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial001.py] 1228tests/client/test_auth.py::TestCIMD::test_auth_flow_uses_cimd_when_server_supports 1229tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial002.py] 1230[gw1] [ 9%] PASSED tests/client/test_probe.py::test_handshake_unsupported_reprobes_at_most_once 1231tests/client/test_probe.py::test_any_other_handshake_error_propagates_unchanged 1232[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial002.py] 1233tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial003.py] 1234[gw1] [ 9%] PASSED tests/client/test_probe.py::test_any_other_handshake_error_propagates_unchanged 1235[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_auth_flow_uses_cimd_when_server_supports 1236tests/client/test_probe.py::test_a_network_or_resource_error_from_the_probe_propagates_unchanged[httpx2-connect-error] 1237tests/client/test_auth.py::TestCIMD::test_auth_flow_falls_back_to_dcr_when_no_cimd_support 1238[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial003.py] 1239tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial004.py] 1240[gw1] [ 9%] PASSED tests/client/test_probe.py::test_a_network_or_resource_error_from_the_probe_propagates_unchanged[httpx2-connect-error] 1241tests/client/test_probe.py::test_a_network_or_resource_error_from_the_probe_propagates_unchanged[anyio-closed-resource] 1242[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial004.py] 1243[gw0] [ 9%] PASSED tests/client/test_auth.py::TestCIMD::test_auth_flow_falls_back_to_dcr_when_no_cimd_support 1244tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial005.py] 1245[gw1] [ 9%] PASSED tests/client/test_probe.py::test_a_network_or_resource_error_from_the_probe_propagates_unchanged[anyio-closed-resource] 1246tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_added_when_as_supports_and_client_has_refresh_token 1247tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[data0-expected0] 1248[gw3] [ 9%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial005.py] 1249[gw0] [ 9%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_added_when_as_supports_and_client_has_refresh_token 1250tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial006.py] 1251[gw1] [ 10%] PASSED tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[data0-expected0] 1252tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_added_with_www_authenticate_scope 1253tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[data1-expected1] 1254[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial006.py] 1255[gw0] [ 10%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_added_with_www_authenticate_scope 1256tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial007.py] 1257[gw1] [ 10%] PASSED tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[data1-expected1] 1258tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_as_does_not_support 1259tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[None-None] 1260[gw0] [ 10%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_as_does_not_support 1261tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_client_has_no_refresh_token_grant 1262[gw1] [ 10%] PASSED tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[None-None] 1263tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[data3-None] 1264[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/lowlevel/tutorial007.py] 1265[gw0] [ 10%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_client_has_no_refresh_token_grant 1266tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial001.py] 1267tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_duplicated_when_already_present 1268[gw1] [ 10%] PASSED tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[data3-None] 1269tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[not a dict-None] 1270[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial001.py] 1271[gw0] [ 10%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_duplicated_when_already_present 1272tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_scopes_selected 1273tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial002.py] 1274[gw1] [ 10%] PASSED tests/client/test_probe.py::test_parse_supported_returns_none_for_anything_not_shaped_like_the_spec_error_data[not a dict-None] 1275[gw0] [ 10%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_scopes_selected 1276tests/client/test_sampling_callback.py::test_sampling_callback 1277[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial002.py] 1278tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_as_scopes_supported_is_none 1279tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial003.py] 1280[gw0] [ 10%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_as_scopes_supported_is_none 1281[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial003.py] 1282tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_as_metadata 1283tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial004.py] 1284[gw0] [ 10%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_as_metadata 1285tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_grant_types_provided 1286[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial004.py] 1287tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial005.py] 1288[gw0] [ 10%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_offline_access_not_added_when_no_grant_types_provided 1289tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_default_client_metadata_includes_refresh_token_grant 1290[gw0] [ 10%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_default_client_metadata_includes_refresh_token_grant 1291tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_auth_flow_adds_offline_access_when_as_advertises 1292[gw0] [ 10%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_auth_flow_adds_offline_access_when_as_advertises 1293[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/media/tutorial005.py] 1294tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_auth_flow_no_offline_access_when_as_does_not_advertise 1295tests/docs_src/test_shape.py::test_example_imports[docs_src/middleware/tutorial001.py] 1296[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/middleware/tutorial001.py] 1297tests/docs_src/test_shape.py::test_example_imports[docs_src/middleware/tutorial002.py] 1298[gw0] [ 10%] PASSED tests/client/test_auth.py::TestSEP2207OfflineAccessScope::test_auth_flow_no_offline_access_when_as_does_not_advertise 1299tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[advertised-and-correct] 1300[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/middleware/tutorial002.py] 1301tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial001.py] 1302[gw1] [ 10%] PASSED tests/client/test_sampling_callback.py::test_sampling_callback 1303[gw0] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[advertised-and-correct] 1304tests/client/test_sampling_callback.py::test_create_message_backwards_compat_single_content 1305[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial001.py] 1306tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[not-advertised-and-omitted] 1307tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial002.py] 1308[gw0] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[not-advertised-and-omitted] 1309[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial002.py] 1310tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[not-advertised-but-correct] 1311tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial003.py] 1312[gw0] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[not-advertised-but-correct] 1313[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial003.py] 1314tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[trailing-slash-issuer] 1315tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial004.py] 1316[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial004.py] 1317tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial005.py] 1318[gw1] [ 10%] PASSED tests/client/test_sampling_callback.py::test_create_message_backwards_compat_single_content 1319tests/client/test_sampling_callback.py::test_create_message_result_with_tools_type 1320[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/mrtr/tutorial005.py] 1321[gw0] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_accepts[trailing-slash-issuer] 1322tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[advertised-but-omitted] 1323[gw0] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[advertised-but-omitted] 1324tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[wrong-issuer] 1325[gw1] [ 10%] PASSED tests/client/test_sampling_callback.py::test_create_message_result_with_tools_type 1326tests/docs_src/test_shape.py::test_example_imports[docs_src/oauth_clients/tutorial001.py] 1327[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/oauth_clients/tutorial001.py] 1328[gw0] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[wrong-issuer] 1329tests/client/test_scope_bug_1630.py::test_401_uses_www_auth_scope_not_resource_metadata_url 1330tests/docs_src/test_shape.py::test_example_imports[docs_src/oauth_clients/tutorial002.py] 1331tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[unexpected-when-not-advertised] 1332[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/oauth_clients/tutorial002.py] 1333[gw0] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[unexpected-when-not-advertised] 1334tests/docs_src/test_shape.py::test_example_imports[docs_src/opentelemetry/tutorial001.py] 1335tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[trailing-slash-not-normalized] 1336[gw1] [ 10%] PASSED tests/client/test_scope_bug_1630.py::test_401_uses_www_auth_scope_not_resource_metadata_url 1337[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/opentelemetry/tutorial001.py] 1338tests/docs_src/test_shape.py::test_example_imports[docs_src/pagination/tutorial001.py] 1339tests/client/test_send_request_mcp_name.py::test_vendor_name_param_emits_mcp_name_on_the_modern_path 1340[gw0] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_rejects[trailing-slash-not-normalized] 1341[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/pagination/tutorial001.py] 1342tests/client/test_auth.py::test_validate_authorization_response_iss_without_metadata 1343tests/docs_src/test_shape.py::test_example_imports[docs_src/pagination/tutorial002.py] 1344[gw1] [ 10%] PASSED tests/client/test_send_request_mcp_name.py::test_vendor_name_param_emits_mcp_name_on_the_modern_path 1345[gw0] [ 10%] PASSED tests/client/test_auth.py::test_validate_authorization_response_iss_without_metadata 1346tests/client/test_auth.py::test_validate_metadata_issuer_accepts_match 1347tests/client/test_send_request_mcp_name.py::test_vendor_name_param_emits_mcp_name_on_the_handshake_path 1348[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/pagination/tutorial002.py] 1349tests/docs_src/test_shape.py::test_example_imports[docs_src/progress/tutorial001.py] 1350[gw0] [ 10%] PASSED tests/client/test_auth.py::test_validate_metadata_issuer_accepts_match 1351[gw1] [ 10%] PASSED tests/client/test_send_request_mcp_name.py::test_vendor_name_param_emits_mcp_name_on_the_handshake_path 1352tests/client/test_auth.py::test_validate_metadata_issuer_rejects_mismatch 1353[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/progress/tutorial001.py] 1354tests/client/test_send_request_mcp_name.py::test_name_value_passes_through_encode_header_value 1355tests/docs_src/test_shape.py::test_example_imports[docs_src/progress/tutorial002.py] 1356[gw0] [ 10%] PASSED tests/client/test_auth.py::test_validate_metadata_issuer_rejects_mismatch 1357tests/client/test_auth.py::test_union_scopes[disjoint-union-order] 1358[gw1] [ 10%] PASSED tests/client/test_send_request_mcp_name.py::test_name_value_passes_through_encode_header_value 1359[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/progress/tutorial002.py] 1360tests/client/test_send_request_mcp_name.py::test_core_tools_call_header_comes_from_the_stamp_alone 1361tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial001.py] 1362[gw0] [ 10%] PASSED tests/client/test_auth.py::test_union_scopes[disjoint-union-order] 1363tests/client/test_auth.py::test_union_scopes[dedup] 1364[gw3] [ 10%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial001.py] 1365tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial002.py] 1366[gw0] [ 10%] PASSED tests/client/test_auth.py::test_union_scopes[dedup] 1367[gw1] [ 10%] PASSED tests/client/test_send_request_mcp_name.py::test_core_tools_call_header_comes_from_the_stamp_alone 1368tests/client/test_auth.py::test_union_scopes[no-previous] 1369[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial002.py] 1370tests/client/test_send_request_mcp_name.py::test_stamp_table_rows_win_over_name_param_by_ordering 1371tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial003.py] 1372[gw0] [ 11%] PASSED tests/client/test_auth.py::test_union_scopes[no-previous] 1373[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial003.py] 1374tests/client/test_auth.py::test_union_scopes[no-new] 1375[gw1] [ 11%] PASSED tests/client/test_send_request_mcp_name.py::test_stamp_table_rows_win_over_name_param_by_ordering 1376tests/client/test_send_request_mcp_name.py::test_vendor_name_param_emits_mcp_name_on_the_preconnect_path 1377tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial004.py] 1378[gw0] [ 11%] PASSED tests/client/test_auth.py::test_union_scopes[no-new] 1379tests/client/test_auth.py::test_union_scopes[both-empty] 1380[gw1] [ 11%] PASSED tests/client/test_send_request_mcp_name.py::test_vendor_name_param_emits_mcp_name_on_the_preconnect_path 1381tests/client/test_send_request_mcp_name.py::test_missing_name_value_fails_loud_naming_method_and_key 1382[gw0] [ 11%] PASSED tests/client/test_auth.py::test_union_scopes[both-empty] 1383tests/client/test_auth.py::test_credentials_match_issuer_same_issuer 1384[gw1] [ 11%] PASSED tests/client/test_send_request_mcp_name.py::test_missing_name_value_fails_loud_naming_method_and_key 1385tests/client/test_send_request_mcp_name.py::test_non_string_name_value_fails_loud 1386[gw0] [ 11%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_same_issuer 1387tests/client/test_auth.py::test_credentials_match_issuer_different_issuer 1388[gw1] [ 11%] PASSED tests/client/test_send_request_mcp_name.py::test_non_string_name_value_fails_loud 1389[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial004.py] 1390[gw0] [ 11%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_different_issuer 1391tests/client/test_send_request_mcp_name.py::test_absent_params_fails_loud_not_attribute_error 1392tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial005.py] 1393tests/client/test_auth.py::test_credentials_match_issuer_treats_root_slash_as_the_same_issuer[current-has-root-slash] 1394[gw1] [ 11%] PASSED tests/client/test_send_request_mcp_name.py::test_absent_params_fails_loud_not_attribute_error 1395[gw0] [ 11%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_treats_root_slash_as_the_same_issuer[current-has-root-slash] 1396tests/client/test_send_request_mcp_name.py::test_request_without_name_param_sends_no_mcp_name 1397tests/client/test_auth.py::test_credentials_match_issuer_treats_root_slash_as_the_same_issuer[recorded-has-root-slash] 1398[gw1] [ 11%] PASSED tests/client/test_send_request_mcp_name.py::test_request_without_name_param_sends_no_mcp_name 1399[gw0] [ 11%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_treats_root_slash_as_the_same_issuer[recorded-has-root-slash] 1400tests/client/test_auth.py::test_credentials_match_issuer_root_slash_tolerance_does_not_extend_to_other_paths 1401[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial005.py] 1402tests/client/test_session.py::test_client_session_initialize 1403tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial006.py] 1404[gw0] [ 11%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_root_slash_tolerance_does_not_extend_to_other_paths 1405tests/client/test_auth.py::test_credentials_match_issuer_no_recorded_issuer_is_left_alone 1406[gw1] [ 11%] PASSED tests/client/test_session.py::test_client_session_initialize 1407[gw0] [ 11%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_no_recorded_issuer_is_left_alone 1408tests/client/test_session.py::test_client_session_custom_client_info 1409tests/client/test_auth.py::test_credentials_match_issuer_cimd_is_portable 1410[gw0] [ 11%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_cimd_is_portable 1411tests/client/test_auth.py::test_credentials_match_issuer_url_shaped_dcr_id_is_not_portable 1412[gw1] [ 11%] PASSED tests/client/test_session.py::test_client_session_custom_client_info 1413[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/prompts/tutorial006.py] 1414tests/client/test_session.py::test_client_session_default_client_info 1415[gw0] [ 11%] PASSED tests/client/test_auth.py::test_credentials_match_issuer_url_shaped_dcr_id_is_not_portable 1416tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial001.py] 1417tests/client/test_auth.py::test_handle_token_response_backfills_omitted_scope_from_request 1418[gw1] [ 11%] PASSED tests/client/test_session.py::test_client_session_default_client_info 1419[gw0] [ 11%] PASSED tests/client/test_auth.py::test_handle_token_response_backfills_omitted_scope_from_request 1420tests/client/test_session.py::test_client_session_version_negotiation_success 1421[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial001.py] 1422tests/client/test_auth.py::test_handle_token_response_raises_on_non_2xx_with_body 1423tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial002.py] 1424[gw1] [ 11%] PASSED tests/client/test_session.py::test_client_session_version_negotiation_success 1425[gw0] [ 11%] PASSED tests/client/test_auth.py::test_handle_token_response_raises_on_non_2xx_with_body 1426tests/client/test_session.py::test_client_session_version_negotiation_failure 1427tests/client/test_auth.py::test_handle_refresh_response_carries_prior_scope_and_refresh_token_when_omitted 1428[gw0] [ 11%] PASSED tests/client/test_auth.py::test_handle_refresh_response_carries_prior_scope_and_refresh_token_when_omitted 1429[gw1] [ 11%] PASSED tests/client/test_session.py::test_client_session_version_negotiation_failure 1430[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial002.py] 1431tests/client/test_session.py::test_client_capabilities_default 1432tests/client/test_auth.py::test_handle_refresh_response_adopts_rotated_refresh_token_when_returned 1433[gw0] [ 11%] PASSED tests/client/test_auth.py::test_handle_refresh_response_adopts_rotated_refresh_token_when_returned 1434tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial003.py] 1435[gw1] [ 11%] PASSED tests/client/test_session.py::test_client_capabilities_default 1436tests/client/test_auth.py::test_issuer_binding_evaluated_against_the_server_origin_when_prm_discovery_failed 1437tests/client/test_session.py::test_client_capabilities_with_custom_callbacks 1438[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial003.py] 1439[gw0] [ 11%] PASSED tests/client/test_auth.py::test_issuer_binding_evaluated_against_the_server_origin_when_prm_discovery_failed 1440[gw1] [ 11%] PASSED tests/client/test_session.py::test_client_capabilities_with_custom_callbacks 1441tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial004.py] 1442tests/client/test_auth.py::test_legacy_fallback_metadata_naming_a_different_issuer_is_refused 1443tests/client/test_session.py::test_client_capabilities_with_sampling_tools 1444[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/protocol_versions/tutorial004.py] 1445tests/docs_src/test_shape.py::test_example_imports[docs_src/real_host/tutorial001.py] 1446[gw1] [ 11%] PASSED tests/client/test_session.py::test_client_capabilities_with_sampling_tools 1447[gw0] [ 11%] PASSED tests/client/test_auth.py::test_legacy_fallback_metadata_naming_a_different_issuer_is_refused 1448tests/client/test_session.py::test_initialize_result 1449tests/client/test_auth.py::test_legacy_fallback_without_metadata_re_registers_instead_of_presenting_credentials_bound_elsewhere[401] 1450[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/real_host/tutorial001.py] 1451tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial001.py] 1452[gw1] [ 11%] PASSED tests/client/test_session.py::test_initialize_result 1453tests/client/test_session.py::test_client_tool_call_with_meta[None] 1454[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial001.py] 1455[gw0] [ 11%] PASSED tests/client/test_auth.py::test_legacy_fallback_without_metadata_re_registers_instead_of_presenting_credentials_bound_elsewhere[401] 1456tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial002.py] 1457tests/client/test_auth.py::test_legacy_fallback_without_metadata_re_registers_instead_of_presenting_credentials_bound_elsewhere[403-insufficient-scope] 1458[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial002.py] 1459[gw1] [ 11%] PASSED tests/client/test_session.py::test_client_tool_call_with_meta[None] 1460tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial003.py] 1461tests/client/test_session.py::test_client_tool_call_with_meta[meta1] 1462[gw0] [ 11%] PASSED tests/client/test_auth.py::test_legacy_fallback_without_metadata_re_registers_instead_of_presenting_credentials_bound_elsewhere[403-insufficient-scope] 1463[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/resources/tutorial003.py] 1464tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[500] 1465tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial001.py] 1466[gw1] [ 11%] PASSED tests/client/test_session.py::test_client_tool_call_with_meta[meta1] 1467[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial001.py] 1468tests/client/test_session.py::test_receive_loop_answers_malformed_inbound_request_with_invalid_params 1469tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial002.py] 1470[gw0] [ 11%] PASSED tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[500] 1471tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[503] 1472[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial002.py] 1473[gw1] [ 11%] PASSED tests/client/test_session.py::test_receive_loop_answers_malformed_inbound_request_with_invalid_params 1474tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial003.py] 1475tests/client/test_session.py::test_receive_loop_answers_unknown_request_method_with_method_not_found 1476[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/run/tutorial003.py] 1477[gw0] [ 11%] PASSED tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[503] 1478[gw1] [ 11%] PASSED tests/client/test_session.py::test_receive_loop_answers_unknown_request_method_with_method_not_found 1479tests/docs_src/test_shape.py::test_example_imports[docs_src/sampling_and_roots/tutorial001.py] 1480tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[429] 1481tests/client/test_session.py::test_receive_loop_drops_unknown_notification_method_without_response 1482[gw3] [ 11%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/sampling_and_roots/tutorial001.py] 1483tests/docs_src/test_shape.py::test_example_imports[docs_src/sampling_and_roots/tutorial002.py] 1484[gw1] [ 11%] PASSED tests/client/test_session.py::test_receive_loop_drops_unknown_notification_method_without_response 1485[gw0] [ 11%] PASSED tests/client/test_auth.py::test_a_failing_resource_metadata_request_stops_the_flow_and_keeps_stored_credentials[429] 1486tests/client/test_session.py::test_on_request_rejects_a_server_request_absent_at_the_negotiated_version 1487[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/sampling_and_roots/tutorial002.py] 1488tests/client/test_auth.py::test_a_failing_resource_metadata_location_does_not_matter_when_another_one_answers 1489tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial001.py] 1490[gw1] [ 12%] PASSED tests/client/test_session.py::test_on_request_rejects_a_server_request_absent_at_the_negotiated_version 1491[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial001.py] 1492tests/client/test_session.py::test_on_request_validates_the_callback_result_against_the_surface_schema 1493[gw0] [ 12%] PASSED tests/client/test_auth.py::test_a_failing_resource_metadata_location_does_not_matter_when_another_one_answers 1494tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial002.py] 1495tests/client/test_auth.py::test_legacy_fallback_accepts_a_root_slash_issuer_for_a_server_url_in_any_spelling 1496[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial002.py] 1497[gw1] [ 12%] PASSED tests/client/test_session.py::test_on_request_validates_the_callback_result_against_the_surface_schema 1498tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial003.py] 1499tests/client/test_session.py::test_on_request_callback_returning_a_surface_invalid_result_is_internal_error 1500[gw0] [ 12%] PASSED tests/client/test_auth.py::test_legacy_fallback_accepts_a_root_slash_issuer_for_a_server_url_in_any_spelling 1501tests/client/test_auth.py::test_issuer_is_not_stamped_when_registration_falls_back_to_the_resource_origin[asm-discovery-failed] 1502[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial003.py] 1503tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial004.py] 1504[gw1] [ 12%] PASSED tests/client/test_session.py::test_on_request_callback_returning_a_surface_invalid_result_is_internal_error 1505[gw0] [ 12%] PASSED tests/client/test_auth.py::test_issuer_is_not_stamped_when_registration_falls_back_to_the_resource_origin[asm-discovery-failed] 1506tests/client/test_session.py::test_on_notify_drops_a_server_notification_absent_at_the_negotiated_version 1507[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/session_groups/tutorial004.py] 1508tests/client/test_auth.py::test_issuer_is_not_stamped_when_registration_falls_back_to_the_resource_origin[asm-metadata-without-registration-endpoint] 1509tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial001.py] 1510[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial001.py] 1511[gw1] [ 12%] PASSED tests/client/test_session.py::test_on_notify_drops_a_server_notification_absent_at_the_negotiated_version 1512tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial002.py] 1513tests/client/test_session.py::test_on_request_elicitation_with_loose_property_schema_reaches_the_callback 1514[gw0] [ 12%] PASSED tests/client/test_auth.py::test_issuer_is_not_stamped_when_registration_falls_back_to_the_resource_origin[asm-metadata-without-registration-endpoint] 1515[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial002.py] 1516tests/client/test_auth.py::test_issuer_is_stamped_when_same_origin_fallback_register_is_on_the_discovered_issuer 1517tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial003.py] 1518[gw1] [ 12%] PASSED tests/client/test_session.py::test_on_request_elicitation_with_loose_property_schema_reaches_the_callback 1519tests/client/test_session.py::test_send_request_validates_the_server_result_against_the_surface_schema 1520[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial003.py] 1521tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial004.py] 1522[gw0] [ 12%] PASSED tests/client/test_auth.py::test_issuer_is_stamped_when_same_origin_fallback_register_is_on_the_discovered_issuer 1523[gw1] [ 12%] PASSED tests/client/test_session.py::test_send_request_validates_the_server_result_against_the_surface_schema 1524[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial004.py] 1525tests/client/test_caching.py::test_a_set_entry_round_trips_through_get[InMemoryResponseCacheStore] 1526tests/client/test_session.py::test_send_request_skips_the_surface_gate_when_method_absent_at_version 1527tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial005.py] 1528[gw0] [ 12%] PASSED tests/client/test_caching.py::test_a_set_entry_round_trips_through_get[InMemoryResponseCacheStore] 1529[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial005.py] 1530[gw1] [ 12%] PASSED tests/client/test_session.py::test_send_request_skips_the_surface_gate_when_method_absent_at_version 1531tests/client/test_caching.py::test_get_misses_for_a_key_never_set[InMemoryResponseCacheStore] 1532tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial006.py] 1533tests/client/test_session.py::test_raising_sampling_callback_answers_with_code_zero 1534[gw0] [ 12%] PASSED tests/client/test_caching.py::test_get_misses_for_a_key_never_set[InMemoryResponseCacheStore] 1535[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial006.py] 1536tests/client/test_caching.py::test_keys_differing_in_only_one_field_do_not_collide[InMemoryResponseCacheStore] 1537tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial007.py] 1538[gw0] [ 12%] PASSED tests/client/test_caching.py::test_keys_differing_in_only_one_field_do_not_collide[InMemoryResponseCacheStore] 1539[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial007.py] 1540[gw1] [ 12%] PASSED tests/client/test_session.py::test_raising_sampling_callback_answers_with_code_zero 1541tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial008.py] 1542tests/client/test_caching.py::test_swapped_params_key_and_partition_values_are_distinct_keys[InMemoryResponseCacheStore] 1543tests/client/test_session.py::test_receive_loop_logs_and_drops_malformed_notification 1544[gw0] [ 12%] PASSED tests/client/test_caching.py::test_swapped_params_key_and_partition_values_are_distinct_keys[InMemoryResponseCacheStore] 1545[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial008.py] 1546tests/client/test_caching.py::test_keys_with_field_values_that_concatenate_identically_do_not_collide[InMemoryResponseCacheStore] 1547tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial009.py] 1548[gw0] [ 12%] PASSED tests/client/test_caching.py::test_keys_with_field_values_that_concatenate_identically_do_not_collide[InMemoryResponseCacheStore] 1549[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/structured_output/tutorial009.py] 1550[gw1] [ 12%] PASSED tests/client/test_session.py::test_receive_loop_logs_and_drops_malformed_notification 1551tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial001.py] 1552tests/client/test_caching.py::test_set_replaces_the_entry_for_an_existing_key[InMemoryResponseCacheStore] 1553tests/client/test_session.py::test_raising_message_handler_on_transport_exception_costs_the_delivery_not_the_connection 1554[gw0] [ 12%] PASSED tests/client/test_caching.py::test_set_replaces_the_entry_for_an_existing_key[InMemoryResponseCacheStore] 1555[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial001.py] 1556tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial002.py] 1557tests/client/test_caching.py::test_delete_removes_only_the_given_key[InMemoryResponseCacheStore] 1558[gw1] [ 12%] PASSED tests/client/test_session.py::test_raising_message_handler_on_transport_exception_costs_the_delivery_not_the_connection 1559[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial002.py] 1560tests/client/test_session.py::test_message_handler_awaiting_session_traffic_on_transport_exception_completes 1561[gw0] [ 12%] PASSED tests/client/test_caching.py::test_delete_removes_only_the_given_key[InMemoryResponseCacheStore] 1562tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial003.py] 1563tests/client/test_caching.py::test_delete_is_idempotent[InMemoryResponseCacheStore] 1564[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial003.py] 1565[gw0] [ 12%] PASSED tests/client/test_caching.py::test_delete_is_idempotent[InMemoryResponseCacheStore] 1566[gw1] [ 12%] PASSED tests/client/test_session.py::test_message_handler_awaiting_session_traffic_on_transport_exception_completes 1567tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_anyio.py] 1568tests/client/test_caching.py::test_clear_removes_every_entry_across_methods_and_partitions[InMemoryResponseCacheStore] 1569tests/client/test_session.py::test_receive_loop_consumes_server_cancelled_without_reaching_message_handler 1570[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_anyio.py] 1571[gw0] [ 12%] PASSED tests/client/test_caching.py::test_clear_removes_every_entry_across_methods_and_partitions[InMemoryResponseCacheStore] 1572tests/client/test_caching.py::test_cache_config_defaults_construct_an_unshared_zero_ttl_config 1573tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_asyncio.py] 1574[gw1] [ 12%] PASSED tests/client/test_session.py::test_receive_loop_consumes_server_cancelled_without_reaching_message_handler 1575tests/client/test_session.py::test_request_timeout_zero_overrides_session_timeout 1576[gw0] [ 12%] PASSED tests/client/test_caching.py::test_cache_config_defaults_construct_an_unshared_zero_ttl_config 1577[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_asyncio.py] 1578tests/client/test_caching.py::test_a_custom_store_without_a_partition_is_rejected_at_construction 1579tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_trio.py] 1580[gw1] [ 12%] PASSED tests/client/test_session.py::test_request_timeout_zero_overrides_session_timeout 1581[gw0] [ 12%] PASSED tests/client/test_caching.py::test_a_custom_store_without_a_partition_is_rejected_at_construction 1582tests/client/test_session.py::test_progress_notification_reaches_request_callback_and_message_handler 1583[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial004_trio.py] 1584tests/client/test_caching.py::test_a_custom_store_with_an_explicit_partition_constructs 1585tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial005.py] 1586[gw0] [ 12%] PASSED tests/client/test_caching.py::test_a_custom_store_with_an_explicit_partition_constructs 1587tests/client/test_caching.py::test_an_empty_target_id_is_rejected_at_construction 1588[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial005.py] 1589tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial006.py] 1590[gw1] [ 12%] PASSED tests/client/test_session.py::test_progress_notification_reaches_request_callback_and_message_handler 1591tests/client/test_session.py::test_dispatcher_keyword_runs_over_direct_dispatch 1592[gw0] [ 12%] PASSED tests/client/test_caching.py::test_an_empty_target_id_is_rejected_at_construction 1593tests/client/test_caching.py::test_a_negative_default_ttl_is_rejected_at_construction 1594[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial006.py] 1595tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial007.py] 1596[gw1] [ 12%] PASSED tests/client/test_session.py::test_dispatcher_keyword_runs_over_direct_dispatch 1597tests/client/test_session.py::test_direct_dispatch_roots_list_reaches_callback_with_synthesized_request_id 1598[gw0] [ 12%] PASSED tests/client/test_caching.py::test_a_negative_default_ttl_is_rejected_at_construction 1599tests/client/test_caching.py::test_a_new_entry_past_the_cap_evicts_the_least_recently_used_one 1600[gw3] [ 12%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/subscriptions/tutorial007.py] 1601tests/docs_src/test_shape.py::test_example_imports[docs_src/testing/tutorial001.py] 1602[gw0] [ 12%] PASSED tests/client/test_caching.py::test_a_new_entry_past_the_cap_evicts_the_least_recently_used_one 1603[gw1] [ 12%] PASSED tests/client/test_session.py::test_direct_dispatch_roots_list_reaches_callback_with_synthesized_request_id 1604tests/client/test_session.py::test_raising_notification_callbacks_over_direct_dispatch_cost_only_that_delivery 1605tests/client/test_caching.py::test_a_get_refreshes_an_entrys_recency 1606[gw0] [ 13%] PASSED tests/client/test_caching.py::test_a_get_refreshes_an_entrys_recency 1607[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/testing/tutorial001.py] 1608tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial001.py] 1609tests/client/test_caching.py::test_replacing_an_entry_at_the_cap_refreshes_its_recency_without_evicting 1610[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial001.py] 1611[gw0] [ 13%] PASSED tests/client/test_caching.py::test_replacing_an_entry_at_the_cap_refreshes_its_recency_without_evicting 1612tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial002.py] 1613tests/client/test_caching.py::test_a_touched_list_entry_survives_read_key_churn_through_the_cap 1614[gw1] [ 13%] PASSED tests/client/test_session.py::test_raising_notification_callbacks_over_direct_dispatch_cost_only_that_delivery 1615[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial002.py] 1616tests/client/test_session.py::test_dispatcher_keyword_send_request_before_enter_raises_runtimeerror 1617[gw0] [ 13%] PASSED tests/client/test_caching.py::test_a_touched_list_entry_survives_read_key_churn_through_the_cap 1618tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial003.py] 1619tests/client/test_caching.py::test_a_zero_cap_disables_eviction 1620[gw1] [ 13%] PASSED tests/client/test_session.py::test_dispatcher_keyword_send_request_before_enter_raises_runtimeerror 1621[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial003.py] 1622tests/client/test_session.py::test_dispatcher_keyword_send_request_after_exit_raises_connection_closed 1623[gw0] [ 13%] PASSED tests/client/test_caching.py::test_a_zero_cap_disables_eviction 1624tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial004.py] 1625tests/client/test_caching.py::test_deleting_an_entry_frees_its_cap_slot 1626[gw1] [ 13%] PASSED tests/client/test_session.py::test_dispatcher_keyword_send_request_after_exit_raises_connection_closed 1627[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial004.py] 1628[gw0] [ 13%] PASSED tests/client/test_caching.py::test_deleting_an_entry_frees_its_cap_slot 1629tests/client/test_session.py::test_dispatcher_keyword_request_timeout_bounds_wait_for_never_run_peer 1630tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial005.py] 1631tests/client/test_caching.py::test_a_negative_cap_is_rejected_at_construction 1632[gw0] [ 13%] PASSED tests/client/test_caching.py::test_a_negative_cap_is_rejected_at_construction 1633[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/tools/tutorial005.py] 1634tests/client/test_caching.py::test_hints_from_a_non_modern_session_are_ignored[legacy] 1635tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial001.py] 1636[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial001.py] 1637[gw0] [ 13%] PASSED tests/client/test_caching.py::test_hints_from_a_non_modern_session_are_ignored[legacy] 1638tests/client/test_caching.py::test_hints_from_a_non_modern_session_are_ignored[pre-negotiation] 1639tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial002.py] 1640[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial002.py] 1641[gw0] [ 13%] PASSED tests/client/test_caching.py::test_hints_from_a_non_modern_session_are_ignored[pre-negotiation] 1642tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial003.py] 1643tests/client/test_caching.py::test_a_legacy_session_with_a_default_ttl_caches_on_the_private_arm_only 1644[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial003.py] 1645[gw0] [ 13%] PASSED tests/client/test_caching.py::test_a_legacy_session_with_a_default_ttl_caches_on_the_private_arm_only 1646tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial004.py] 1647tests/client/test_caching.py::test_entries_never_cross_negotiated_eras_on_a_shared_store 1648[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial004.py] 1649tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial005.py] 1650[gw0] [ 13%] PASSED tests/client/test_caching.py::test_entries_never_cross_negotiated_eras_on_a_shared_store 1651tests/client/test_caching.py::test_coordinators_negotiating_the_same_era_share_entries_through_the_store 1652[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial005.py] 1653tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial006.py] 1654[gw0] [ 13%] PASSED tests/client/test_caching.py::test_coordinators_negotiating_the_same_era_share_entries_through_the_store 1655tests/client/test_caching.py::test_an_explicit_zero_ttl_is_not_overridden_by_the_default_ttl 1656[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial006.py] 1657tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial007.py] 1658[gw0] [ 13%] PASSED tests/client/test_caching.py::test_an_explicit_zero_ttl_is_not_overridden_by_the_default_ttl 1659[gw1] [ 13%] PASSED tests/client/test_session.py::test_dispatcher_keyword_request_timeout_bounds_wait_for_never_run_peer 1660tests/client/test_caching.py::test_a_hint_absent_modern_result_uses_the_default_ttl_privately 1661[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial007.py] 1662tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial008.py] 1663[gw0] [ 13%] PASSED tests/client/test_caching.py::test_a_hint_absent_modern_result_uses_the_default_ttl_privately 1664tests/client/test_session.py::test_adopt_raises_when_no_mutual_modern_version_is_supported 1665[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/troubleshooting/tutorial008.py] 1666tests/client/test_caching.py::test_a_ttl_above_24_hours_is_clamped_to_the_cap 1667tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial001.py] 1668[gw1] [ 13%] PASSED tests/client/test_session.py::test_adopt_raises_when_no_mutual_modern_version_is_supported 1669[gw0] [ 13%] PASSED tests/client/test_caching.py::test_a_ttl_above_24_hours_is_clamped_to_the_cap 1670tests/client/test_session.py::test_initialize_opts_out_of_cancel_on_abandon_while_other_requests_leave_it_unset 1671[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial001.py] 1672tests/client/test_caching.py::test_a_public_result_lands_on_the_public_arm_and_clears_the_private_arm 1673tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial002.py] 1674[gw0] [ 13%] PASSED tests/client/test_caching.py::test_a_public_result_lands_on_the_public_arm_and_clears_the_private_arm 1675[gw1] [ 13%] PASSED tests/client/test_session.py::test_initialize_opts_out_of_cancel_on_abandon_while_other_requests_leave_it_unset 1676[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial002.py] 1677tests/client/test_caching.py::test_arm_key_layout_is_pinned_for_shared_store_compatibility 1678tests/client/test_session.py::test_modern_stamp_leaves_cancel_on_abandon_at_the_dispatcher_default 1679tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial003.py] 1680[gw0] [ 13%] PASSED tests/client/test_caching.py::test_arm_key_layout_is_pinned_for_shared_store_compatibility 1681[gw1] [ 13%] PASSED tests/client/test_session.py::test_modern_stamp_leaves_cancel_on_abandon_at_the_dispatcher_default 1682[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial003.py] 1683tests/client/test_caching.py::test_public_entries_do_not_cross_partitions_by_default 1684tests/client/test_session.py::test_constructor_rejects_streams_and_dispatcher_together 1685tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial004.py] 1686[gw0] [ 13%] PASSED tests/client/test_caching.py::test_public_entries_do_not_cross_partitions_by_default 1687tests/client/test_caching.py::test_share_public_serves_public_entries_across_partitions_but_never_private_ones 1688[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial004.py] 1689[gw1] [ 13%] PASSED tests/client/test_session.py::test_constructor_rejects_streams_and_dispatcher_together 1690tests/client/test_session.py::test_constructor_requires_both_streams_without_dispatcher 1691tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial005.py] 1692[gw1] [ 13%] PASSED tests/client/test_session.py::test_constructor_requires_both_streams_without_dispatcher 1693[gw0] [ 13%] PASSED tests/client/test_caching.py::test_share_public_serves_public_entries_across_partitions_but_never_private_ones 1694tests/client/test_caching.py::test_a_private_scoped_entry_under_the_public_arm_is_not_served 1695tests/client/test_session.py::test_aenter_cancelled_while_dispatcher_starts_unwinds_cleanly 1696[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/uri_templates/tutorial005.py] 1697tests/docs_src/test_shape.py::test_example_imports[docs_src/whats_new/tutorial001.py] 1698[gw0] [ 13%] PASSED tests/client/test_caching.py::test_a_private_scoped_entry_under_the_public_arm_is_not_served 1699tests/client/test_caching.py::test_a_stale_private_entry_does_not_shadow_a_fresh_public_one 1700[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_imports[docs_src/whats_new/tutorial001.py] 1701tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial001.py] 1702[gw0] [ 13%] PASSED tests/client/test_caching.py::test_a_stale_private_entry_does_not_shadow_a_fresh_public_one 1703tests/client/test_caching.py::test_an_entry_without_an_expiry_is_never_fresh 1704[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial001.py] 1705tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial001_client.py] 1706[gw0] [ 13%] PASSED tests/client/test_caching.py::test_an_entry_without_an_expiry_is_never_fresh 1707tests/client/test_caching.py::test_write_deletes_the_opposite_arm_before_setting_its_own 1708[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial001_client.py] 1709tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial002.py] 1710[gw0] [ 13%] PASSED tests/client/test_caching.py::test_write_deletes_the_opposite_arm_before_setting_its_own 1711tests/client/test_caching.py::test_an_eviction_landing_during_an_async_set_is_compensated 1712[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial002.py] 1713tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial003.py] 1714[gw0] [ 13%] PASSED tests/client/test_caching.py::test_an_eviction_landing_during_an_async_set_is_compensated 1715tests/client/test_caching.py::test_a_cancellation_landing_as_the_set_commits_still_compensates_an_eviction 1716[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/apps/tutorial003.py] 1717tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial001.py] 1718[gw2] [ 13%] PASSED tests/client/test_subscriptions.py::test_an_open_stream_outlives_the_session_read_timeout 1719[gw0] [ 13%] PASSED tests/client/test_caching.py::test_a_cancellation_landing_as_the_set_commits_still_compensates_an_eviction 1720tests/client/test_caching.py::test_a_cancellation_during_the_refresh_purge_still_purges_both_arms 1721[gw3] [ 13%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial001.py] 1722tests/client/test_subscriptions.py::test_a_duplicate_ack_does_not_overwrite_the_honored_filter 1723[gw1] [ 14%] PASSED tests/client/test_session.py::test_aenter_cancelled_while_dispatcher_starts_unwinds_cleanly 1724[gw0] [ 14%] PASSED tests/client/test_caching.py::test_a_cancellation_during_the_refresh_purge_still_purges_both_arms 1725tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial002.py] 1726tests/client/test_caching.py::test_a_cancellation_during_an_eviction_still_evicts_both_arms 1727tests/client/test_session.py::test_send_notification_after_close_is_dropped_silently 1728[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial002.py] 1729[gw0] [ 14%] PASSED tests/client/test_caching.py::test_a_cancellation_during_an_eviction_still_evicts_both_arms 1730tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial003.py] 1731[gw2] [ 14%] PASSED tests/client/test_subscriptions.py::test_a_duplicate_ack_does_not_overwrite_the_honored_filter 1732tests/client/test_caching.py::test_evict_key_with_a_wedged_store_delete_returns_at_the_cleanup_bound 1733[gw1] [ 14%] PASSED tests/client/test_session.py::test_send_notification_after_close_is_dropped_silently 1734tests/client/test_subscriptions.py::test_a_non_event_frame_with_the_subscription_id_is_teed_not_delivered 1735tests/client/test_session.py::test_initialize_is_idempotent_and_returns_the_cached_result 1736[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial003.py] 1737tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial004.py] 1738[gw1] [ 14%] PASSED tests/client/test_session.py::test_initialize_is_idempotent_and_returns_the_cached_result 1739[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial004.py] 1740tests/client/test_session.py::test_discover_adopts_the_returned_result_and_installs_the_modern_stamp 1741tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial005.py] 1742[gw2] [ 14%] PASSED tests/client/test_subscriptions.py::test_a_non_event_frame_with_the_subscription_id_is_teed_not_delivered 1743[gw1] [ 14%] PASSED tests/client/test_session.py::test_discover_adopts_the_returned_result_and_installs_the_modern_stamp 1744tests/client/test_subscriptions.py::test_session_teardown_unblocks_a_sibling_consumer_with_subscription_lost 1745[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial005.py] 1746tests/client/test_session.py::test_log_level_opt_in_is_stamped_on_modern_requests_and_overridable_per_call 1747tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial006.py] 1748[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/asgi/tutorial006.py] 1749[gw2] [ 14%] PASSED tests/client/test_subscriptions.py::test_session_teardown_unblocks_a_sibling_consumer_with_subscription_lost 1750[gw1] [ 14%] PASSED tests/client/test_session.py::test_log_level_opt_in_is_stamped_on_modern_requests_and_overridable_per_call 1751tests/client/test_subscriptions.py::test_server_cancel_before_the_ack_raises_subscription_lost_from_enter 1752tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/authorization/tutorial001.py] 1753tests/client/test_session.py::test_discover_retries_once_on_unsupported_version_then_adopts 1754[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/authorization/tutorial001.py] 1755[gw1] [ 14%] PASSED tests/client/test_session.py::test_discover_retries_once_on_unsupported_version_then_adopts 1756tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/authorization/tutorial002.py] 1757[gw2] [ 14%] PASSED tests/client/test_subscriptions.py::test_server_cancel_before_the_ack_raises_subscription_lost_from_enter 1758tests/client/test_session.py::test_discover_raises_when_retry_intersection_is_empty 1759tests/client/test_subscriptions.py::test_listen_on_an_exited_session_raises_and_leaks_no_route 1760[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/authorization/tutorial002.py] 1761tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial001.py] 1762[gw1] [ 14%] PASSED tests/client/test_session.py::test_discover_raises_when_retry_intersection_is_empty 1763tests/client/test_session.py::test_discover_reraises_non_retry_errors_without_falling_back[-32601] 1764[gw0] [ 14%] PASSED tests/client/test_caching.py::test_evict_key_with_a_wedged_store_delete_returns_at_the_cleanup_bound 1765[gw2] [ 14%] PASSED tests/client/test_subscriptions.py::test_listen_on_an_exited_session_raises_and_leaks_no_route 1766[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial001.py] 1767tests/client/test_subscriptions.py::test_listen_on_a_never_entered_session_raises_runtime_error 1768tests/client/test_caching.py::test_a_refresh_purge_with_a_wedged_store_delete_returns_at_the_cleanup_bound 1769tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial002.py] 1770[gw1] [ 14%] PASSED tests/client/test_session.py::test_discover_reraises_non_retry_errors_without_falling_back[-32601] 1771tests/client/test_session.py::test_discover_reraises_non_retry_errors_without_falling_back[-32001] 1772[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial002.py] 1773[gw2] [ 14%] PASSED tests/client/test_subscriptions.py::test_listen_on_a_never_entered_session_raises_runtime_error 1774tests/client/test_subscriptions.py::test_a_retained_handle_after_exit_does_not_serve_stale_events 1775[gw1] [ 14%] PASSED tests/client/test_session.py::test_discover_reraises_non_retry_errors_without_falling_back[-32001] 1776tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial003.py] 1777tests/client/test_session.py::test_discover_reraises_non_retry_errors_without_falling_back[-32603] 1778[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/caching/tutorial003.py] 1779tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/cancellation/tutorial001.py] 1780[gw1] [ 14%] PASSED tests/client/test_session.py::test_discover_reraises_non_retry_errors_without_falling_back[-32603] 1781tests/client/test_session.py::test_discover_validates_the_response_shape_before_adopting 1782[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/cancellation/tutorial001.py] 1783tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/cancellation/tutorial002.py] 1784[gw1] [ 14%] PASSED tests/client/test_session.py::test_discover_validates_the_response_shape_before_adopting 1785[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/cancellation/tutorial002.py] 1786tests/client/test_session.py::test_discover_is_idempotent_and_returns_the_cached_result 1787tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial001.py] 1788[gw1] [ 14%] PASSED tests/client/test_session.py::test_discover_is_idempotent_and_returns_the_cached_result 1789[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial001.py] 1790tests/client/test_session.py::test_era_neutral_properties_are_none_before_any_handshake 1791tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial001_client.py] 1792[gw1] [ 14%] PASSED tests/client/test_session.py::test_era_neutral_properties_are_none_before_any_handshake 1793tests/client/test_session.py::test_era_neutral_properties_after_discover 1794[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial001_client.py] 1795tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial002.py] 1796[gw1] [ 14%] PASSED tests/client/test_session.py::test_era_neutral_properties_after_discover 1797[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial002.py] 1798tests/client/test_session.py::test_server_info_is_none_when_the_discover_result_carries_no_stamp 1799tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial003.py] 1800[gw0] [ 14%] PASSED tests/client/test_caching.py::test_a_refresh_purge_with_a_wedged_store_delete_returns_at_the_cleanup_bound 1801[gw1] [ 14%] PASSED tests/client/test_session.py::test_server_info_is_none_when_the_discover_result_carries_no_stamp 1802tests/client/test_caching.py::test_an_eviction_mid_set_with_a_wedged_store_delete_returns_at_the_cleanup_bound 1803[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial003.py] 1804tests/client/test_session.py::test_a_malformed_server_info_stamp_reads_as_absent 1805tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial004.py] 1806[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial004.py] 1807tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial005.py] 1808[gw1] [ 14%] PASSED tests/client/test_session.py::test_a_malformed_server_info_stamp_reads_as_absent 1809tests/client/test_session.py::test_discover_reraises_unsupported_version_with_malformed_error_data 1810[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial005.py] 1811tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial006.py] 1812[gw1] [ 14%] PASSED tests/client/test_session.py::test_discover_reraises_unsupported_version_with_malformed_error_data 1813[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial006.py] 1814tests/client/test_session.py::test_a_positive_inbound_ttl_reaches_the_result_unchanged 1815tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial007.py] 1816[gw1] [ 14%] PASSED tests/client/test_session.py::test_a_positive_inbound_ttl_reaches_the_result_unchanged 1817[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client/tutorial007.py] 1818tests/client/test_session.py::test_a_boolean_inbound_ttl_is_not_clamped_only_coerced_by_validation[True] 1819tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial001.py] 1820[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial001.py] 1821[gw1] [ 14%] PASSED tests/client/test_session.py::test_a_boolean_inbound_ttl_is_not_clamped_only_coerced_by_validation[True] 1822tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial002.py] 1823tests/client/test_session.py::test_a_boolean_inbound_ttl_is_not_clamped_only_coerced_by_validation[False] 1824[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial002.py] 1825[gw1] [ 14%] PASSED tests/client/test_session.py::test_a_boolean_inbound_ttl_is_not_clamped_only_coerced_by_validation[False] 1826tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial003.py] 1827tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_tools-body0-2024-11-05] 1828[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial003.py] 1829tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial004.py] 1830[gw1] [ 14%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_tools-body0-2024-11-05] 1831tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_tools-body0-2025-03-26] 1832[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_callbacks/tutorial004.py] 1833tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial001.py] 1834[gw1] [ 14%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_tools-body0-2025-03-26] 1835[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial001.py] 1836tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_tools-body0-2025-06-18] 1837tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial002.py] 1838[gw3] [ 14%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial002.py] 1839[gw1] [ 14%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_tools-body0-2025-06-18] 1840tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial003.py] 1841tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_tools-body0-2025-11-25] 1842[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial003.py] 1843tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial004.py] 1844[gw1] [ 15%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_tools-body0-2025-11-25] 1845tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_prompts-body1-2024-11-05] 1846[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial004.py] 1847tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial005.py] 1848[gw1] [ 15%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_prompts-body1-2024-11-05] 1849tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_prompts-body1-2025-03-26] 1850[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/client_transports/tutorial005.py] 1851[gw0] [ 15%] PASSED tests/client/test_caching.py::test_an_eviction_mid_set_with_a_wedged_store_delete_returns_at_the_cleanup_bound 1852tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial001.py] 1853tests/client/test_caching.py::test_a_raising_store_get_is_a_cache_miss 1854[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial001.py] 1855[gw1] [ 15%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_prompts-body1-2025-03-26] 1856tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial002.py] 1857tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_prompts-body1-2025-06-18] 1858[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial002.py] 1859[gw0] [ 15%] PASSED tests/client/test_caching.py::test_a_raising_store_get_is_a_cache_miss 1860tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial003.py] 1861[gw1] [ 15%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_prompts-body1-2025-06-18] 1862tests/client/test_caching.py::test_an_entry_rehydrated_into_the_wrong_shape_is_a_warned_miss[dict-value] 1863tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_prompts-body1-2025-11-25] 1864[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/completions/tutorial003.py] 1865tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial001.py] 1866[gw1] [ 15%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_prompts-body1-2025-11-25] 1867[gw0] [ 15%] PASSED tests/client/test_caching.py::test_an_entry_rehydrated_into_the_wrong_shape_is_a_warned_miss[dict-value] 1868[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial001.py] 1869tests/client/test_caching.py::test_an_entry_rehydrated_into_the_wrong_shape_is_a_warned_miss[dict-entry] 1870tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resources-body2-2024-11-05] 1871tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial002.py] 1872[gw1] [ 15%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resources-body2-2024-11-05] 1873[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial002.py] 1874[gw0] [ 15%] PASSED tests/client/test_caching.py::test_an_entry_rehydrated_into_the_wrong_shape_is_a_warned_miss[dict-entry] 1875tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resources-body2-2025-03-26] 1876tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial003.py] 1877tests/client/test_caching.py::test_a_raising_opposite_arm_delete_aborts_the_write 1878[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/context/tutorial003.py] 1879[gw1] [ 15%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resources-body2-2025-03-26] 1880tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial001.py] 1881[gw0] [ 15%] PASSED tests/client/test_caching.py::test_a_raising_opposite_arm_delete_aborts_the_write 1882tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resources-body2-2025-06-18] 1883tests/client/test_caching.py::test_a_failed_opposite_arm_delete_degrades_the_key_to_a_full_miss 1884[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial001.py] 1885tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial002.py] 1886[gw1] [ 15%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resources-body2-2025-06-18] 1887[gw0] [ 15%] PASSED tests/client/test_caching.py::test_a_failed_opposite_arm_delete_degrades_the_key_to_a_full_miss 1888tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resources-body2-2025-11-25] 1889[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial002.py] 1890tests/client/test_caching.py::test_a_raising_store_set_caches_nothing_and_does_not_raise 1891tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial003.py] 1892[gw1] [ 15%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resources-body2-2025-11-25] 1893tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resource_templates-body3-2024-11-05] 1894[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial003.py] 1895[gw0] [ 15%] PASSED tests/client/test_caching.py::test_a_raising_store_set_caches_nothing_and_does_not_raise 1896tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial004.py] 1897tests/client/test_caching.py::test_a_failed_set_purges_the_pre_existing_own_arm_entry 1898[gw1] [ 15%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resource_templates-body3-2024-11-05] 1899[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/dependencies/tutorial004.py] 1900tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial001.py] 1901tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resource_templates-body3-2025-03-26] 1902[gw0] [ 15%] PASSED tests/client/test_caching.py::test_a_failed_set_purges_the_pre_existing_own_arm_entry 1903tests/client/test_caching.py::test_eviction_with_a_raising_delete_still_bumps_the_generation 1904[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial001.py] 1905[gw1] [ 15%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resource_templates-body3-2025-03-26] 1906tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial002.py] 1907tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resource_templates-body3-2025-06-18] 1908[gw0] [ 15%] PASSED tests/client/test_caching.py::test_eviction_with_a_raising_delete_still_bumps_the_generation 1909[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial002.py] 1910tests/client/test_caching.py::test_store_failures_warn_once_per_burst 1911tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial003.py] 1912[gw1] [ 15%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resource_templates-body3-2025-06-18] 1913tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resource_templates-body3-2025-11-25] 1914[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial003.py] 1915tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial004.py] 1916[gw0] [ 15%] PASSED tests/client/test_caching.py::test_store_failures_warn_once_per_burst 1917tests/client/test_caching.py::test_a_set_only_store_failure_warns_once_across_write_cycles 1918[gw1] [ 15%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[list_resource_templates-body3-2025-11-25] 1919[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/deploy/tutorial004.py] 1920tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial001.py] 1921tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[read_resource-body4-2024-11-05] 1922[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial001.py] 1923[gw0] [ 15%] PASSED tests/client/test_caching.py::test_a_set_only_store_failure_warns_once_across_write_cycles 1924tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial002.py] 1925[gw1] [ 15%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[read_resource-body4-2024-11-05] 1926tests/client/test_caching.py::test_an_eviction_between_capture_and_write_discards_the_write 1927tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[read_resource-body4-2025-03-26] 1928[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial002.py] 1929[gw0] [ 15%] PASSED tests/client/test_caching.py::test_an_eviction_between_capture_and_write_discards_the_write 1930tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial003.py] 1931tests/client/test_caching.py::test_recapturing_a_registered_key_returns_its_current_generation 1932[gw1] [ 15%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[read_resource-body4-2025-03-26] 1933[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial003.py] 1934tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[read_resource-body4-2025-06-18] 1935[gw0] [ 15%] PASSED tests/client/test_caching.py::test_recapturing_a_registered_key_returns_its_current_generation 1936tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial004.py] 1937tests/client/test_caching.py::test_the_generation_map_drops_the_oldest_key_at_its_cap 1938[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/elicitation/tutorial004.py] 1939[gw1] [ 15%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[read_resource-body4-2025-06-18] 1940[gw0] [ 15%] PASSED tests/client/test_caching.py::test_the_generation_map_drops_the_oldest_key_at_its_cap 1941tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial001.py] 1942tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[read_resource-body4-2025-11-25] 1943tests/client/test_caching.py::test_a_refresh_resolving_uncacheable_purges_the_warm_entry 1944[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial001.py] 1945[gw1] [ 15%] PASSED tests/client/test_session.py::test_cache_hints_from_a_legacy_server_never_reach_the_result[read_resource-body4-2025-11-25] 1946tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial002.py] 1947[gw0] [ 15%] PASSED tests/client/test_caching.py::test_a_refresh_resolving_uncacheable_purges_the_warm_entry 1948tests/client/test_session.py::test_a_2026_result_type_tag_from_a_legacy_server_never_reaches_the_result[call_tool-body0] 1949tests/client/test_caching.py::test_evict_key_on_an_unregistered_key_still_deletes_both_arms 1950[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial002.py] 1951tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial003.py] 1952[gw0] [ 15%] PASSED tests/client/test_caching.py::test_evict_key_on_an_unregistered_key_still_deletes_both_arms 1953tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[tools-list-changed] 1954[gw1] [ 15%] PASSED tests/client/test_session.py::test_a_2026_result_type_tag_from_a_legacy_server_never_reaches_the_result[call_tool-body0] 1955tests/client/test_session.py::test_a_2026_result_type_tag_from_a_legacy_server_never_reaches_the_result[get_prompt-body1] 1956[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial003.py] 1957tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial003_client.py] 1958[gw0] [ 15%] PASSED tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[tools-list-changed] 1959tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[prompts-list-changed] 1960[gw3] [ 15%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial003_client.py] 1961tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial004.py] 1962[gw1] [ 16%] PASSED tests/client/test_session.py::test_a_2026_result_type_tag_from_a_legacy_server_never_reaches_the_result[get_prompt-body1] 1963[gw0] [ 16%] PASSED tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[prompts-list-changed] 1964tests/client/test_session.py::test_call_tool_accepts_a_null_structured_content_the_output_schema_permits 1965tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[resources-list-changed] 1966[gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial004.py] 1967tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial004_client.py] 1968[gw0] [ 16%] PASSED tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[resources-list-changed] 1969[gw1] [ 16%] PASSED tests/client/test_session.py::test_call_tool_accepts_a_null_structured_content_the_output_schema_permits 1970[gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial004_client.py] 1971tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[resource-updated] 1972tests/client/test_session.py::test_call_tool_rejects_a_null_structured_content_the_output_schema_forbids 1973tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial005.py] 1974[gw0] [ 16%] PASSED tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[resource-updated] 1975[gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial005.py] 1976tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[unrelated] 1977tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial006.py] 1978[gw1] [ 16%] PASSED tests/client/test_session.py::test_call_tool_rejects_a_null_structured_content_the_output_schema_forbids 1979tests/client/test_session.py::test_call_tool_reports_an_absent_structured_content_as_missing_even_when_null_is_permitted 1980[gw0] [ 16%] PASSED tests/client/test_caching.py::test_notifications_evict_exactly_their_mapped_entries[unrelated] 1981[gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial006.py] 1982tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial006_client.py] 1983tests/client/test_client.py::test_client_is_initialized 1984[gw1] [ 16%] PASSED tests/client/test_session.py::test_call_tool_reports_an_absent_structured_content_as_missing_even_when_null_is_permitted 1985tests/client/test_session.py::test_session_call_tool_returns_input_required_result_when_opted_in 1986[gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial006_client.py] 1987tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial007.py] 1988[gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial007.py] 1989[gw1] [ 16%] PASSED tests/client/test_session.py::test_session_call_tool_returns_input_required_result_when_opted_in 1990tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial007_client.py] 1991tests/client/test_session.py::test_call_tool_threads_input_responses_and_request_state_into_params 1992[gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/extensions/tutorial007_client.py] 1993tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/first_steps/tutorial001.py] 1994[gw1] [ 16%] PASSED tests/client/test_session.py::test_call_tool_threads_input_responses_and_request_state_into_params 1995[gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/first_steps/tutorial001.py] 1996tests/client/test_session.py::test_session_call_tool_raises_on_input_required_without_opt_in 1997tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/first_steps/tutorial001_client.py] 1998[gw0] [ 16%] PASSED tests/client/test_client.py::test_client_is_initialized 1999tests/client/test_client.py::test_client_exposes_negotiated_protocol_version 2000[gw3] [ 16%] PASSED tests/docs_src/test_shape.py::test_example_uses_only_public_mcp_modules[docs_src/first_steps/tutorial001_client.py] loading 6,894 hidden lines…
8895tests/server/test_runner.py::test_aclose_shielded_runs_callbacks_under_outer_cancellation 8896[gw1] [ 74%] PASSED tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[com.example/my_ext] 8897[gw0] [ 74%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[oversized-int-header] 8898[gw3] [ 74%] PASSED tests/server/test_runner.py::test_aclose_shielded_runs_callbacks_under_outer_cancellation 8899tests/server/test_runner.py::test_serve_one_runs_handler_and_returns_result_dict 8900tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[com.x-y.z2/n.a-b_c] 8901tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-object] 8902[gw1] [ 74%] PASSED tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[com.x-y.z2/n.a-b_c] 8903[gw0] [ 74%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-object] 8904tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[example/x] 8905tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-array] 8906[gw3] [ 74%] PASSED tests/server/test_runner.py::test_serve_one_runs_handler_and_returns_result_dict 8907tests/server/test_runner.py::test_serve_one_propagates_error_and_still_closes_exit_stack 8908[gw1] [ 74%] PASSED tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[example/x] 8909[gw0] [ 74%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-array] 8910tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[a/b] 8911tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-null] 8912[gw3] [ 74%] PASSED tests/server/test_runner.py::test_serve_one_propagates_error_and_still_closes_exit_stack 8913tests/server/test_runner.py::test_serve_one_reads_connection_protocol_version_as_a_fact 8914[gw1] [ 74%] PASSED tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[a/b] 8915[gw0] [ 74%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-null] 8916tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[com.example/9start] 8917tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-number] 8918[gw3] [ 74%] PASSED tests/server/test_runner.py::test_serve_one_reads_connection_protocol_version_as_a_fact 8919[gw1] [ 74%] PASSED tests/shared/test_extension.py::test_grammar_conformant_extension_identifiers_are_accepted[com.example/9start] 8920tests/server/test_runner.py::test_serve_connection_drives_dispatcher_loop_and_tears_down 8921tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[noprefix] 8922[gw0] [ 74%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-number] 8923tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[array-type] 8924[gw1] [ 74%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[noprefix] 8925tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[-foo/bar] 8926[gw0] [ 74%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[array-type] 8927[gw3] [ 74%] PASSED tests/server/test_runner.py::test_serve_connection_drives_dispatcher_loop_and_tears_down 8928tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[dict-type] 8929tests/server/test_runner.py::test_dual_era_loop_discover_locks_modern_and_serves_envelope_requests 8930[gw1] [ 74%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[-foo/bar] 8931tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[.leading/x] 8932[gw0] [ 74%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[dict-type] 8933tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[oversized-int-type] 8934[gw1] [ 74%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[.leading/x] 8935tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[a..b/x] 8936[gw0] [ 74%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[oversized-int-type] 8937[gw3] [ 75%] PASSED tests/server/test_runner.py::test_dual_era_loop_discover_locks_modern_and_serves_envelope_requests 8938[gw1] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[a..b/x] 8939tests/server/test_runner.py::test_dual_era_loop_pinned_modern_request_locks_without_a_probe 8940tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[missing-type] 8941tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo-/x] 8942[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[missing-type] 8943[gw1] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo-/x] 8944tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[duplicate-same-case] 8945tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[9foo/x] 8946[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[duplicate-same-case] 8947[gw3] [ 75%] PASSED tests/server/test_runner.py::test_dual_era_loop_pinned_modern_request_locks_without_a_probe 8948[gw1] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[9foo/x] 8949tests/server/test_runner.py::test_dual_era_loop_initialize_after_modern_lock_without_a_parseable_version 8950tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[duplicate-diff-case] 8951tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/-bar] 8952[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[duplicate-diff-case] 8953tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[properties-chain-not-restored-below-an-applicator] 8954[gw1] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/-bar] 8955tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/bar-] 8956[gw3] [ 75%] PASSED tests/server/test_runner.py::test_dual_era_loop_initialize_after_modern_lock_without_a_parseable_version 8957[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[properties-chain-not-restored-below-an-applicator] 8958[gw1] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/bar-] 8959tests/server/test_runner.py::test_dual_era_loop_initialize_locks_legacy_and_rejects_modern_traffic 8960tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/] 8961tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-root-schema] 8962[gw1] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/] 8963[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[on-root-schema] 8964tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[/bar] 8965tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[duplicate-across-nesting-levels] 8966[gw1] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[/bar] 8967[gw3] [ 75%] PASSED tests/server/test_runner.py::test_dual_era_loop_initialize_locks_legacy_and_rejects_modern_traffic 8968[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[duplicate-across-nesting-levels] 8969tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/ba r] 8970tests/server/test_runner.py::test_dual_era_loop_bare_discover_after_legacy_lock_is_byte_identical 8971tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[nested-bad-token] 8972[gw1] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[foo/ba r] 8973[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[nested-bad-token] 8974tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[io.modelcontextprotocol/ui\n] 8975tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[nested-non-primitive] 8976[gw3] [ 75%] PASSED tests/server/test_runner.py::test_dual_era_loop_bare_discover_after_legacy_lock_is_byte_identical 8977[gw1] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[io.modelcontextprotocol/ui\n] 8978tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[] 8979tests/server/test_runner.py::test_dual_era_loop_unsupported_modern_version_gets_the_supported_list 8980[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[nested-non-primitive] 8981[gw1] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[] 8982tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[$defs] 8983tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[None] 8984[gw3] [ 75%] PASSED tests/server/test_runner.py::test_dual_era_loop_unsupported_modern_version_gets_the_supported_list 8985[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[$defs] 8986[gw1] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[None] 8987tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[additionalProperties] 8988tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[ftp://mcp.example/mcp] 8989tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[42] 8990[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[additionalProperties] 8991[gw1] [ 75%] PASSED tests/shared/test_extension.py::test_malformed_extension_identifiers_are_rejected[42] 8992tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[allOf] 8993tests/shared/test_httpx_utils.py::test_default_client_uses_mcp_timeouts_and_httpx_redirect_default 8994[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[allOf] 8995[gw3] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[ftp://mcp.example/mcp] 8996tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[anyOf] 8997tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[301] 8998[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[anyOf] 8999[gw3] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[301] 9000tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[contains] 9001tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[302] 9002[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[contains] 9003tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[contentSchema] 9004[gw3] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[302] 9005tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[303] 9006[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[contentSchema] 9007tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[definitions] 9008[gw3] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_method_changing_redirect_of_a_post_is_not_followed[303] 9009[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[definitions] 9010tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[301] 9011tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[dependentSchemas] 9012[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[dependentSchemas] 9013[gw3] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[301] 9014tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[else] 9015tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[302] 9016[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[else] 9017tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[if] 9018[gw3] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[302] 9019tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[303] 9020[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[if] 9021[gw1] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_default_client_uses_mcp_timeouts_and_httpx_redirect_default 9022tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[items] 9023tests/shared/test_httpx_utils.py::test_custom_parameters 9024[gw3] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[303] 9025tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[307] 9026[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[items] 9027tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[not] 9028[gw3] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[307] 9029[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[not] 9030tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[308] 9031tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[oneOf] 9032[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[oneOf] 9033[gw3] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_same_origin_redirect_of_a_get_is_followed_for_every_redirect_status[308] 9034tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[patternProperties] 9035tests/shared/test_httpx_utils.py::test_https_to_http_on_same_host_is_outside_origin 9036[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[patternProperties] 9037tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[prefixItems] 9038[gw3] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_https_to_http_on_same_host_is_outside_origin 9039tests/shared/test_httpx_utils.py::test_client_configured_to_follow_redirects_is_still_scoped_to_origin 9040[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[prefixItems] 9041tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[propertyNames] 9042[gw3] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_client_configured_to_follow_redirects_is_still_scoped_to_origin 9043tests/shared/test_httpx_utils.py::test_redirect_past_the_client_max_redirects_budget_is_handed_back_unfollowed 9044[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[propertyNames] 9045tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[then] 9046[gw3] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_redirect_past_the_client_max_redirects_budget_is_handed_back_unfollowed 9047[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[then] 9048tests/shared/test_httpx_utils.py::test_redirect_location_with_userinfo_is_not_followed 9049tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[unevaluatedItems] 9050[gw3] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_redirect_location_with_userinfo_is_not_followed 9051[gw0] [ 75%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[unevaluatedItems] 9052tests/shared/test_httpx_utils.py::test_userinfo_of_the_configured_url_kept_by_a_relative_location_is_followed 9053tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[unevaluatedProperties] 9054[gw1] [ 75%] PASSED tests/shared/test_httpx_utils.py::test_custom_parameters 9055tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-http://mcp.example/mcp/] 9056[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_annotations_under_every_non_properties_applicator[unevaluatedProperties] 9057[gw3] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_userinfo_of_the_configured_url_kept_by_a_relative_location_is_followed 9058tests/shared/test_inbound.py::test_schema_walk_applicator_keywords_match_the_pinned_reject_cases 9059tests/shared/test_httpx_utils.py::test_request_within_origin_returns_a_read_response 9060[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_schema_walk_applicator_keywords_match_the_pinned_reject_cases 9061[gw1] [ 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/] 9062tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_reports_dotted_path_for_nested_property 9063[gw3] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_request_within_origin_returns_a_read_response 9064tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-/other/path] 9065tests/shared/test_httpx_utils.py::test_sse_within_origin_sends_event_stream_headers_and_caller_headers 9066[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_reports_dotted_path_for_nested_property 9067tests/shared/test_inbound.py::test_x_mcp_header_map_keys_top_level_and_nested_properties_by_path 9068[gw1] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-/other/path] 9069[gw3] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_sse_within_origin_sends_event_stream_headers_and_caller_headers 9070[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_x_mcp_header_map_keys_top_level_and_nested_properties_by_path 9071tests/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] 9072tests/shared/test_inbound.py::test_x_mcp_header_map_empty_for_schemas_without_annotations[None] 9073tests/shared/test_httpx_utils.py::test_auth_flow_requests_are_not_redirected 9074[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_x_mcp_header_map_empty_for_schemas_without_annotations[None] 9075[gw3] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_auth_flow_requests_are_not_redirected 9076[gw1] [ 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] 9077tests/shared/test_inbound.py::test_x_mcp_header_map_empty_for_schemas_without_annotations[not-a-mapping] 9078tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-http://MCP.EXAMPLE:80/mcp/] 9079tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[no-params] 9080[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_x_mcp_header_map_empty_for_schemas_without_annotations[not-a-mapping] 9081tests/shared/test_inbound.py::test_x_mcp_header_map_empty_for_schemas_without_annotations[input_schema2] 9082[gw1] [ 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/] 9083[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[no-params] 9084tests/shared/test_httpx_utils.py::test_redirect_within_origin_is_followed_with_method_and_body[http://mcp.example/mcp-https://mcp.example:443/mcp] 9085tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[no-meta] 9086[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_x_mcp_header_map_empty_for_schemas_without_annotations[input_schema2] 9087tests/shared/test_inbound.py::test_mcp_param_headers_renders_primitive_types_per_spec 9088[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[no-meta] 9089tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-version] 9090[gw1] [ 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] 9091[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_renders_primitive_types_per_spec 9092tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://other.example/mcp] 9093tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[plain-ascii] 9094[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-version] 9095tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-client-caps] 9096[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[plain-ascii] 9097[gw1] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://other.example/mcp] 9098tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://mcp.example:8080/mcp] 9099[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-client-caps] 9100[gw2] [ 76%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_drops_the_error_of_a_handler_that_fails_after_cancel[unmapped-exception] 9101tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[non-ascii] 9102tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_drops_the_error_of_a_handler_that_fails_after_cancel[mcp-error] 9103[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[non-ascii] 9104tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[edge-whitespace] 9105[gw1] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://mcp.example:8080/mcp] 9106tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://sub.mcp.example/mcp] 9107tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-both] 9108[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_missing_required_keys[meta-missing-both] 9109tests/shared/test_inbound.py::test_envelope_rung_accepts_pair_only_envelope_without_client_info 9110[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[edge-whitespace] 9111tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[control-char] 9112[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_envelope_rung_accepts_pair_only_envelope_without_client_info 9113[gw1] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[http://sub.mcp.example/mcp] 9114tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[https://mcp.example:8443/mcp] 9115tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[params-none] 9116[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[control-char] 9117[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[params-none] 9118tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[sentinel-lookalike] 9119tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[meta-none] 9120[gw1] [ 76%] PASSED tests/shared/test_httpx_utils.py::test_redirect_outside_origin_is_not_followed[https://mcp.example:8443/mcp] 9121[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[meta-none] 9122[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_base64_wraps_header_unsafe_strings[sentinel-lookalike] 9123tests/shared/test_jsonrpc_dispatcher.py::test_server_middleware_observes_cancelled_notification 9124tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[meta-non-mapping] 9125tests/shared/test_inbound.py::test_mcp_param_headers_omits_absent_or_null_arguments 9126[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_omits_absent_or_null_arguments 9127[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_mapping_shapes[meta-non-mapping] 9128tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[int] 9129tests/shared/test_inbound.py::test_mcp_param_headers_reads_nested_argument_path 9130[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[int] 9131[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_reads_nested_argument_path 9132tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[null] 9133[gw1] [ 76%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_server_middleware_observes_cancelled_notification 9134tests/shared/test_inbound.py::test_mcp_param_headers_omits_when_nested_path_is_broken 9135tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_with_caller_supplied_string_id_is_verbatim_on_the_wire 9136[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[null] 9137tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[list] 9138[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_mcp_param_headers_omits_when_nested_path_is_broken 9139tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[plain-literal] 9140[gw1] [ 76%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_with_caller_supplied_string_id_is_verbatim_on_the_wire 9141tests/shared/test_otel.py::test_extract_trace_context_degrades_to_no_parent_on_malformed_traceparent 9142[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_envelope_rung_rejects_non_string_protocol_version[list] 9143[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[plain-literal] 9144tests/shared/test_inbound.py::test_non_string_protocol_version_over_http_still_rejects_at_the_header_rung 9145tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[valid-sentinel] 9146[gw1] [ 76%] PASSED tests/shared/test_otel.py::test_extract_trace_context_degrades_to_no_parent_on_malformed_traceparent 9147[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_non_string_protocol_version_over_http_still_rejects_at_the_header_rung 9148tests/shared/test_otel.py::test_client_and_server_spans 9149[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[valid-sentinel] 9150tests/shared/test_inbound.py::test_absent_version_header_rejects_before_the_string_guard[int] 9151tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[empty-sentinel] 9152[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_absent_version_header_rejects_before_the_string_guard[int] 9153tests/shared/test_inbound.py::test_absent_version_header_rejects_before_the_string_guard[null] 9154[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[empty-sentinel] 9155tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[missing-prefix-is-literal] 9156[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_absent_version_header_rejects_before_the_string_guard[null] 9157tests/shared/test_inbound.py::test_version_rung_rejects_unsupported_with_data_shape 9158[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[missing-prefix-is-literal] 9159tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[missing-suffix-is-literal] 9160[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_version_rung_rejects_unsupported_with_data_shape 9161tests/shared/test_inbound.py::test_version_rung_data_reflects_supplied_supported_list 9162[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_agreeing_header_and_argument[missing-suffix-is-literal] 9163[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_version_rung_data_reflects_supplied_supported_list 9164tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_malformed_sentinel[missing-padding] 9165tests/shared/test_inbound.py::test_unsupported_protocol_version_rejection_is_the_version_rung_standalone 9166[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_malformed_sentinel[missing-padding] 9167[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_unsupported_protocol_version_rejection_is_the_version_rung_standalone 9168tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_malformed_sentinel[non-alphabet-chars] 9169tests/shared/test_inbound.py::test_header_rung_does_not_reject_when_headers_arg_is_none 9170[gw0] [ 76%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_malformed_sentinel[non-alphabet-chars] 9171[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_header_rung_does_not_reject_when_headers_arg_is_none 9172tests/shared/test_inbound.py::test_header_rung_passes_when_header_matches_envelope 9173tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_malformed_sentinel[non-canonical-trailing-bits] 9174[gw3] [ 76%] PASSED tests/shared/test_inbound.py::test_header_rung_passes_when_header_matches_envelope 9175[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_malformed_sentinel[non-canonical-trailing-bits] 9176tests/shared/test_inbound.py::test_header_rung_rejects_on_disagreement[mismatch] 9177tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_malformed_sentinel[invalid-utf8] 9178[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_on_disagreement[mismatch] 9179[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_malformed_sentinel[invalid-utf8] 9180tests/shared/test_inbound.py::test_header_rung_rejects_on_disagreement[header-absent] 9181tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_missing_header_for_present_argument 9182[gw1] [ 77%] PASSED tests/shared/test_otel.py::test_client_and_server_spans 9183[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_on_disagreement[header-absent] 9184[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_missing_header_for_present_argument 9185tests/shared/test_otel.py::test_client_span_records_error_status_when_peer_answers_with_jsonrpc_error 9186tests/shared/test_inbound.py::test_header_rung_rejects_method_header_disagreement[method-mismatch] 9187tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_orphan_header_for_absent_or_null_argument[absent] 9188[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_method_header_disagreement[method-mismatch] 9189[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_orphan_header_for_absent_or_null_argument[absent] 9190tests/shared/test_inbound.py::test_header_rung_rejects_method_header_disagreement[method-case-mismatch] 9191tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_orphan_header_for_absent_or_null_argument[null] 9192[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_method_header_disagreement[method-case-mismatch] 9193tests/shared/test_inbound.py::test_header_rung_rejects_missing_method_header 9194[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_orphan_header_for_absent_or_null_argument[null] 9195tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_value_mismatch 9196[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_missing_method_header 9197tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[tools/call-name] 9198[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_value_mismatch 9199tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_absent_argument_with_no_header 9200[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[tools/call-name] 9201tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[prompts/get-name] 9202[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_accepts_absent_argument_with_no_header 9203tests/shared/test_inbound.py::test_validate_mcp_param_headers_matches_header_names_case_insensitively 9204[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[prompts/get-name] 9205tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[resources/read-uri] 9206[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_matches_header_names_case_insensitively 9207[gw1] [ 77%] PASSED tests/shared/test_otel.py::test_client_span_records_error_status_when_peer_answers_with_jsonrpc_error 9208tests/shared/test_inbound.py::test_validate_mcp_param_headers_ignores_undeclared_mcp_param_headers 9209[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_header_rung_rejects_missing_or_mismatched_name_header_for_name_bearing_methods[resources/read-uri] 9210tests/shared/test_path_security.py::test_contains_path_traversal[a/b/c-False] 9211tests/shared/test_inbound.py::test_header_rung_decodes_base64_sentinel_before_comparing_name 9212[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_ignores_undeclared_mcp_param_headers 9213tests/shared/test_inbound.py::test_validate_mcp_param_headers_validates_nothing_for_an_invalid_annotation_schema 9214[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_header_rung_decodes_base64_sentinel_before_comparing_name 9215[gw1] [ 77%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/b/c-False] 9216tests/shared/test_inbound.py::test_header_rung_does_not_require_name_header_for_non_name_bearing_method 9217[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_validates_nothing_for_an_invalid_annotation_schema 9218tests/shared/test_path_security.py::test_contains_path_traversal[readme.txt-False] 9219tests/shared/test_inbound.py::test_validate_mcp_param_headers_reads_nested_argument_paths 9220[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_header_rung_does_not_require_name_header_for_non_name_bearing_method 9221tests/shared/test_inbound.py::test_header_rung_does_not_require_name_header_when_body_omits_the_named_param 9222[gw1] [ 77%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[readme.txt-False] 9223[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_reads_nested_argument_paths 9224tests/shared/test_path_security.py::test_contains_path_traversal[-False] 9225tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_booleans_against_true_false_rendering 9226[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_header_rung_does_not_require_name_header_when_body_omits_the_named_param 9227tests/shared/test_inbound.py::test_all_rungs_pass_yields_route 9228[gw1] [ 77%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[-False] 9229[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_booleans_against_true_false_rendering 9230tests/shared/test_path_security.py::test_contains_path_traversal[.-False] 9231[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_all_rungs_pass_yields_route 9232tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[exact] 9233tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[initialize] 9234[gw1] [ 77%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[.-False] 9235tests/shared/test_path_security.py::test_contains_path_traversal[./a/b-False] 9236[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[exact] 9237[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[initialize] 9238tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[trailing-zero-fraction] 9239tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[myorg/custom] 9240[gw1] [ 77%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[./a/b-False] 9241tests/shared/test_path_security.py::test_contains_path_traversal[a/../b-False] 9242[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[myorg/custom] 9243[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[trailing-zero-fraction] 9244tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[does/not/exist] 9245tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[long-zero-fraction] 9246[gw1] [ 77%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/../b-False] 9247tests/shared/test_path_security.py::test_contains_path_traversal[a/b/../c-False] 9248[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_classifier_passes_unknown_method_through_to_route[does/not/exist] 9249[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[long-zero-fraction] 9250tests/shared/test_inbound.py::test_ladder_first_failure_wins 9251[gw1] [ 77%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/b/../c-False] 9252tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[real-fraction] 9253tests/shared/test_path_security.py::test_contains_path_traversal[a/b/../../c-False] 9254[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_ladder_first_failure_wins 9255tests/shared/test_inbound.py::test_error_code_http_status_table[-32700-400] 9256[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[real-fraction] 9257[gw1] [ 77%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/b/../../c-False] 9258tests/shared/test_path_security.py::test_contains_path_traversal[..-True] 9259[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32700-400] 9260tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[scientific-notation-never-numeric] 9261tests/shared/test_inbound.py::test_error_code_http_status_table[-32600-400] 9262[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[scientific-notation-never-numeric] 9263[gw1] [ 77%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[..-True] 9264[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32600-400] 9265tests/shared/test_inbound.py::test_error_code_http_status_table[-32602-400] 9266[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32602-400] 9267tests/shared/test_inbound.py::test_error_code_http_status_table[-32020-400] 9268tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[different-value] 9269[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[different-value] 9270tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[negative] 9271[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[negative] 9272tests/shared/test_path_security.py::test_contains_path_traversal[../etc-True] 9273[gw1] [ 77%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[../etc-True] 9274tests/shared/test_path_security.py::test_contains_path_traversal[../../etc/passwd-True] 9275[gw1] [ 77%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[../../etc/passwd-True] 9276tests/shared/test_path_security.py::test_contains_path_traversal[a/../../b-True] 9277[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32020-400] 9278tests/shared/test_inbound.py::test_error_code_http_status_table[-32021-400] 9279tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[beyond-ieee754-safe-range-exact] 9280[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[beyond-ieee754-safe-range-exact] 9281[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32021-400] 9282[gw1] [ 77%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/../../b-True] 9283tests/shared/test_path_security.py::test_contains_path_traversal[./../../etc-True] 9284tests/shared/test_inbound.py::test_error_code_http_status_table[-32022-400] 9285tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[beyond-ieee754-safe-range-off-by-one] 9286[gw1] [ 77%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[./../../etc-True] 9287tests/shared/test_path_security.py::test_contains_path_traversal[1.0..2.0-False] 9288[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32022-400] 9289tests/shared/test_inbound.py::test_error_code_http_status_table[-32601-404] 9290[gw0] [ 77%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integers_numerically[beyond-ieee754-safe-range-off-by-one] 9291tests/shared/test_inbound.py::test_validate_mcp_param_headers_non_primitive_body_value_rejects_only_when_a_header_claims_it 9292[gw3] [ 77%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_table[-32601-404] 9293[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[1.0..2.0-False] 9294[gw0] [ 78%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_non_primitive_body_value_rejects_only_when_a_header_claims_it 9295tests/shared/test_path_security.py::test_contains_path_traversal[foo..bar-False] 9296tests/shared/test_inbound.py::test_error_code_http_status_covers_every_ladder_code 9297tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_a_recognized_header_supplied_more_than_once 9298[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_error_code_http_status_covers_every_ladder_code 9299tests/shared/test_inbound.py::test_verdict_dataclasses_are_frozen 9300[gw0] [ 78%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_a_recognized_header_supplied_more_than_once 9301[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[foo..bar-False] 9302tests/shared/test_path_security.py::test_contains_path_traversal[..foo-False] 9303tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_a_header_exceeding_the_int_conversion_limit 9304[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_verdict_dataclasses_are_frozen 9305tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[plain] 9306[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[..foo-False] 9307[gw0] [ 78%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_rejects_a_header_exceeding_the_int_conversion_limit 9308tests/shared/test_path_security.py::test_contains_path_traversal[foo..-False] 9309tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integral_float_bodies_numerically 9310[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[plain] 9311tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[with internal space] 9312[gw0] [ 78%] PASSED tests/shared/test_inbound.py::test_validate_mcp_param_headers_compares_integral_float_bodies_numerically 9313[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[foo..-False] 9314tests/shared/test_path_security.py::test_contains_path_traversal[..\\etc-True] 9315tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_non_canonical_base64[non-canonical-trailing-bits] 9316[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[with internal space] 9317tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[] 9318[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[..\\etc-True] 9319[gw0] [ 78%] PASSED tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_non_canonical_base64[non-canonical-trailing-bits] 9320tests/shared/test_path_security.py::test_contains_path_traversal[a\\..\\..\\b-True] 9321tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_non_canonical_base64[missing-padding] 9322[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[] 9323tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[ edge-ws ] 9324[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a\\..\\..\\b-True] 9325[gw0] [ 78%] PASSED tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_non_canonical_base64[missing-padding] 9326tests/shared/test_path_security.py::test_contains_path_traversal[a\\b\\c-False] 9327[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[ edge-ws ] 9328tests/shared/test_sse.py::test_sse_client_basic_connection 9329tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[r\xe9sum\xe9] 9330[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a\\b\\c-False] 9331tests/shared/test_path_security.py::test_contains_path_traversal[a/..\\..\\b-True] 9332[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[r\xe9sum\xe9] 9333tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[a\r\nb] 9334[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_contains_path_traversal[a/..\\..\\b-True] 9335tests/shared/test_path_security.py::test_is_absolute_path[relative/path-False] 9336[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[a\r\nb] 9337tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[=?base64?Zm9v?=] 9338[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[relative/path-False] 9339tests/shared/test_path_security.py::test_is_absolute_path[file.txt-False] 9340[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_decode_header_value_round_trips_encode[=?base64?Zm9v?=] 9341tests/shared/test_inbound.py::test_decode_header_value_passes_none_and_plain_through 9342[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[file.txt-False] 9343tests/shared/test_path_security.py::test_is_absolute_path[-False] 9344[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_decode_header_value_passes_none_and_plain_through 9345tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_malformed_sentinel[=?base64?not base64!?=] 9346[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[-False] 9347[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_malformed_sentinel[=?base64?not base64!?=] 9348tests/shared/test_path_security.py::test_is_absolute_path[.-False] 9349tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_malformed_sentinel[=?base64?gA==?=] 9350[gw0] [ 78%] PASSED tests/shared/test_sse.py::test_sse_client_basic_connection 9351tests/shared/test_sse.py::test_sse_client_on_session_created 9352[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[.-False] 9353[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_decode_header_value_returns_none_for_malformed_sentinel[=?base64?gA==?=] 9354tests/shared/test_path_security.py::test_is_absolute_path[..-False] 9355tests/shared/test_inbound.py::test_name_bearing_methods_table_matches_spec 9356[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[..-False] 9357[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_name_bearing_methods_table_matches_spec 9358tests/shared/test_path_security.py::test_is_absolute_path[/-True] 9359tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[none] 9360[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[/-True] 9361[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[none] 9362tests/shared/test_path_security.py::test_is_absolute_path[/etc/passwd-True] 9363tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[non-mapping] 9364[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[non-mapping] 9365[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[/etc/passwd-True] 9366[gw0] [ 78%] PASSED tests/shared/test_sse.py::test_sse_client_on_session_created 9367tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[no-properties] 9368tests/shared/test_path_security.py::test_is_absolute_path[/a-True] 9369tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?sessionId=abc123-abc123] 9370[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[no-properties] 9371[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[/a-True] 9372tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[properties-non-mapping] 9373tests/shared/test_path_security.py::test_is_absolute_path[C:-True] 9374[gw0] [ 78%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?sessionId=abc123-abc123] 9375tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?session_id=def456-def456] 9376[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[properties-non-mapping] 9377[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[C:-True] 9378tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[no-annotation] 9379tests/shared/test_path_security.py::test_is_absolute_path[C:\\Windows-True] 9380[gw0] [ 78%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?session_id=def456-def456] 9381tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?sessionId=abc&session_id=def-abc] 9382[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[no-annotation] 9383[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[C:\\Windows-True] 9384tests/shared/test_path_security.py::test_is_absolute_path[c:/foo-True] 9385tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-string] 9386[gw0] [ 78%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?sessionId=abc&session_id=def-abc] 9387[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-string] 9388tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?other=value-None] 9389[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[c:/foo-True] 9390tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-integer] 9391tests/shared/test_path_security.py::test_is_absolute_path[Z:\\-True] 9392[gw0] [ 78%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages?other=value-None] 9393[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-integer] 9394[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[Z:\\-True] 9395tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages-None] 9396tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-boolean] 9397tests/shared/test_path_security.py::test_is_absolute_path[\\\\server\\share-True] 9398[gw0] [ 78%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[/messages-None] 9399[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[valid-boolean] 9400tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[two-distinct] 9401[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[\\\\server\\share-True] 9402tests/shared/test_path_security.py::test_is_absolute_path[\\foo-True] 9403tests/shared/test_sse.py::test_extract_session_id_from_endpoint[-None] 9404[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[two-distinct] 9405[gw0] [ 78%] PASSED tests/shared/test_sse.py::test_extract_session_id_from_endpoint[-None] 9406[gw1] [ 78%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[\\foo-True] 9407tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[non-mapping-prop] 9408tests/shared/test_path_security.py::test_is_absolute_path[C:relative-True] 9409tests/shared/test_sse.py::test_sse_client_on_session_created_not_called_when_no_session_id 9410[gw3] [ 78%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[non-mapping-prop] 9411[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[C:relative-True] 9412tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[nested-on-properties-chain] 9413[gw2] [ 79%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_peer_cancel_drops_the_error_of_a_handler_that_fails_after_cancel[mcp-error] 9414tests/shared/test_path_security.py::test_is_absolute_path[x:y-True] 9415tests/shared/test_jsonrpc_dispatcher.py::test_a_raising_unanswered_hook_is_contained[hook-bug] 9416[gw3] [ 79%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[nested-on-properties-chain] 9417[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[x:y-True] 9418tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-default-is-data] 9419tests/shared/test_path_security.py::test_is_absolute_path[a:debug-True] 9420[gw3] [ 79%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-default-is-data] 9421[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[a:debug-True] 9422tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-examples-is-data] 9423tests/shared/test_path_security.py::test_is_absolute_path[1:foo-False] 9424[gw3] [ 79%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-examples-is-data] 9425[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[1:foo-False] 9426tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-const-is-data] 9427[gw0] [ 79%] PASSED tests/shared/test_sse.py::test_sse_client_on_session_created_not_called_when_no_session_id 9428tests/shared/test_path_security.py::test_is_absolute_path[ab:c-False] 9429tests/shared/test_sse.py::test_sse_client_happy_request_and_response 9430[gw3] [ 79%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-const-is-data] 9431tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-enum-is-data] 9432[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[ab:c-False] 9433tests/shared/test_path_security.py::test_is_absolute_path[\u03a9:namespace-False] 9434[gw3] [ 79%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[annotation-lookalike-in-enum-is-data] 9435tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[ref-is-not-dereferenced] 9436[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[\u03a9:namespace-False] 9437tests/shared/test_path_security.py::test_is_absolute_path[\xe9:foo-False] 9438[gw3] [ 79%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[ref-is-not-dereferenced] 9439[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_is_absolute_path[\xe9:foo-False] 9440tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[malformed-or-empty-applicators-ignored] 9441tests/shared/test_path_security.py::test_safe_join_simple 9442[gw3] [ 79%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_accepts_valid_or_absent_annotations[malformed-or-empty-applicators-ignored] 9443tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[empty] 9444[gw0] [ 79%] PASSED tests/shared/test_sse.py::test_sse_client_happy_request_and_response 9445[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_safe_join_simple 9446tests/shared/test_path_security.py::test_safe_join_resolves_relative_base 9447[gw3] [ 79%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[empty] 9448tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[space] 9449tests/shared/test_sse.py::test_sse_client_exception_handling 9450[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_safe_join_resolves_relative_base 9451[gw3] [ 79%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[space] 9452tests/shared/test_path_security.py::test_safe_join_rejects_dotdot_escape 9453tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[colon] 9454[gw3] [ 79%] PASSED tests/shared/test_inbound.py::test_find_invalid_x_mcp_header_rejects_malformed_annotations[colon] 9455[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_dotdot_escape 9456tests/shared/test_path_security.py::test_safe_join_rejects_balanced_then_escape 9457tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[mixed_characters] 9458[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_balanced_then_escape 9459[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[mixed_characters] 9460tests/shared/test_path_security.py::test_safe_join_allows_balanced_dotdot 9461tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[single_character] 9462[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[single_character] 9463[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_safe_join_allows_balanced_dotdot 9464[gw0] [ 79%] PASSED tests/shared/test_sse.py::test_sse_client_exception_handling 9465tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[max_length_128] 9466tests/shared/test_path_security.py::test_safe_join_rejects_absolute_part 9467[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[max_length_128] 9468tests/shared/test_sse.py::test_sse_client_basic_connection_mounted_app 9469tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_empty_name 9470[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_absolute_part 9471tests/shared/test_path_security.py::test_safe_join_rejects_absolute_in_later_part 9472[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_empty_name 9473tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_name_exceeding_max_length 9474[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_absolute_in_later_part 9475[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_name_exceeding_max_length 9476tests/shared/test_path_security.py::test_safe_join_rejects_windows_drive 9477tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_spaces] 9478[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_windows_drive 9479[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_spaces] 9480tests/shared/test_path_security.py::test_safe_join_rejects_null_byte 9481tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_commas] 9482[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_null_byte 9483[gw0] [ 79%] PASSED tests/shared/test_sse.py::test_sse_client_basic_connection_mounted_app 9484[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_commas] 9485tests/shared/test_path_security.py::test_safe_join_rejects_null_byte_in_later_part 9486tests/shared/test_sse.py::test_request_context_propagation 9487tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_slashes] 9488[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_null_byte_in_later_part 9489[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_slashes] 9490tests/shared/test_path_security.py::test_safe_join_rejects_symlink_escape 9491tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_at_symbol] 9492[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_at_symbol] 9493[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_safe_join_rejects_symlink_escape 9494tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_trailing_newline] 9495tests/shared/test_path_security.py::test_safe_join_base_equals_target 9496[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[with_trailing_newline] 9497[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_safe_join_base_equals_target 9498tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[max_length_with_trailing_newline] 9499tests/shared/test_path_security.py::test_path_escape_error_is_value_error 9500[gw1] [ 79%] PASSED tests/shared/test_path_security.py::test_path_escape_error_is_value_error 9501[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_invalid_characters[max_length_with_trailing_newline] 9502tests/shared/test_peer.py::test_peer_sample_sends_create_message_and_returns_typed_result 9503tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_multiple_invalid_chars 9504[gw0] [ 79%] PASSED tests/shared/test_sse.py::test_request_context_propagation 9505[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_multiple_invalid_chars 9506tests/shared/test_sse.py::test_request_context_isolation 9507tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_unicode_characters 9508[gw1] [ 79%] PASSED tests/shared/test_peer.py::test_peer_sample_sends_create_message_and_returns_typed_result 9509[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_rejects_unicode_characters 9510tests/shared/test_peer.py::test_peer_sample_validates_result_alias_only 9511tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_leading_dash 9512[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_leading_dash 9513[gw1] [ 79%] PASSED tests/shared/test_peer.py::test_peer_sample_validates_result_alias_only 9514tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_trailing_dash 9515tests/shared/test_peer.py::test_peer_sample_with_tools_returns_with_tools_result 9516[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_trailing_dash 9517tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_leading_dot 9518[gw1] [ 79%] PASSED tests/shared/test_peer.py::test_peer_sample_with_tools_returns_with_tools_result 9519tests/shared/test_peer.py::test_peer_sample_with_tool_choice_only_returns_with_tools_result 9520[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_leading_dot 9521tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_trailing_dot 9522[gw1] [ 79%] PASSED tests/shared/test_peer.py::test_peer_sample_with_tool_choice_only_returns_with_tools_result 9523[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_warns_on_trailing_dot 9524tests/shared/test_peer.py::test_peer_elicit_form_sends_elicitation_create_with_form_params 9525tests/shared/test_tool_name_validation.py::test_issue_tool_name_warning_logs_warnings 9526[gw1] [ 79%] PASSED tests/shared/test_peer.py::test_peer_elicit_form_sends_elicitation_create_with_form_params 9527[gw3] [ 79%] PASSED tests/shared/test_tool_name_validation.py::test_issue_tool_name_warning_logs_warnings 9528tests/shared/test_peer.py::test_peer_elicit_url_sends_elicitation_create_with_url_params 9529tests/shared/test_tool_name_validation.py::test_issue_tool_name_warning_no_logging_for_empty_warnings 9530[gw1] [ 80%] PASSED tests/shared/test_peer.py::test_peer_elicit_url_sends_elicitation_create_with_url_params 9531[gw3] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_issue_tool_name_warning_no_logging_for_empty_warnings 9532tests/shared/test_peer.py::test_peer_list_roots_sends_roots_list_and_returns_typed_result 9533tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_returns_true_for_valid_name 9534[gw3] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_returns_true_for_valid_name 9535[gw1] [ 80%] PASSED tests/shared/test_peer.py::test_peer_list_roots_sends_roots_list_and_returns_typed_result 9536tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_returns_false_for_invalid_name 9537tests/shared/test_peer.py::test_peer_list_roots_with_meta_sends_meta_in_params 9538[gw3] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_returns_false_for_invalid_name 9539[gw1] [ 80%] PASSED tests/shared/test_peer.py::test_peer_list_roots_with_meta_sends_meta_in_params 9540tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_logs_warnings_for_invalid_name 9541tests/shared/test_peer.py::test_peer_list_roots_is_deprecated_sep_2577 9542[gw3] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_logs_warnings_for_invalid_name 9543[gw1] [ 80%] PASSED tests/shared/test_peer.py::test_peer_list_roots_is_deprecated_sep_2577 9544tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_no_warnings_for_clean_valid_name 9545tests/shared/test_peer.py::test_dump_params_merges_meta_over_model_meta 9546[gw3] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_validate_and_warn_tool_name_no_warnings_for_clean_valid_name 9547tests/shared/test_tool_name_validation.py::test_edge_cases[only_dots] 9548[gw1] [ 80%] PASSED tests/shared/test_peer.py::test_dump_params_merges_meta_over_model_meta 9549tests/shared/test_peer.py::test_dump_params_serializes_meta_by_alias 9550[gw3] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_edge_cases[only_dots] 9551[gw0] [ 80%] PASSED tests/shared/test_sse.py::test_request_context_isolation 9552tests/shared/test_tool_name_validation.py::test_edge_cases[only_dashes] 9553tests/shared/test_sse.py::test_sse_message_id_coercion 9554[gw1] [ 80%] PASSED tests/shared/test_peer.py::test_dump_params_serializes_meta_by_alias 9555tests/shared/test_peer.py::test_peer_notify_forwards_to_wrapped_outbound 9556[gw3] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_edge_cases[only_dashes] 9557tests/shared/test_tool_name_validation.py::test_edge_cases[only_slashes] 9558[gw1] [ 80%] PASSED tests/shared/test_peer.py::test_peer_notify_forwards_to_wrapped_outbound 9559[gw0] [ 80%] PASSED tests/shared/test_sse.py::test_sse_message_id_coercion 9560tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/-/messages/] 9561tests/shared/test_peer.py::test_peer_ping_sends_ping_and_returns_none 9562[gw3] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_edge_cases[only_slashes] 9563[gw0] [ 80%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/-/messages/] 9564tests/shared/test_tool_name_validation.py::test_edge_cases[mixed_valid_invalid] 9565[gw1] [ 80%] PASSED tests/shared/test_peer.py::test_peer_ping_sends_ping_and_returns_none 9566tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[messages/-/messages/] 9567tests/shared/test_request_clock.py::test_a_wait_that_began_before_the_clock_started_leaves_the_whole_budget[trio-mockclock] 9568[gw3] [ 80%] PASSED tests/shared/test_tool_name_validation.py::test_edge_cases[mixed_valid_invalid] 9569[gw0] [ 80%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[messages/-/messages/] 9570tests/shared/test_uri_template.py::test_parse_literal_only 9571tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/-/] 9572[gw1] [ 80%] PASSED tests/shared/test_request_clock.py::test_a_wait_that_began_before_the_clock_started_leaves_the_whole_budget[trio-mockclock] 9573[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_literal_only 9574[gw0] [ 80%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/-/] 9575tests/shared/test_request_clock.py::test_the_clock_stops_and_resumes_on_asyncio 9576tests/shared/test_uri_template.py::test_is_template[file://docs/{name}-True] 9577tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[http://example.com/messages/-ValueError] 9578[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[file://docs/{name}-True] 9579[gw0] [ 80%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[http://example.com/messages/-ValueError] 9580tests/shared/test_uri_template.py::test_is_template[file://docs/readme.txt-False] 9581tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[//example.com/messages/-ValueError] 9582[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[file://docs/readme.txt-False] 9583tests/shared/test_uri_template.py::test_is_template[-False] 9584[gw0] [ 80%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[//example.com/messages/-ValueError] 9585[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[-False] 9586tests/shared/test_uri_template.py::test_is_template[{a}-True] 9587tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[ftp://example.com/messages/-ValueError] 9588[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[{a}-True] 9589[gw0] [ 80%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[ftp://example.com/messages/-ValueError] 9590tests/shared/test_uri_template.py::test_is_template[{-False] 9591tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/?param=value-ValueError] 9592[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[{-False] 9593[gw0] [ 80%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/?param=value-ValueError] 9594tests/shared/test_uri_template.py::test_is_template[}-False] 9595tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/#fragment-ValueError] 9596[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[}-False] 9597tests/shared/test_uri_template.py::test_is_template[}{-False] 9598[gw0] [ 80%] PASSED tests/shared/test_sse.py::test_sse_server_transport_endpoint_validation[/messages/#fragment-ValueError] 9599tests/shared/test_sse.py::test_sse_client_handles_empty_keepalive_pings 9600[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[}{-False] 9601tests/shared/test_uri_template.py::test_is_template[prefix{+path}/suffix-True] 9602[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[prefix{+path}/suffix-True] 9603[gw0] [ 80%] PASSED tests/shared/test_sse.py::test_sse_client_handles_empty_keepalive_pings 9604tests/shared/test_uri_template.py::test_is_template[{invalid syntax but still a template}-True] 9605tests/shared/test_sse.py::test_sse_client_follows_redirect_within_origin_on_connect 9606[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_is_template[{invalid syntax but still a template}-True] 9607tests/shared/test_uri_template.py::test_parse_simple_variable 9608[gw0] [ 80%] PASSED tests/shared/test_sse.py::test_sse_client_follows_redirect_within_origin_on_connect 9609[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_simple_variable 9610tests/shared/test_uri_template.py::test_parse_all_operators[{+path}-+] 9611tests/shared/test_sse.py::test_sse_client_does_not_follow_redirect_to_another_origin_on_connect 9612[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{+path}-+] 9613tests/shared/test_uri_template.py::test_parse_all_operators[{#frag}-#] 9614[gw0] [ 80%] PASSED tests/shared/test_sse.py::test_sse_client_does_not_follow_redirect_to_another_origin_on_connect 9615tests/shared/test_sse.py::test_sse_session_cleanup_on_disconnect 9616[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{#frag}-#] 9617tests/shared/test_uri_template.py::test_parse_all_operators[{.ext}-.] 9618[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{.ext}-.] 9619tests/shared/test_uri_template.py::test_parse_all_operators[{/seg}-/] 9620[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{/seg}-/] 9621tests/shared/test_uri_template.py::test_parse_all_operators[{;param}-;] 9622[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{;param}-;] 9623tests/shared/test_uri_template.py::test_parse_all_operators[{?q}-?] 9624[gw0] [ 80%] PASSED tests/shared/test_sse.py::test_sse_session_cleanup_on_disconnect 9625[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{?q}-?] 9626tests/shared/test_uri_template.py::test_parse_all_operators[{&next}-&] 9627tests/shared/test_streamable_http.py::test_accept_header_validation 9628[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_all_operators[{&next}-&] 9629tests/shared/test_uri_template.py::test_parse_multiple_variables_in_expression 9630[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_multiple_variables_in_expression 9631tests/shared/test_uri_template.py::test_parse_multiple_expressions 9632[gw0] [ 80%] PASSED tests/shared/test_streamable_http.py::test_accept_header_validation 9633[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_parse_multiple_expressions 9634tests/shared/test_streamable_http.py::test_accept_header_wildcard[*/*] 9635tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{?a,b}-expected0] 9636[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{?a,b}-expected0] 9637tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{?a,b}{&c}-expected1] 9638[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{?a,b}{&c}-expected1] 9639tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}-expected2] 9640[gw0] [ 80%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[*/*] 9641[gw2] [ 80%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_a_raising_unanswered_hook_is_contained[hook-bug] 9642tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/*, text/*] 9643[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}-expected2] 9644tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{&c}-expected3] 9645tests/shared/test_jsonrpc_dispatcher.py::test_a_raising_unanswered_hook_is_contained[connection-closing] 9646[gw3] [ 80%] PASSED tests/shared/test_uri_template.py::test_query_variable_names[logs://{service}{&c}-expected3] 9647tests/shared/test_uri_template.py::test_parse_explode_modifier 9648[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_explode_modifier 9649[gw0] [ 81%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/*, text/*] 9650tests/shared/test_uri_template.py::test_parse_explode_supported_operators[{.labels*}] 9651tests/shared/test_streamable_http.py::test_accept_header_wildcard[text/*, application/json] 9652[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_explode_supported_operators[{.labels*}] 9653tests/shared/test_uri_template.py::test_parse_explode_supported_operators[{;params*}] 9654[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_explode_supported_operators[{;params*}] 9655tests/shared/test_uri_template.py::test_parse_mixed_explode_and_plain 9656[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_mixed_explode_and_plain 9657tests/shared/test_uri_template.py::test_parse_varname_with_dots_and_underscores 9658[gw0] [ 81%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[text/*, application/json] 9659[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_varname_with_dots_and_underscores 9660tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/json, text/*] 9661tests/shared/test_uri_template.py::test_parse_rejects_unclosed_expression 9662[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_expression 9663tests/shared/test_uri_template.py::test_parse_rejects_empty_expression 9664[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_empty_expression 9665tests/shared/test_uri_template.py::test_parse_rejects_operator_without_variable 9666[gw0] [ 81%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/json, text/*] 9667[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_operator_without_variable 9668tests/shared/test_streamable_http.py::test_accept_header_wildcard[*/*;q=0.8] 9669tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[-bad] 9670[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[-bad] 9671tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad-name] 9672[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad-name] 9673[gw0] [ 81%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[*/*;q=0.8] 9674tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad name] 9675tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/*;q=0.9, text/*;q=0.8] 9676[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad name] 9677tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad/name] 9678[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[bad/name] 9679tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo..bar] 9680[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo..bar] 9681tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo.] 9682[gw0] [ 81%] PASSED tests/shared/test_streamable_http.py::test_accept_header_wildcard[application/*;q=0.9, text/*;q=0.8] 9683[gw1] [ 81%] PASSED tests/shared/test_request_clock.py::test_the_clock_stops_and_resumes_on_asyncio 9684tests/shared/test_streamable_http.py::test_accept_header_incompatible[text/html] 9685tests/shared/test_request_clock.py::test_a_wait_that_begins_after_the_budget_ran_out_does_not_swallow_the_timeout 9686[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo.] 9687tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo\n] 9688[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_invalid_varname[foo\n] 9689[gw1] [ 81%] PASSED tests/shared/test_request_clock.py::test_a_wait_that_begins_after_the_budget_ran_out_does_not_swallow_the_timeout 9690tests/shared/test_uri_template.py::test_parse_accepts_dotted_varname 9691tests/shared/test_sse.py::test_raw_sse_connection 9692[gw0] [ 81%] PASSED tests/shared/test_streamable_http.py::test_accept_header_incompatible[text/html] 9693[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_accepts_dotted_varname 9694tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{x}/{x}] 9695tests/shared/test_streamable_http.py::test_accept_header_incompatible[application/*] 9696[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{x}/{x}] 9697tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{x,x}] 9698[gw1] [ 81%] PASSED tests/shared/test_sse.py::test_raw_sse_connection 9699[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{x,x}] 9700tests/shared/test_uri_template.py::test_parse_rejects_empty_spec_in_list 9701[gw0] [ 81%] PASSED tests/shared/test_streamable_http.py::test_accept_header_incompatible[application/*] 9702tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{a}{b}{a}] 9703tests/shared/test_streamable_http.py::test_accept_header_incompatible[text/*] 9704[gw1] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_empty_spec_in_list 9705[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{a}{b}{a}] 9706tests/shared/test_uri_template.py::test_parse_rejects_prefix_modifier 9707tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{+x}/foo/{x}] 9708[gw1] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_prefix_modifier 9709[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_duplicate_variable_names[{+x}/foo/{x}] 9710tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[/x{?a}{?b}] 9711[gw0] [ 81%] PASSED tests/shared/test_streamable_http.py::test_accept_header_incompatible[text/*] 9712tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{var*}] 9713tests/shared/test_streamable_http.py::test_content_type_validation 9714[gw1] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{var*}] 9715[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[/x{?a}{?b}] 9716tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{+var*}] 9717tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[/x{?a}/y{?b}] 9718[gw1] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{+var*}] 9719[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[/x{?a}/y{?b}] 9720tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[{?a}{&b}{?c}] 9721tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{#var*}] 9722[gw0] [ 81%] PASSED tests/shared/test_streamable_http.py::test_content_type_validation 9723tests/shared/test_streamable_http.py::test_json_validation 9724[gw1] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{#var*}] 9725[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_query_expressions[{?a}{&b}{?c}] 9726tests/shared/test_uri_template.py::test_query_tail_roundtrip_correct_spellings 9727tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{?var*}] 9728[gw1] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{?var*}] 9729[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_query_tail_roundtrip_correct_spellings 9730tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{&var*}] 9731tests/shared/test_uri_template.py::test_invalid_uri_template_is_value_error 9732[gw0] [ 81%] PASSED tests/shared/test_streamable_http.py::test_json_validation 9733tests/shared/test_streamable_http.py::test_json_parsing 9734[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_invalid_uri_template_is_value_error 9735[gw1] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unsupported_explode[{&var*}] 9736tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{{name}}] 9737tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{/a*}/x{/b*}] 9738[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{{name}}] 9739[gw1] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{/a*}/x{/b*}] 9740tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{a{b}c}] 9741tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a,b}] 9742[gw0] [ 81%] PASSED tests/shared/test_streamable_http.py::test_json_parsing 9743[gw1] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a,b}] 9744tests/shared/test_streamable_http.py::test_method_not_allowed 9745tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a}/x/{+b}] 9746[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{a{b}c}] 9747tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{{]{}}{}] 9748[gw1] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a}/x/{+b}] 9749tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a},{+b}] 9750[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{{]{}}{}] 9751tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{a,{b}] 9752[gw0] [ 81%] PASSED tests/shared/test_streamable_http.py::test_method_not_allowed 9753[gw1] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a},{+b}] 9754tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{#a}/x/{+b}] 9755tests/shared/test_streamable_http.py::test_session_validation 9756[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_nested_braces[{a,{b}] 9757tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{-0] 9758[gw1] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{#a}/x/{+b}] 9759tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a}.foo.{#b}] 9760[gw3] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{-0] 9761tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{{-0] 9762[gw1] [ 81%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_multiple_multi_segment_variables[{+a}.foo.{#b}] 9763[gw0] [ 81%] PASSED tests/shared/test_streamable_http.py::test_session_validation 9764tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{b}] 9765tests/shared/test_streamable_http.py::test_session_id_pattern 9766[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{{-0] 9767tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[file://{name-7] 9768[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{b}] 9769[gw0] [ 82%] PASSED tests/shared/test_streamable_http.py::test_session_id_pattern 9770tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a}{b}] 9771tests/shared/test_streamable_http.py::test_transport_whose_idle_period_ran_out_answers_as_terminated 9772[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[file://{name-7] 9773tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{a}{-3] 9774[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a}{b}] 9775tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a}{b}] 9776[gw0] [ 82%] PASSED tests/shared/test_streamable_http.py::test_transport_whose_idle_period_ran_out_answers_as_terminated 9777tests/shared/test_streamable_http.py::test_transport_reports_stream_closure_when_host_exits_without_terminating 9778[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[{a}{-3] 9779[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a}{b}] 9780tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{;a}{b}] 9781tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[}{-1] 9782[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{;a}{b}] 9783[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_unclosed_brace[}{-1] 9784tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{b}X{+p}] 9785tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[}}] 9786[gw0] [ 82%] PASSED tests/shared/test_streamable_http.py::test_transport_reports_stream_closure_when_host_exits_without_terminating 9787[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[}}] 9788tests/shared/test_streamable_http.py::test_session_termination 9789tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[}] 9790[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{b}X{+p}] 9791tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+p}X{a}{b}] 9792[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[}] 9793tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[a}b] 9794[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+p}X{a}{b}] 9795tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[pre{a}{b}post] 9796[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[a}b] 9797tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[{a}}{b}] 9798[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[pre{a}{b}post] 9799tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+b}] 9800[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_treats_stray_close_brace_as_literal[{a}}{b}] 9801tests/shared/test_uri_template.py::test_parse_stray_close_brace_between_expressions 9802[gw0] [ 82%] PASSED tests/shared/test_streamable_http.py::test_session_termination 9803[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+b}] 9804tests/shared/test_streamable_http.py::test_response 9805[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_stray_close_brace_between_expressions 9806tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+a}{b}] 9807tests/shared/test_uri_template.py::test_parse_rejects_oversized_template 9808[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+a}{b}] 9809[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_oversized_template 9810tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{#a}{b}] 9811tests/shared/test_uri_template.py::test_parse_rejects_too_many_variables 9812[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{#a}{b}] 9813[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_too_many_variables 9814tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a}{+b}] 9815tests/shared/test_uri_template.py::test_parse_counts_variables_not_expressions 9816[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a}{+b}] 9817[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_counts_variables_not_expressions 9818tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a}{+b}] 9819tests/shared/test_uri_template.py::test_parse_custom_limits_allow_larger 9820[gw0] [ 82%] PASSED tests/shared/test_streamable_http.py::test_response 9821[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a}{+b}] 9822[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_custom_limits_allow_larger 9823tests/shared/test_streamable_http.py::test_json_response 9824tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[x{name}{+path}y] 9825tests/shared/test_uri_template.py::test_equality_based_on_template_string 9826[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_equality_based_on_template_string 9827[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[x{name}{+path}y] 9828tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[X{+a}{b}] 9829tests/shared/test_uri_template.py::test_frozen 9830[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_frozen 9831[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[X{+a}{b}] 9832[gw0] [ 82%] PASSED tests/shared/test_streamable_http.py::test_json_response 9833tests/shared/test_uri_template.py::test_expand[{var}-variables0-value] 9834tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+p}{n}] 9835tests/shared/test_streamable_http.py::test_json_response_accept_json_only 9836[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_expand[{var}-variables0-value] 9837[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+p}{n}] 9838tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{x}Y{+p}{n}] 9839tests/shared/test_uri_template.py::test_expand[{var}-variables1-hello%20world] 9840[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{x}Y{+p}{n}] 9841[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_expand[{var}-variables1-hello%20world] 9842tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{?a}{+b}x] 9843tests/shared/test_uri_template.py::test_expand[{var}-variables2-a%2Fb] 9844[gw0] [ 82%] PASSED tests/shared/test_streamable_http.py::test_json_response_accept_json_only 9845[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{?a}{+b}x] 9846[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_expand[{var}-variables2-a%2Fb] 9847tests/shared/test_streamable_http.py::test_json_response_missing_accept_header 9848tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}-{+p}{b}] 9849tests/shared/test_uri_template.py::test_expand[file://docs/{name}-variables3-file://docs/readme.txt] 9850[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}-{+p}{b}] 9851[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_expand[file://docs/{name}-variables3-file://docs/readme.txt] 9852tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+p}-{b}] 9853tests/shared/test_uri_template.py::test_expand[{+var}-variables4-a/b/c] 9854[gw0] [ 82%] PASSED tests/shared/test_streamable_http.py::test_json_response_missing_accept_header 9855[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+p}-{b}] 9856tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{name}{+path}{.ext}] 9857tests/shared/test_streamable_http.py::test_json_response_incorrect_accept_header 9858[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables4-a/b/c] 9859tests/shared/test_uri_template.py::test_expand[{+var}-variables5-a?b#c] 9860[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{name}{+path}{.ext}] 9861tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{base}{+p}{;k}] 9862[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables5-a?b#c] 9863tests/shared/test_uri_template.py::test_expand[{+var}-variables6-path%2Fto] 9864[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{base}{+p}{;k}] 9865[gw0] [ 82%] PASSED tests/shared/test_streamable_http.py::test_json_response_incorrect_accept_header 9866tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+b}{c}] 9867[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables6-path%2Fto] 9868tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[*/*] 9869tests/shared/test_uri_template.py::test_expand[{+var}-variables7-50%25] 9870[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+b}{c}] 9871tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+p}{b}Y{c}] 9872[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables7-50%25] 9873tests/shared/test_uri_template.py::test_expand[{+var}-variables8-50%252] 9874[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{+p}{b}Y{c}] 9875tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[X{a}{+p}{b}Y{c}] 9876[gw0] [ 82%] PASSED tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[*/*] 9877[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables8-50%252] 9878tests/shared/test_uri_template.py::test_expand[{+var}-variables9-a%2Fb%20c] 9879tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[application/*] 9880[gw1] [ 82%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[X{a}{+p}{b}Y{c}] 9881tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{/p*}{b}] 9882[gw3] [ 82%] PASSED tests/shared/test_uri_template.py::test_expand[{+var}-variables9-a%2Fb%20c] 9883tests/shared/test_uri_template.py::test_expand[{#var}-variables10-#a%2Fb] 9884[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{/p*}{b}] 9885tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{/p*}] 9886[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{#var}-variables10-#a%2Fb] 9887[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{a}{/p*}] 9888tests/shared/test_uri_template.py::test_expand[{var}-variables11-path%252Fto] 9889tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/seg}{;k*}] 9890[gw0] [ 83%] PASSED tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[application/*] 9891[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{var}-variables11-path%252Fto] 9892[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/seg}{;k*}] 9893tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[application/*;q=0.9] 9894tests/shared/test_uri_template.py::test_expand[file://docs/{+path}-variables12-file://docs/src/main.py] 9895tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[item://{id}{;opts*}] 9896[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[file://docs/{+path}-variables12-file://docs/src/main.py] 9897[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[item://{id}{;opts*}] 9898tests/shared/test_uri_template.py::test_expand[{#var}-variables13-#section] 9899tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[api{;key}{+rest}] 9900[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{#var}-variables13-#section] 9901[gw2] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_a_raising_unanswered_hook_is_contained[connection-closing] 9902[gw0] [ 83%] PASSED tests/shared/test_streamable_http.py::test_json_response_wildcard_accept_header[application/*;q=0.9] 9903tests/shared/test_uri_template.py::test_expand[{#var}-variables14-#a/b] 9904[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[api{;key}{+rest}] 9905tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_raises_connection_closed_when_read_stream_eofs_mid_await 9906tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{/b*}] 9907tests/shared/test_streamable_http.py::test_get_sse_stream 9908[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{#var}-variables14-#a/b] 9909[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{/b*}] 9910tests/shared/test_uri_template.py::test_expand[file{.ext}-variables15-file.txt] 9911tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{.b*}] 9912[gw2] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_raises_connection_closed_when_read_stream_eofs_mid_await 9913[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[file{.ext}-variables15-file.txt] 9914tests/shared/test_jsonrpc_dispatcher.py::test_run_returns_cleanly_when_read_stream_receive_end_is_closed 9915tests/shared/test_uri_template.py::test_expand[{/seg}-variables16-/docs] 9916[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{.b*}] 9917tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a*}{;b*}] 9918[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{/seg}-variables16-/docs] 9919[gw2] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_run_returns_cleanly_when_read_stream_receive_end_is_closed 9920tests/shared/test_uri_template.py::test_expand[{;id}-variables17-;id=42] 9921[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{.a*}{;b*}] 9922tests/shared/test_jsonrpc_dispatcher.py::test_run_cancels_in_flight_handlers_when_read_stream_eofs 9923tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{b}{.c*}] 9924[gw0] [ 83%] PASSED tests/shared/test_streamable_http.py::test_get_sse_stream 9925[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{;id}-variables17-;id=42] 9926tests/shared/test_streamable_http.py::test_get_validation 9927[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{/a*}{b}{.c*}] 9928tests/shared/test_uri_template.py::test_expand[{;id}-variables18-;id] 9929[gw2] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_run_cancels_in_flight_handlers_when_read_stream_eofs 9930tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+a}{/b*}] 9931tests/shared/test_jsonrpc_dispatcher.py::test_run_closes_write_stream_on_exit 9932[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{;id}-variables18-;id] 9933tests/shared/test_uri_template.py::test_expand[{?q}-variables19-?q=search] 9934[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_rejects_adjacent_variables[{+a}{/b*}] 9935tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://docs/{+path}] 9936[gw2] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_run_closes_write_stream_on_exit 9937[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{?q}-variables19-?q=search] 9938tests/shared/test_jsonrpc_dispatcher.py::test_late_response_after_timeout_is_dropped_without_crashing 9939tests/shared/test_uri_template.py::test_expand[{?q}-variables20-?q=] 9940[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://docs/{+path}] 9941tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://{+path}.txt] 9942[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{?q}-variables20-?q=] 9943[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://{+path}.txt] 9944tests/shared/test_uri_template.py::test_expand[/search{?q,lang}-variables21-/search?q=mcp&lang=en] 9945tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://{+path}/edit] 9946[gw2] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_late_response_after_timeout_is_dropped_without_crashing 9947[gw0] [ 83%] PASSED tests/shared/test_streamable_http.py::test_get_validation 9948tests/shared/test_jsonrpc_dispatcher.py::test_raise_handler_exceptions_true_propagates_out_of_run 9949[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[/search{?q,lang}-variables21-/search?q=mcp&lang=en] 9950[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[file://{+path}/edit] 9951tests/shared/test_streamable_http.py::test_client_includes_protocol_version_header_after_init 9952tests/shared/test_uri_template.py::test_expand[?a=1{&b}-variables22-?a=1&b=2] 9953tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api/{+path}{?v,page}] 9954[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[?a=1{&b}-variables22-?a=1&b=2] 9955[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api/{+path}{?v,page}] 9956tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api/{+path}{&next}] 9957[gw2] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_raise_handler_exceptions_true_propagates_out_of_run 9958tests/shared/test_uri_template.py::test_expand[{x,y}-variables23-1,2] 9959tests/shared/test_jsonrpc_dispatcher.py::test_ctx_send_raw_request_tags_outbound_with_server_message_metadata 9960[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{x,y}-variables23-1,2] 9961[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api/{+path}{&next}] 9962tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[page{#section}] 9963tests/shared/test_uri_template.py::test_expand[{/list}-variables24-/a,b,c] 9964[gw2] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_ctx_send_raw_request_tags_outbound_with_server_message_metadata 9965[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[page{#section}] 9966[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{/list}-variables24-/a,b,c] 9967tests/shared/test_jsonrpc_dispatcher.py::test_courtesy_cancel_on_timeout_tags_outbound_with_server_message_metadata 9968tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{a}{#b}] 9969tests/shared/test_uri_template.py::test_expand[{?list}-variables25-?list=a,b] 9970[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{a}{#b}] 9971[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{?list}-variables25-?list=a,b] 9972tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}/sep/{b}] 9973tests/shared/test_uri_template.py::test_expand[{/path*}-variables26-/a/b/c] 9974[gw2] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_courtesy_cancel_on_timeout_tags_outbound_with_server_message_metadata 9975[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}/sep/{b}] 9976[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{/path*}-variables26-/a/b/c] 9977tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a},{b}] 9978tests/shared/test_jsonrpc_dispatcher.py::test_dispatch_context_request_with_dropped_resumption_hints_still_sends_courtesy_cancel 9979tests/shared/test_uri_template.py::test_expand[{.labels*}-variables27-.x.y] 9980[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a},{b}] 9981tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{/b}] 9982[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{.labels*}-variables27-.x.y] 9983tests/shared/test_uri_template.py::test_expand[{;keys*}-variables28-;keys=a;keys=b] 9984[gw2] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_dispatch_context_request_with_dropped_resumption_hints_still_sends_courtesy_cancel 9985[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{/b}] 9986tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_sends_courtesy_cancellation_on_the_wire 9987tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{.b}] 9988[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{;keys*}-variables28-;keys=a;keys=b] 9989tests/shared/test_uri_template.py::test_expand[{;keys*}-variables29-;keys=a;keys;keys=b] 9990[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{.b}] 9991tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{;b}] 9992[gw2] [ 83%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_sends_courtesy_cancellation_on_the_wire 9993[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_expand[{;keys*}-variables29-;keys=a;keys;keys=b] 9994tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_during_blocked_request_write_still_sends_courtesy_cancellation 9995tests/shared/test_uri_template.py::test_match[search{?q}-search?&q=hello&-expected37] 9996[gw0] [ 83%] PASSED tests/shared/test_streamable_http.py::test_client_includes_protocol_version_header_after_init 9997[gw1] [ 83%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+a}{;b}] 9998tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+path}{.ext}] 9999tests/shared/test_streamable_http.py::test_server_validates_protocol_version_header 10000[gw3] [ 83%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?&q=hello&-expected37] 10001[gw2] [ 84%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_during_blocked_request_write_still_sends_courtesy_cancellation 10002[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[{+path}{.ext}] 10003tests/shared/test_uri_template.py::test_match[search{?q}-search?q=first&q=second-expected38] 10004tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_during_delivered_request_write_sends_courtesy_cancellation 10005tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[prefix/{+path}{.ext}] 10006[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=first&q=second-expected38] 10007tests/shared/test_uri_template.py::test_match[api://x{?token}-api://x?%74oken=evil&token=real-expected39] 10008[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[prefix/{+path}{.ext}] 10009tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[tree://nodes{/path*}] 10010[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[api://x{?token}-api://x?%74oken=evil&token=real-expected39] 10011[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[tree://nodes{/path*}] 10012tests/shared/test_uri_template.py::test_match[api://x{?token}-api://x?%74oken=evil-expected40] 10013tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api{;key}/{+rest}] 10014[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[api://x{?token}-api://x?%74oken=evil-expected40] 10015[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_parse_allows_single_multi_segment_variable[api{;key}/{+rest}] 10016tests/shared/test_uri_template.py::test_match[?a=1{&b}-?a=1&b=2-expected41] 10017[gw0] [ 84%] PASSED tests/shared/test_streamable_http.py::test_server_validates_protocol_version_header 10018tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%3Fb-expected1] 10019[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[?a=1{&b}-?a=1&b=2-expected41] 10020tests/shared/test_streamable_http.py::test_server_backwards_compatibility_no_protocol_version 10021[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%3Fb-expected1] 10022tests/shared/test_uri_template.py::test_match[/files{/path*}-/files/a/b/c-expected42] 10023tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%23b-expected2] 10024[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[/files{/path*}-/files/a/b/c-expected42] 10025[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%23b-expected2] 10026tests/shared/test_uri_template.py::test_match[/files{/path*}-/files-expected43] 10027tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%26b-expected3] 10028[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[/files{/path*}-/files-expected43] 10029[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{var}-a%26b-expected3] 10030tests/shared/test_uri_template.py::test_match[/files{/path*}/edit-/files/a/b/edit-expected44] 10031tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[file{.ext}-file.a%2Eb-expected4] 10032[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[/files{/path*}/edit-/files/a/b/edit-expected44] 10033[gw0] [ 84%] PASSED tests/shared/test_streamable_http.py::test_server_backwards_compatibility_no_protocol_version 10034[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[file{.ext}-file.a%2Eb-expected4] 10035tests/shared/test_uri_template.py::test_match[host{.labels*}-host.example.com-expected45] 10036tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[api{/v}-api/a%2Fb-expected5] 10037tests/shared/test_streamable_http.py::test_client_crash_handled 10038[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[host{.labels*}-host.example.com-expected45] 10039tests/shared/test_uri_template.py::test_match[///{a}////{b}////-///x////y////-expected46] 10040[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[api{/v}-api/a%2Fb-expected5] 10041tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[search{?q}-search?q=a%26b-expected6] 10042[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[search{?q}-search?q=a%26b-expected6] 10043tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{;filter}-;filter=a%3Bb-expected7] 10044[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match[///{a}////{b}////-///x////y////-expected46] 10045tests/shared/test_uri_template.py::test_match_no_match[file://docs/{name}-file://other/readme.txt] 10046[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[{;filter}-;filter=a%3Bb-expected7] 10047tests/shared/test_uri_template.py::test_match_reserved_expansion_handles_slash 10048[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_no_match[file://docs/{name}-file://other/readme.txt] 10049tests/shared/test_uri_template.py::test_match_no_match[{a}/{b}-foo] 10050[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_reserved_expansion_handles_slash 10051tests/shared/test_uri_template.py::test_match_double_encoding_decoded_once 10052[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_no_match[{a}/{b}-foo] 10053tests/shared/test_uri_template.py::test_match_no_match[file{.ext}-file] 10054[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_double_encoding_decoded_once 10055tests/shared/test_uri_template.py::test_match_rejects_oversized_uri 10056[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_no_match[file{.ext}-file] 10057tests/shared/test_uri_template.py::test_match_no_match[static-different] 10058[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_rejects_oversized_uri 10059tests/shared/test_uri_template.py::test_match_accepts_uri_within_custom_limit 10060[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_no_match[static-different] 10061tests/shared/test_uri_template.py::test_match_no_match[/users/{id}-/users/123/extra] 10062[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_accepts_uri_within_custom_limit 10063tests/shared/test_uri_template.py::test_match_default_uri_length_limit 10064[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_no_match[/users/{id}-/users/123/extra] 10065tests/shared/test_uri_template.py::test_match_no_match[/users/{id}/posts/{pid}-/users/1/posts/2/extra] 10066[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_no_match[/users/{id}/posts/{pid}-/users/1/posts/2/extra] 10067tests/shared/test_uri_template.py::test_match_no_match[///{a}////{b}////-//x////y////] 10068[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_default_uri_length_limit 10069[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_no_match[///{a}////{b}////-//x////y////] 10070tests/shared/test_uri_template.py::test_match_explode_encoded_separator_in_segment 10071tests/shared/test_uri_template.py::test_match_no_match[item{;id}-item;identity=john] 10072[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_explode_encoded_separator_in_segment 10073[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_no_match[item{;id}-item;identity=john] 10074tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{var}-variables0] 10075tests/shared/test_uri_template.py::test_match_no_match[item{;id}-item;ident] 10076[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{var}-variables0] 10077[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_no_match[item{;id}-item;ident] 10078tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file://docs/{name}-variables1] 10079tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}-item;admin=true] 10080[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file://docs/{name}-variables1] 10081[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}-item;admin=true] 10082tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file://docs/{+path}-variables2] 10083tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}-item;keys=a;admin=true] 10084[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file://docs/{+path}-variables2] 10085[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}-item;keys=a;admin=true] 10086tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[search{?q,lang}-variables3] 10087tests/shared/test_uri_template.py::test_match_no_match[api/{name}{?q}-wrong/path?q=x] 10088[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[search{?q,lang}-variables3] 10089[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_no_match[api/{name}{?q}-wrong/path?q=x] 10090tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file{.ext}-variables4] 10091tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}{?q}-item;wrong=x?q=1] 10092[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file{.ext}-variables4] 10093[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_no_match[item{;keys*}{?q}-item;wrong=x?q=1] 10094tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[/files{/path*}-variables5] 10095tests/shared/test_uri_template.py::test_match_explode_preserves_empty_list_items 10096[gw0] [ 84%] PASSED tests/shared/test_streamable_http.py::test_client_crash_handled 10097[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[/files{/path*}-variables5] 10098[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_explode_preserves_empty_list_items 10099tests/shared/test_uri_template.py::test_match_adjacent_vars_disambiguated_by_literal 10100tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{var}-variables6] 10101tests/shared/test_streamable_http.py::test_handle_sse_event_skips_empty_data 10102[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_adjacent_vars_disambiguated_by_literal 10103[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{var}-variables6] 10104[gw0] [ 84%] PASSED tests/shared/test_streamable_http.py::test_handle_sse_event_skips_empty_data 10105tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;id}-variables7] 10106tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[prefix-{id}-variables0] 10107tests/shared/test_streamable_http.py::test_close_sse_stream_callback_not_provided_for_old_protocol_version 10108[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[prefix-{id}-variables0] 10109[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;id}-variables7] 10110tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;id}-variables8] 10111tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[u{s}-variables1] 10112[gw0] [ 84%] PASSED tests/shared/test_streamable_http.py::test_close_sse_stream_callback_not_provided_for_old_protocol_version 10113tests/shared/test_streamable_http.py::test_close_sse_stream_callback_not_provided_for_unknown_protocol_version 10114[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[u{s}-variables1] 10115[gw1] [ 84%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;id}-variables8] 10116tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[page{#section}-variables9] 10117tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[_{x}-variables2] 10118[gw0] [ 84%] PASSED tests/shared/test_streamable_http.py::test_close_sse_stream_callback_not_provided_for_unknown_protocol_version 10119[gw3] [ 84%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[_{x}-variables2] 10120[gw1] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[page{#section}-variables9] 10121tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[~{v}~-variables3] 10122tests/shared/test_streamable_http.py::test_initialize_with_unknown_protocol_version_gets_no_priming_event 10123tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file{.ext}-variables10] 10124[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[~{v}~-variables3] 10125[gw1] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[file{.ext}-variables10] 10126tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[L{a}L{b}-variables4] 10127tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[api{/v}-variables11] 10128[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[L{a}L{b}-variables4] 10129[gw1] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[api{/v}-variables11] 10130tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[x{name}y-variables12] 10131tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[api/{name}-variables5] 10132[gw0] [ 85%] PASSED tests/shared/test_streamable_http.py::test_initialize_with_unknown_protocol_version_gets_no_priming_event 10133tests/shared/test_streamable_http.py::test_server_close_sse_stream_via_context 10134[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_leading_literal_appears_in_value[api/{name}-variables5] 10135[gw1] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[x{name}y-variables12] 10136tests/shared/test_uri_template.py::test_match_no_backtracking_on_pathological_input[{a}-{+b}x---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------] 10137tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;keys*}-variables13] 10138[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_no_backtracking_on_pathological_input[{a}-{+b}x---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------] 10139[gw1] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;keys*}-variables13] 10140tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;keys*}-variables14] 10141tests/shared/test_uri_template.py::test_match_no_backtracking_on_pathological_input[{a}L{b}L{c}L{d}M-LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL] 10142[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_no_backtracking_on_pathological_input[{a}L{b}L{c}L{d}M-LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL] 10143[gw1] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[item{;keys*}-variables14] 10144tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{/path*}-variables15] 10145tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[file://{+path}-http://x] 10146[gw1] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{/path*}-variables15] 10147[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[file://{+path}-http://x] 10148tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{/path*}-variables16] 10149tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[file://{+path}.txt-file://x] 10150[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[file://{+path}.txt-file://x] 10151[gw1] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[{/path*}-variables16] 10152tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[host{.labels*}-variables17] 10153tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[{a}@{+path}-no-at-sign-here] 10154[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[{a}@{+path}-no-at-sign-here] 10155[gw1] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[host{.labels*}-variables17] 10156tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables18] 10157tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[foo{+a}oob-fooob] 10158[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[foo{+a}oob-fooob] 10159[gw1] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables18] 10160tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables19] 10161tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api://{+path}-api://foo?bar] 10162[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api://{+path}-api://foo?bar] 10163[gw1] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables19] 10164tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[X{/path*}-Xnoslash] 10165tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables20] 10166[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[X{/path*}-Xnoslash] 10167[gw1] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[logs://{service}{?since,level}-variables20] 10168tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[api{;key}=base/{+path}-variables21] 10169tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[X{/path*}-X/a?b] 10170[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[X{/path*}-X/a?b] 10171[gw1] [ 85%] PASSED tests/shared/test_uri_template.py::test_roundtrip_expand_then_match[api{;key}=base/{+path}-variables21] 10172tests/shared/test_uri_template.py::test_match_simple_var_accepts_empty 10173tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api{;key}suffix/{+p}-api;keyZ/x] 10174[gw1] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_simple_var_accepts_empty 10175[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api{;key}suffix/{+p}-api;keyZ/x] 10176tests/shared/test_uri_template.py::test_match_inverts_expand_for_every_parseable_template 10177tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api://{+path}/{id}-api://foo] 10178[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[api://{+path}/{id}-api://foo] 10179tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[docs/{+path}/v/{name}-docs/v/x] 10180[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_greedy_rejection_paths[docs/{+path}/v/{name}-docs/v/x] 10181tests/shared/test_uri_template.py::test_match_prefix_scan_edge_cases[api{;key}=base/{+path}-api;key=base/a/b-expected0] 10182[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_prefix_scan_edge_cases[api{;key}=base/{+path}-api;key=base/a/b-expected0] 10183tests/shared/test_uri_template.py::test_match_prefix_scan_edge_cases[api{;key}=base/{+path}-api;key=v=base/x-expected1] 10184[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_prefix_scan_edge_cases[api{;key}=base/{+path}-api;key=v=base/x-expected1] 10185tests/shared/test_uri_template.py::test_match_suffix_ifemp_equals_in_value[item{;id}-item;id=a=b-expected0] 10186[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_suffix_ifemp_equals_in_value[item{;id}-item;id=a=b-expected0] 10187tests/shared/test_uri_template.py::test_match_suffix_ifemp_equals_in_value[{;a}{;b}-;a=x=y;b=z-expected1] 10188[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_suffix_ifemp_equals_in_value[{;a}{;b}-;a=x=y;b=z-expected1] 10189tests/shared/test_uri_template.py::test_match_prefix_ifemp_empty_before_non_stop_literal 10190[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_prefix_ifemp_empty_before_non_stop_literal 10191tests/shared/test_uri_template.py::test_match_large_uri_against_greedy_template 10192[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_large_uri_against_greedy_template 10193tests/shared/test_uri_template.py::test_match_decodes_percent_encoding 10194[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_decodes_percent_encoding 10195tests/shared/test_uri_template.py::test_match_escapes_template_literals 10196[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_escapes_template_literals 10197tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[file://docs/{name}-file://docs/a%2Fb-expected0] 10198[gw1] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_inverts_expand_for_every_parseable_template 10199[gw3] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_encoded_delimiters_roundtrip[file://docs/{name}-file://docs/a%2Fb-expected0] 10200tests/shared/test_uri_template.py::test_match_never_raises 10201tests/test_examples.py::test_docs_examples[docs/whats-new.md:169-171] 10202[gw2] [ 85%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_during_delivered_request_write_sends_courtesy_cancellation 10203tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancelled_before_request_write_starts_sends_no_courtesy_cancellation 10204[gw2] [ 85%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancelled_before_request_write_starts_sends_no_courtesy_cancellation 10205tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_with_resumption_hints_suppresses_the_courtesy_cancellation 10206[gw2] [ 85%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_with_resumption_hints_suppresses_the_courtesy_cancellation 10207tests/shared/test_jsonrpc_dispatcher.py::test_timeout_with_resumption_hints_suppresses_the_courtesy_cancellation 10208[gw2] [ 85%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_timeout_with_resumption_hints_suppresses_the_courtesy_cancellation 10209tests/shared/test_jsonrpc_dispatcher.py::test_cancel_on_abandon_false_suppresses_the_courtesy_cancellation_on_timeout 10210[gw2] [ 85%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancel_on_abandon_false_suppresses_the_courtesy_cancellation_on_timeout 10211tests/shared/test_jsonrpc_dispatcher.py::test_transport_write_timeout_propagates_raw_when_no_request_timeout_is_set 10212[gw2] [ 85%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_transport_write_timeout_propagates_raw_when_no_request_timeout_is_set 10213tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_courtesy_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] 10214[gw3] [ 85%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:169-171] 10215tests/test_examples.py::test_docs_examples[docs/whats-new.md:173-175] 10216[gw2] [ 85%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_caller_cancel_courtesy_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] 10217tests/shared/test_jsonrpc_dispatcher.py::test_timeout_courtesy_cancel_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] 10218[gw1] [ 85%] PASSED tests/shared/test_uri_template.py::test_match_never_raises 10219tests/test_examples.py::test_simple_echo 10220[gw2] [ 85%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_timeout_courtesy_cancel_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] 10221tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_error_response_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] 10222[gw3] [ 85%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:173-175] 10223[gw2] [ 85%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_error_response_write_is_bounded_when_the_transport_is_wedged[trio-mockclock] 10224tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:19-21] 10225tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_answers_in_flight_request_with_connection_closed 10226[gw2] [ 85%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_answers_in_flight_request_with_connection_closed 10227[gw1] [ 85%] PASSED tests/test_examples.py::test_simple_echo 10228tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_cancel_during_delivered_result_write_writes_no_second_answer 10229tests/test_examples.py::test_complex_inputs 10230[gw3] [ 85%] PASSED tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:19-21] 10231tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:44-46] 10232[gw1] [ 85%] PASSED tests/test_examples.py::test_complex_inputs 10233[gw3] [ 85%] PASSED tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:44-46] 10234tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:68-70] 10235tests/test_examples.py::test_direct_call_tool_result_return 10236[gw3] [ 85%] PASSED tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:68-70] 10237[gw1] [ 85%] PASSED tests/test_examples.py::test_direct_call_tool_result_return 10238tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:101-103] 10239tests/test_examples.py::test_desktop 10240[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/protocol-versions.md:101-103] 10241tests/test_examples.py::test_docs_examples[docs/deprecated.md:57-61] 10242[gw1] [ 86%] PASSED tests/test_examples.py::test_desktop 10243tests/test_examples.py::test_docs_examples[README.md:47-63] 10244[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/deprecated.md:57-61] 10245tests/test_examples.py::test_docs_examples[docs/deprecated.md:65-71] 10246[gw1] [ 86%] PASSED tests/test_examples.py::test_docs_examples[README.md:47-63] 10247tests/test_examples.py::test_docs_examples[README.md:90-103] 10248[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/deprecated.md:65-71] 10249tests/test_examples.py::test_docs_examples[docs/deprecated.md:81-86] 10250[gw1] [ 86%] PASSED tests/test_examples.py::test_docs_examples[README.md:90-103] 10251tests/test_examples.py::test_docs_examples[docs/index.md:43-45] 10252[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/deprecated.md:81-86] 10253tests/test_examples.py::test_docs_examples[docs/deprecated.md:90-97] 10254[gw1] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/index.md:43-45] 10255tests/test_examples.py::test_docs_examples[docs/whats-new.md:18-22] 10256[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/deprecated.md:90-97] 10257tests/test_examples.py::test_docs_examples[docs/deprecated.md:108-114] 10258[gw1] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:18-22] 10259tests/test_examples.py::test_docs_examples[docs/whats-new.md:40-42] 10260[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/deprecated.md:108-114] 10261tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:7-9] 10262[gw1] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:40-42] 10263tests/test_examples.py::test_docs_examples[docs/whats-new.md:56-86] 10264[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:7-9] 10265tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:25-29] 10266[gw1] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:56-86] 10267tests/test_examples.py::test_docs_examples[docs/whats-new.md:96-98] 10268[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:25-29] 10269tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:51-58] 10270[gw1] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/whats-new.md:96-98] 10271tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:53-55] 10272[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:51-58] 10273tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:69-73] 10274[gw1] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:53-55] 10275tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:74-76] 10276[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:69-73] 10277tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:77-81] 10278[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_shutdown_cancel_during_delivered_result_write_writes_no_second_answer 10279tests/shared/test_jsonrpc_dispatcher.py::test_request_write_failure_propagates_and_leaves_no_pending_entry 10280[gw1] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:74-76] 10281tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:99-101] 10282[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_request_write_failure_propagates_and_leaves_no_pending_entry 10283tests/shared/test_jsonrpc_dispatcher.py::test_request_write_on_torn_down_transport_raises_connection_closed 10284[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:77-81] 10285tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:91-95] 10286[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_request_write_on_torn_down_transport_raises_connection_closed 10287tests/shared/test_jsonrpc_dispatcher.py::test_notify_after_connection_close_is_dropped_with_debug_log 10288[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_notify_after_connection_close_is_dropped_with_debug_log 10289tests/shared/test_jsonrpc_dispatcher.py::test_notify_on_torn_down_transport_is_dropped_with_debug_log 10290[gw1] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:99-101] 10291[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_notify_on_torn_down_transport_is_dropped_with_debug_log 10292tests/shared/test_jsonrpc_dispatcher.py::test_notification_handler_exception_is_contained 10293tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:109-111] 10294[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:91-95] 10295tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:107-112] 10296[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_notification_handler_exception_is_contained 10297tests/shared/test_jsonrpc_dispatcher.py::test_spawned_notification_handlers_run_concurrently 10298[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_spawned_notification_handlers_run_concurrently 10299tests/shared/test_jsonrpc_dispatcher.py::test_ctx_message_metadata_carries_inbound_request_metadata 10300[gw1] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:109-111] 10301[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:107-112] 10302tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:119-121] 10303tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:138-140] 10304[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_ctx_message_metadata_carries_inbound_request_metadata 10305tests/shared/test_jsonrpc_dispatcher.py::test_transport_stamped_can_send_request_makes_the_request_channel_refuse 10306[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_transport_stamped_can_send_request_makes_the_request_channel_refuse 10307tests/shared/test_jsonrpc_dispatcher.py::test_ctx_message_metadata_carries_inbound_notification_metadata 10308[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_ctx_message_metadata_carries_inbound_notification_metadata 10309tests/shared/test_jsonrpc_dispatcher.py::test_ctx_progress_with_only_progress_value_omits_total_and_message 10310[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:138-140] 10311[gw1] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:119-121] 10312tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:166-168] 10313tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:154-156] 10314[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_ctx_progress_with_only_progress_value_omits_total_and_message 10315tests/shared/test_jsonrpc_dispatcher.py::test_ctx_after_handler_return_reports_closed_and_drops_backchannel_traffic 10316[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_ctx_after_handler_return_reports_closed_and_drops_backchannel_traffic 10317tests/shared/test_jsonrpc_dispatcher.py::test_inline_methods_are_handled_before_next_message_is_dequeued 10318[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_inline_methods_are_handled_before_next_message_is_dequeued 10319[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:166-168] 10320tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_omits_empty_meta_and_empty_params_on_the_wire 10321tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:172-175] 10322[gw1] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:154-156] 10323tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:166-168] 10324[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_omits_empty_meta_and_empty_params_on_the_wire 10325tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_merges_progress_token_into_caller_meta 10326[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_merges_progress_token_into_caller_meta 10327tests/shared/test_jsonrpc_dispatcher.py::test_handler_raising_validation_error_sends_invalid_params 10328[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:172-175] 10329tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:189-191] 10330[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_handler_raising_validation_error_sends_invalid_params 10331tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_before_run_raises_runtimeerror 10332[gw1] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:166-168] 10333tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:180-182] 10334[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_before_run_raises_runtimeerror 10335tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_after_connection_close_raises_connection_closed 10336[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_after_connection_close_raises_connection_closed 10337tests/shared/test_jsonrpc_dispatcher.py::test_transport_exception_in_read_stream_is_logged_and_dropped 10338[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:189-191] 10339[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_transport_exception_in_read_stream_is_logged_and_dropped 10340tests/shared/test_jsonrpc_dispatcher.py::test_on_stream_exception_observes_transport_exceptions 10341tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:231-233] 10342[gw1] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:180-182] 10343[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_on_stream_exception_observes_transport_exceptions 10344tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:206-208] 10345tests/shared/test_jsonrpc_dispatcher.py::test_on_stream_exception_observer_raising_is_contained 10346[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_on_stream_exception_observer_raising_is_contained 10347tests/shared/test_jsonrpc_dispatcher.py::test_progress_notification_for_unknown_token_falls_through_to_on_notify 10348[gw3] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:231-233] 10349tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:246-254] 10350[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_progress_notification_for_unknown_token_falls_through_to_on_notify 10351tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_notification_for_unknown_request_id_skips_cancel_but_reaches_on_notify 10352[gw1] [ 86%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:206-208] 10353tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:222-224] 10354[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_notification_for_unknown_request_id_skips_cancel_but_reaches_on_notify 10355tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_notification_for_in_flight_request_is_teed_to_on_notify 10356[gw2] [ 86%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_notification_for_in_flight_request_is_teed_to_on_notify 10357tests/shared/test_jsonrpc_dispatcher.py::test_handler_inherits_sender_contextvars[spawned] 10358[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:246-254] 10359tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:289-291] 10360[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_handler_inherits_sender_contextvars[spawned] 10361tests/shared/test_jsonrpc_dispatcher.py::test_handler_inherits_sender_contextvars[inline] 10362[gw1] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:222-224] 10363tests/test_examples.py::test_docs_examples[docs/servers/tools.md:9-11] 10364[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_handler_inherits_sender_contextvars[inline] 10365tests/shared/test_jsonrpc_dispatcher.py::test_response_write_after_peer_drop_is_swallowed 10366[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_response_write_after_peer_drop_is_swallowed 10367tests/shared/test_jsonrpc_dispatcher.py::test_cancel_outbound_after_write_stream_closed_is_swallowed 10368[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:289-291] 10369tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:305-309] 10370[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancel_outbound_after_write_stream_closed_is_swallowed 10371tests/shared/test_jsonrpc_dispatcher.py::test_resolve_pending_drops_outcome_when_waiter_stream_already_closed 10372[gw1] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:9-11] 10373[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_resolve_pending_drops_outcome_when_waiter_stream_already_closed 10374tests/shared/test_jsonrpc_dispatcher.py::test_fan_out_closed_drops_signal_when_waiter_already_has_outcome 10375tests/test_examples.py::test_docs_examples[docs/servers/tools.md:47-50] 10376[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_fan_out_closed_drops_signal_when_waiter_already_has_outcome 10377tests/shared/test_jsonrpc_dispatcher.py::test_plan_outbound_with_resumption_token_returns_client_metadata_and_suppresses_abandon_cancel 10378[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_plan_outbound_with_resumption_token_returns_client_metadata_and_suppresses_abandon_cancel 10379tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_projects_opts_headers_onto_message_metadata 10380[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:305-309] 10381[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_send_raw_request_projects_opts_headers_onto_message_metadata 10382tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:334-336] 10383tests/shared/test_jsonrpc_dispatcher.py::test_response_with_string_id_correlates_to_int_keyed_pending_request 10384[gw1] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:47-50] 10385[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_response_with_string_id_correlates_to_int_keyed_pending_request 10386tests/test_examples.py::test_docs_examples[docs/servers/tools.md:72-74] 10387tests/shared/test_jsonrpc_dispatcher.py::test_error_response_with_string_id_correlates_to_int_keyed_pending_request 10388[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_error_response_with_string_id_correlates_to_int_keyed_pending_request 10389tests/shared/test_jsonrpc_dispatcher.py::test_progress_with_string_token_reaches_callback_for_int_keyed_request 10390[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:334-336] 10391[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_progress_with_string_token_reaches_callback_for_int_keyed_request 10392tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:338-342] 10393tests/shared/test_jsonrpc_dispatcher.py::test_coerce_request_id_passes_through_non_numeric_string_and_int 10394[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_coerce_request_id_passes_through_non_numeric_string_and_int 10395tests/shared/test_jsonrpc_dispatcher.py::test_jsonrpc_error_response_with_null_id_is_dropped 10396[gw1] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:72-74] 10397tests/test_examples.py::test_docs_examples[docs/servers/tools.md:98-100] 10398[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_jsonrpc_error_response_with_null_id_is_dropped 10399tests/shared/test_jsonrpc_dispatcher.py::test_notify_without_params_omits_params_key_on_the_wire 10400[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_notify_without_params_omits_params_key_on_the_wire 10401tests/shared/test_jsonrpc_dispatcher.py::test_transport_builder_exception_on_request_is_answered_with_internal_error 10402[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:338-342] 10403tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:350-352] 10404[gw1] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:98-100] 10405[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_transport_builder_exception_on_request_is_answered_with_internal_error 10406tests/shared/test_jsonrpc_dispatcher.py::test_transport_builder_exception_on_notification_drops_only_that_notification 10407tests/test_examples.py::test_docs_examples[docs/servers/tools.md:127-129] 10408[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_transport_builder_exception_on_notification_drops_only_that_notification 10409tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_with_bool_request_id_does_not_cancel_request_one 10410[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_with_bool_request_id_does_not_cancel_request_one 10411[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:350-352] 10412tests/shared/test_jsonrpc_dispatcher.py::test_progress_with_bool_token_or_bool_progress_does_not_fire_callback 10413[gw1] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:127-129] 10414tests/test_examples.py::test_docs_examples[docs/servers/tools.md:147-149] 10415tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:360-362] 10416[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_progress_with_bool_token_or_bool_progress_does_not_fire_callback 10417tests/shared/test_jsonrpc_dispatcher.py::test_request_with_bool_meta_progress_token_is_not_adopted 10418[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_request_with_bool_meta_progress_token_is_not_adopted 10419tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_correlates_across_string_and_int_request_id_forms[string-cancel-for-int-request] 10420[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_correlates_across_string_and_int_request_id_forms[string-cancel-for-int-request] 10421tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_correlates_across_string_and_int_request_id_forms[int-cancel-for-string-request] 10422[gw1] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/tools.md:147-149] 10423tests/test_examples.py::test_docs_examples[docs/servers/completions.md:11-13] 10424[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_cancelled_correlates_across_string_and_int_request_id_forms[int-cancel-for-string-request] 10425[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:360-362] 10426tests/shared/test_jsonrpc_dispatcher.py::test_completed_handler_does_not_evict_reused_request_id_from_in_flight 10427tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:379-383] 10428[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_completed_handler_does_not_evict_reused_request_id_from_in_flight 10429tests/shared/test_jsonrpc_dispatcher.py::test_duplicate_request_id_completion_of_first_handler_keeps_second_cancellable 10430[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_duplicate_request_id_completion_of_first_handler_keeps_second_cancellable 10431tests/shared/test_jsonrpc_dispatcher.py::test_plan_outbound_with_related_request_id_drops_resumption_hints_but_keeps_abandon_cancel 10432[gw1] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:11-13] 10433tests/test_examples.py::test_docs_examples[docs/servers/completions.md:24-26] 10434[gw2] [ 87%] PASSED tests/shared/test_jsonrpc_dispatcher.py::test_plan_outbound_with_related_request_id_drops_resumption_hints_but_keeps_abandon_cancel 10435tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:141-143] 10436[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:379-383] 10437tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:405-407] 10438[gw1] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:24-26] 10439tests/test_examples.py::test_docs_examples[docs/servers/completions.md:46-48] 10440[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:141-143] 10441tests/test_examples.py::test_docs_examples[docs/handlers/lifespan.md:11-13] 10442[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/troubleshooting.md:405-407] 10443tests/test_examples.py::test_docs_examples[docs/get-started/index.md:24-36] 10444[gw1] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:46-48] 10445tests/test_examples.py::test_docs_examples[docs/servers/completions.md:55-57] 10446[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/lifespan.md:11-13] 10447[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/index.md:24-36] 10448tests/test_examples.py::test_docs_examples[docs/handlers/lifespan.md:65-67] 10449tests/test_examples.py::test_docs_examples[docs/get-started/testing.md:11-13] 10450[gw1] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:55-57] 10451tests/test_examples.py::test_docs_examples[docs/servers/completions.md:61-63] 10452[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/lifespan.md:65-67] 10453[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/testing.md:11-13] 10454tests/test_examples.py::test_docs_examples[docs/run/authorization.md:21-23] 10455tests/test_examples.py::test_docs_examples[docs/get-started/testing.md:39-70] 10456[gw1] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:61-63] 10457tests/test_examples.py::test_docs_examples[docs/servers/completions.md:71-73] 10458[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/run/authorization.md:21-23] 10459[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/testing.md:39-70] 10460tests/test_examples.py::test_docs_examples[docs/run/authorization.md:93-95] 10461tests/test_examples.py::test_docs_examples[docs/get-started/first-steps.md:37-39] 10462[gw1] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:71-73] 10463tests/test_examples.py::test_docs_examples[docs/servers/completions.md:94-96] 10464[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/run/authorization.md:93-95] 10465[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/first-steps.md:37-39] 10466tests/test_examples.py::test_docs_examples[docs/run/asgi.md:11-13] 10467tests/test_examples.py::test_docs_examples[docs/get-started/first-steps.md:89-91] 10468[gw1] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:94-96] 10469[gw2] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:11-13] 10470tests/test_examples.py::test_docs_examples[docs/servers/completions.md:106-108] 10471[gw3] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/first-steps.md:89-91] 10472tests/test_examples.py::test_docs_examples[docs/run/asgi.md:52-54] 10473tests/test_examples.py::test_docs_examples[docs/get-started/real-host.md:9-11] 10474[gw1] [ 87%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/completions.md:106-108] 10475[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:52-54] 10476[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/get-started/real-host.md:9-11] 10477tests/test_examples.py::test_docs_examples[docs/run/asgi.md:82-84] 10478tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:13-15] 10479tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:11-13] 10480[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:11-13] 10481[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:13-15] 10482[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:82-84] 10483tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:84-86] 10484tests/test_examples.py::test_docs_examples[docs/run/asgi.md:93-95] 10485tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:21-25] 10486[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:84-86] 10487[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:93-95] 10488[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:21-25] 10489tests/test_examples.py::test_docs_examples[docs/run/asgi.md:103-105] 10490tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:46-48] 10491tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:114-116] 10492[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:103-105] 10493[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:46-48] 10494[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:114-116] 10495tests/test_examples.py::test_docs_examples[docs/run/asgi.md:116-118] 10496tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:147-149] 10497tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:93-95] 10498[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:147-149] 10499[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:93-95] 10500[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/asgi.md:116-118] 10501tests/test_examples.py::test_docs_examples[docs/run/index.md:22-24] 10502tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:99-102] 10503tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:163-165] 10504[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/index.md:22-24] 10505[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:163-165] 10506tests/test_examples.py::test_docs_examples[docs/run/index.md:58-60] 10507tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:178-180] 10508[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:99-102] 10509tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:112-114] 10510[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/index.md:58-60] 10511[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/prompts.md:178-180] 10512tests/test_examples.py::test_docs_examples[docs/run/index.md:95-97] 10513tests/test_examples.py::test_docs_examples[docs/servers/resources.md:11-13] 10514[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/handling-errors.md:112-114] 10515tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:11-13] 10516[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/index.md:95-97] 10517[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/resources.md:11-13] 10518tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:21-23] 10519tests/test_examples.py::test_docs_examples[docs/servers/resources.md:36-38] 10520[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:11-13] 10521tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:32-35] 10522[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:21-23] 10523[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/resources.md:36-38] 10524tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:33-35] 10525tests/test_examples.py::test_docs_examples[docs/servers/resources.md:59-61] 10526[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/structured-output.md:32-35] 10527tests/test_examples.py::test_docs_examples[docs/servers/media.md:120-123] 10528[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:33-35] 10529[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/resources.md:59-61] 10530tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:93-95] 10531tests/test_examples.py::test_docs_examples[docs/servers/resources.md:78-80] 10532[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:120-123] 10533tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:24-26] 10534[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:93-95] 10535tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:107-109] 10536[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/resources.md:78-80] 10537tests/test_examples.py::test_docs_examples[docs/servers/resources.md:103-105] 10538[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:24-26] 10539tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:162-164] 10540[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:107-109] 10541tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:158-160] 10542[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/resources.md:103-105] 10543tests/test_examples.py::test_docs_examples[docs/servers/media.md:11-13] 10544[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:162-164] 10545tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:179-181] 10546[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/legacy-clients.md:158-160] 10547tests/test_examples.py::test_docs_examples[docs/run/deploy.md:20-22] 10548[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:11-13] 10549tests/test_examples.py::test_docs_examples[docs/servers/media.md:21-24] 10550[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:179-181] 10551tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:218-220] 10552[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/deploy.md:20-22] 10553tests/test_examples.py::test_docs_examples[docs/run/deploy.md:95-97] 10554[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:21-24] 10555tests/test_examples.py::test_docs_examples[docs/servers/media.md:50-52] 10556[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:218-220] 10557tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:232-234] 10558[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/deploy.md:95-97] 10559[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:50-52] 10560tests/test_examples.py::test_docs_examples[docs/run/deploy.md:130-132] 10561tests/test_examples.py::test_docs_examples[docs/servers/media.md:56-59] 10562[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/uri-templates.md:232-234] 10563tests/test_examples.py::test_docs_examples[docs/handlers/sampling-and-roots.md:14-16] 10564[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/deploy.md:130-132] 10565[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:56-59] 10566tests/test_examples.py::test_docs_examples[docs/run/deploy.md:162-164] 10567tests/test_examples.py::test_docs_examples[docs/servers/media.md:67-69] 10568[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/sampling-and-roots.md:14-16] 10569[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/deploy.md:162-164] 10570tests/test_examples.py::test_docs_examples[docs/handlers/sampling-and-roots.md:27-29] 10571tests/test_examples.py::test_docs_examples[docs/run/opentelemetry.md:9-11] 10572[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:67-69] 10573tests/test_examples.py::test_docs_examples[docs/servers/media.md:88-90] 10574[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/sampling-and-roots.md:27-29] 10575[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/opentelemetry.md:9-11] 10576tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:11-13] 10577tests/test_examples.py::test_docs_examples[docs/run/opentelemetry.md:83-89] 10578[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:88-90] 10579tests/test_examples.py::test_docs_examples[docs/servers/media.md:96-98] 10580[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:11-13] 10581[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/run/opentelemetry.md:83-89] 10582tests/test_examples.py::test_docs_examples[docs/client/identity-assertion.md:24-26] 10583tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:27-47] 10584[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:96-98] 10585tests/test_examples.py::test_docs_examples[docs/servers/media.md:106-108] 10586[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:27-47] 10587[gw2] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/client/identity-assertion.md:24-26] 10588tests/test_examples.py::test_docs_examples[docs/client/identity-assertion.md:83-85] 10589tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:100-102] 10590[gw1] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/servers/media.md:106-108] 10591tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:87-89] 10592[gw3] [ 88%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/progress.md:100-102] 10593[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/identity-assertion.md:83-85] 10594tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:11-13] 10595tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:11-13] 10596[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:87-89] 10597tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:93-95] 10598[gw0] [ 89%] PASSED tests/shared/test_streamable_http.py::test_server_close_sse_stream_via_context 10599tests/shared/test_streamable_http.py::test_standalone_get_stream_reconnection 10600[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:11-13] 10601[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:11-13] 10602tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:52-54] 10603tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:34-36] 10604[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:93-95] 10605tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:122-124] 10606[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:34-36] 10607[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:52-54] 10608tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:40-42] 10609tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:67-69] 10610[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:122-124] 10611tests/test_examples.py::test_docs_examples[docs/client/index.md:11-13] 10612[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:67-69] 10613[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:40-42] 10614tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:104-132] 10615tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:46-48] 10616[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:11-13] 10617tests/test_examples.py::test_docs_examples[docs/client/index.md:21-23] 10618[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:104-132] 10619tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:140-149] 10620[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:46-48] 10621tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:68-70] 10622[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:21-23] 10623[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:140-149] 10624tests/test_examples.py::test_docs_examples[docs/client/index.md:57-59] 10625tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:155-157] 10626[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/subscriptions.md:68-70] 10627tests/test_examples.py::test_docs_examples[docs/client/oauth-clients.md:11-13] 10628[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:155-157] 10629[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:57-59] 10630tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:169-171] 10631tests/test_examples.py::test_docs_examples[docs/client/index.md:63-67] 10632[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/oauth-clients.md:11-13] 10633tests/test_examples.py::test_docs_examples[docs/client/oauth-clients.md:110-112] 10634[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:63-67] 10635[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/subscriptions.md:169-171] 10636tests/test_examples.py::test_docs_examples[docs/client/index.md:96-98] 10637tests/test_examples.py::test_docs_examples[docs/handlers/cancellation.md:13-15] 10638[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/oauth-clients.md:110-112] 10639tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:11-13] 10640[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/cancellation.md:13-15] 10641[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:96-98] 10642tests/test_examples.py::test_docs_examples[docs/handlers/cancellation.md:29-31] 10643tests/test_examples.py::test_docs_examples[docs/client/index.md:102-106] 10644[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:11-13] 10645tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:22-24] 10646[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/cancellation.md:29-31] 10647[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:102-106] 10648tests/test_examples.py::test_docs_examples[docs/handlers/context.md:11-13] 10649tests/test_examples.py::test_docs_examples[docs/client/index.md:130-134] 10650[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:22-24] 10651tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:42-47] 10652[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:130-134] 10653[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/context.md:11-13] 10654tests/test_examples.py::test_docs_examples[docs/handlers/context.md:80-82] 10655tests/test_examples.py::test_docs_examples[docs/client/index.md:152-154] 10656[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:42-47] 10657tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:51-53] 10658[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:152-154] 10659tests/test_examples.py::test_docs_examples[docs/client/index.md:166-168] 10660[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/context.md:80-82] 10661tests/test_examples.py::test_docs_examples[docs/handlers/context.md:86-89] 10662[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/callbacks.md:51-53] 10663tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:15-17] 10664[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:166-168] 10665tests/test_examples.py::test_docs_examples[docs/client/index.md:172-176] 10666[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/context.md:86-89] 10667tests/test_examples.py::test_docs_examples[docs/handlers/context.md:98-100] 10668[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:15-17] 10669tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:39-41] 10670[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:172-176] 10671tests/test_examples.py::test_docs_examples[docs/client/index.md:180-183] 10672[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/context.md:98-100] 10673tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:20-22] 10674[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:39-41] 10675[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:180-183] 10676tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:60-62] 10677tests/test_examples.py::test_docs_examples[docs/client/index.md:191-193] 10678[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:20-22] 10679tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:47-49] 10680[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:60-62] 10681[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:191-193] 10682tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:78-80] 10683tests/test_examples.py::test_docs_examples[docs/client/index.md:204-206] 10684[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:47-49] 10685tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:118-120] 10686[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:78-80] 10687[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/index.md:204-206] 10688tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:90-92] 10689tests/test_examples.py::test_docs_examples[docs/client/caching.md:9-11] 10690[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:118-120] 10691tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:132-134] 10692[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:90-92] 10693[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/caching.md:9-11] 10694tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:119-121] 10695tests/test_examples.py::test_docs_examples[docs/client/caching.md:28-30] 10696[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/elicitation.md:132-134] 10697tests/test_examples.py::test_docs_examples[docs/handlers/logging.md:11-13] 10698[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:119-121] 10699[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/caching.md:28-30] 10700tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:141-143] 10701tests/test_examples.py::test_docs_examples[docs/client/caching.md:48-50] 10702[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/logging.md:11-13] 10703tests/test_examples.py::test_docs_examples[docs/handlers/logging.md:21-24] 10704[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:141-143] 10705[gw1] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/client/caching.md:48-50] 10706tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:172-174] 10707tests/test_examples.py::test_docs_examples[docs/client/caching.md:76-80] 10708[gw3] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/logging.md:21-24] 10709[gw2] [ 89%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:172-174] 10710tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:24-26] 10711[gw1] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/caching.md:76-80] 10712tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:178-180] 10713tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:11-13] 10714[gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:24-26] 10715[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:178-180] 10716tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:197-201] 10717tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:38-40] 10718[gw1] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:11-13] 10719tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:15-17] 10720[gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:38-40] 10721[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:197-201] 10722tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:208-210] 10723tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:54-56] 10724[gw1] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:15-17] 10725tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:23-25] 10726[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:208-210] 10727[gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:54-56] 10728tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:228-231] 10729tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:79-81] 10730[gw1] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:23-25] 10731tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:45-47] 10732[gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:79-81] 10733[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:228-231] 10734tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:96-101] 10735tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:250-252] 10736[gw1] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/session-groups.md:45-47] 10737tests/test_examples.py::test_docs_examples[docs/client/transports.md:13-15] 10738[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:250-252] 10739[gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:96-101] 10740tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:122-126] 10741tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:258-260] 10742[gw1] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/transports.md:13-15] 10743tests/test_examples.py::test_docs_examples[docs/client/transports.md:33-35] 10744[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/extensions.md:258-260] 10745[gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:122-126] 10746tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:23-25] 10747tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:136-138] 10748[gw1] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/transports.md:33-35] 10749tests/test_examples.py::test_docs_examples[docs/client/transports.md:55-57] 10750[gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/multi-round-trip.md:136-138] 10751tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:11-13] 10752[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:23-25] 10753tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:54-56] 10754[gw1] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/transports.md:55-57] 10755tests/test_examples.py::test_docs_examples[docs/client/transports.md:111-113] 10756[gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:11-13] 10757tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:68-70] 10758[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:54-56] 10759tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:63-65] 10760[gw1] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/transports.md:111-113] 10761tests/test_examples.py::test_docs_examples[docs/client/transports.md:131-133] 10762[gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:68-70] 10763tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:98-100] 10764[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:63-65] 10765tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:95-97] 10766[gw1] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/client/transports.md:131-133] 10767tests/test_examples.py::test_docs_examples[docs/advanced/middleware.md:21-23] 10768[gw3] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/handlers/dependencies.md:98-100] 10769tests/test_types.py::test_tool_choice 10770[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:95-97] 10771tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:159-161] 10772[gw3] [ 90%] PASSED tests/test_types.py::test_tool_choice 10773tests/test_types.py::test_sampling_message_with_user_role 10774[gw3] [ 90%] PASSED tests/test_types.py::test_sampling_message_with_user_role 10775[gw1] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/middleware.md:21-23] 10776tests/test_types.py::test_sampling_message_with_assistant_role 10777tests/test_examples.py::test_docs_examples[docs/advanced/middleware.md:67-69] 10778[gw3] [ 90%] PASSED tests/test_types.py::test_sampling_message_with_assistant_role 10779tests/test_types.py::test_sampling_message_backward_compatibility 10780[gw3] [ 90%] PASSED tests/test_types.py::test_sampling_message_backward_compatibility 10781tests/test_types.py::test_create_message_request_params_with_tools 10782[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/apps.md:159-161] 10783[gw3] [ 90%] PASSED tests/test_types.py::test_create_message_request_params_with_tools 10784tests/test_examples.py::test_docs_examples[docs/advanced/pagination.md:13-15] 10785tests/test_types.py::test_create_message_result_with_tool_use 10786[gw3] [ 90%] PASSED tests/test_types.py::test_create_message_result_with_tool_use 10787tests/test_types.py::test_create_message_result_basic 10788[gw1] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/middleware.md:67-69] 10789[gw3] [ 90%] PASSED tests/test_types.py::test_create_message_result_basic 10790tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:11-13] 10791tests/test_types.py::test_client_capabilities_with_sampling_tools 10792[gw3] [ 90%] PASSED tests/test_types.py::test_client_capabilities_with_sampling_tools 10793tests/test_types.py::test_tool_preserves_json_schema_2020_12_fields 10794[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/pagination.md:13-15] 10795[gw3] [ 90%] PASSED tests/test_types.py::test_tool_preserves_json_schema_2020_12_fields 10796tests/test_examples.py::test_docs_examples[docs/advanced/pagination.md:45-47] 10797tests/test_types.py::test_list_tools_result_preserves_json_schema_2020_12_fields 10798[gw3] [ 90%] PASSED tests/test_types.py::test_list_tools_result_preserves_json_schema_2020_12_fields 10799tests/test_types.py::test_concrete_wire_results_always_dump_result_type_complete 10800[gw1] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:11-13] 10801[gw3] [ 90%] PASSED tests/test_types.py::test_concrete_wire_results_always_dump_result_type_complete 10802tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:27-29] 10803tests/test_types.py::test_cacheable_results_default_to_immediately_stale_private 10804[gw3] [ 90%] PASSED tests/test_types.py::test_cacheable_results_default_to_immediately_stale_private 10805tests/test_types.py::test_empty_result_dumps_no_fields_by_default 10806[gw3] [ 90%] PASSED tests/test_types.py::test_empty_result_dumps_no_fields_by_default 10807tests/test_types.py::test_empty_result_dumps_result_type_only_when_explicitly_tagged 10808[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/pagination.md:45-47] 10809tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:17-19] 10810[gw3] [ 90%] PASSED tests/test_types.py::test_empty_result_dumps_result_type_only_when_explicitly_tagged 10811tests/test_types.py::test_input_required_result_dumps_its_discriminating_tag 10812[gw3] [ 90%] PASSED tests/test_types.py::test_input_required_result_dumps_its_discriminating_tag 10813tests/test_types.py::test_input_required_result_requires_at_least_one_of_input_requests_or_request_state 10814[gw1] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:27-29] 10815[gw3] [ 90%] PASSED tests/test_types.py::test_input_required_result_requires_at_least_one_of_input_requests_or_request_state 10816tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:35-37] 10817tests/test_types.py::test_mcp_types_namespace_mirrors_mcp_types_exactly 10818[gw3] [ 90%] PASSED tests/test_types.py::test_mcp_types_namespace_mirrors_mcp_types_exactly 10819tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[jsonrpc] 10820[gw3] [ 90%] PASSED tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[jsonrpc] 10821[gw2] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:17-19] 10822tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[methods] 10823tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:42-55] 10824[gw3] [ 90%] PASSED tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[methods] 10825tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[version] 10826[gw3] [ 90%] PASSED tests/test_types.py::test_mcp_types_submodules_mirror_mcp_types_submodules_exactly[version] 10827[gw1] [ 90%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:35-37] 10828tests/test_types.py::test_bare_import_mcp_binds_the_types_submodule 10829tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:45-47] 10830[gw2] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:42-55] 10831tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:89-91] 10832[gw1] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/header-parameters.md:45-47] 10833tests/transports/stdio/test_windows.py::test_a_native_server_emitting_crlf_line_endings_round_trips_messages 10834[gw2] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:89-91] 10835[gw1] [ 91%] SKIPPED tests/transports/stdio/test_windows.py::test_a_native_server_emitting_crlf_line_endings_round_trips_messages 10836tests/transports/stdio/test_windows.py::test_a_tool_spawned_python_child_with_default_stdin_completes_promptly 10837tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:100-102] 10838[gw1] [ 91%] SKIPPED tests/transports/stdio/test_windows.py::test_a_tool_spawned_python_child_with_default_stdin_completes_promptly 10839tests/types/test_methods.py::test_maps_define_exactly_the_expected_methods_for_every_known_version 10840[gw1] [ 91%] PASSED tests/types/test_methods.py::test_maps_define_exactly_the_expected_methods_for_every_known_version 10841tests/types/test_methods.py::test_spec_client_method_sets_are_the_client_direction_projection_of_the_surface_maps 10842[gw1] [ 91%] PASSED tests/types/test_methods.py::test_spec_client_method_sets_are_the_client_direction_projection_of_the_surface_maps 10843tests/types/test_methods.py::test_elicit_result_surface_accepts_null_content_values_at_every_version_that_defines_it 10844[gw1] [ 91%] PASSED tests/types/test_methods.py::test_elicit_result_surface_accepts_null_content_values_at_every_version_that_defines_it 10845[gw2] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:100-102] 10846tests/types/test_methods.py::test_discovery_capabilities_preserve_nested_json_values 10847tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:124-126] 10848[gw1] [ 91%] PASSED tests/types/test_methods.py::test_discovery_capabilities_preserve_nested_json_values 10849tests/types/test_methods.py::test_elicit_request_surface_accepts_loose_property_schemas 10850[gw1] [ 91%] PASSED tests/types/test_methods.py::test_elicit_request_surface_accepts_loose_property_schemas 10851tests/types/test_methods.py::test_2025_11_25_tool_schema_surfaces_accept_boolean_sub_schemas 10852[gw1] [ 91%] PASSED tests/types/test_methods.py::test_2025_11_25_tool_schema_surfaces_accept_boolean_sub_schemas 10853tests/types/test_methods.py::test_response_map_keys_mirror_the_request_map_keys 10854[gw2] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:124-126] 10855[gw1] [ 91%] PASSED tests/types/test_methods.py::test_response_map_keys_mirror_the_request_map_keys 10856tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:137-139] 10857tests/types/test_methods.py::test_response_row_values_match_the_pinned_classes_and_unions 10858[gw1] [ 91%] PASSED tests/types/test_methods.py::test_response_row_values_match_the_pinned_classes_and_unions 10859tests/types/test_methods.py::test_surface_keys_agree_with_their_classes_and_the_monolith_maps 10860[gw1] [ 91%] PASSED tests/types/test_methods.py::test_surface_keys_agree_with_their_classes_and_the_monolith_maps 10861tests/types/test_methods.py::test_built_in_maps_are_immutable 10862[gw1] [ 91%] PASSED tests/types/test_methods.py::test_built_in_maps_are_immutable 10863tests/types/test_methods.py::test_cacheable_methods_mirror_the_cacheable_method_literal 10864[gw2] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:137-139] 10865[gw1] [ 91%] PASSED tests/types/test_methods.py::test_cacheable_methods_mirror_the_cacheable_method_literal 10866tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:164-166] 10867tests/types/test_methods.py::test_input_required_methods_mirror_the_monolith_input_required_arms 10868[gw1] [ 91%] PASSED tests/types/test_methods.py::test_input_required_methods_mirror_the_monolith_input_required_arms 10869tests/types/test_methods.py::test_is_input_required_matches_typed_and_wire_shapes 10870[gw1] [ 91%] PASSED tests/types/test_methods.py::test_is_input_required_matches_typed_and_wire_shapes 10871tests/types/test_methods.py::test_minimal_request_bodies_parse_through_every_request_row 10872[gw1] [ 91%] PASSED tests/types/test_methods.py::test_minimal_request_bodies_parse_through_every_request_row 10873tests/types/test_methods.py::test_minimal_notification_bodies_parse_through_every_notification_row 10874[gw2] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:164-166] 10875tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:178-180] 10876[gw1] [ 91%] PASSED tests/types/test_methods.py::test_minimal_notification_bodies_parse_through_every_notification_row 10877tests/types/test_methods.py::test_minimal_result_bodies_parse_through_every_result_row 10878[gw1] [ 91%] PASSED tests/types/test_methods.py::test_minimal_result_bodies_parse_through_every_result_row 10879[gw2] [ 91%] PASSED tests/test_examples.py::test_docs_examples[docs/advanced/low-level-server.md:178-180] 10880tests/types/test_methods.py::test_non_file_root_uri_passes_the_surface_step_and_rejects_at_the_monolith_step 10881tests/test_types.py::test_jsonrpc_request 10882[gw1] [ 91%] PASSED tests/types/test_methods.py::test_non_file_root_uri_passes_the_surface_step_and_rejects_at_the_monolith_step 10883[gw2] [ 91%] PASSED tests/test_types.py::test_jsonrpc_request 10884tests/types/test_methods.py::test_absent_map_keys_raise_key_error_for_every_gate_shape 10885tests/test_types.py::test_method_initialization 10886[gw1] [ 91%] PASSED tests/types/test_methods.py::test_absent_map_keys_raise_key_error_for_every_gate_shape 10887[gw2] [ 91%] PASSED tests/test_types.py::test_method_initialization 10888tests/types/test_methods.py::test_unknown_version_strings_raise_value_error_on_every_parse_function 10889tests/test_types.py::test_tool_use_content 10890[gw1] [ 91%] PASSED tests/types/test_methods.py::test_unknown_version_strings_raise_value_error_on_every_parse_function 10891[gw2] [ 91%] PASSED tests/test_types.py::test_tool_use_content 10892tests/test_types.py::test_tool_result_content 10893tests/types/test_methods.py::test_2026_07_28_requests_missing_a_required_meta_entry_reject_as_missing 10894[gw2] [ 91%] PASSED tests/test_types.py::test_tool_result_content 10895[gw1] [ 91%] PASSED tests/types/test_methods.py::test_2026_07_28_requests_missing_a_required_meta_entry_reject_as_missing 10896tests/types/test_methods.py::test_2026_07_28_requests_accept_meta_without_the_optional_client_info 10897tests/types/test_methods.py::test_snake_case_spellings_of_required_aliased_fields_reject_as_missing 10898[gw1] [ 91%] PASSED tests/types/test_methods.py::test_2026_07_28_requests_accept_meta_without_the_optional_client_info 10899tests/types/test_methods.py::test_2026_07_28_results_require_result_type 10900[gw2] [ 91%] PASSED tests/types/test_methods.py::test_snake_case_spellings_of_required_aliased_fields_reject_as_missing 10901tests/types/test_methods.py::test_extension_map_rows_parse_through_the_same_functions 10902[gw1] [ 91%] PASSED tests/types/test_methods.py::test_2026_07_28_results_require_result_type 10903[gw2] [ 91%] PASSED tests/types/test_methods.py::test_extension_map_rows_parse_through_the_same_functions 10904tests/types/test_methods.py::test_empty_result_body_parses_at_versions_that_define_it 10905tests/types/test_methods.py::test_inconsistent_extension_maps_raise_runtime_error_after_the_surface_hit 10906[gw1] [ 91%] PASSED tests/types/test_methods.py::test_empty_result_body_parses_at_versions_that_define_it 10907[gw2] [ 91%] PASSED tests/types/test_methods.py::test_inconsistent_extension_maps_raise_runtime_error_after_the_surface_hit 10908tests/types/test_methods.py::test_2026_07_28_shaped_result_extras_pass_at_earlier_versions 10909tests/types/test_methods.py::test_input_required_unions_discriminate_identically_in_both_arm_orders 10910[gw1] [ 91%] PASSED tests/types/test_methods.py::test_2026_07_28_shaped_result_extras_pass_at_earlier_versions 10911tests/types/test_methods.py::test_embedded_input_request_entries_without_method_reject_at_the_surface_step 10912[gw1] [ 91%] PASSED tests/types/test_methods.py::test_embedded_input_request_entries_without_method_reject_at_the_surface_step 10913tests/types/test_methods.py::test_input_required_url_elicit_without_elicitation_id_parses_at_2026 10914[gw1] [ 91%] PASSED tests/types/test_methods.py::test_input_required_url_elicit_without_elicitation_id_parses_at_2026 10915tests/types/test_methods.py::test_none_params_omit_the_key_so_required_params_reject 10916[gw1] [ 91%] PASSED tests/types/test_methods.py::test_none_params_omit_the_key_so_required_params_reject 10917tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-03-26] 10918[gw1] [ 91%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-03-26] 10919tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-06-18] 10920[gw1] [ 91%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-06-18] 10921tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-11-25] 10922[gw1] [ 91%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2025-11-25] 10923tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[server/discover-2026-07-28] 10924[gw1] [ 91%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[server/discover-2026-07-28] 10925tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[subscriptions/listen-2026-07-28] 10926[gw1] [ 91%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[subscriptions/listen-2026-07-28] 10927tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2024-11-05] 10928[gw1] [ 91%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2024-11-05] 10929tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-03-26] 10930[gw1] [ 91%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-03-26] 10931tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-06-18] 10932[gw1] [ 91%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-06-18] 10933tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-11-25] 10934[gw1] [ 91%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2025-11-25] 10935tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2026-07-28] 10936[gw1] [ 91%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/call-2026-07-28] 10937tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2024-11-05] 10938[gw1] [ 91%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2024-11-05] 10939tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-03-26] 10940[gw1] [ 91%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-03-26] 10941tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-06-18] 10942[gw1] [ 91%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-06-18] 10943tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-11-25] 10944[gw2] [ 91%] PASSED tests/types/test_methods.py::test_input_required_unions_discriminate_identically_in_both_arm_orders 10945tests/types/test_methods.py::test_sampling_union_keeps_the_complete_arm_first_because_order_is_load_bearing 10946[gw1] [ 91%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2025-11-25] 10947tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2026-07-28] 10948[gw1] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[tools/list-2026-07-28] 10949[gw2] [ 92%] PASSED tests/types/test_methods.py::test_sampling_union_keeps_the_complete_arm_first_because_order_is_load_bearing 10950tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2024-11-05] 10951tests/types/test_methods.py::test_validate_functions_accept_reject_and_gate_like_their_parse_siblings 10952[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2024-11-05] 10953[gw2] [ 92%] PASSED tests/types/test_methods.py::test_validate_functions_accept_reject_and_gate_like_their_parse_siblings 10954tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-03-26] 10955tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2024-11-05] 10956[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-03-26] 10957[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2024-11-05] 10958tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-06-18] 10959tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-03-26] 10960[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-06-18] 10961[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-03-26] 10962tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-11-25] 10963tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-06-18] 10964[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[completion/complete-2025-11-25] 10965[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-06-18] 10966tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2024-11-05] 10967tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-11-25] 10968[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2024-11-05] 10969[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2025-11-25] 10970tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-03-26] 10971tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2026-07-28] 10972[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-03-26] 10973[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[completion/complete-2026-07-28] 10974tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-06-18] 10975tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2024-11-05] 10976[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-06-18] 10977[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2024-11-05] 10978tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-03-26] 10979tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-11-25] 10980[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-03-26] 10981[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[initialize-2025-11-25] 10982tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2024-11-05] 10983tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-06-18] 10984[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-06-18] 10985[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2024-11-05] 10986tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-11-25] 10987tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2025-03-26] 10988[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[initialize-2025-11-25] 10989[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] 10990tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2024-11-05] 10991tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2025-06-18] 10992[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2024-11-05] 10993tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-03-26] 10994[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] 10995tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[logging/setLevel-2025-11-25] 10996[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-03-26] 10997tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-06-18] 10998[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] 10999tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2024-11-05] 11000[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-06-18] 11001tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-11-25] 11002[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2024-11-05] 11003[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[logging/setLevel-2025-11-25] 11004tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-03-26] 11005tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2024-11-05] 11006[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-03-26] 11007[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2024-11-05] 11008tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-03-26] 11009tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-06-18] 11010[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-03-26] 11011tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-06-18] 11012[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-06-18] 11013tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-11-25] 11014[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-06-18] 11015tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-11-25] 11016[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[ping-2025-11-25] 11017tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2024-11-05] 11018[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[ping-2025-11-25] 11019tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2024-11-05] 11020[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] 11021[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2024-11-05] 11022tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2025-03-26] 11023tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-03-26] 11024[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] 11025[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-03-26] 11026tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2025-06-18] 11027tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-06-18] 11028[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-06-18] 11029[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] 11030tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-11-25] 11031tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/get-2025-11-25] 11032[gw2] [ 92%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2025-11-25] 11033[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] 11034tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2024-11-05] 11035tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2025-11-25] 11036[gw2] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2025-11-25] 11037[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] 11038tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2024-11-05] 11039tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2025-03-26] 11040[gw2] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2024-11-05] 11041tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-03-26] 11042[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] 11043tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2025-06-18] 11044[gw2] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-03-26] 11045tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-06-18] 11046[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] 11047tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[prompts/list-2025-11-25] 11048[gw2] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-06-18] 11049tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-11-25] 11050[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] 11051[gw2] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/subscribe-2025-11-25] 11052tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2024-11-05] 11053tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2024-11-05] 11054[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] 11055tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-03-26] 11056[gw2] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2024-11-05] 11057tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2025-03-26] 11058[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-03-26] 11059tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-06-18] 11060[gw2] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2025-03-26] 11061tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2025-06-18] 11062[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-06-18] 11063[gw2] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2025-06-18] 11064tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-11-25] 11065tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/templates/list-2025-11-25] 11066[gw1] [ 92%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/list-2025-11-25] 11067[gw2] [ 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] 11068tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2024-11-05] 11069tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2024-11-05] 11070[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] 11071[gw2] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2024-11-05] 11072tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2025-03-26] 11073tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-03-26] 11074[gw2] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-03-26] 11075[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] 11076tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-06-18] 11077tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/read-2025-06-18] 11078[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] 11079[gw2] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-06-18] 11080tests/types/test_methods.py::test_serialize_server_result_keeps_2026_only_keys_at_2026_07_28 11081tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-11-25] 11082[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_keeps_2026_only_keys_at_2026_07_28 11083[gw2] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[resources/unsubscribe-2025-11-25] 11084tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2024-11-05] 11085tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2024-11-05] 11086[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2024-11-05] 11087[gw2] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2024-11-05] 11088tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-03-26] 11089tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-03-26] 11090[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-03-26] 11091[gw2] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-03-26] 11092tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-06-18] 11093tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-06-18] 11094[gw2] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-06-18] 11095[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-06-18] 11096tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-11-25] 11097tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-11-25] 11098[gw2] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/call-2025-11-25] 11099[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2025-11-25] 11100tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2024-11-05] 11101tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2026-07-28] 11102[gw2] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2024-11-05] 11103tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-03-26] 11104[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_arbitrary_meta_value_identically[2026-07-28] 11105[gw2] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-03-26] 11106tests/types/test_methods.py::test_serialize_server_result_preserves_open_type_extras 11107tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-06-18] 11108[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_preserves_open_type_extras 11109[gw2] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-06-18] 11110tests/types/test_methods.py::test_serialize_server_result_drops_top_level_server_info_on_discover_but_keeps_the_meta_stamp 11111tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-11-25] 11112[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_top_level_server_info_on_discover_but_keeps_the_meta_stamp 11113[gw2] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_2026_only_keys_at_pre_2026_versions[tools/list-2025-11-25] 11114tests/types/test_methods.py::test_serialize_server_result_drops_an_unknown_nested_tool_field 11115tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tasks--] 11116[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_drops_an_unknown_nested_tool_field 11117tests/types/test_methods.py::test_serialize_server_result_raises_key_error_for_an_absent_row_and_value_error_for_an_unknown_version 11118[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tasks--] 11119tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ClientCapabilities--] 11120[gw1] [ 93%] PASSED tests/types/test_methods.py::test_serialize_server_result_raises_key_error_for_an_absent_row_and_value_error_for_an_unknown_version 11121tests/types/test_methods.py::test_importing_the_module_builds_no_adapters_and_identical_rows_share_one 11122[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ClientCapabilities--] 11123tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Argument--] 11124[gw1] [ 93%] PASSED tests/types/test_methods.py::test_importing_the_module_builds_no_adapters_and_identical_rows_share_one 11125[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Argument--] 11126tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.BaseMetadata--] 11127tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Context--] 11128[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Context--] 11129[gw1] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.BaseMetadata--] 11130tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.BlobResourceContents--] 11131tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Completion--] 11132[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Completion--] 11133[gw1] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.BlobResourceContents--] 11134tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params--] 11135tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteResult--] 11136[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteResult--] 11137[gw1] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params--] 11138tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitResult--] 11139tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Elicitation--] 11140[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitResult--] 11141[gw1] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Elicitation--] 11142tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params1--] 11143tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Roots--] 11144[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params1--] 11145tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitationCompleteNotification--] 11146[gw1] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Roots--] 11147tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Sampling--] 11148[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitationCompleteNotification--] 11149tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Error--] 11150[gw1] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Sampling--] 11151tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Elicitation1--] 11152[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Error--] 11153tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params2--] 11154[gw1] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Elicitation1--] 11155tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Sampling1--] 11156[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params2--] 11157tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskPayloadResult--] 11158[gw1] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Sampling1--] 11159tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Requests--] 11160[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskPayloadResult--] 11161tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params3--] 11162[gw1] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Requests--] 11163[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Params3--] 11164tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ModelPreferences--] 11165tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Icon--] 11166[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Icon--] 11167[gw1] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ModelPreferences--] 11168tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Implementation--] 11169tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Notification--] 11170[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Implementation--] 11171[gw1] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Notification--] 11172tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCNotification--] 11173tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.NotificationParams--] 11174[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCNotification--] 11175tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.LoggingMessageNotificationParams--] 11176[gw1] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.NotificationParams--] 11177tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedResult--] 11178[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.LoggingMessageNotificationParams--] 11179tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ModelHint--] 11180[gw1] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedResult--] 11181tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptArgument--] 11182[gw2] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ModelHint--] 11183tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RootsListChangedNotification--] 11184[gw1] [ 93%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptArgument--] 11185[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RootsListChangedNotification--] 11186tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptListChangedNotification--] 11187tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Prompts--] 11188[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptListChangedNotification--] 11189[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Prompts--] 11190tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptReference--] 11191tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Resources--] 11192[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Resources--] 11193[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptReference--] 11194tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tools--] 11195tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceRequestParams--] 11196[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tools--] 11197[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceRequestParams--] 11198tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Requests1--] 11199tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RelatedTaskMetadata--] 11200[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Requests1--] 11201[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RelatedTaskMetadata--] 11202tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Request--] 11203tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tasks1--] 11204[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tasks1--] 11205[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Request--] 11206tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tools1--] 11207tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RequestParams--] 11208[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tools1--] 11209[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.RequestParams--] 11210tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ServerCapabilities--] 11211tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceContents--] 11212[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ServerCapabilities--] 11213[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceContents--] 11214tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SetLevelRequestParams--] 11215tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceListChangedNotification--] 11216[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SetLevelRequestParams--] 11217tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SubscribeRequestParams--] 11218[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceListChangedNotification--] 11219tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceTemplateReference--] 11220[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SubscribeRequestParams--] 11221tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskMetadata--] 11222[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceTemplateReference--] 11223tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceUpdatedNotificationParams--] 11224[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskMetadata--] 11225tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TextResourceContents--] 11226[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceUpdatedNotificationParams--] 11227tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Result--] 11228[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TextResourceContents--] 11229tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolAnnotations--] 11230[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Result--] 11231tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Root--] 11232[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolAnnotations--] 11233tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolChoice--] 11234[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Root--] 11235tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolUseContent--] 11236[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolChoice--] 11237tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolExecution--] 11238[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolUseContent--] 11239tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.UnsubscribeRequestParams--] 11240[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolExecution--] 11241tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolListChangedNotification--] 11242[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.UnsubscribeRequestParams--] 11243tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Annotations--] 11244[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolListChangedNotification--] 11245tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeRequestParams--] 11246[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Annotations--] 11247tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.AudioContent--] 11248[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeRequestParams--] 11249tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeResult--] 11250[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.AudioContent--] 11251tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolRequestParams--] 11252[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeResult--] 11253tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializedNotification--] 11254[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolRequestParams--] 11255tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelTaskRequest--] 11256[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializedNotification--] 11257tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCErrorResponse--] 11258[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelTaskRequest--] 11259[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCErrorResponse--] 11260tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelledNotificationParams--] 11261tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCRequest--] 11262[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelledNotificationParams--] 11263tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteRequestParams--] 11264[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCRequest--] 11265tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCResultResponse--] 11266[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteRequestParams--] 11267tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequestFormParams--] 11268[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.JSONRPCResultResponse--] 11269[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequestFormParams--] 11270tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListRootsRequest--] 11271tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequestURLParams--] 11272[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListRootsRequest--] 11273[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequestURLParams--] 11274tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListRootsResult--] 11275tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.EmbeddedResource--] 11276[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListRootsResult--] 11277[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.EmbeddedResource--] 11278tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.LoggingMessageNotification--] 11279tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptRequestParams--] 11280[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.LoggingMessageNotification--] 11281[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptRequestParams--] 11282tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedRequestParams--] 11283tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskPayloadRequest--] 11284[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedRequestParams--] 11285[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskPayloadRequest--] 11286tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PingRequest--] 11287tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskRequest--] 11288[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PingRequest--] 11289[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskRequest--] 11290tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ProgressNotificationParams--] 11291tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ImageContent--] 11292[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ProgressNotificationParams--] 11293[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ImageContent--] 11294tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Prompt--] 11295tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceResult--] 11296[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Prompt--] 11297[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceResult--] 11298tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceRequest--] 11299tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Resource--] 11300[gw2] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ReadResourceRequest--] 11301[gw1] [ 94%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Resource--] 11302tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolRequest--] 11303tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceLink--] 11304[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolRequest--] 11305[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceLink--] 11306tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelTaskResult--] 11307tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceTemplate--] 11308[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelTaskResult--] 11309[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceTemplate--] 11310tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceUpdatedNotification--] 11311tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelledNotification--] 11312[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CancelledNotification--] 11313[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ResourceUpdatedNotification--] 11314tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteRequest--] 11315tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SetLevelRequest--] 11316[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CompleteRequest--] 11317[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SetLevelRequest--] 11318tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateTaskResult--] 11319tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SubscribeRequest--] 11320[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SubscribeRequest--] 11321[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateTaskResult--] 11322tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Task--] 11323tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptRequest--] 11324[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Task--] 11325[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptRequest--] 11326tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskStatusNotificationParams--] 11327tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskResult--] 11328[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskStatusNotificationParams--] 11329[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetTaskResult--] 11330tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TextContent--] 11331tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeRequest--] 11332[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TextContent--] 11333[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.InitializeRequest--] 11334tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tool--] 11335tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListPromptsRequest--] 11336[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Tool--] 11337[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListPromptsRequest--] 11338tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Data--] 11339tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListPromptsResult--] 11340[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.Data--] 11341[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListPromptsResult--] 11342tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.UnsubscribeRequest--] 11343tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourceTemplatesRequest--] 11344[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.UnsubscribeRequest--] 11345tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourcesResult--] 11346[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourceTemplatesRequest--] 11347tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourceTemplatesResult--] 11348[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourcesResult--] 11349tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListTasksRequest--] 11350[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourceTemplatesResult--] 11351tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourcesRequest--] 11352[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListTasksRequest--] 11353tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListTasksResult--] 11354[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListResourcesRequest--] 11355tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptResult--] 11356[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListTasksResult--] 11357tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListToolsRequest--] 11358[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.GetPromptResult--] 11359tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageResult--] 11360[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListToolsRequest--] 11361tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListToolsResult--] 11362[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageResult--] 11363tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SamplingMessage--] 11364[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ListToolsResult--] 11365[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.SamplingMessage--] 11366tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedRequest--] 11367tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageRequestParams--] 11368[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PaginatedRequest--] 11369[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageRequestParams--] 11370tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ProgressNotification--] 11371tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageRequest--] 11372[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ProgressNotification--] 11373tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptMessage--] 11374[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CreateMessageRequest--] 11375tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.BaseMetadata--] 11376[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.PromptMessage--] 11377tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskStatusNotification--] 11378[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.BaseMetadata--] 11379tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Argument--] 11380[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.TaskStatusNotification--] 11381tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolResultContent--] 11382[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Argument--] 11383tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Context--] 11384[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ToolResultContent--] 11385tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolResult--] 11386[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Context--] 11387tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Completion--] 11388[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.CallToolResult--] 11389tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequest--] 11390[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Completion--] 11391tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequestFormParams--] 11392[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2025_11_25.ElicitRequest--] 11393tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitResult--] 11394[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequestFormParams--] 11395[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitResult--] 11396tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequestURLParams--] 11397tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Error--] 11398[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequestURLParams--] 11399[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Error--] 11400tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Request--] 11401tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Icon--] 11402[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Request--] 11403[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Icon--] 11404tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceContents--] 11405tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Implementation--] 11406[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceContents--] 11407tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceTemplateReference--] 11408[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Implementation--] 11409tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCNotification--] 11410[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceTemplateReference--] 11411tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Root--] 11412[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCNotification--] 11413tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ModelHint--] 11414[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Root--] 11415tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Prompts--] 11416[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ModelHint--] 11417tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ModelPreferences--] 11418[gw2] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Prompts--] 11419tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Resources--] 11420[gw1] [ 95%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ModelPreferences--] 11421tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Notification--] 11422[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Resources--] 11423[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Notification--] 11424tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Tools--] 11425tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptArgument--] 11426[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Tools--] 11427[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptArgument--] 11428tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionFilter--] 11429tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptReference--] 11430[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionFilter--] 11431[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptReference--] 11432tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.TextResourceContents--] 11433tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolChoice--] 11434[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.TextResourceContents--] 11435[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolChoice--] 11436tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolAnnotations--] 11437tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolUseContent--] 11438[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolAnnotations--] 11439[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolUseContent--] 11440tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ImageContent--] 11441tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Data1--] 11442[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ImageContent--] 11443[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Data1--] 11444tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCErrorResponse--] 11445tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Annotations--] 11446[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCErrorResponse--] 11447tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCRequest--] 11448[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Annotations--] 11449tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.AudioContent--] 11450[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCRequest--] 11451tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListRootsRequest--] 11452[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.AudioContent--] 11453tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.BlobResourceContents--] 11454[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListRootsRequest--] 11455tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListRootsResult--] 11456[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.BlobResourceContents--] 11457tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CacheableResult--] 11458[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListRootsResult--] 11459tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.NotificationParams--] 11460[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CacheableResult--] 11461tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteResult--] 11462[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.NotificationParams--] 11463[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteResult--] 11464tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedResult--] 11465tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.EmbeddedResource--] 11466[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedResult--] 11467[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.EmbeddedResource--] 11468tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ProgressNotificationParams--] 11469tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptListChangedNotification--] 11470[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ProgressNotificationParams--] 11471[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptListChangedNotification--] 11472tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceResult--] 11473tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Prompt--] 11474[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceResult--] 11475[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Prompt--] 11476tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ServerCapabilities--] 11477tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Resource--] 11478[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Resource--] 11479[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ServerCapabilities--] 11480tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceLink--] 11481tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsAcknowledgedNotificationParams--] 11482[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsAcknowledgedNotificationParams--] 11483[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceLink--] 11484tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenResult--] 11485tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceListChangedNotification--] 11486[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenResult--] 11487[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceListChangedNotification--] 11488tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.TextContent--] 11489tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceTemplate--] 11490[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.TextContent--] 11491[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceTemplate--] 11492tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Tool--] 11493tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceUpdatedNotificationParams--] 11494[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceUpdatedNotificationParams--] 11495[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Tool--] 11496tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Result--] 11497tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolListChangedNotification--] 11498[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Result--] 11499[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolListChangedNotification--] 11500tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Sampling--] 11501tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CancelledNotificationParams--] 11502[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Sampling--] 11503[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CancelledNotificationParams--] 11504tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ClientCapabilities--] 11505tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Elicitation--] 11506[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ClientCapabilities--] 11507[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Elicitation--] 11508tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.DiscoverResult--] 11509tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourcesResult--] 11510[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.DiscoverResult--] 11511[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourcesResult--] 11512tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequest--] 11513tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListToolsResult--] 11514[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListToolsResult--] 11515[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ElicitRequest--] 11516tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.LoggingMessageNotificationParams--] 11517tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCResultResponse--] 11518[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.LoggingMessageNotificationParams--] 11519[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.JSONRPCResultResponse--] 11520tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Data--] 11521tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListPromptsResult--] 11522[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.Data--] 11523[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListPromptsResult--] 11524tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ProgressNotification--] 11525tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourceTemplatesResult--] 11526[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ProgressNotification--] 11527[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourceTemplatesResult--] 11528tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceUpdatedNotification--] 11529tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptMessage--] 11530[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PromptMessage--] 11531[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ResourceUpdatedNotification--] 11532tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.RequestParams--] 11533tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsAcknowledgedNotification--] 11534[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsAcknowledgedNotification--] 11535[gw2] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.RequestParams--] 11536tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenRequestParams--] 11537tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteRequestParams--] 11538[gw1] [ 96%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenRequestParams--] 11539[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteRequestParams--] 11540tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.DiscoverRequest--] 11541tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolResultContent--] 11542[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.DiscoverRequest--] 11543[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ToolResultContent--] 11544tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptResult--] 11545tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolResult--] 11546[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptResult--] 11547[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolResult--] 11548tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.LoggingMessageNotification--] 11549tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CancelledNotification--] 11550[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.LoggingMessageNotification--] 11551[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CancelledNotification--] 11552tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedRequestParams--] 11553tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteRequest--] 11554[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedRequestParams--] 11555[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CompleteRequest--] 11556tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenRequest--] 11557tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageResult--] 11558[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SubscriptionsListenRequest--] 11559tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListToolsRequest--] 11560[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListToolsRequest--] 11561tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedRequest--] 11562[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageResult--] 11563[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.PaginatedRequest--] 11564tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListPromptsRequest--] 11565tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceRequestParams--] 11566[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListPromptsRequest--] 11567[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceRequestParams--] 11568tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourceTemplatesRequest--] 11569tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SamplingMessage--] 11570[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.SamplingMessage--] 11571[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourceTemplatesRequest--] 11572tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolRequestParams--] 11573tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourcesRequest--] 11574[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolRequestParams--] 11575[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ListResourcesRequest--] 11576tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageRequestParams--] 11577tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageRequest--] 11578[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageRequest--] 11579[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CreateMessageRequestParams--] 11580tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptRequestParams--] 11581tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptRequest--] 11582[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptRequest--] 11583[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.GetPromptRequestParams--] 11584tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.InputResponseRequestParams--] 11585tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.InputRequiredResult--] 11586[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.InputResponseRequestParams--] 11587[gw2] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.InputRequiredResult--] 11588tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceRequest--] 11589tests/types/test_parity.py::test_every_public_monolith_model_is_exported_from_mcp_types 11590[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.ReadResourceRequest--] 11591[gw2] [ 97%] PASSED tests/types/test_parity.py::test_every_public_monolith_model_is_exported_from_mcp_types 11592tests/types/test_parity.py::test_every_surface_class_is_accounted_for 11593tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolRequest--] 11594[gw1] [ 97%] PASSED tests/types/test_parity.py::test_monolith_is_superset_of_surface_fields[_v2026_07_28.CallToolRequest--] 11595[gw2] [ 97%] PASSED tests/types/test_parity.py::test_every_surface_class_is_accounted_for 11596tests/types/test_request_name_param.py::test_request_base_declares_no_name_param 11597tests/types/test_request_name_param.py::test_name_param_is_not_a_pydantic_field 11598[gw1] [ 97%] PASSED tests/types/test_request_name_param.py::test_name_param_is_not_a_pydantic_field 11599[gw2] [ 97%] PASSED tests/types/test_request_name_param.py::test_request_base_declares_no_name_param 11600tests/types/test_request_name_param.py::test_core_request_types_inherit_none 11601tests/types/test_version.py::test_is_version_at_least_ordering[2025-11-25-2025-11-25-True] 11602[gw2] [ 97%] PASSED tests/types/test_request_name_param.py::test_core_request_types_inherit_none 11603[gw1] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2025-11-25-2025-11-25-True] 11604tests/types/test_request_name_param.py::test_subclass_overrides_by_bare_assignment 11605tests/types/test_version.py::test_is_version_at_least_ordering[2024-11-05-2024-11-05-True] 11606[gw2] [ 97%] PASSED tests/types/test_request_name_param.py::test_subclass_overrides_by_bare_assignment 11607[gw1] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2024-11-05-2024-11-05-True] 11608tests/types/test_version.py::test_is_version_at_least_ordering[2025-06-18-2024-11-05-True] 11609tests/types/test_version.py::test_is_version_at_least_ordering[2025-11-25-2025-06-18-True] 11610[gw2] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2025-06-18-2024-11-05-True] 11611[gw1] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2025-11-25-2025-06-18-True] 11612tests/types/test_version.py::test_is_version_at_least_ordering[2025-06-18-2025-11-25-False] 11613tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[] 11614[gw2] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2025-06-18-2025-11-25-False] 11615[gw1] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[] 11616tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[2025-11-26] 11617tests/types/test_version.py::test_is_version_at_least_ordering[2024-11-05-2025-03-26-False] 11618[gw1] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[2025-11-26] 11619[gw2] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_ordering[2024-11-05-2025-03-26-False] 11620tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[draft] 11621tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[zzz] 11622[gw1] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[draft] 11623[gw2] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[zzz] 11624tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[9999-99-99] 11625tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-03-26] 11626[gw1] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_version_is_false[9999-99-99] 11627[gw2] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-03-26] 11628tests/types/test_version.py::test_is_version_at_least_unknown_minimum_raises 11629tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-06-18] 11630[gw1] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_unknown_minimum_raises 11631[gw2] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-06-18] 11632tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2024-11-05] 11633tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-11-25] 11634[gw1] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2024-11-05] 11635[gw2] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2025-11-25] 11636tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2026-07-28] 11637tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-03-26] 11638[gw1] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2024-11-05-2026-07-28] 11639[gw2] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-03-26] 11640tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2024-11-05] 11641tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-06-18] 11642[gw1] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2024-11-05] 11643[gw2] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-06-18] 11644tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-11-25] 11645tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2024-11-05] 11646[gw1] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2025-11-25] 11647[gw2] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2024-11-05] 11648tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-03-26] 11649tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2026-07-28] 11650[gw2] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-03-26] 11651[gw1] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-03-26-2026-07-28] 11652tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-11-25] 11653tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-06-18] 11654[gw2] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-11-25] 11655[gw1] [ 97%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2025-06-18] 11656tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2026-07-28] 11657tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2024-11-05] 11658[gw2] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-06-18-2026-07-28] 11659[gw1] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2024-11-05] 11660tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-03-26] 11661tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-06-18] 11662[gw2] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-03-26] 11663[gw1] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-06-18] 11664tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-11-25] 11665tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2026-07-28] 11666[gw2] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2025-11-25] 11667[gw1] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2025-11-25-2026-07-28] 11668tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2024-11-05] 11669tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-03-26] 11670[gw2] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2024-11-05] 11671[gw1] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-03-26] 11672tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-06-18] 11673tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-11-25] 11674[gw2] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-06-18] 11675[gw1] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2025-11-25] 11676tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2026-07-28] 11677tests/types/test_version.py::test_supported_versions_are_known 11678[gw2] [ 98%] PASSED tests/types/test_version.py::test_is_version_at_least_matches_lexicographic_for_known_versions[2026-07-28-2026-07-28] 11679[gw1] [ 98%] PASSED tests/types/test_version.py::test_supported_versions_are_known 11680tests/types/test_version.py::test_known_versions_are_strictly_ordered 11681tests/types/test_wire_frames.py::test_request_frame_carries_the_envelope_and_the_dumped_request_body 11682[gw2] [ 98%] PASSED tests/types/test_version.py::test_known_versions_are_strictly_ordered 11683[gw1] [ 98%] PASSED tests/types/test_wire_frames.py::test_request_frame_carries_the_envelope_and_the_dumped_request_body 11684tests/types/test_wire_frames.py::test_notification_frame_has_no_id_and_carries_the_dumped_params 11685tests/types/test_wire_frames.py::test_non_empty_result_dump_carries_result_type_complete_before_the_sieve 11686[gw2] [ 98%] PASSED tests/types/test_wire_frames.py::test_notification_frame_has_no_id_and_carries_the_dumped_params 11687[gw1] [ 98%] PASSED tests/types/test_wire_frames.py::test_non_empty_result_dump_carries_result_type_complete_before_the_sieve 11688tests/types/test_wire_frames.py::test_cacheable_list_result_dump_carries_default_caching_directives 11689tests/types/test_wire_frames.py::test_empty_result_frame_dumps_an_empty_result_object 11690[gw2] [ 98%] PASSED tests/types/test_wire_frames.py::test_cacheable_list_result_dump_carries_default_caching_directives 11691[gw1] [ 98%] PASSED tests/types/test_wire_frames.py::test_empty_result_frame_dumps_an_empty_result_object 11692tests/types/test_wire_frames.py::test_input_required_result_frame_carries_the_tag_and_the_embedded_requests 11693tests/types/test_wire_frames.py::test_error_frame_wraps_error_data_in_the_jsonrpc_envelope 11694[gw1] [ 98%] PASSED tests/types/test_wire_frames.py::test_error_frame_wraps_error_data_in_the_jsonrpc_envelope 11695[gw2] [ 98%] PASSED tests/types/test_wire_frames.py::test_input_required_result_frame_carries_the_tag_and_the_embedded_requests 11696[gw3] [ 98%] PASSED tests/test_types.py::test_bare_import_mcp_binds_the_types_submodule 11697tests/transports/stdio/test_lifecycle.py::test_a_server_that_exits_on_stdin_close_is_reaped_and_never_terminated 11698[gw3] [ 98%] PASSED tests/transports/stdio/test_lifecycle.py::test_a_server_that_exits_on_stdin_close_is_reaped_and_never_terminated 11699tests/transports/stdio/test_lifecycle.py::test_cancelling_the_client_mid_session_terminates_the_whole_server_tree 11700[gw0] [ 98%] PASSED tests/shared/test_streamable_http.py::test_standalone_get_stream_reconnection 11701tests/shared/test_streamable_http.py::test_standalone_stream_teardown_mid_listen_is_not_an_error 11702[gw0] [ 98%] PASSED tests/shared/test_streamable_http.py::test_standalone_stream_teardown_mid_listen_is_not_an_error 11703tests/shared/test_streamable_http.py::test_standalone_stream_teardown_between_dequeues_is_not_an_error 11704[gw0] [ 98%] PASSED tests/shared/test_streamable_http.py::test_standalone_stream_teardown_between_dequeues_is_not_an_error 11705tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[simple_alphanumeric] 11706[gw0] [ 98%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[simple_alphanumeric] 11707tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_underscores] 11708[gw0] [ 98%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_underscores] 11709tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_dashes] 11710[gw0] [ 98%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_dashes] 11711tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_dots] 11712[gw0] [ 98%] PASSED tests/shared/test_tool_name_validation.py::test_validate_tool_name_accepts_valid_names[with_dots] 11713tests/shared/test_uri_template.py::test_expand[{;name}-variables30-;name] 11714[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand[{;name}-variables30-;name] 11715tests/shared/test_uri_template.py::test_expand[{;name}-variables31-;name=,] 11716[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand[{;name}-variables31-;name=,] 11717tests/shared/test_uri_template.py::test_expand[{?name}-variables32-?name=] 11718[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand[{?name}-variables32-?name=] 11719tests/shared/test_uri_template.py::test_expand[{&name}-variables33-&name=] 11720[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand[{&name}-variables33-&name=] 11721tests/shared/test_uri_template.py::test_expand[{;name}-variables34-;name] 11722[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand[{;name}-variables34-;name] 11723tests/shared/test_uri_template.py::test_expand[{?q,page}-variables35-?q=x] 11724[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand[{?q,page}-variables35-?q=x] 11725tests/shared/test_uri_template.py::test_expand[{a,b}-variables36-x] 11726[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand[{a,b}-variables36-x] 11727tests/shared/test_uri_template.py::test_expand[{?page}-variables37-] 11728[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand[{?page}-variables37-] 11729tests/shared/test_uri_template.py::test_expand[{/path*}-variables38-] 11730[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand[{/path*}-variables38-] 11731tests/shared/test_uri_template.py::test_expand[file://static-variables39-file://static] 11732[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand[file://static-variables39-file://static] 11733tests/shared/test_uri_template.py::test_expand_encodes_special_chars_in_simple 11734[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand_encodes_special_chars_in_simple 11735tests/shared/test_uri_template.py::test_expand_preserves_special_chars_in_reserved 11736[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand_preserves_special_chars_in_reserved 11737tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[42] 11738[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[42] 11739tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[None] 11740[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[None] 11741tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[3.14] 11742[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[3.14] 11743tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[value3] 11744[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[value3] 11745tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[value4] 11746[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[value4] 11747tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[bytes] 11748[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_expand_rejects_invalid_value_types[bytes] 11749tests/shared/test_uri_template.py::test_match[{var}-hello-expected0] 11750[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_match[{var}-hello-expected0] 11751tests/shared/test_uri_template.py::test_match[file://docs/{name}-file://docs/readme.txt-expected1] 11752[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_match[file://docs/{name}-file://docs/readme.txt-expected1] 11753tests/shared/test_uri_template.py::test_match[{a}/{b}-foo/bar-expected2] 11754[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_match[{a}/{b}-foo/bar-expected2] 11755tests/shared/test_uri_template.py::test_match[file://docs/{+path}-file://docs/src/main.py-expected3] 11756[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_match[file://docs/{+path}-file://docs/src/main.py-expected3] 11757tests/shared/test_uri_template.py::test_match[{+var}-a/b/c-expected4] 11758[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_match[{+var}-a/b/c-expected4] 11759tests/shared/test_uri_template.py::test_match[page{#section}-page#intro-expected5] 11760[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_match[page{#section}-page#intro-expected5] 11761tests/shared/test_uri_template.py::test_match[{+path}{/name}-a/b/c/readme-expected6] 11762[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_match[{+path}{/name}-a/b/c/readme-expected6] 11763tests/shared/test_uri_template.py::test_match[{+path}{.ext}-src/main.py-expected7] 11764[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_match[{+path}{.ext}-src/main.py-expected7] 11765tests/shared/test_uri_template.py::test_match[prefix/{+path}{.ext}-prefix/a/b.txt-expected8] 11766[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_match[prefix/{+path}{.ext}-prefix/a/b.txt-expected8] 11767tests/shared/test_uri_template.py::test_match[{#section}{/page}-#intro/1-expected9] 11768[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_match[{#section}{/page}-#intro/1-expected9] 11769tests/shared/test_uri_template.py::test_match[{owner}@{+path}-alice@src/main-expected10] 11770[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_match[{owner}@{+path}-alice@src/main-expected10] 11771tests/shared/test_uri_template.py::test_match[{+path}@{name}-src@main@v1-expected11] 11772[gw0] [ 98%] PASSED tests/shared/test_uri_template.py::test_match[{+path}@{name}-src@main@v1-expected11] 11773tests/shared/test_uri_template.py::test_match[file{.ext}-file.txt-expected12] 11774[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[file{.ext}-file.txt-expected12] 11775tests/shared/test_uri_template.py::test_match[api{/version}-api/v1-expected13] 11776[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[api{/version}-api/v1-expected13] 11777tests/shared/test_uri_template.py::test_match[item{;id}-item;id=42-expected14] 11778[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[item{;id}-item;id=42-expected14] 11779tests/shared/test_uri_template.py::test_match[item{;id}-item;id-expected15] 11780[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[item{;id}-item;id-expected15] 11781tests/shared/test_uri_template.py::test_match[item{;keys*}-item;keys=a;keys=b-expected16] 11782[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[item{;keys*}-item;keys=a;keys=b-expected16] 11783tests/shared/test_uri_template.py::test_match[item{;keys*}-item;keys=a;keys;keys=b-expected17] 11784[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[item{;keys*}-item;keys=a;keys;keys=b-expected17] 11785tests/shared/test_uri_template.py::test_match[item{;keys*}-item-expected18] 11786[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[item{;keys*}-item-expected18] 11787tests/shared/test_uri_template.py::test_match[search{?q}-search?q=hello-expected19] 11788[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=hello-expected19] 11789tests/shared/test_uri_template.py::test_match[search{?q}-search?q=-expected20] 11790[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=-expected20] 11791tests/shared/test_uri_template.py::test_match[search{?q}-search-expected21] 11792[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search-expected21] 11793tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?q=mcp&lang=en-expected22] 11794[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?q=mcp&lang=en-expected22] 11795tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?lang=en&q=mcp-expected23] 11796[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?lang=en&q=mcp-expected23] 11797tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?q=mcp-expected24] 11798[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[search{?q,lang}-search?q=mcp-expected24] 11799tests/shared/test_uri_template.py::test_match[search{?q,lang}-search-expected25] 11800[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[search{?q,lang}-search-expected25] 11801tests/shared/test_uri_template.py::test_match[search{?q}-search?q=mcp&utm=x&ref=y-expected26] 11802[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=mcp&utm=x&ref=y-expected26] 11803tests/shared/test_uri_template.py::test_match[search{?q}-search?q=hello%20world-expected27] 11804[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=hello%20world-expected27] 11805tests/shared/test_uri_template.py::test_match[search{?q}-search?q=C++-expected28] 11806[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=C++-expected28] 11807tests/shared/test_uri_template.py::test_match[search{?q}-search?q=1.0+build.5-expected29] 11808[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search?q=1.0+build.5-expected29] 11809tests/shared/test_uri_template.py::test_match[logs://{service}{?level}-logs://api?level=error#section1-expected30] 11810[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[logs://{service}{?level}-logs://api?level=error#section1-expected30] 11811tests/shared/test_uri_template.py::test_match[search{?q}-search#frag-expected31] 11812[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[search{?q}-search#frag-expected31] 11813tests/shared/test_uri_template.py::test_match[api{?v}{&page,limit}-api?limit=10&v=2-expected32] 11814[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[api{?v}{&page,limit}-api?limit=10&v=2-expected32] 11815tests/shared/test_uri_template.py::test_match[api{&page}-api&page=2-expected33] 11816[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[api{&page}-api&page=2-expected33] 11817tests/shared/test_uri_template.py::test_match[api?x{?page}-api?x?page=2-expected34] 11818[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[api?x{?page}-api?x?page=2-expected34] 11819tests/shared/test_uri_template.py::test_match[page{#section}{?q}-page#intro?q=x-expected35] 11820[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[page{#section}{?q}-page#intro?q=x-expected35] 11821tests/shared/test_uri_template.py::test_match[page#lit{?q}-page#lit?q=x-expected36] 11822[gw0] [ 99%] PASSED tests/shared/test_uri_template.py::test_match[page#lit{?q}-page#lit?q=x-expected36] 11823[gw3] [ 99%] PASSED tests/transports/stdio/test_lifecycle.py::test_cancelling_the_client_mid_session_terminates_the_whole_server_tree 11824tests/transports/stdio/test_lifecycle.py::test_a_server_that_exits_mid_session_keeps_its_own_exit_code 11825[gw3] [ 99%] PASSED tests/transports/stdio/test_lifecycle.py::test_a_server_that_exits_mid_session_keeps_its_own_exit_code 11826tests/transports/stdio/test_lifecycle.py::test_server_stderr_output_reaches_the_errlog_file 11827[gw3] [ 99%] PASSED tests/transports/stdio/test_lifecycle.py::test_server_stderr_output_reaches_the_errlog_file 11828tests/transports/stdio/test_lifecycle.py::test_fallback_process_reports_death_through_returncode_without_a_wait_call 11829[gw3] [ 99%] PASSED tests/transports/stdio/test_lifecycle.py::test_fallback_process_reports_death_through_returncode_without_a_wait_call 11830tests/transports/stdio/test_lifecycle.py::test_fallback_process_wait_is_cancellable_while_the_child_lives 11831[gw3] [ 99%] PASSED tests/transports/stdio/test_lifecycle.py::test_fallback_process_wait_is_cancellable_while_the_child_lives 11832tests/transports/stdio/test_posix.py::test_a_gracefully_exiting_servers_child_survives_the_client_shutdown 11833[gw3] [ 99%] PASSED tests/transports/stdio/test_posix.py::test_a_gracefully_exiting_servers_child_survives_the_client_shutdown 11834tests/transports/stdio/test_posix.py::test_a_surviving_childs_write_to_the_inherited_stdout_fails_with_epipe 11835[gw3] [ 99%] PASSED tests/transports/stdio/test_posix.py::test_a_surviving_childs_write_to_the_inherited_stdout_fails_with_epipe 11836tests/transports/stdio/test_windows.py::test_a_gracefully_exited_servers_child_is_reaped_when_the_job_handle_closes 11837[gw3] [ 99%] SKIPPED tests/transports/stdio/test_windows.py::test_a_gracefully_exited_servers_child_is_reaped_when_the_job_handle_closes 11838tests/transports/stdio/test_windows.py::test_a_selector_event_loop_session_uses_the_fallback_process_and_exits_cleanly[anyio_backend0] 11839[gw3] [ 99%] SKIPPED tests/transports/stdio/test_windows.py::test_a_selector_event_loop_session_uses_the_fallback_process_and_exits_cleanly[anyio_backend0] 11840tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2026-07-28] 11841[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/get-2026-07-28] 11842tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2024-11-05] 11843[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2024-11-05] 11844tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-03-26] 11845[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-03-26] 11846tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-06-18] 11847[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-06-18] 11848tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-11-25] 11849[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2025-11-25] 11850tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2026-07-28] 11851[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[prompts/list-2026-07-28] 11852tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2024-11-05] 11853[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2024-11-05] 11854tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-03-26] 11855[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-03-26] 11856tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-06-18] 11857[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-06-18] 11858tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-11-25] 11859[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2025-11-25] 11860tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2026-07-28] 11861[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/list-2026-07-28] 11862tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2024-11-05] 11863[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2024-11-05] 11864tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-03-26] 11865[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-03-26] 11866tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-06-18] 11867[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-06-18] 11868tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-11-25] 11869[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2025-11-25] 11870tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2026-07-28] 11871[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/read-2026-07-28] 11872tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2024-11-05] 11873[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2024-11-05] 11874tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-03-26] 11875[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-03-26] 11876tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-06-18] 11877[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-06-18] 11878tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-11-25] 11879[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/subscribe-2025-11-25] 11880tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2024-11-05] 11881[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2024-11-05] 11882tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-03-26] 11883[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-03-26] 11884tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-06-18] 11885[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-06-18] 11886tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-11-25] 11887[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2025-11-25] 11888tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2026-07-28] 11889[gw3] [ 99%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/templates/list-2026-07-28] 11890tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2024-11-05] 11891[gw3] [100%] PASSED tests/types/test_methods.py::test_dumped_monolith_results_round_trip_through_serialize_server_result[resources/unsubscribe-2024-11-05] 1189211893================= 5904 passed, 8 skipped, 1 xfailed in 24.40s ==================11894Finished executing pytestCheckPhase