[v1.x] Complete the FastMCP Settings model at import time (#3352)
This commit is contained in:
parent
98b7159cb8
commit
ae3338f6b3
2 changed files with 11 additions and 0 deletions
|
|
@ -1087,6 +1087,11 @@ class FastMCP(Generic[LifespanResultT]):
|
||||||
raise ValueError(str(e))
|
raise ValueError(str(e))
|
||||||
|
|
||||||
|
|
||||||
|
# `Settings.lifespan` refers to FastMCP, which is only defined above; complete the model now so
|
||||||
|
# settings sources never see an unresolved annotation when a FastMCP instance is created.
|
||||||
|
Settings.model_rebuild()
|
||||||
|
|
||||||
|
|
||||||
class StreamableHTTPASGIApp:
|
class StreamableHTTPASGIApp:
|
||||||
"""
|
"""
|
||||||
ASGI application for Streamable HTTP server transport.
|
ASGI application for Streamable HTTP server transport.
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ from starlette.routing import Mount, Route
|
||||||
from mcp.server.fastmcp import Context, FastMCP
|
from mcp.server.fastmcp import Context, FastMCP
|
||||||
from mcp.server.fastmcp.prompts.base import Message, UserMessage
|
from mcp.server.fastmcp.prompts.base import Message, UserMessage
|
||||||
from mcp.server.fastmcp.resources import FileResource, FunctionResource
|
from mcp.server.fastmcp.resources import FileResource, FunctionResource
|
||||||
|
from mcp.server.fastmcp.server import Settings
|
||||||
from mcp.server.fastmcp.utilities.types import Audio, Image
|
from mcp.server.fastmcp.utilities.types import Audio, Image
|
||||||
from mcp.server.session import ServerSession
|
from mcp.server.session import ServerSession
|
||||||
from mcp.server.transport_security import TransportSecuritySettings
|
from mcp.server.transport_security import TransportSecuritySettings
|
||||||
|
|
@ -31,6 +32,11 @@ if TYPE_CHECKING:
|
||||||
from mcp.server.fastmcp import Context
|
from mcp.server.fastmcp import Context
|
||||||
|
|
||||||
|
|
||||||
|
def test_settings_model_is_complete_at_import():
|
||||||
|
"""The Settings model resolves its FastMCP annotation at import, so building one needs no deferred rebuild."""
|
||||||
|
assert Settings.__pydantic_complete__
|
||||||
|
|
||||||
|
|
||||||
class TestServer:
|
class TestServer:
|
||||||
@pytest.mark.anyio
|
@pytest.mark.anyio
|
||||||
async def test_create_server(self):
|
async def test_create_server(self):
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue