58

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)?

Jean-Francois T.
  • 11,549
  • 7
  • 68
  • 107
Syndo rik
  • 755
  • 1
  • 7
  • 15

3 Answers3

13

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

ignoring_gravity
  • 6,677
  • 4
  • 32
  • 65
11

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!
csaladenes
  • 1,100
  • 1
  • 11
  • 27
  • 1
    +1 It was great. I needed slight modification (`!black '/content/drive/MyDrive/YOUR_PATH/YOUR_NOTEBOOK.ipynb'`) as my path contained a folder that had a space in its name. – Imran Mar 25 '23 at 18:09
3

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.

:-)

Maciej Skorski
  • 2,303
  • 6
  • 14