为 Voilà 做贡献#
Voilà 是 Project Jupyter 的一个子项目,并遵循 Jupyter 治理准则和行为准则。
通用指南#
有关为 Jupyter 项目做贡献的通用文档,请参阅 Project Jupyter 贡献者文档。
社区#
Voilà 团队会组织公开的视频会议。未来会议的日程安排和过往会议的纪要可以在我们的团队指南上找到。
设置开发环境#
首先,你需要 fork 该项目。然后设置你的环境。
# create a new conda environment
conda create -n voila -c conda-forge notebook jupyterlab nodejs "yarn<4" pip
conda activate voila
# download voila from your GitHub fork
git clone https://github.com/<your-github-username>/voila.git
# install JS dependencies and build js assets
cd voila
yarn install
# install Voilà in editable mode
python -m pip install -e .
运行 Voilà#
要启动 Voilà,请运行
voila
或
python -m voila
这将在浏览器中打开一个新标签页,地址为 [https://:8866/](https://:8866/)。
当对 Voilà 的前端进行更改时,打开一个新的终端窗口并运行
cd packages/voila/
npm run watch
然后重新加载浏览器标签页。
注意:`notebooks` 目录包含一些可以用 Voilà 运行的示例。请查阅用户指南中的说明以了解如何运行它们的详细信息。
扩展#
服务器扩展#
要手动启用 classic notebook 的服务器扩展
jupyter serverextension enable voila --sys-prefix
对于 Jupyter Server
jupyter server extension enable voila.server_extension --sys-prefix
这使得 Voilà 作为一个服务器扩展可用:https://:8888/voila/tree。
Notebook 扩展#
要安装 notebook 扩展
jupyter nbextension install voila --sys-prefix --py
jupyter nbextension enable voila --sys-prefix --py
JupyterLab 扩展#
需要 Node.js,可以使用 conda 安装
conda install -c conda-forge nodejs
JupyterLab 扩展需要启用服务器扩展。可以通过运行以下命令来完成
jupyter serverextension enable voila --sys-prefix
你可以通过运行以下命令来验证服务器扩展是否已启用
jupyter serverextension list
如果你使用 Jupyter Server
jupyter server extension enable voila --sys-prefix
你可以通过运行以下命令来验证服务器扩展是否已启用
jupyter server extension list
JupyterLab 扩展是使用 JupyterLab 3.0 中新增的新分发系统作为预构建扩展开发的。要设置开发环境
# install the package in development mode
python -m pip install -e .
# link your development version of the extension with JupyterLab
jupyter labextension develop . --overwrite
# build the lab extension
jlpm run build --scope @voila-dashboards/jupyterlab-preview
# it is also possible to start in watch mode to pick up changes automatically
jlpm run watch
前端包#
Voilà 仓库由几个包组成,例如 Voilà 前端和 JupyterLab 扩展。
它遵循 monorepo 结构并使用 lerna
来简化工作流程。
要一次性构建所有前端包,请运行以下命令
# install dependencies
jlpm
# build the packages
jlpm run build
这将在每个包中运行 build
脚本。
使用此结构,可以轻松地对包进行 lint 检查,并遵循其他 Jupyter 项目中使用的相同代码风格和约定。要对包进行 lint 检查
# install dependencies
jlpm
# run ESLint
jlpm run eslint
# run prettier
jlpm run prettier
关于 Voilà 前端#
Voilà 前端是使用 JupyterLab 组件构建的、基于 JupyterLab 的应用程序。
这使得重用 JupyterLab 的现有插件和扩展成为可能,例如核心 JupyterLab 插件(如 JSON 查看器)以及第三方 mime 渲染器(如 FASTA 查看器)。
Voilà 前端能够加载安装在 ${PREFIX}/share/labextensions
下的现有 JupyterLab 预构建扩展,其工作方式与 JupyterLab 类似。
这些扩展通常通过 pip
和 conda
包分发,最终用户可以轻松安装,而无需 Node.js。Widget 包现在通常默认包含一个用于 JupyterLab 3.0 的预构建扩展,该扩展也应该能在 Voilà 中自动工作。
请查阅关于预构建扩展的 JupyterLab 文档以获取更多信息。
前端代码位于 packages/voila
目录下,对联合扩展的支持位于 packages/voila/index.js
中。
测试#
安装测试依赖
python -m pip install -e ".[test]"
启用 Jupyter 服务器扩展
jupyter server extension enable voila.server_extension --sys-prefix
在本地运行测试还需要安装 test_template
和 skip_template
python -m pip install ./tests/test_template ./tests/skip_template
最后,要运行测试
python -m pytest
编辑模板#
默认模板文件位于 share/jupyter/voila/templates/default
文件夹中。在开发模式下运行 Voilà 时,它们会被自动加载。
编辑模板后,重新加载浏览器标签页以查看更改。