A simple extension for Jupyter Notebook and Jupyter Lab to beautify Python code automatically using Black. Fork of dnanhkhoa/nb_black with a few minor modifications:
Once loaded, automatically format syntactically correct jupyter
cells with black
once they are run.
Enhancements compared to dnanhkhoa/nb_black:
pyproject.toml
if availableblack.TargetVersion
if desiredblack.format_cell
to greatly simplify the codebasesetTimeout
and a delay)black
is an extremely popular python formatter. Jupyter is an awesome way to run python.
This extension helps you automatically black
en your jupyter
.
jupyterlab
>=4 / notebook
>= 7
notebook
worked well until jupyter-black
0.4.0, but recent updates to notebook
have done away with the old way of formatting cellsv0.3.4
if you're stuck on an older version of notebook
setup.cfg
python3 -m venv .venv && source ./.venv/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install jupyter-black jupyter
python3 -m jupyter notebook
From here, there are two ways to load the extension:
import jupyter_black
jupyter_black.load()
To look at configuration options:
jupyter_black.load??
For example:
import black
import jupyter_black
jupyter_black.load(
line_length=79,
verbosity="DEBUG",
target_version=black.TargetVersion.PY310,
)
%load_ext jupyter_black
This will load the extension using your defaults from pyproject.toml
if available, or use the black
defaults.
git clone https://github.com/n8henrie/jupyter-black && cd jupyter-black
python3 -m venv .venv
$ source ./.venv/bin/activate
$ ./.venv/bin/python -m pip install --upgrade pip
$ ./.venv/bin/python -m pip install -e .[test,dev]
Notes:
python -m playwright install --with-deps firefox
tox
will automatically run these installation steps (helpful for CI)--no-headless
flag to pytest
for local debuggingdev-notes.txt
]Contribution ideas:
black
pyproject.toml
is searched for properlyPlease see CONTRIBUTING.md
and TODO
.
Many thanks to dnanhkhoa/nb_black for the original version!
And of course many thanks to the black and jupyter teams.
Also, after establishing the repo and reserving the name on PyPI, I noticed there is another library of the same name: drillan/jupyter-black.
It looks like there have been no commits in the last 2 years, and it was never put in PyPI, so I think at this point I'll continue with this name.
Sorry if this causes any trouble or confusion.
I'll note that @drillan's library probably does things the right way by installing as an nbextension
.