@@ -283,9 +283,12 @@ def test_sys_exit(self):
283283 self .assertEqual (nb .cells [0 ].cell_type , "code" )
284284 self .assertEqual (nb .cells [0 ].execution_count , 1 )
285285 self .assertEqual (nb .cells [1 ].execution_count , 2 )
286- self .assertEqual (nb .cells [1 ].outputs [0 ].output_type , 'error' )
287- self .assertEqual (nb .cells [1 ].outputs [0 ].ename , 'SystemExit' )
288- self .assertEqual (nb .cells [1 ].outputs [0 ].evalue , '' )
286+ # Python 3.14+ may emit a stderr stream before the error output
287+ output_types = [o .output_type for o in nb .cells [1 ].outputs ]
288+ self .assertIn ('error' , output_types )
289+ error_output = next (o for o in nb .cells [1 ].outputs if o .output_type == 'error' )
290+ self .assertEqual (error_output .ename , 'SystemExit' )
291+ self .assertEqual (error_output .evalue , '' )
289292 self .assertEqual (nb .cells [2 ].execution_count , None )
290293
291294 def test_sys_exit0 (self ):
@@ -296,9 +299,12 @@ def test_sys_exit0(self):
296299 self .assertEqual (nb .cells [0 ].cell_type , "code" )
297300 self .assertEqual (nb .cells [0 ].execution_count , 1 )
298301 self .assertEqual (nb .cells [1 ].execution_count , 2 )
299- self .assertEqual (nb .cells [1 ].outputs [0 ].output_type , 'error' )
300- self .assertEqual (nb .cells [1 ].outputs [0 ].ename , 'SystemExit' )
301- self .assertEqual (nb .cells [1 ].outputs [0 ].evalue , '0' )
302+ # Python 3.14+ may emit a stderr stream before the error output
303+ output_types = [o .output_type for o in nb .cells [1 ].outputs ]
304+ self .assertIn ('error' , output_types )
305+ error_output = next (o for o in nb .cells [1 ].outputs if o .output_type == 'error' )
306+ self .assertEqual (error_output .ename , 'SystemExit' )
307+ self .assertEqual (error_output .evalue , '0' )
302308 self .assertEqual (nb .cells [2 ].execution_count , None )
303309
304310 def test_sys_exit1 (self ):
@@ -314,7 +320,9 @@ def test_sys_exit1(self):
314320 self .assertEqual (nb .cells [2 ].cell_type , "markdown" )
315321 self .assertRegex (nb .cells [2 ].source , '<span id="papermill-error-cell" .*</span>' )
316322 self .assertEqual (nb .cells [3 ].execution_count , 2 )
317- self .assertEqual (nb .cells [3 ].outputs [0 ].output_type , 'error' )
323+ # Python 3.14+ may emit a stderr stream before the error output
324+ output_types = [o .output_type for o in nb .cells [3 ].outputs ]
325+ self .assertIn ('error' , output_types )
318326
319327 self .assertEqual (nb .cells [4 ].execution_count , None )
320328
@@ -326,9 +334,12 @@ def test_system_exit(self):
326334 self .assertEqual (nb .cells [0 ].cell_type , "code" )
327335 self .assertEqual (nb .cells [0 ].execution_count , 1 )
328336 self .assertEqual (nb .cells [1 ].execution_count , 2 )
329- self .assertEqual (nb .cells [1 ].outputs [0 ].output_type , 'error' )
330- self .assertEqual (nb .cells [1 ].outputs [0 ].ename , 'SystemExit' )
331- self .assertEqual (nb .cells [1 ].outputs [0 ].evalue , '' )
337+ # Python 3.14+ may emit a stderr stream before the error output
338+ output_types = [o .output_type for o in nb .cells [1 ].outputs ]
339+ self .assertIn ('error' , output_types )
340+ error_output = next (o for o in nb .cells [1 ].outputs if o .output_type == 'error' )
341+ self .assertEqual (error_output .ename , 'SystemExit' )
342+ self .assertEqual (error_output .evalue , '' )
332343 self .assertEqual (nb .cells [2 ].execution_count , None )
333344
334345 def test_line_magic_error (self ):
@@ -460,6 +471,8 @@ def test_output_formatting(self):
460471 self .assertEqual (nb .cells [2 ].cell_type , "markdown" )
461472 self .assertRegex (nb .cells [2 ].source , '<span id="papermill-error-cell" .*</span>' )
462473 self .assertEqual (nb .cells [3 ].execution_count , 2 )
463- self .assertEqual (nb .cells [3 ].outputs [0 ].output_type , 'error' )
474+ # Python 3.14+ may emit a stderr stream before the error output
475+ output_types = [o .output_type for o in nb .cells [3 ].outputs ]
476+ self .assertIn ('error' , output_types )
464477
465478 self .assertEqual (nb .cells [4 ].execution_count , None )
0 commit comments