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
flake8
and its plugins - Input cell based error formatting (Execution count/code cell count/total cellcount)
- Report fine tuning with cell-tags (
flake8-noqa-tags
see 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!