Skip to content

Commit 7c82f36

Browse files
committed
fix typing issues
1 parent b2fce7d commit 7c82f36

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

src/mcp/server/message_queue/redis.py

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import mcp.types as types
66

77
try:
8-
import redis.asyncio as redis
8+
import redis.asyncio as redis # type: ignore[import]
99
except ImportError:
1010
raise ImportError(
1111
"Redis support requires the 'redis' package. "
@@ -31,7 +31,7 @@ def __init__(
3131
redis_url: Redis connection string
3232
prefix: Key prefix for Redis keys to avoid collisions
3333
"""
34-
self._redis = redis.Redis.from_url(redis_url, decode_responses=True)
34+
self._redis = redis.Redis.from_url(redis_url, decode_responses=True) # type: ignore[attr-defined]
3535
self._prefix = prefix
3636
self._active_sessions_key = f"{prefix}active_sessions"
3737
logger.debug(f"Initialized Redis message queue with URL: {redis_url}")
@@ -63,7 +63,7 @@ async def add_message(
6363
data = message.model_dump_json(by_alias=True, exclude_none=True)
6464

6565
# Push to the right side of the list (queue)
66-
await self._redis.rpush(self._session_queue_key(session_id), data)
66+
await self._redis.rpush(self._session_queue_key(session_id), data) # type: ignore[attr-defined]
6767
logger.debug(f"Added message to Redis queue for session {session_id}")
6868
return True
6969

@@ -77,45 +77,50 @@ async def get_message(
7777

7878
# Pop from the left side of the list (queue)
7979
# Use BLPOP with timeout to avoid busy waiting
80-
result = await self._redis.blpop([self._session_queue_key(session_id)], timeout)
80+
result = await self._redis.blpop([self._session_queue_key(session_id)], timeout) # type: ignore[attr-defined]
8181

8282
if not result:
8383
return None
8484

8585
# result is a tuple of (key, value)
86-
_, data = result
86+
_, data = result # type: ignore[misc]
8787

8888
# Deserialize the message
89-
json_data = json.loads(data)
89+
json_data = json.loads(data) # type: ignore[arg-type]
9090

9191
# Check if it's an exception
92-
if isinstance(json_data, dict) and json_data.get("_exception"):
93-
# Reconstitute a generic exception
94-
return Exception(f"{json_data['type']}: {json_data['message']}")
92+
if isinstance(json_data, dict):
93+
exception_dict: dict[str, object] = json_data
94+
if exception_dict.get("_exception", False):
95+
return Exception(
96+
f"{exception_dict['type']}: {exception_dict['message']}"
97+
)
9598

9699
# Regular message
97100
try:
98-
return types.JSONRPCMessage.model_validate_json(data)
101+
return types.JSONRPCMessage.model_validate_json(data) # type: ignore[arg-type]
99102
except Exception as e:
100103
logger.error(f"Failed to deserialize message: {e}")
101104
return None
102105

103106
async def register_session(self, session_id: UUID) -> None:
104107
"""Register a new session with the queue."""
105108
# Add session ID to the set of active sessions
106-
await self._redis.sadd(self._active_sessions_key, session_id.hex)
109+
await self._redis.sadd(self._active_sessions_key, session_id.hex) # type: ignore[attr-defined]
107110
logger.debug(f"Registered session {session_id} in Redis")
108111

109112
async def unregister_session(self, session_id: UUID) -> None:
110113
"""Unregister a session when it's closed."""
111114
# Remove session ID from active sessions
112-
await self._redis.srem(self._active_sessions_key, session_id.hex)
115+
await self._redis.srem(self._active_sessions_key, session_id.hex) # type: ignore[attr-defined]
113116
# Delete the session's message queue
114-
await self._redis.delete(self._session_queue_key(session_id))
117+
await self._redis.delete(self._session_queue_key(session_id)) # type: ignore[attr-defined]
115118
logger.debug(f"Unregistered session {session_id} from Redis")
116119

117120
async def session_exists(self, session_id: UUID) -> bool:
118121
"""Check if a session exists."""
119-
return bool(
120-
await self._redis.sismember(self._active_sessions_key, session_id.hex)
122+
# Explicitly annotate the result as bool to help the type checker
123+
result = bool(
124+
await self._redis.sismember(self._active_sessions_key, session_id.hex) # type: ignore[attr-defined]
121125
)
126+
return result

0 commit comments

Comments
 (0)