Format code in Jupyter notebooks
Project description
jupyfmt
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | d05dc67bf86d71e58adb56342a49f1bb142f61a23639bcc99bf651b21ed65853 |
|
MD5 | bbd61ff17c65854a90df54660a243211 |
|
BLAKE2b-256 | 8fc569af63f7a25ca920593c4a5565977f88bd918fd99579d6cd89f7fa13dcc6 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1fa961ccb16eb438c9479b1a28bbc918bdcc607f27b90858348e67322dcfc56f |
|
MD5 | e4728df24b77563f90ac3c7ecd379c64 |
|
BLAKE2b-256 | b44f627926580694a23042c3cf53896a51698950e062cf769fbee173cf488fd7 |