@@ -82,7 +82,9 @@ def get(self, kernel_id: str, uid: str) -> t.Any:
82
82
else :
83
83
return None
84
84
85
- def put (self , km : jupyter_client .manager .KernelManager , snippet : str , ycell : y .Map ) -> str :
85
+ def put (
86
+ self , km : jupyter_client .manager .KernelManager , snippet : str , ycell : y .Map | None
87
+ ) -> str :
86
88
"""Add a asynchronous execution request.
87
89
88
90
Args:
@@ -99,18 +101,27 @@ def put(self, km: jupyter_client.manager.KernelManager, snippet: str, ycell: y.M
99
101
)
100
102
return uid
101
103
102
- def _stdin_hook (self , kernel_id , msg ) -> None :
104
+ def _stdin_hook (self , kernel_id : str , msg : dict ) -> None :
103
105
get_logger ().info (f"Execution request { kernel_id } received a input request { msg !s} " )
104
106
if kernel_id in self .__pending_inputs :
105
- get_logger ().error (f"Execution request { kernel_id } received a input request while waiting for an input.\n { msg } " )
107
+ get_logger ().error (
108
+ f"Execution request { kernel_id } received a input request while waiting for an input.\n { msg } " # noqa: E501
109
+ )
106
110
107
111
header = msg ["header" ].copy ()
108
112
header ["date" ] = header ["date" ].isoformat ()
109
- self .__pending_inputs [kernel_id ] = {"parent_header" : header , "input_request" : msg ["content" ]}
113
+ self .__pending_inputs [kernel_id ] = {
114
+ "parent_header" : header ,
115
+ "input_request" : msg ["content" ],
116
+ }
110
117
111
118
112
119
async def execute_task (
113
- uid , km : jupyter_client .manager .KernelManager , snippet : str , ycell : y .Map , stdin_hook
120
+ uid ,
121
+ km : jupyter_client .manager .KernelManager ,
122
+ snippet : str ,
123
+ ycell : y .Map | None ,
124
+ stdin_hook : t .Callable [[dict ], None ] | None ,
114
125
) -> t .Any :
115
126
try :
116
127
get_logger ().debug (f"Will execute request { uid } ." )
@@ -134,15 +145,11 @@ async def execute_task(
134
145
135
146
async def _execute_snippet (
136
147
uid : str ,
137
- km : jupyter_client .client . KernelClient ,
148
+ km : jupyter_client .manager . KernelManager ,
138
149
snippet : str ,
139
- ycell : y .Map ,
140
- stdin_hook ,
150
+ ycell : y .Map | None ,
151
+ stdin_hook : t . Callable [[ dict ], None ] | None ,
141
152
) -> dict [str , t .Any ]:
142
- client = km .client ()
143
- client .session .session = uid
144
- # FIXME
145
- # client.session.username = username
146
153
147
154
if ycell is not None :
148
155
# Reset cell
@@ -151,6 +158,10 @@ async def _execute_snippet(
151
158
ycell ["execution_count" ] = None
152
159
153
160
outputs = []
161
+ client = km .client ()
162
+ client .session .session = uid
163
+ # FIXME
164
+ # client.session.username = username
154
165
155
166
# FIXME we don't check if the session is consistent (aka the kernel is linked to the document)
156
167
# - should we?
@@ -175,6 +186,7 @@ async def _execute_snippet(
175
186
"outputs" : json .dumps (outputs ),
176
187
}
177
188
finally :
189
+ client .stop_channels ()
178
190
del client
179
191
180
192
@@ -252,6 +264,7 @@ async def post(self, kernel_id: str) -> None:
252
264
body = self .get_json_body ()
253
265
254
266
snippet = body .get ("code" )
267
+ ycell = None
255
268
# From RTC model
256
269
if snippet is None :
257
270
document_id = body .get ("document_id" )
@@ -280,7 +293,6 @@ async def post(self, kernel_id: str) -> None:
280
293
raise tornado .web .HTTPError (status_code = HTTPStatus .NOT_FOUND , reason = msg )
281
294
282
295
ycells = filter (lambda c : c ["id" ] == cell_id , notebook .ycells )
283
- ycell = None
284
296
try :
285
297
ycell = next (ycells )
286
298
except StopIteration :
@@ -337,9 +349,12 @@ async def post(self, kernel_id: str) -> None:
337
349
try :
338
350
# only send stdin reply if there *was not* another request
339
351
# or execution finished while we were reading.
340
- if not (await client .stdin_channel .msg_ready () or await client .shell_channel .msg_ready ()):
352
+ if not (
353
+ await client .stdin_channel .msg_ready () or await client .shell_channel .msg_ready ()
354
+ ):
341
355
client .input (body ["input" ])
342
356
finally :
357
+ client .stop_channels ()
343
358
del client
344
359
345
360
0 commit comments