fastmcp/tests/client
Jeremiah Lowin 87b4a6fb99 Refactor Client class into mixins for better organization
Split the monolithic Client class into focused mixin classes:
- ClientToolsMixin (tools_client.py)
- ClientPromptsMixin (prompts.py)
- ClientResourcesMixin (resources.py)
- ClientTaskManagementMixin (task_management.py)

Also:
- Extract timeout normalization helpers to utilities/timeout.py
- Split SSETransport into its own module (transports/sse.py)
- Clean up unused imports across client modules
- Fix bare except clauses to catch specific McpError

Note: ty reports unresolved-attribute errors on mixin classes because
it doesn't understand that mixins will be composed with Client. This is
a known limitation of mixin typing in Python. The code is functionally
correct and all tests pass.
2026-01-19 09:21:38 -05:00
..
auth Fix OAuth token storage TTL calculation (#2796) 2026-01-06 16:55:33 -05:00
sampling Add AnthropicSamplingHandler (#2617) 2025-12-14 16:07:22 -05:00
tasks Refactor Client class into mixins for better organization 2026-01-19 09:21:38 -05:00
telemetry Adopt OpenTelemetry MCP semantic conventions 2026-01-15 14:08:15 -05:00
transports Bump pydocket to 0.16.3 to fix worker cleanup race condition 2025-12-23 18:40:07 -05:00
__init__.py clean up test inits 2025-05-31 19:32:08 -04:00
test_client.py Fix timeout not propagating to proxy clients in multi-server MCPConfig (#2809) 2026-01-09 20:01:16 -05:00
test_elicitation.py Fix titled enum elicitation schema to comply with MCP spec (#2773) 2025-12-29 08:28:36 -05:00
test_logs.py Fix log handler to accept any JSON-serializable data type (#2102) 2025-10-15 10:20:04 -07:00
test_notifications.py Remove sync notification infrastructure 2026-01-18 17:31:11 -05:00
test_oauth_callback_xss.py Escape all HTML to prevent XSS attack (#2090) 2025-10-14 12:30:21 -07:00
test_openapi.py Move OpenAPI to providers/openapi submodule (#2672) 2025-12-22 11:13:33 -05:00
test_progress.py Remove empty parens 2025-06-04 15:37:55 -04:00
test_roots.py Add structured content & update almost all tests 2025-06-27 15:40:52 -04:00
test_sampling.py Replace type: ignore[attr-defined] with isinstance assertions in tests (#2665) 2025-12-21 16:37:20 -05:00
test_sse.py Introduce ResourceResult as canonical resource return type (#2734) 2025-12-25 21:21:55 -05:00
test_stdio.py Unify discovery API: deduplicate at protocol layer only (#2919) 2026-01-18 21:01:53 -05:00
test_streamable_http.py Introduce ResourceResult as canonical resource return type (#2734) 2025-12-25 21:21:55 -05:00