flake8 checking for jupyter notebooks.
This tool is mainly aimed towards writing tutorials/lecture material, where one might also want to show off bad practices and/or errors, while still keeping the rest of the code clean and without adding the complexity of tooling to the readers (see docs on cell tags).
Basically this is a hack on the flake8's Application class,
which adds parsing and a cell based formatter for *.ipynb files.
This is NOT A PLUGIN but a stand alone CLI tool/pre-commit hook to be used instead of the flake8 command/hook.
- flake8 CLI tests for jupyter notebooks
- Full base functionality of
flake8and its plugins - Input cell based error formatting (Execution count/code cell count/total cellcount)
- Report fine tuning with cell-tags (
flake8-noqa-tagssee usage) - pre-commit hook
If you had a notebook with name example_notebook.ipynb, where the code cell
which was executed as 34th cell (In[34]) had the following code:
bad_formatted_dict = {"missing":"space"}running flake8_nb would result in the following output.
$ flake8_nb example_notebook.ipynb
example_notebook.ipynb#In[34]:1:31: E231 missing whitespace after ':'If you prefer the reports to show the cell number rather then the execution count you
can use the --notebook-cell-format option, given that the cell is the 5th code cell
and 10th total cell (taking raw and markdown cells into account),
you will get the following output.
$ flake8_nb --notebook-cell-format '{nb_path}:code_cell#{code_cell_count}' example_notebook.ipynb
example_notebook.ipynb:code_cell#5:1:31: E231 missing whitespace after ':'$ flake8_nb --notebook-cell-format '{nb_path}:cell#{total_cell_count}' example_notebook.ipynb
example_notebook.ipynb:cell#10:1:31: E231 missing whitespace after ':'- nbQA: Run isort, pyupgrade, mypy, pylint, flake8, mdformat, black, blacken-docs, and more on Jupyter Notebooks
Thanks goes to these wonderful people (emoji key):
Sebastian Weigand 💻 🤔 🚧 📆 🚇 |
Jt Miclat 🐛 |
Philipp Eisenhauer 🐛 |
Shoma Okamoto |
Marco Gorelli 🔧 📖 |
Tony Hirst 🤔 |
Dobatymo 🐛 |
Alp Arıbal 🐛 |
1kastner 🐛 |
Dominique Sydow 🐛 |
Liam Keegan 🐛 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!