3

Is it possible to have jupyter nbconvert ... --to script ignore markdown cells rather than convert them to comments?

I'm asking because I want to use flake8 to check the Python code that's generated but I don't want to include the markdown cells (for example, because they are often long lines, and I don't want flake8 to complain about them).

DavidC
  • 1,409
  • 10
  • 25

3 Answers3

3

There is the command line argument PythonExporter.exclude_markdown that does what you want. To get a list of pep8 errors that just look at the code cells, I run

jupyter nbconvert my_notebook.ipynb --stdout --to python --PythonExporter.exclude_markdown=True | flake8 - --ignore=W391
Damien Martin
  • 132
  • 1
  • 9
1

This seems to work:

Create a template strip_markdown.tpl

## remove markdown cells
{% extends 'python.tpl'%}
{% block markdowncell -%}
{% endblock markdowncell %}

jupyter nbconvert my_notebook.ipynb --to python --template=strip_markdown.tpl

DavidC
  • 1,409
  • 10
  • 25
0

I'm asking because I want to use flake8 to check the Python code that's generated

You can do this directly with nbqa :

$ nbqa flake8 my_notebook.ipynb --extend-ignore=E203,E302,E305,E703
my_notebook.ipynb:cell_3:1:1: F401 'import pandas as pd' imported but unused

It also works as a pre-commit hook, see https://nbqa.readthedocs.io/en/latest/pre-commit.html

ignoring_gravity
  • 6,677
  • 4
  • 32
  • 65