runthedocs-repl
v0.0.1
Published
Lightweight asynchonous Javascript REPL for Python. Powered by Web Assembly and Pyodide.
Downloads
3
Maintainers
Readme
Installation
$ yarn add runthedocs-repl
or
$ npm install --save runthedocs-repl
Usage
// easiest to use ES6 imports from the CDN
import { Repl } from 'https://cdn.skypack.dev/runthedocs-repl';
// Repl() constuctor is synchronous
const repl = new Repl();
// each call to run() returns a promise that resolves
// to the Repl() object. The value of the executed
// expression is stored as `.value` on the Repl()
repl
.init()
.then((repl) => repl.load(['numpy']))
.then((repl) => repl.run('import numpy as np'))
.then((repl) => repl.run('a = [[1, 0], [0, 1]]'))
.then((repl) => repl.run('b = [[4, 1], [2, 2]]'))
.then((repl) => repl.run('np.dot(a, b)'))
.then((repl) => console.log(repl.value)); //=> Array[ Int32Array [ 4, 1 ], Int32Array [ 2, 2 ] ]
If you want to run a chunk of code in a single call you can use Javascript template literals.
// NOTE: importing a library twice (numpy here) can cause an error
// so we leave the import out of the code chunk.
const code = `
a = [[1, 0], [0, 1]]
b = [[4, 1], [2, 2]]
np.dot(a, b)
`.trim();
// you can use await syntax as long as you are in an async function
const dotProduct = (async () => {
const repl = await new Repl().init();
await repl.load(['numpy']);
await repl.run('import numpy as np');
const result = await repl.run(code);
console.log(result.value); //=> Array[ Int32Array [ 4, 1 ], Int32Array [ 2, 2 ] ]
})();
Contributing/Requests
Open an issue or post a message in the chatroom. If you would like to contribute to the project (code, documentation, tutorials, etc.) see the contributing guide for how to get started 🙌
License
Run the Docs uses the GNU Affero General Public License Version 3.0.