17
17
from backports .tempfile import TemporaryDirectory
18
18
19
19
from IPython .display import Image
20
- from metakernel import MetaKernel
20
+ from metakernel import MetaKernel , ExceptionWrapper
21
21
22
22
from . import __version__
23
23
@@ -89,9 +89,9 @@ def do_execute_direct(self, code):
89
89
self .handle_plot_settings ()
90
90
91
91
if Wurlitzer :
92
- self ._execute_async (code )
92
+ retval = self ._execute_async (code )
93
93
else :
94
- self ._execute_sync (code )
94
+ retval = self ._execute_sync (code )
95
95
96
96
settings = self ._validated_plot_settings
97
97
if settings ["backend" ] == "inline" :
@@ -117,6 +117,8 @@ def do_execute_direct(self, code):
117
117
except Exception as exc :
118
118
self .Error (exc )
119
119
120
+ return retval
121
+
120
122
def get_kernel_help_on (self , info , level = 0 , none_on_fail = False ):
121
123
name = info .get ("help_obj" , "" )
122
124
out = StringIO ()
@@ -247,8 +249,9 @@ def _execute_async(self, code):
247
249
_PseudoStream (partial (self .Error , end = "" ))):
248
250
future = self ._matlab .eval (code , nargout = 0 , async = True )
249
251
future .result ()
250
- except (SyntaxError , MatlabExecutionError , KeyboardInterrupt ):
251
- pass
252
+ except (SyntaxError , MatlabExecutionError , KeyboardInterrupt ) as exc :
253
+ stdout = exc .args [0 ]
254
+ return ExceptionWrapper ("Error" , - 1 , stdout )
252
255
253
256
def _execute_sync (self , code ):
254
257
out = StringIO ()
@@ -260,7 +263,7 @@ def _execute_sync(self, code):
260
263
except (SyntaxError , MatlabExecutionError ) as exc :
261
264
stdout = exc .args [0 ]
262
265
self .Error (stdout )
263
- return
266
+ return ExceptionWrapper ( "Error" , - 1 , stdout )
264
267
stdout = out .getvalue ()
265
268
self .Print (stdout )
266
269
0 commit comments