11"""Gateway kernel manager that integrates with our kernel monitoring system."""
22
33import asyncio
4- from jupyter_server .gateway .managers import GatewayMappingKernelManager
5- from jupyter_server .gateway .managers import GatewayKernelManager as _GatewayKernelManager
6- from jupyter_server .gateway .managers import GatewayKernelClient as _GatewayKernelClient
7- from traitlets import default , Instance , Type
84
5+ from traitlets import Instance , Type , default
6+
7+ from jupyter_server .gateway .managers import GatewayKernelClient as _GatewayKernelClient
8+ from jupyter_server .gateway .managers import GatewayKernelManager as _GatewayKernelManager
9+ from jupyter_server .gateway .managers import GatewayMappingKernelManager
910from jupyter_server .services .kernels .v3 .client import JupyterServerKernelClientMixin
1011
1112
@@ -38,22 +39,22 @@ def _send_message(self, channel_name: str, msg: list[bytes]):
3839 # Send to gateway channel
3940 try :
4041 channel = getattr (self , f"{ channel_name } _channel" , None )
41- if channel and hasattr (channel , ' send' ):
42+ if channel and hasattr (channel , " send" ):
4243 # Convert raw message to gateway format
4344 header = self .session .unpack (msg [0 ])
4445 parent_header = self .session .unpack (msg [1 ])
4546 metadata = self .session .unpack (msg [2 ])
4647 content = self .session .unpack (msg [3 ])
4748
4849 full_msg = {
49- ' header' : header ,
50- ' parent_header' : parent_header ,
51- ' metadata' : metadata ,
52- ' content' : content ,
53- ' buffers' : msg [4 :] if len (msg ) > 4 else [],
54- ' channel' : channel_name ,
55- ' msg_id' : header .get (' msg_id' ),
56- ' msg_type' : header .get (' msg_type' )
50+ " header" : header ,
51+ " parent_header" : parent_header ,
52+ " metadata" : metadata ,
53+ " content" : content ,
54+ " buffers" : msg [4 :] if len (msg ) > 4 else [],
55+ " channel" : channel_name ,
56+ " msg_id" : header .get (" msg_id" ),
57+ " msg_type" : header .get (" msg_type" ),
5758 }
5859
5960 channel .send (full_msg )
@@ -74,7 +75,7 @@ async def _monitor_channel_messages(self, channel_name: str, channel):
7475 channel_name ,
7576 message ,
7677 parent_msg_id = message .get ("parent_header" , {}).get ("msg_id" ),
77- execution_state = message .get ("content" , {}).get ("execution_state" )
78+ execution_state = message .get ("content" , {}).get ("execution_state" ),
7879 )
7980
8081 # Serialize message to standard format for listeners
@@ -83,10 +84,14 @@ async def _monitor_channel_messages(self, channel_name: str, channel):
8384 serialized = self .session .serialize (message )
8485
8586 # Skip delimiter (index 0) and signature (index 1) to get [header, parent_header, metadata, content, ...]
86- if serialized and len (serialized ) >= 6 : # Need delimiter + signature + 4 message parts
87+ if (
88+ serialized and len (serialized ) >= 6
89+ ): # Need delimiter + signature + 4 message parts
8790 msg_list = serialized [2 :]
8891 else :
89- self .log .warning (f"Gateway message too short: { len (serialized ) if serialized else 0 } parts" )
92+ self .log .warning (
93+ f"Gateway message too short: { len (serialized ) if serialized else 0 } parts"
94+ )
9095 continue
9196
9297 # Route to listeners
@@ -124,14 +129,15 @@ class GatewayKernelManager(_GatewayKernelManager):
124129 When jupyter_server is configured to use a gateway, this manager ensures that
125130 remote kernels receive the same level of monitoring as local kernels.
126131 """
132+
127133 # Configure the manager to use our enhanced gateway client
128134 client_class = GatewayKernelClient
129135 client_factory = GatewayKernelClient
130136
131137 kernel_client = Instance (
132- ' jupyter_client.client.KernelClient' ,
138+ " jupyter_client.client.KernelClient" ,
133139 allow_none = True ,
134- help = """Pre-created kernel client instance. Created on initialization."""
140+ help = """Pre-created kernel client instance. Created on initialization.""" ,
135141 )
136142
137143 def __init__ (self , ** kwargs ):
@@ -184,7 +190,9 @@ async def cleanup_resources(self, restart=False):
184190 if restart :
185191 # On restart, clear client state but keep connection
186192 # The connection will be refreshed in post_start_kernel after restart
187- self .log .debug (f"Clearing kernel client state for restart of kernel { self .kernel_id } " )
193+ self .log .debug (
194+ f"Clearing kernel client state for restart of kernel { self .kernel_id } "
195+ )
188196 self .kernel_client .last_shell_status_time = None
189197 self .kernel_client .last_control_status_time = None
190198 # Disconnect before restart - will reconnect after
@@ -208,7 +216,6 @@ def _default_kernel_manager_class(self):
208216
209217 def start_watching_activity (self , kernel_id ):
210218 pass
211-
219+
212220 def stop_buffering (self , kernel_id ):
213221 pass
214-
0 commit comments