Known limitations
By default, nbQA will skip cells with invalid syntax.
If you choose to process cells with invalid syntax via the --nbqa-dont-skip-bad-cells flag (see configuration),
then the following will still not be processed:
cells with multi-line magics;
automagics (ideas for how to detect them statically are welcome!);
cells with code which
IPythonwould transform magics into (e.g.get_ipython().system('ls')).
Because nbQA converts the code cells in Jupyter notebooks to temporary Python files for linting, certain flags like flake8’s
--per-file-ignores don’t work perfectly.
The temporary Python files will not match the specified file patterns and ignored error codes will still
surface (GH issue).
nbqa-generated temporary files will contain the string nbqa_ipynb,
so you can still apply per-file-ignores if you add an additional pattern:
[flake8]
per-file-ignores =
examples/*.ipynb: E402
examples/*nbqa_ipynb.py: E402
The directory and the stem of the filename are preserved, so e.g. path/to/mynotebook.ipynb will be path/to/mynotebook{randomstring}_nbqa_ipynb.py when nbqa passes it to the linter.
Any other limitation is likely unintentional - if you run into any, please do report an issue.