Skip to main content

nbautoexport

Docs Status PyPI conda-forge tests codecov

Making it easier to code review Jupyter notebooks, one script at a time.

nbautoexport automatically exports Jupyter notebooks to various file formats (.py, .html, and more) upon save while using Jupyter. One great use case is to automatically have script versions of your notebooks to facilitate code review commenting.

Installation

First, you will need to install nbautoexport. This should be installed in the same environment you are running Jupyter Notebook or Jupyter Lab from. nbautoexport is available either from PyPI via pip or from conda-forge via conda.

pip install nbautoexport
conda install nbautoexport --channel conda-forge

Then, to register nbautoexport to run automatically while using Jupyter Notebook or Jupyter Lab, run:

nbautoexport install

If you already have a Jupyter server running, you will need to restart it for this to take effect.

Simple usage

Let's say you have a project and keep your notebooks in a notebooks/ subdirectory.

To configure that directory for automatic exporting, run the following command:

nbautoexport configure notebooks

This will create a configuration file notebooks/.nbautoexport.

If you've set up nbautoexport to work with Jupyter (using the install command as detailed in the previous section), then any time you save a notebook in Jupyter, a hook will run that checks whether there is a .nbautoexport configuration file in the same directory as the notebook. If so, it will use the settings specified in that file to export your notebook. By default, it will generate a script version of your notebook named after the notebook (with the .py extension) and saved in the directory notebooks/script.

If everything is working, your notebooks directory should end up with files like the below example:

notebooks
├──0.1-ejm-data-exploration.ipynb
├──0.2-ejm-feature-creation.ipynb
└── script
    └── 0.1-ejm-data-exploration.py
    └── 0.2-ejm-feature-creation.py

Configuring export options

The default .nbautoexport configuration file looks like this:

{
  "export_formats": [
    "script"
  ],
  "organize_by": "extension"
}

Upon save, this will lead to notebooks being exported to scripts which saved to the notebooks/script directory.

notebooks
├──0.1-ejm-data-exploration.ipynb
├──0.2-ejm-feature-creation.ipynb
└── script
    └── 0.1-ejm-data-exploration.py
    └── 0.2-ejm-feature-creation.py

An alternative way to organize exported files is to create a directory for each notebook. This can be handy for matching both the notebook and subdirectory when tab-completing and then globbing with * after the part that completed.

nbautoexport configure notebooks --organize-by notebook
notebooks
├── 0.1-ejm-data-exploration
│   └── 0.1-ejm-data-exploration.py
├── 0.2-ejm-feature-creation
│   └── 0.2-ejm-feature-creation.py
├──0.1-ejm-data-exploration.ipynb
└──0.2-ejm-feature-creation.ipynb

If you do not like the settings you selected, you can always change them by either 1) re-running the nbautoexport command with new arguments and the --overwrite flag, or 2) manually editing the .nbautoexport file.

You can also specify as many export formats as you'd like. We support most of the export formats available from nbconvert, such as html, md, and pdf. To specify formats, use the --export-format for each format you want to include.

Advanced example

nbautoexport configure sprint_one_notebooks -f script -f html --organize-by extension

Upon save, this creates .py and .html versions of the Jupyter notebooks in sprint_one_notebooks folder and results in the following organization:

notebooks
├──0.1-ejm-data-exploration.ipynb
├──0.2-ejm-feature-creation.ipynb
├── script
│   └── 0.1-ejm-data-exploration.py
│   └── 0.1-ejm-features-creation.py
└── html
    └── 0.1-ejm-data-exploration.html
    └── 0.1-ejm-features-creation.html

More functionality

The nbautoexport CLI has two additional commands:

  • export is for ad hoc exporting of a notebook or directory of notebooks
  • clean (EXPERIMENTAL) will delete files in a directory that are not generated by the current .nbautoexport configuration

Use the --help flag to see the documentation.

Command-line help

nbautoexport --help
Usage: nbautoexport [OPTIONS] COMMAND [ARGS]...

  Automatically export Jupyter notebooks to various file formats (.py,
  .html, and more) upon save. One great use case is to automatically have
  script versions of your notebooks to facilitate code review commenting.

  To set up, first use the 'install' command to register nbautoexport with
  Jupyter. If you already have a Jupyter server running, you will need to
  restart it.

  Next, you will need to use the 'configure' command to create a
  .nbautoexport configuration file in the same directory as the notebooks
  you want to have export automatically.

  Once nbautoexport is installed with the first step, exporting will run
  automatically when saving a notebook in Jupyter for any notebook where
  there is a .nbautoexport configuration file in the same directory.

Options:
  --version             Show nbautoexport version.
  --install-completion  Install completion for the current shell.
  --show-completion     Show completion for the current shell, to copy it or
                        customize the installation.

  --help                Show this message and exit.

Commands:
  clean      (EXPERIMENTAL) Remove subfolders/files not matching...
  configure  Create a .nbautoexport configuration file in a directory.
  export     Manually export notebook or directory of notebooks.
  install    Register nbautoexport post-save hook with Jupyter.

This repository was initially created using Cookiecutter with audreyr/cookiecutter-pypackage.

Metadata

Release files for nbautoexport 0.5.2

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

Source distribution (sdist)

Source distribution for nbautoexport 0.5.2
File Size Uploaded
nbautoexport-0.5.2.tar.gz 39.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nbautoexport 0.5.2
File Interpreter ABI Platform
nbautoexport-0.5.2-py3-none-any.whl Python 3 none any Details

Total release size: 56.7 kB

Release files / nbautoexport-0.5.2.tar.gz

Download URL nbautoexport-0.5.2.tar.gz
Size 39.9 kB
Tags Source
SHA-256 checksum
How to use checksums
3342149ad0a6330b4402d44b94e63bf60d6062b74e31d300e6d1435e990be6ac
BLAKE2b-256 checksum
How to use checksums
186c47566221aaaf7d04da925923fbbacefb24da1c724b32506ceb3d5ed2fbc1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.17

Release files / nbautoexport-0.5.2-py3-none-any.whl

Download URL nbautoexport-0.5.2-py3-none-any.whl
Size 16.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ebec5c28451dac96afbdfee74d67ad0be28070ce4228f340e4b745ac817b95c1
BLAKE2b-256 checksum
How to use checksums
e814bda5b373cf506fed8fd37dd627a3869038a436e808faf8a0a21c899da85c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.17

Release history Release notifications | RSS feed

This release

0.5.2 This release

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

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