make runtime an object of Runtime class when it is just an object (#729)

* make runtime an object of Runtime class when it is just an object

* fix constructor

* remove explicit string type

* define default values out of pyodide runtime and use default config instead of initializing a DEFAULT_RUNTIME instance

Co-authored-by: Fabio Pliger <fabio.pliger@gmail.com>
This commit is contained in:
Madhur Tandon
2022-08-27 01:49:03 +05:30
committed by GitHub
parent 9de154595a
commit db806a5df9
2 changed files with 31 additions and 15 deletions

View File

@@ -6,24 +6,41 @@ import { loadPyodide } from 'pyodide';
// @ts-ignore
import pyscript from './python/pyscript.py';
export const DEFAULT_RUNTIME_CONFIG = {
src: 'https://cdn.jsdelivr.net/pyodide/v0.21.1/full/pyodide.js',
name: 'pyodide-default',
lang: 'python'
};
export class PyodideRuntime extends Runtime {
src = 'https://cdn.jsdelivr.net/pyodide/v0.21.1/full/pyodide.js';
name = 'pyodide-default';
lang = 'python';
src: string;
name?: string;
lang?: string;
interpreter: PyodideInterface;
globals: any;
constructor(
src = 'https://cdn.jsdelivr.net/pyodide/v0.21.1/full/pyodide.js',
name = 'pyodide-default',
lang = 'python',
) {
super();
this.src = src;
this.name = name;
this.lang = lang;
}
async loadInterpreter(): Promise<void> {
console.log('creating pyodide runtime');
let indexURL: string = this.src.substring(0, this.src.length - "/pyodide.js".length)
let indexURL: string = this.src.substring(0, this.src.length - '/pyodide.js'.length);
if (typeof process === 'object' && inJest()) {
indexURL = [process.cwd(), 'node_modules', 'pyodide'].join('/')
indexURL = [process.cwd(), 'node_modules', 'pyodide'].join('/');
}
this.interpreter = await loadPyodide({
stdout: console.log,
stderr: console.log,
fullStdLib: false,
indexURL
indexURL,
});
this.globals = this.interpreter.globals;
@@ -54,7 +71,7 @@ export class PyodideRuntime extends Runtime {
}
async installPackage(package_name: string | string[]): Promise<void> {
if (package_name.length > 0){
if (package_name.length > 0) {
const micropip = this.globals.get('micropip');
await micropip.install(package_name);
micropip.destroy();