mirror of
https://github.com/PrefectHQ/fastmcp.git
synced 2026-08-18 19:44:19 +02:00
* Replace vendored DI with uncalled-for FastMCP vendored a minimal DI engine extracted from Docket (~164 lines) with try/except fallback patterns everywhere. The `uncalled-for` package is a clean, typed extraction of this same system, and since Docket will also depend on it (chrisguidry/docket#353), `uncalled_for.Dependency` becomes the single canonical base class. This deletes the `_vendor/docket_di/` directory, replaces all the try/except import patterns with direct `uncalled_for` imports, and updates the `Dependency.execution` → `current_execution` ContextVar references to match the Docket branch. The `Progress` class now delegates to an internal impl and returns `self` from `__aenter__` (matching Docket's pattern) so that ty's generic resolution works without `type: ignore` suppressions. Temporarily points pydocket at the `use-uncalled-for` branch so both sides can be validated together in CI. 🤖 Generated with Claude Code Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Re-export Dependency from fastmcp.dependencies Internal code like azure.py should import from the fastmcp namespace rather than reaching into uncalled_for directly. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Import Dependency from fastmcp namespace in tests Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Add generic type parameters to Dependency subclasses Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Mention uncalled-for in DI docs The DI engine now comes from uncalled-for, so the docs should credit it alongside Docket. Also updates the Docket docs link to docket.lol. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Point docket dependency at main Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Bump uncalled-for pin to >=0.2.0 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Fix uncalled-for imports for 0.2.0 API changes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Support Shared() dependencies without docket Enters a SharedContext at server lifetime so that Shared() dependencies from uncalled-for resolve once and are cached across tool/resource/prompt calls. When running with docket, the Worker already handles this; this covers the non-docket path and direct call_tool() usage. Also re-exports Shared from fastmcp.dependencies. Closes #3251 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Bump docket lockfile to latest main Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Remove duplicate test classes from rebase conflict resolution Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Point docket dependency at pydocket>=0.18.0 release Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Pair SharedContext __aenter__ with __aexit__ in Context lifecycle The old `_ensure_shared_context` on the server called `__aenter__()` on a lazy `SharedContext` but never `__aexit__()`, leaking the exit stack and its resources. Moved the SharedContext management into Context's own enter/exit so it's properly paired: when docket is available the lifespan handles it, otherwise Context creates and cleans up a per-request one. Updated Shared() tests to use Client (which runs the lifespan) rather than calling server methods directly, since cross-request sharing requires a lifespan. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Hoist SharedContext import to module level Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| oauth_proxy | ||
| providers | ||
| __init__.py | ||
| test_auth_provider.py | ||
| test_authorization.py | ||
| test_cimd.py | ||
| test_cimd_validators.py | ||
| test_debug_verifier.py | ||
| test_enhanced_error_responses.py | ||
| test_jwt_issuer.py | ||
| test_jwt_provider.py | ||
| test_jwt_provider_bearer.py | ||
| test_multi_auth.py | ||
| test_oauth_consent_flow.py | ||
| test_oauth_consent_page.py | ||
| test_oauth_mounting.py | ||
| test_oauth_proxy_redirect_validation.py | ||
| test_oauth_proxy_storage.py | ||
| test_oidc_proxy.py | ||
| test_oidc_proxy_token.py | ||
| test_redirect_validation.py | ||
| test_remote_auth_provider.py | ||
| test_ssrf_protection.py | ||
| test_static_token_verifier.py | ||