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
文件。
构建插件
要构建插件,您需要安装npm
和python
,以及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代码,请在重新构建轮子之前,删除build
和dist
目录。
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
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c21bff45b87c2a0bebb13045e9ed5d2dd601cc86f750c2aa1c58b188aa08d6e6 |
|
MD5 | 8d7fb8359b71e0b17e4f2664279eb5c2 |
|
BLAKE2b-256 | 6efd9a926678abf5c76dba77e1b960199dca103a31eb68a45d95e0426ac3994b |