• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

n-riesco/jp-kernel: Generic Node.js kernel for the Jupyter notebook

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

n-riesco/jp-kernel

开源软件地址:

https://github.com/n-riesco/jp-kernel

开源编程语言:

JavaScript 100.0%

开源软件介绍:

jp-kernel

jp-kernel is an npm module for implementing a Jupyter kernel that interacts with a Node.js session.

jp-kernel is a spin-off library from IJavascript, a Javascript kernel for the Jupyter notebook. It is currently used to implement the following kernels:

Anouncements

  • Version 2.0.0 require Node.js v6 or above so that we can use jmp@2.

  • Version 1.3.0 (unpublished) use jmp@2 if compatible with the version of Node.js.

  • Version 1.2.0 implements message clear_output.

  • Version 1.1.0 ensures metadata is defined in display_data messages.

  • Version 1.0.0 (stable API) handles flag --hide-execution-result.

  • Version 0.1.5 handles input_request and input_reply messages.

  • Version 0.1.4 handles display_data and update_display_data messages.

  • Version 0.1.0 depends on [email protected], and [email protected] depends on zeromq (which provides prebuilt bindings to the ZMQ library and is now maintained by the zeromq organisation).

  • Version 0.0.1 is the initial release based on IJavascript v5.0.13.

Install

The latest stable release is published on npm and can be installed by running:

npm install jp-kernel

The master branch in the github repository provides the latest development version and can be installed by:

git clone https://github.com/n-riesco/jp-kernel.git
cd jp-kernel
npm install

Usage

The source code documentation generated using JSDoc can be found here.

For real examples of usage, see the source documentation for:

Contributions

First of all, thank you for taking the time to contribute. Please, read CONTRIBUTING.md and use the issue tracker for any contributions: support requests, bug reports, enhancement requests, pull requests, ...

Next API v2

The jp-kernel API in the initial release v0.0.1 came into existence by a process of evolution. I want to take the opportunity that distributing jp-kernel as a package offers to design a new API. Below is a preview of what I have in mind:

class Kernel {
    constructor(config) {
        this.config = config;

        this.executionCount = 0;

        this.session = new Session({
            cwd: this.config.cwd,
            parser: this.config.parser,
            transpile: this.config.transpile,
        });

        this._init();
    }

    _init(initCB) {}
    interrupt(interruptCB) {}
    destroy(destroyCB) {}
    restart(restartCB) {}

    _onShellMessage(message) {}
    _onControlMessage(message) {}
    _onIOPubMessage(message) {}
    _onHBMessage(message) {}
}
class KernelV4 extends Kernel {
    onStdout(data) {}
    onStderr(data) {}
    onShell_xxx(request) {}
}
class KernelV5 extends Kernel {
    onStdout(data) {}
    onStderr(data) {}
    onShell_xxx(request) {}
}
class Config {
    constructor(kernelConfig) {
        this.hideUndefined = kernelConfig.hideUndefined;
        this.initSession = kernelConfig.initSession;
        this.initScripts = kernelConfig.initScripts;
        this.kernelInfoReply = kernelConfig.kernelInfoReply;
        this.protocolVersion = kernelConfig.protocolVersion;

        this.connection = kernelConfig.connection;
        this.parser = kernelConfig.parser;
    }
}
class Connection {
    constructor(connectionConfig) {
        this.config = connectionConfig;
        this.socket = {
            control: new jmp.Socket("router", scheme, key),
            shell: new jmp.Socket("router", scheme, key),
            iopub: new jmp.Socket("pub", scheme, key),
            hb: zmq.createSocket("rep"),
        };
    }

    connect(listeners) {}
    disconnect() {}
}
class Parser{
    constructor() {
        throw new Error("Cannot construct an abstract class");
    }

    getIdentifier(code, position) {
        throw new Error("Not implemented");
    }

    validate(code) {
        throw new Error("Not implemented");
    }
}



鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap