为 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 类似。

这些扩展通常通过 pipconda 包分发,最终用户可以轻松安装,而无需 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_templateskip_template

python -m pip install ./tests/test_template ./tests/skip_template

最后,要运行测试

python -m pytest

编辑模板#

默认模板文件位于 share/jupyter/voila/templates/default 文件夹中。在开发模式下运行 Voilà 时,它们会被自动加载。

编辑模板后,重新加载浏览器标签页以查看更改。