@@ -24,6 +24,7 @@ import { ICell, IJupyterServer } from './types';
2424
2525export class JupyterServer implements IJupyterServer , IDisposable {
2626 private static trackingTemps : boolean = false ;
27+ private static textPlainMimeType : string = 'text/plain' ;
2728 public isDisposed : boolean = false ;
2829 private session : Session . ISession | undefined ;
2930 private tempFile : temp . OpenFile | undefined ;
@@ -165,8 +166,10 @@ export class JupyterServer implements IJupyterServer, IDisposable {
165166 this . handleStreamMesssage ( msg as KernelMessage . IStreamMsg , cell ) ;
166167 } else if ( KernelMessage . isDisplayDataMsg ( msg ) ) {
167168 this . handleDisplayData ( msg as KernelMessage . IDisplayDataMsg , cell ) ;
169+ } else if ( KernelMessage . isErrorMsg ( msg ) ) {
170+ this . handleError ( msg as KernelMessage . IErrorMsg , cell ) ;
168171 } else {
169- this . logger . logWarning ( `Unknown message ${ typeof msg } ` ) ;
172+ this . logger . logWarning ( `Unknown message ${ msg . header . msg_type } : hasData= ${ 'data' in msg . content } ` ) ;
170173 }
171174 } ;
172175
@@ -193,21 +196,28 @@ export class JupyterServer implements IJupyterServer, IDisposable {
193196 }
194197 }
195198
196- private handleStreamMesssage ( msg : KernelMessage . IStreamMsg , cell : ICell ) {
197- const mimeType = 'text/plain' ;
198-
199- // Stream/concat the text together
200- if ( cell . output . hasOwnProperty ( mimeType ) ) {
201- cell . output [ mimeType ] = `${ cell . output [ mimeType ] . toString ( ) } \n${ msg . content . text } ` ;
199+ private handleTextPlain ( text : string , cell : ICell ) {
200+ if ( cell . output . hasOwnProperty ( JupyterServer . textPlainMimeType ) ) {
201+ cell . output [ JupyterServer . textPlainMimeType ] = `${ cell . output [ JupyterServer . textPlainMimeType ] . toString ( ) } \n${ text } ` ;
202202 } else {
203- cell . output [ mimeType ] = msg . content . text ;
203+ cell . output [ JupyterServer . textPlainMimeType ] = text ;
204204 }
205205 }
206206
207+ private handleStreamMesssage ( msg : KernelMessage . IStreamMsg , cell : ICell ) {
208+ // Stream/concat the text together
209+ this . handleTextPlain ( ( msg . content . text ) , cell ) ;
210+ }
211+
207212 private handleDisplayData ( msg : KernelMessage . IDisplayDataMsg , cell : ICell ) {
208213 cell . output = msg . content . data ;
209214 }
210215
216+ private handleError ( msg : KernelMessage . IErrorMsg , cell : ICell ) {
217+ // Stream/concat the text together
218+ this . handleTextPlain ( ( msg . content . evalue ) , cell ) ;
219+ }
220+
211221 private async generateTempFile ( notebookFile ?: string ) : Promise < temp . OpenFile > {
212222 // Make sure we cleanup these temp files.
213223 if ( ! JupyterServer . trackingTemps ) {
0 commit comments