跳转到主要内容

deephaven插件

项目描述

deephaven_plugin_notebook

这是一个由deephaven-plugin模板生成的Deephaven Python插件。

这是一个实验性插件,可以在Deephaven中创建和嵌入简单的jupyter笔记本。目前它无法显示更复杂的资源,如ipywidgets。

插件结构

src目录中包含插件的Python和JavaScript代码。在src目录内,deephaven_plugin_notebook目录包含Python代码,而js目录包含JavaScript代码。

Python文件具有以下结构:deephaven_plugin_notebook_object.py定义了一个可以包装notebook的简单Python类,deephaven_plugin_notebook_type.py定义了插件的Python类型(用于注册)和一个简单的消息流。js_plugin.py定义了用于设置插件JavaScript方面的Python类。register.py将插件注册到Deephaven。

JavaScript文件具有以下结构:DeephavenPluginNotebookPlugin.ts将插件注册到Deephaven,DeephavenPluginNotebookView.tsx定义了插件面板并加载notebook。

此外,test目录包含插件的Python测试。这演示了如何在测试中使用嵌入式Deephaven服务器。建议使用tox运行测试,项目内包含tox.ini文件。

构建插件

要构建插件,您需要安装npmpython,以及Python的build包。nvm也强烈推荐,项目内包含.nvmrc文件。可以使用以下命令创建python虚拟环境并安装推荐包:

cd deephaven_plugin_notebook
python -m venv .venv
source .venv/bin/activate
pip install --upgrade -r requirements.txt

src/js目录构建JavaScript插件

cd src/js
nvm install
npm install
npm run build

然后,从顶级目录构建Python插件

cd ../..
python -m build --wheel

构建的wheel文件将位于dist目录。

如果您修改了JavaScript代码,请在重新构建轮子之前,删除builddist目录。

rm -rf build dist

安装插件

可以使用pip install <wheel文件>将插件安装到Deephaven实例中。构建插件后,轮子文件将存储在dist目录中。具体操作方法取决于您如何运行Deephaven。如果您使用上面创建的venv,可以使用以下命令创建插件和服务器:

pip install deephaven-server
pip install dist/deephaven_plugin_notebook-0.0.1.dev0-py3-none-any.whl
deephaven server

有关更多信息,请参阅插件文档

在初始设置完成后,您可以调用

./rebuild.sh

这将重新安装并运行服务器。

使用插件

Deephaven服务器启动后,插件应可用于使用。

from deephaven_plugin_notebook import DeephavenPluginNotebookObject

obj = DeephavenPluginNotebookObject()

以下是一个使用dh.ui创建简单笔记本的示例。
存在两种单元格类型,反映了两种主要的Jupyter单元格类型。任何"code"块都将自动、依次运行。

from deephaven_plugin_notebook import DeephavenPluginNotebookObject
from ipywidgets import IntSlider
import deephaven.ui as ui

def render_notebook(text):
    notebook = [
        {
            "type": "markdown",
            "source": "Hello, World!"
        },
        {
            "type": "code",
            "source": f"print('{text}')"
        }
    ]

    return DeephavenPluginNotebookObject(notebook)

@ui.component
def demo():
    text, set_text = ui.use_state("Hello, World!")
    print_input = ui.text_field(value=text, on_change=set_text)
    rendered_notebook = ui.use_memo(lambda: render_notebook(text), [text])

    return ui.flex(print_input, rendered_notebook, direction="column", width="100%")

notebook_input = demo()

如果您不使用dh.ui,则可以单独运行render_notebook函数。

分发插件

要分发插件,可以将轮子文件上传到软件包存储库,例如PyPI。可以在setup.cfg文件中更新插件的版本。

PyPI有一个用于测试目的的独立实例。首先在TestPyPI上创建账户。然后,从账户管理获取API令牌,将“作用域”设置为“整个账户”。

要上传到测试实例,请使用以下命令:

python -m pip install --upgrade twine
python -m twine upload --repository testpypi dist/*

现在,您可以从中安装插件。需要额外的索引来查找依赖项:

pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.ac.cn/simple/ deephaven_plugin_notebook

对于生产版本,请在PyPI上创建账户。然后,从账户管理获取API令牌,将“作用域”设置为“整个账户”。

要上传到生产实例,请使用以下命令。请注意,默认情况下--repository是生产实例,因此可以省略:

python -m pip install --upgrade twine
python -m twine upload dist/*

现在,您可以从生产实例安装插件。

pip install deephaven_plugin_notebook

有关更多信息,请参阅Python打包文档

项目详情


下载文件

下载适用于您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

此版本没有可用的源分布文件。请参阅生成分布归档的教程。

构建分布

deephaven_plugin_notebook-0.0.1-py3-none-any.whl (14.3 kB 查看哈希)

上传时间 Python 3

支持