Path: blob/master/src/packages/jupyter/stateless-api/execute.ts
1447 views
/*1~/cocalc/src/packages/project$ node2Welcome to Node.js v16.19.1.3Type ".help" for more information.45> e = require('@cocalc/jupyter/stateless-api/execute').default6> await e({input:'2+3',kernel:'python3-ubuntu'})7[ { data: { 'text/plain': '5' } } ]8>9*/1011import Kernel from "./kernel";12import getLogger from "@cocalc/backend/logger";13import { type ProjectJupyterApiOptions } from "@cocalc/util/jupyter/api-types";1415const log = getLogger("jupyter:stateless-api:execute");1617export default async function jupyterExecute(opts: ProjectJupyterApiOptions) {18log.debug(opts);19let kernel: undefined | Kernel = undefined;20try {21kernel = await Kernel.getFromPool(opts.kernel, opts.pool);22const outputs: object[] = [];2324if (opts.path != null) {25try {26await kernel.chdir(opts.path);27log.debug("successful chdir");28} catch (err) {29outputs.push({ name: "stderr", text: `${err}` });30log.debug("chdir failed", err);31}32}3334if (opts.history != null && opts.history.length > 0) {35// just execute this directly, since we will ignore the output36log.debug("evaluating history");37await kernel.execute(opts.history.join("\n"), opts.limits);38}3940// append the output of running opts.input to outputs:41for (const output of await kernel.execute(opts.input, opts.limits)) {42outputs.push(output);43}44return outputs;45} finally {46if (kernel) {47await kernel.close();48}49}50}515253