@@ -73,7 +73,7 @@ async def create(
7373 )
7474 return inst
7575 except asyncio .TimeoutError :
76- logger .error (f "StreamManager initialization timed out after { initialization_timeout } s" )
76+ logger .error ("StreamManager initialization timed out after %ss" , initialization_timeout )
7777 raise RuntimeError (f"StreamManager initialization timed out after { initialization_timeout } s" )
7878
7979 @classmethod
@@ -99,7 +99,7 @@ async def create_with_sse(
9999 )
100100 return inst
101101 except asyncio .TimeoutError :
102- logger .error (f "SSE StreamManager initialization timed out after { initialization_timeout } s" )
102+ logger .error ("SSE StreamManager initialization timed out after %ss" , initialization_timeout )
103103 raise RuntimeError (f"SSE StreamManager initialization timed out after { initialization_timeout } s" )
104104
105105 @classmethod
@@ -125,7 +125,7 @@ async def create_with_http_streamable(
125125 )
126126 return inst
127127 except asyncio .TimeoutError :
128- logger .error (f "HTTP Streamable StreamManager initialization timed out after { initialization_timeout } s" )
128+ logger .error ("HTTP Streamable StreamManager initialization timed out after %ss" , initialization_timeout )
129129 raise RuntimeError (f"HTTP Streamable StreamManager initialization timed out after { initialization_timeout } s" )
130130
131131 # ------------------------------------------------------------------ #
@@ -196,7 +196,7 @@ async def initialize(
196196 else :
197197 sse_url = "http://localhost:8000"
198198 api_key = None
199- logger .warning (f "No URL configured for SSE transport, using default: { sse_url } " )
199+ logger .warning ("No URL configured for SSE transport, using default: %s" , sse_url )
200200
201201 transport = SSETransport (
202202 sse_url ,
@@ -215,7 +215,7 @@ async def initialize(
215215 http_url = "http://localhost:8000"
216216 api_key = None
217217 session_id = None
218- logger .warning (f "No URL configured for HTTP Streamable transport, using default: { http_url } " )
218+ logger .warning ("No URL configured for HTTP Streamable transport, using default: %s" , http_url )
219219
220220 transport = HTTPStreamableTransport (
221221 http_url ,
@@ -252,13 +252,13 @@ async def initialize(
252252 "status" : status ,
253253 }
254254 )
255- logger .info ("Initialised %s - %d tool(s)" , server_name , len (tools ))
255+ logger .debug ("Initialised %s - %d tool(s)" , server_name , len (tools ))
256256 except asyncio .TimeoutError :
257257 logger .error ("Timeout initialising %s" , server_name )
258258 except Exception as exc :
259259 logger .error ("Error initialising %s: %s" , server_name , exc )
260260
261- logger .info (
261+ logger .debug (
262262 "StreamManager ready - %d server(s), %d tool(s)" ,
263263 len (self .transports ),
264264 len (self .all_tools ),
@@ -307,13 +307,13 @@ async def initialize_with_sse(
307307 self .server_info .append (
308308 {"id" : idx , "name" : name , "tools" : len (tools ), "status" : status }
309309 )
310- logger .info ("Initialised SSE %s - %d tool(s)" , name , len (tools ))
310+ logger .debug ("Initialised SSE %s - %d tool(s)" , name , len (tools ))
311311 except asyncio .TimeoutError :
312312 logger .error ("Timeout initialising SSE %s" , name )
313313 except Exception as exc :
314314 logger .error ("Error initialising SSE %s: %s" , name , exc )
315315
316- logger .info (
316+ logger .debug (
317317 "StreamManager ready - %d SSE server(s), %d tool(s)" ,
318318 len (self .transports ),
319319 len (self .all_tools ),
@@ -364,13 +364,13 @@ async def initialize_with_http_streamable(
364364 self .server_info .append (
365365 {"id" : idx , "name" : name , "tools" : len (tools ), "status" : status }
366366 )
367- logger .info ("Initialised HTTP Streamable %s - %d tool(s)" , name , len (tools ))
367+ logger .debug ("Initialised HTTP Streamable %s - %d tool(s)" , name , len (tools ))
368368 except asyncio .TimeoutError :
369369 logger .error ("Timeout initialising HTTP Streamable %s" , name )
370370 except Exception as exc :
371371 logger .error ("Error initialising HTTP Streamable %s: %s" , name , exc )
372372
373- logger .info (
373+ logger .debug (
374374 "StreamManager ready - %d HTTP Streamable server(s), %d tool(s)" ,
375375 len (self .transports ),
376376 len (self .all_tools ),
@@ -395,20 +395,20 @@ async def list_tools(self, server_name: str) -> List[Dict[str, Any]]:
395395 return []
396396
397397 if server_name not in self .transports :
398- logger .error (f "Server '{ server_name } ' not found in transports" )
398+ logger .error ("Server '%s ' not found in transports" , server_name )
399399 return []
400400
401401 transport = self .transports [server_name ]
402402
403403 try :
404404 tools = await asyncio .wait_for (transport .get_tools (), timeout = 10.0 )
405- logger .debug (f "Found { len ( tools ) } tools for server { server_name } " )
405+ logger .debug ("Found %d tools for server %s" , len ( tools ), server_name )
406406 return tools
407407 except asyncio .TimeoutError :
408- logger .error (f "Timeout listing tools for server { server_name } " )
408+ logger .error ("Timeout listing tools for server %s" , server_name )
409409 return []
410410 except Exception as e :
411- logger .error (f "Error listing tools for server { server_name } : { e } " )
411+ logger .error ("Error listing tools for server %s: %s" , server_name , e )
412412 return []
413413
414414 # ------------------------------------------------------------------ #
@@ -541,7 +541,7 @@ async def close(self) -> None:
541541 self ._closed = True
542542 return
543543
544- logger .debug (f "Closing { len ( self . transports ) } transports..." )
544+ logger .debug ("Closing %d transports..." , len ( self . transports ) )
545545
546546 try :
547547 # Use shield to protect the cleanup operation from cancellation
@@ -551,7 +551,7 @@ async def close(self) -> None:
551551 logger .debug ("Close operation cancelled, performing synchronous cleanup" )
552552 self ._sync_cleanup ()
553553 except Exception as e :
554- logger .debug (f "Error during close: { e } " )
554+ logger .debug ("Error during close: %s" , e )
555555 self ._sync_cleanup ()
556556 finally :
557557 self ._closed = True
@@ -565,7 +565,7 @@ async def _do_close_all_transports(self) -> None:
565565 try :
566566 await self ._concurrent_close (transport_items , close_results )
567567 except Exception as e :
568- logger .debug (f "Concurrent close failed: { e } , falling back to sequential close" )
568+ logger .debug ("Concurrent close failed: %s , falling back to sequential close" , e )
569569 # Strategy 2: Fall back to sequential close
570570 await self ._sequential_close (transport_items , close_results )
571571
@@ -575,7 +575,7 @@ async def _do_close_all_transports(self) -> None:
575575 # Log summary
576576 if close_results :
577577 successful_closes = sum (1 for _ , success , _ in close_results if success )
578- logger .debug (f "Transport cleanup: { successful_closes } / { len ( close_results ) } closed successfully" )
578+ logger .debug ("Transport cleanup: %d/%d closed successfully" , successful_closes , len ( close_results ) )
579579
580580 async def _concurrent_close (self , transport_items : List [Tuple [str , MCPBaseTransport ]], close_results : List ) -> None :
581581 """Try to close all transports concurrently."""
@@ -602,10 +602,10 @@ async def _concurrent_close(self, transport_items: List[Tuple[str, MCPBaseTransp
602602 for i , (name , _ ) in enumerate (close_tasks ):
603603 result = results [i ] if i < len (results ) else None
604604 if isinstance (result , Exception ):
605- logger .debug (f "Transport { name } close failed: { result } " )
605+ logger .debug ("Transport %s close failed: %s" , name , result )
606606 close_results .append ((name , False , str (result )))
607607 else :
608- logger .debug (f "Transport { name } closed successfully" )
608+ logger .debug ("Transport %s closed successfully" , name )
609609 close_results .append ((name , True , None ))
610610
611611 except asyncio .TimeoutError :
@@ -632,16 +632,16 @@ async def _sequential_close(self, transport_items: List[Tuple[str, MCPBaseTransp
632632 self ._close_single_transport (name , transport ),
633633 timeout = 0.5 # Short timeout per transport
634634 )
635- logger .debug (f "Closed transport: { name } " )
635+ logger .debug ("Closed transport: %s" , name )
636636 close_results .append ((name , True , None ))
637637 except asyncio .TimeoutError :
638- logger .debug (f "Transport { name } close timed out (normal during shutdown)" )
638+ logger .debug ("Transport %s close timed out (normal during shutdown)" , name )
639639 close_results .append ((name , False , "timeout" ))
640640 except asyncio .CancelledError :
641- logger .debug (f "Transport { name } close cancelled during event loop shutdown" )
641+ logger .debug ("Transport %s close cancelled during event loop shutdown" , name )
642642 close_results .append ((name , False , "cancelled" ))
643643 except Exception as e :
644- logger .debug (f "Error closing transport { name } : { e } " )
644+ logger .debug ("Error closing transport %s: %s" , name , e )
645645 close_results .append ((name , False , str (e )))
646646
647647 async def _close_single_transport (self , name : str , transport : MCPBaseTransport ) -> None :
@@ -650,19 +650,19 @@ async def _close_single_transport(self, name: str, transport: MCPBaseTransport)
650650 if hasattr (transport , 'close' ) and callable (transport .close ):
651651 await transport .close ()
652652 else :
653- logger .debug (f "Transport { name } has no close method" )
653+ logger .debug ("Transport %s has no close method" , name )
654654 except Exception as e :
655- logger .debug (f "Error closing transport { name } : { e } " )
655+ logger .debug ("Error closing transport %s: %s" , name , e )
656656 raise
657657
658658 def _sync_cleanup (self ) -> None :
659659 """Synchronous cleanup for use when async cleanup fails."""
660660 try :
661661 transport_count = len (self .transports )
662662 self ._cleanup_state ()
663- logger .debug (f "Synchronous cleanup completed for { transport_count } transports" )
663+ logger .debug ("Synchronous cleanup completed for %d transports" , transport_count )
664664 except Exception as e :
665- logger .debug (f "Error during synchronous cleanup: { e } " )
665+ logger .debug ("Error during synchronous cleanup: %s" , e )
666666
667667 def _cleanup_state (self ) -> None :
668668 """Clean up internal state synchronously."""
@@ -673,7 +673,7 @@ def _cleanup_state(self) -> None:
673673 self .all_tools .clear ()
674674 self .server_names .clear ()
675675 except Exception as e :
676- logger .debug (f "Error during state cleanup: { e } " )
676+ logger .debug ("Error during state cleanup: %s" , e )
677677
678678 # ------------------------------------------------------------------ #
679679 # backwards-compat: streams helper #
0 commit comments