Installing Javascript machinery

Running the Notebook from the source code on GitHub requires some JavaScript tools to build/minify the CSS and JavaScript components. We do these steps when making releases, so there’s no need for these tools when installing released versions of the Notebook.

First, install Node.js. The installers on the Node.js website also include Node’s package manager, npm. Alternatively, install both of these from your package manager. For example, on Ubuntu or Debian:

sudo apt-get install nodejs-legacy npm

You can then build the JavaScript and CSS by running:

python setup.py css js

This will automatically fetch the remaining dependencies (bower, less) and install them in a subdirectory.

For quick iteration on the Notebook’s JavaScript you can deactivate the use of the bundled and minified JavaScript by using the option --NotebookApp.ignore_minified_js=True. This might though highly increase the number of requests that the browser make to the server, but can allow to test JavaScript file modification without going through the compilation step that can take up to 30 sec.

Making a notebook release

Make sure you have followed the step above and have all the tools to generate the minified JavaScript and CSS files.

Make sure the repository is clean of any file that could be problematic. You can remove all non-tracked files with:

$ git clean -xfdi

This would ask you for confirmation before removing all untracked files. Make sure the dist/ folder is clean and avoid stale build from previous attempts.

  1. Update version number in notebook/_version.py.

2. Run $ python setup.py jsversion. It will modify (at least) notebook/static/base/js/namespace.js to make the notebook version available from within JavaScript.

3 . Commit and tag the release with the current version number:

git commit -am "release $VERSION"
git tag $VERSION
  1. You are now ready to build the sdist and wheel:
$ python setup.py sdist --formats=zip,gztar
$ python setup.py bdist_wheel

5. You can now test the wheel and the sdist locally before uploading to PyPI. Make sure to use twine to upload the archives over SSL.

$ twine upload dist/*
  1. If all went well, change the notebook/_version.py back adding the .dev suffix.
  2. Push directly on master, not forgetting to push --tags.