@@ -250,30 +250,12 @@ define([
250
250
var kernelConnection = that . getLabKernel ( ) ;
251
251
if ( kernelConnection ) {
252
252
var future = kernelConnection . requestExecute ( codeObj ) ;
253
- future . onIOPub = ( msg ) => {
253
+ var onIOPub = function ( msg ) {
254
254
const msgType = msg . header . msg_type ;
255
255
switch ( msgType ) {
256
256
case 'status' :
257
- // if(!isExpectingOutput){
258
- // if(msg.content.execution_state === 'idle'){
259
- // resolve();
260
- // }
261
- // }
262
257
return ;
263
258
case 'execute_input' :
264
- // var content = msg.content;
265
- // resolve({
266
- // result: content,
267
- // type: type,
268
- // msg: {
269
- // content: {
270
- // name: type,
271
- // data: {
272
- // [type]: content
273
- // }
274
- // }
275
- // }
276
- // });
277
259
return ;
278
260
case 'stream' :
279
261
var content = msg . content ;
@@ -303,10 +285,24 @@ define([
303
285
reject ( { status : 'error' , ename : 'Unknown stream type' , evalue : message } ) ;
304
286
}
305
287
break ;
306
- case 'error' :
307
- //stderr does not yield output for all errors
308
- // var message = msg.content.ename + '\n' + msg.content.evalue;
309
- reject ( { status : 'error' , ename : msg . content . ename , evalue : msg . content . evalue } ) ;
288
+ case 'error' :
289
+ // check if it has a problem on restarting vp inner function
290
+ // ex) "name '_vp_print' is not defined"
291
+ if ( msg . content . ename === 'NameError'
292
+ && msg . content . evalue . includes ( '_vp_' )
293
+ && msg . content . evalue . includes ( 'is not defined' ) ) {
294
+ // restart vp
295
+ vpConfig . readKernelFunction ( ) . then ( function ( ) {
296
+ // re-try executing code
297
+ vpLog . display ( VP_LOG_TYPE . LOG , 'Re-try executing code after restarting vp...' ) ;
298
+ var future2 = kernelConnection . requestExecute ( codeObj ) ;
299
+ future2 . onIOPub = onIOPub ;
300
+ } ) . catch ( function ( err ) {
301
+ reject ( { status : 'error' , ename : msg . content . ename , evalue : msg . content . evalue } ) ;
302
+ } ) ;
303
+ } else {
304
+ reject ( { status : 'error' , ename : msg . content . ename , evalue : msg . content . evalue } ) ;
305
+ }
310
306
break ;
311
307
case 'execute_result' :
312
308
var type = 'text' ;
@@ -383,7 +379,150 @@ define([
383
379
384
380
} ;
385
381
return ;
386
- } ;
382
+ }
383
+ future . onIOPub = onIOPub ;
384
+ // future.onIOPub = (msg) => {
385
+ // const msgType = msg.header.msg_type;
386
+ // switch(msgType) {
387
+ // case 'status':
388
+ // // if(!isExpectingOutput){
389
+ // // if(msg.content.execution_state === 'idle'){
390
+ // // resolve();
391
+ // // }
392
+ // // }
393
+ // return;
394
+ // case 'execute_input':
395
+ // // var content = msg.content;
396
+ // // resolve({
397
+ // // result: content,
398
+ // // type: type,
399
+ // // msg: {
400
+ // // content: {
401
+ // // name: type,
402
+ // // data: {
403
+ // // [type]: content
404
+ // // }
405
+ // // }
406
+ // // }
407
+ // // });
408
+ // return;
409
+ // case 'stream':
410
+ // var content = msg.content;
411
+ // var type = content.name;
412
+ // switch(type){
413
+ // case 'stdout':
414
+ // var message = content.text;
415
+ // resolve({
416
+ // result: message,
417
+ // type: type,
418
+ // msg: {
419
+ // content: {
420
+ // name: type,
421
+ // data: {
422
+ // [type]: message
423
+ // }
424
+ // }
425
+ // }
426
+ // });
427
+ // break;
428
+ // case 'stderr':
429
+ // var message = content.text;
430
+ // reject({status: 'stderr', ename: 'stderr', evalue: message});
431
+ // break;
432
+ // default:
433
+ // var message = '[jupyterLabTerminal]: Unknown stream type ' + type;
434
+ // reject({status: 'error', ename: 'Unknown stream type', evalue: message});
435
+ // }
436
+ // break;
437
+ // case 'error':
438
+ // //stderr does not yield output for all errors
439
+ // // var message = msg.content.ename + '\n' + msg.content.evalue;
440
+ // // check if it has a problem on restarting vp inner function
441
+ // // ex) "name '_vp_print' is not defined"
442
+ // if (msg.content.ename === 'NameError'
443
+ // && msg.content.evalue.includes('_vp_')
444
+ // && msg.content.evalue.includes('is not defined')) {
445
+ // // restart vp
446
+ // vpConfig.readKernelFunction();
447
+ // }
448
+ // reject({status: 'error', ename: msg.content.ename, evalue: msg.content.evalue});
449
+ // break;
450
+ // case 'execute_result':
451
+ // var type = 'text';
452
+ // if (msg.content) {
453
+ // try {
454
+ // if (msg.content['text']) {
455
+ // result = String(msg.content['text']);
456
+ // type = 'text';
457
+ // } else if (msg.content.data) {
458
+ // if (msg.content.data['image/png']) {
459
+ // result = String(msg.content.data['image/png']);
460
+ // type = 'image/png';
461
+ // } else if (msg.content.data['text/plain']) {
462
+ // result = String(msg.content.data['text/plain']);
463
+ // type = 'text/plain';
464
+ // } else if (msg.content.data['text/html']) {
465
+ // result = String(msg.content.data['text/html']);
466
+ // type = 'text/html';
467
+ // }
468
+ // }
469
+ // resolve({result: result, type: type, msg: msg});
470
+ // } catch(ex) {
471
+ // reject(ex);
472
+ // }
473
+ // } else {
474
+ // resolve({result: result, type: type, msg: msg});
475
+ // }
476
+ // break;
477
+ // case 'display_data':
478
+ // var type = 'text';
479
+ // if (msg.content) {
480
+ // try {
481
+ // if (msg.content['text']) {
482
+ // result = String(msg.content['text']);
483
+ // type = 'text';
484
+ // } else if (msg.content.data) {
485
+ // if (msg.content.data['image/png']) {
486
+ // result = String(msg.content.data['image/png']);
487
+ // type = 'image/png';
488
+ // } else if (msg.content.data['text/plain']) {
489
+ // result = String(msg.content.data['text/plain']);
490
+ // type = 'text/plain';
491
+ // } else if (msg.content.data['text/html']) {
492
+ // result = String(msg.content.data['text/html']);
493
+ // type = 'text/html';
494
+ // }
495
+ // }
496
+ // resolve({result: result, type: type, msg: msg});
497
+ // } catch(ex) {
498
+ // reject(ex);
499
+ // }
500
+ // } else {
501
+ // resolve({result: result, type: type, msg: msg});
502
+ // }
503
+ // break;
504
+ // case 'update_display_data':
505
+ // var result = msg.content;
506
+ // resolve({
507
+ // result: result,
508
+ // type: msgType,
509
+ // msg: {
510
+ // content: {
511
+ // name: msgType,
512
+ // data: {
513
+ // [msgType]: result
514
+ // }
515
+ // }
516
+ // }
517
+ // });
518
+ // break;
519
+ // default:
520
+ // var message = '[jupyterLabTerminal]: Unknown message type ' + msgType;
521
+ // reject({status: 'error', ename: 'Unknown message type', evalue: message});
522
+
523
+ // };
524
+ // return;
525
+ // };
387
526
}
388
527
389
528
}
0 commit comments