DEV Community

Cover image for Formatter for Jupyter notebooks
Siddhesh Agarwal
Siddhesh Agarwal

Posted on

5

Formatter for Jupyter notebooks

Introduction

If you are into Data Science or Machine Learning, you have probably come across jupyter notebooks (.ipynb files). The problem I faced when using jupyter notebooks was that the black formatter didn't work on them. I had tried using the

$ black notebook.ipynb
Enter fullscreen mode Exit fullscreen mode

command many times. This article is meant to help with code formatting in Python Notebooks.


nbQA

So, we will be using a python library called nbQA along with code formatters like Black and isort.

Installation

Install the library using:

$ pip install nbqa
Enter fullscreen mode Exit fullscreen mode

Usage

You can use various formatters along with nqba and I will demonstrate how to use a few of them. before trying the formatters, make sure you have installed them already.

black

Format the notebook using black as shown below:

$ nbqa black notebook.ipynb
reformatted notebook.ipynb
All done! ✨ 🍰 ✨
1 files reformatted.
Enter fullscreen mode Exit fullscreen mode

isort

Similarly, format the notebook using isort:

$ nbqa isort notebook.ipynb
Fixing notebook.ipynb
Enter fullscreen mode Exit fullscreen mode

yapf

$ nbqa yapf --in-place notebook.ipynb
Enter fullscreen mode Exit fullscreen mode

autopep8

$ nbqa autopep8 -i notebook.ipynb
Enter fullscreen mode Exit fullscreen mode

mdformat

To format the markdown cells in your notebook, use:

$ nbqa mdformat notebook.ipynb --nbqa-md --nbqa-diff
Enter fullscreen mode Exit fullscreen mode

doctest

To run tests for iPython notebooks using doctypes:

$ nbqa doctest notebook.ipynb
Enter fullscreen mode Exit fullscreen mode

I hope you liked it. That's all for this time.

The end

Top comments (2)

Collapse
 
chrisgreening profile image
Chris Greening

Hey Siddhesh thanks so much for sharing this tip! I had no idea this tool existed but will definitely check it out

I looove Jupyter for sketching out ideas, exploring data, and communicating POC's but have always struggled to integrate it into my production workflows because I always found it fairly unmaintainable - nbQA is exactly the type of thing I've needed to up my Jupyter game, cheers :D

Collapse
 
siddhesh_agarwal profile image
Siddhesh Agarwal

I can't tell how much this tool has helped me. Do try it. Will try to post about more tools in the future.

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs