/nbQA

Run any standard Python code quality tool on a Jupyter Notebook

Primary LanguagePythonMIT LicenseMIT

nbQA

Run any standard Python code quality tool on a Jupyter Notebook

tox codecov pre-commit

versions chat docs

demo

Table of contents

πŸŽ‰ Installation

In your virtual environment, run one of the following:

  • python -m pip install -U nbqa (minimal installation)
  • python -m pip install -U nbqa[toolchain] (install supported code quality tools as well)
  • conda install -c conda-forge nbqa (if you use conda)

πŸš€ Examples

Command-line

Reformat your notebooks with black:

$ nbqa black my_notebook.ipynb --nbqa-mutate
reformatted my_notebook.ipynb
All done! ✨ 🍰 ✨
1 files reformatted.

Sort your imports with isort:

$ nbqa isort my_notebook.ipynb --nbqa-mutate
Fixing my_notebook.ipynb

Upgrade your syntax with pyupgrade:

$ nbqa pyupgrade my_notebook.ipynb --py36-plus --nbqa-mutate
Rewriting my_notebook.ipynb

See command-line examples for examples involving pylint, flake8, doctest, and mypy.

Pre-commit

Here's an example of how to set up some pre-commit hooks:

  1. Put this in your pyproject.toml file (see configuration for details)

    [tool.nbqa.mutate]
    isort = 1
    black = 1
    pyupgrade = 1
    
    [tool.nbqa.addopts]
    pyupgrade = ["--py36-plus"]
  2. Put this in your .pre-commit-config.yaml file (see usage as pre-commit hook)

    - repo: https://github.com/nbQA-dev/nbQA
      rev: 0.4.1
      hooks:
        - id: nbqa-black
          additional_dependencies: [black==20.8b1]
        - id: nbqa-pyupgrade
          additional_dependencies: [pyupgrade==2.7.3]
        - id: nbqa-isort
          additional_dependencies: [isort==5.6.4]

πŸ₯³ Used by

Take some inspiration from their config files πŸ˜‰

πŸ’¬ Testimonials

Michael Kennedy & Brian Okken, hosts of the Python Bytes podcast:

This is really cool. I think it brings so much of the code formatting and code analysis, clean up to notebooks, which I think had been really lacking

Nikita Sobolev, CTO at wemake.services:

It is amazing!

Alex Andorra, Data Scientist, ArviZ & PyMC Dev, Host of 'Learning Bayesian Statistics' Podcast:

well done on nbqa @MarcoGorelli ! Will be super useful in CI

Matthew Feickert Postdoc at University of Illinois working on LHC physics:

nbqa in your pre-commit hooks along with @codewithanthony 's pre-commit CI service is amazing! Everyone using Jupyter notebooks should be doing this.

Girish Pasupathy, Software engineer and now core-contributor:

thanks a lot for your effort to create such a useful tool

πŸ‘₯ Contributing

I will give write-access to anyone who makes a useful pull request - see the contributing guide for details on how to do so.

Thanks goes to these wonderful people (emoji key):


Marco Gorelli

πŸ’» 🚧 πŸ‘€ ⚠️ πŸ€”

Sebastian Weigand

πŸ”§ πŸ‘€ πŸ“– πŸ€”

Girish Pasupathy

πŸ’» πŸš‡ πŸ› πŸ‘€ πŸ€”

fcatus

πŸš‡

HD23me

πŸ›

mani

πŸ€” πŸš‡

Daniel Mietchen

πŸ€”

MichaΕ‚ Gacka

πŸ›

Happy

πŸ“–

Nat Taylor

πŸ€” πŸ’» πŸ”§ πŸ›

Caio Ariede

πŸ“–

Nikita Sobolev

πŸ€” πŸ› πŸ“–

Amichay Oren

πŸ€”

pylang

πŸ€”

Henry Schreiner

πŸ›

This project follows the all-contributors specification. Contributions of any kind welcome!