Code formatter like nb_black for google colab

15.8k Views Asked by At

I know that for jupyter notebooks and jupyter lab, there are available code formatter extensions such as nb_blackor blackcellmagic. However when I installed them, it doesn't seem to work on google colab.

Do you know if there are any native option in colab or an extension that formats code (pep8 compliant)?

3

There are 3 best solutions below

0
On BEST ANSWER

As of now (April 2023) the top answer - black - works without kernel restarts.

So

# run once
!pip install black[jupyter] --quiet
from google.colab import drive
drive.mount("/content/drive")
...
# run many times
!black /content/drive/MyDrive/'Colab Notebooks'/'HiringBias.ipynb'

plus page refreshing gives

reformatted /content/drive/MyDrive/Colab Notebooks/HiringBias.ipynb
All done! ✨  ✨
1 file reformatted.

:-)

0
On

I don't think there's an extension directly in Colab.

What you could do, though, is to download your notebook, run

pip install -U nbqa
nbqa black notebook.ipynb

and then reupload your (now formatted) notebook to Colab


disclaimer: I'm the author of nbQA


UPDATE: as of version 21.8b0, black runs directly on notebooks, no third-party tool required

1
On

I have tried everything, none of the JupyterLab/Notebook backend hack methods seem to work as of February 2022. However, until later here is a relatively simple workaround:

[Run only once, at startup]

  • Connect to your drive

    from google.colab import drive
    drive.mount("/content/drive")

  • Install black for jupyter

    !pip install black[jupyter]

  • Restart kernel

[Then]

  • Place your .ipynb file somewhere on your drive
  • Anytime you want format your code run:
    !black /content/drive/MyDrive/YOUR_PATH/YOUR_NOTEBOOK.ipynb
  • Don't save your notebook, hit F5 to refresh the page
  • Voila!
  • Now save!