Skip to main content

nb2plots - converting between notebooks and sphinx

See the nb2plots documentation for more information.

What it does

nb2plots converts Jupyter notebooks to ReST files for Sphinx, and back again.

Nb2plots assumes that the ReST document will become the source for your Sphinx web pages, but also for future versions of the notebook. The notebook may serve as a draft for the polished ReST page, and an output format from the Sphinx build. Why? Read on.

Why convert Jupyter notebooks to Sphinx?

Jupyter notebooks are just what the doctor ordered when hacking up a quick tutorial, or preparing a software demo. The problems start when you want to do not-trivial edits to the notebooks, or you need features that notebooks don’t have, such as flexible cross-referencing, extensible markup, and so on. Notebooks are also painful to use with version control. These times make you wish your notebook was in a standard extensible text format, such as ReST.

You could convert your notebook to ReST using the standard nbconvert command, but this gives rather ugly ReST, and you lose all the nice code execution and figure generation that the notebook is good at.

Enter Nb2plots. The nb2plots command converts notebooks to specially formatted ReST pages. Use with:

nb2plots notebook.ipynb > with_plots.rst

Nb2plots converts your notebook to not-very-ugly ReST, where the code cells become nbplot directives in your ReST file.

Specifically, a notebook code cell like this:

a = 1

becomes (in the ReST document):

.. nbplot::

    >>> a = 1

The nbplot directives run the contained code when Sphinx builds your ReST files, and embed the results of any plots that your code makes. Actually, nbplot is an extended and edited version of the matplotlib plot directive. Building your pages runs all the code and regenerates the figures, and you get much of the reproducible goodness of the notebook experience.

You can also run the standard Sphinx doctest extension over your pages to check the doctest output of the code cells.

The ReST version of your notebook has many advantages - it is easier to edit in your favorite text editor, and you can extend and configure the execution and display of the code in several different ways. For example, you can hide some code cells (Nbplot directives) if the code is not interesting to your point, but you still want the generated figure. You can configure your Nbplot directives to run different code for different configurations. For these options, see nbplots documentation. But - what do you lose, when going from a notebook to a Nb2plots ReST document?

I want notebooks and .py files too

You may also want a version of your document that your users can execute. Perhaps the page build is generating some tricky errors or warnings, and you want to experiment with the code in the page interactively. Perhaps your users are used to notebooks, and prefer the code in that format.

Nb2plots also contains Sphinx extensions that cause the Sphinx build to generate Python code files and Jupyter notebooks from the ReST source. When you add the Nb2plots ReST directive code-links to your ReST page, it will cause the Sphinx build to create a Python code file and notebook versions of your page, and adds download links to these versions:

.. code-links::

See code-links documentation for details.

Show me what it looks like

For a very simple example, see worked example.

For a moderate-sized teaching site that makes extensive use of Nb2plots, see https://matthew-brett.github.com/teaching.

Installation

pip install nb2plots

You will need Pandoc installed and available as the pandoc command.

To install Pandoc on OSX, we recommend homebrew:

brew install pandoc

Configuration

Add the following to your Sphinx conf.py file:

extensions = ["nb2plots"]

See nbplots documentation for the various conf.py configuration settings.

Code

See https://github.com/matthew-brett/nb2plots

Released under the BSD two-clause license - see the file LICENSE in the source distribution.

travis-ci kindly tests the code automatically under Python versions 2.7, and 3.3 through 3.5.

The latest released version is at https://pypi.python.org/pypi/nb2plots

Tests

  • Install nb2plots

  • Install the pytest testing framework, the mock package, and the scripttester package.

    pip install pytest mock scripttester

  • Run the tests with:

    py.test --pyargs nb2plots

Support

Please put up issues on the nb2plots issue tracker.

Metadata

Release files for pymor-nb2plots 0.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pymor-nb2plots 0.7
File Size Uploaded Provenance
pymor-nb2plots-0.7.tar.gz 122.5 kB Without provenance Details

Release files / pymor-nb2plots-0.7.tar.gz

Download URL pymor-nb2plots-0.7.tar.gz
Size 122.5 kB
Tags Source
SHA-256 checksum
How to use checksums
1532bddb600f7bb8a71f00a42d91e2a46042796ced5bc30c356b75a18c28fde8
BLAKE2b-256 checksum
How to use checksums
89f166f77f0c2051b6f101d124ba1aa38e4564699529c823a068b9fc930dd48e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.3

Security for pymor-nb2plots 0.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page