Use anyio.event

This commit is contained in:
Jeremiah Lowin 2025-05-31 18:12:17 -04:00
commit fdfa1fe108
3 changed files with 11 additions and 9 deletions

View file

@ -196,8 +196,8 @@ class Client(Generic[ClientTransportT]):
self._nesting_counter: int = 0
self._context_lock = anyio.Lock()
self._session_task: asyncio.Task | None = None
self._ready_event = asyncio.Event()
self._stop_event = asyncio.Event()
self._ready_event = anyio.Event()
self._stop_event = anyio.Event()
@property
def session(self) -> ClientSession:

View file

@ -18,6 +18,7 @@ from typing import (
overload,
)
import anyio
import httpx
from mcp import ClientSession, StdioServerParameters
from mcp.client.session import (
@ -327,8 +328,8 @@ class StdioTransport(ClientTransport):
self._session: ClientSession | None = None
self._connect_task: asyncio.Task | None = None
self._ready_event = asyncio.Event()
self._stop_event = asyncio.Event()
self._ready_event = anyio.Event()
self._stop_event = anyio.Event()
@contextlib.asynccontextmanager
async def connect_session(
@ -391,8 +392,8 @@ class StdioTransport(ClientTransport):
# reset variables and events for potential future reconnects
self._connect_task = None
self._stop_event = asyncio.Event()
self._ready_event = asyncio.Event()
self._stop_event = anyio.Event()
self._ready_event = anyio.Event()
async def close(self):
await self.disconnect()

View file

@ -2,6 +2,7 @@ import asyncio
import logging
from unittest.mock import AsyncMock, Mock, patch
import anyio
import pytest
from fastmcp.server.server import FastMCP
@ -27,7 +28,7 @@ async def test_uvicorn_logging_default_level(
"""Tests that FastMCP passes log_level to uvicorn.Config if no log_config is given."""
mock_server_instance = AsyncMock()
mock_uvicorn_server_constructor.return_value = mock_server_instance
serve_finished_event = asyncio.Event()
serve_finished_event = anyio.Event()
mock_server_instance.serve.side_effect = serve_finished_event.wait
test_log_level = "warning"
@ -63,7 +64,7 @@ async def test_uvicorn_logging_with_custom_log_config(
"""Tests that FastMCP passes log_config to uvicorn.Config and not log_level."""
mock_server_instance = AsyncMock()
mock_uvicorn_server_constructor.return_value = mock_server_instance
serve_finished_event = asyncio.Event()
serve_finished_event = anyio.Event()
mock_server_instance.serve.side_effect = serve_finished_event.wait
sample_log_config = {
@ -123,7 +124,7 @@ async def test_uvicorn_logging_custom_log_config_overrides_log_level_param(
"""Tests log_config precedence if log_level is also passed to run_http_async."""
mock_server_instance = AsyncMock()
mock_uvicorn_server_constructor.return_value = mock_server_instance
serve_finished_event = asyncio.Event()
serve_finished_event = anyio.Event()
mock_server_instance.serve.side_effect = serve_finished_event.wait
sample_log_config = {