Skip to main content

Format code in Jupyter notebooks

Project description

jupyfmt

PyPI Tests

The uncompromising Jupyter notebook formatter.

jupyfmt allows you to format notebooks in-place from the commandline as well as assert properly formatted Jupyter notebook cells in your CI. Inspired by snakefmt. Uses black under the hood.

Installation

Install the latest release from PyPI:

$ pip install jupyfmt

Usage

jupyfmt can be used to format notebooks in-place or report diffs and summary statistics.

Overview of commandline parameters:

$ jupyfmt --help
Usage: jupyfmt [OPTIONS] [PATH_LIST]...

  The uncompromising Jupyter notebook formatter.

  PATH_LIST specifies notebooks and directories to search for notebooks in. By
  default, all notebooks will be formatted in-place. Use `--check`, `--diff`
  (or `--compact-diff`) to print summary reports instead.

Options:
  -l, --line-length INT           How many characters per line to allow.
  -S, --skip-string-normalization
                                  Don't normalize string quotes or prefixes.
  --check                         Don't write files back, just return status
                                  and print summary.
  -d, --diff                      Don't write files back, just output a diff
                                  for each file to stdout.
  --compact-diff                  Same as --diff but only show lines that
                                  would change plus a few lines of context.
  --assert-consistent-execution   Assert that all cells have been executed in
                                  correct order.
  --exclude PATTERN               Regular expression to match paths which
                                  should be exluded when searching
                                  directories.  [default: (/.git/|/.ipynb_chec
                                  kpoints/|/build/|/dist/)]
  --accepted-languages PATTERN    Only format Jupyter notebooks in these
                                  languages.  [default: python]
  --version                       Show the version and exit.
  --help                          Show this message and exit.

Report formatting suggestions for a given notebook (this is particularly useful for CI workflows):

$ jupyfmt --check --compact-diff Notebook.ipynb
--- Notebook.ipynb - Cell 1 (original)
+++ Notebook.ipynb - Cell 1 (formatted)
@@ -1,2 +1,2 @@
-def foo (*args):
+def foo(*args):
     return sum(args)

--- Notebook.ipynb - Cell 2 (original)
+++ Notebook.ipynb - Cell 2 (formatted)
@@ -1 +1 @@
-foo(1, 2,3)
+foo(1, 2, 3)

2 cell(s) would be changed 😬
1 cell(s) would be left unchanged 🎉

1 file(s) would be changed 😬

Mega-Linter Integration

jupyfmt can be run as part of Mega-Linter by adding the following to .mega-linter.yml:

PLUGINS:
  - https://raw.githubusercontent.com/kpj/jupyfmt/master/mega-linter-plugin-jupyfmt/jupyfmt.megalinter-descriptor.yml

ENABLE_LINTERS:
  - JUPYTER_JUPYFMT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jupyfmt-0.5.3.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

jupyfmt-0.5.3-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file jupyfmt-0.5.3.tar.gz.

File metadata

  • Download URL: jupyfmt-0.5.3.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for jupyfmt-0.5.3.tar.gz
Algorithm Hash digest
SHA256 d05dc67bf86d71e58adb56342a49f1bb142f61a23639bcc99bf651b21ed65853
MD5 bbd61ff17c65854a90df54660a243211
BLAKE2b-256 8fc569af63f7a25ca920593c4a5565977f88bd918fd99579d6cd89f7fa13dcc6

See more details on using hashes here.

File details

Details for the file jupyfmt-0.5.3-py3-none-any.whl.

File metadata

  • Download URL: jupyfmt-0.5.3-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for jupyfmt-0.5.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1fa961ccb16eb438c9479b1a28bbc918bdcc607f27b90858348e67322dcfc56f
MD5 e4728df24b77563f90ac3c7ecd379c64
BLAKE2b-256 b44f627926580694a23042c3cf53896a51698950e062cf769fbee173cf488fd7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page