@@ -26,11 +26,8 @@ export class RunCode {
2626 log : ( level : LoggingLevel , data : string ) => void ,
2727 file ?: CodeFile ,
2828 globals ?: Record < string , any > ,
29+ alwaysReturnJson : boolean = false ,
2930 ) : Promise < RunSuccess | RunError > {
30- // remove once we can upgrade to pyodide 0.27.7 and console.log is no longer used.
31- const realConsoleLog = console . log
32- console . log = ( ...args : any [ ] ) => log ( 'debug' , args . join ( ' ' ) )
33-
3431 let pyodide : PyodideInterface
3532 let sys : any
3633 let prepareStatus : PrepareSuccess | PrepareError | undefined
@@ -51,9 +48,8 @@ export class RunCode {
5148 prepareStatus = prep . prepareStatus
5249 }
5350
54- let runResult : RunSuccess | RunError
5551 if ( prepareStatus && prepareStatus . kind == 'error' ) {
56- runResult = {
52+ return {
5753 status : 'install-error' ,
5854 output : this . takeOutput ( sys ) ,
5955 error : prepareStatus . message ,
@@ -64,27 +60,25 @@ export class RunCode {
6460 globals : pyodide . toPy ( { ...( globals || { } ) , __name__ : '__main__' } ) ,
6561 filename : file . name ,
6662 } )
67- runResult = {
63+ return {
6864 status : 'success' ,
6965 output : this . takeOutput ( sys ) ,
70- returnValueJson : preparePyEnv . dump_json ( rawValue ) ,
66+ returnValueJson : preparePyEnv . dump_json ( rawValue , alwaysReturnJson ) ,
7167 }
7268 } catch ( err ) {
73- runResult = {
69+ return {
7470 status : 'run-error' ,
7571 output : this . takeOutput ( sys ) ,
7672 error : formatError ( err ) ,
7773 }
7874 }
7975 } else {
80- runResult = {
76+ return {
8177 status : 'success' ,
8278 output : this . takeOutput ( sys ) ,
8379 returnValueJson : null ,
8480 }
8581 }
86- console . log = realConsoleLog
87- return runResult
8882 }
8983
9084 async prepEnv (
@@ -107,9 +101,9 @@ export class RunCode {
107101 pyodide . loadPackage = ( pkgs , options ) =>
108102 origLoadPackage ( pkgs , {
109103 // stop pyodide printing to stdout/stderr
110- messageCallback : ( msg : string ) => log ( 'debug' , `loadPackage: ${ msg } ` ) ,
104+ messageCallback : ( msg : string ) => log ( 'debug' , msg ) ,
111105 errorCallback : ( msg : string ) => {
112- log ( 'error' , `loadPackage: ${ msg } ` )
106+ log ( 'error' , msg )
113107 this . output . push ( `install error: ${ msg } ` )
114108 } ,
115109 ...options ,
@@ -205,7 +199,7 @@ function formatError(err: any): string {
205199 errStr = errStr . replace ( / ^ P y t h o n E r r o r : + / , '' )
206200 // remove frames from inside pyodide
207201 errStr = errStr . replace (
208- / { 2 } F i l e " \/ l i b \/ p y t h o n \d + \. z i p \/ _ p y o d i d e \/ .* \n { 4 } .* \n (?: { 4 , } \^ + \n ) ? / g,
202+ / { 2 } F i l e " \/ l i b \/ p y t h o n \d + \. z i p \/ _ p y o d i d e \/ .* \n { 4 } .* \n (?: { 4 } . * \n ) * / g,
209203 '' ,
210204 )
211205 return errStr
@@ -221,5 +215,5 @@ interface PrepareError {
221215}
222216interface PreparePyEnv {
223217 prepare_env : ( files : CodeFile [ ] ) => Promise < PrepareSuccess | PrepareError >
224- dump_json : ( value : any ) => string | null
218+ dump_json : ( value : any , always_return_json : boolean ) => string | null
225219}
0 commit comments