Contributing to bqplot

April 13, 2026 ยท View on GitHub

Fork and clone

Fork the repository on GitHub, then clone your fork and add the main repository as upstream:

git clone https://github.com/<your-github-user>/bqplot.git
cd bqplot
git remote add upstream https://github.com/bqplot/bqplot.git
git remote -v

Before starting a change, sync your local master branch with upstream and create a feature branch:

git switch master
git fetch upstream
git rebase upstream/master
git switch -c <branch-name>

Conforming with linters

This project uses both eslint and prettier and the plugin that creates the integration between both, eslint-plugin-prettier to lint its code.

Currently there has been an active effort on making the project comply with all eslint rules so the eslint rules are currently not enforced.

Prettier rules are enforced, and you can run them in the js folder with:

yarn prettier --write .

The configuration of this project linters were based in the widgets-cookiecutter.

Development installation

For a development installation (requires JupyterLab (version >= 4) and yarn):

pip install -e .

If you're using Jupyter Notebook < 7, you may need to run the following to enable the nbextension:

jupyter nbextension install --py --overwrite --symlink --sys-prefix bqplot
jupyter nbextension enable --py --sys-prefix bqplot

Note for developers: the --symlink argument on Linux or OS X allows one to modify the JavaScript code in-place. This feature is not available with Windows.

For the experimental JupyterLab extension, install the Python package, make sure the Jupyter widgets extension is installed, and install the bqplot extension:

pip install "ipywidgets>=7.6"
jupyter labextension develop . --overwrite

Whenever you make a change of the JavaScript code, you will need to rebuild:

cd js
jlpm run build

Then refreshing the JupyterLab/Jupyter Notebook is enough to reload the changes.

Running tests

You can install the dependencies necessary to run the tests with:

conda env update -f test-environment.yml

Run the Python tests with:

pytest

Run the JS tests from the js directory with:

cd js
jlpm run test

Every time you make a change to your tests, it is necessary to rebuild the JS side:

jlpm run build

Governance and code of conduct

bqplot is subject to the bqplot governance and the bqplot code of conduct.

Questions

Should you have any questions, please do not hesitate to reach out to us on the ipywidgets gitter chat.

Help / Documentation

  • API reference documentation: Read the documentation of the stable version Read the documentation of the development version

  • Talk to us on the ipywidgets Gitter chat: Join the chat at https://gitter.im/ipython/ipywidgets