@@ -30,7 +30,7 @@ def reset_environment(self, env, seed): ...
3030from abc import ABC , abstractmethod
3131from collections .abc import AsyncIterator
3232from contextlib import asynccontextmanager
33- from typing import Any , Awaitable , Callable , Dict , List , Optional , Tuple , Iterable
33+ from typing import Any , Awaitable , Callable , Dict , List , Optional , Tuple , Iterable , cast
3434from pydantic import AnyUrl
3535
3636import uvicorn
@@ -327,12 +327,12 @@ async def list_resources():
327327 # Extract docstring as description
328328 description = resource_func .__doc__ or f"Resource { resource_name } "
329329
330- # Some callables may not have the attribute; guard for type checkers
331- # MyPy/Pyright: Resource expects AnyUrl; convert string to str, letting pydantic coerce it
332- uri_value = getattr (resource_func , "_resource_uri" , f"/{ resource_name } " )
330+ # Some callables may not have the attribute; guard for type checkers.
331+ # Resource expects AnyUrl; pass as str and allow coercion by pydantic.
332+ uri_value : str = str ( getattr (resource_func , "_resource_uri" , f"/{ resource_name } " ) )
333333 resources .append (
334334 Resource (
335- uri = uri_value ,
335+ uri = cast ( AnyUrl , uri_value ) ,
336336 name = resource_name ,
337337 description = description ,
338338 mimeType = "application/json" ,
@@ -347,10 +347,15 @@ def _register_session_handlers(self):
347347 """Register session initialization and cleanup handlers."""
348348
349349 @self .app .set_logging_level ()
350- async def set_logging_level (level : str ):
350+ async def set_logging_level (level : str ) -> None :
351351 """Handle logging level requests."""
352- logger .setLevel (getattr (logging , level .upper ()))
353- return {}
352+ # Validate and set logging level; ignore invalid values gracefully
353+ try :
354+ numeric_level = getattr (logging , level .upper ())
355+ if isinstance (numeric_level , int ):
356+ logger .setLevel (numeric_level )
357+ except Exception :
358+ pass
354359
355360 # NOTE: The low-level Server doesn't have built-in session lifecycle hooks
356361 # We'll need to capture client_info during the first request in each session
0 commit comments