processors

Some processors for NBProcessor

On this page we’ll be using this private helper to process a notebook and return the results, to simplify testing:

def _run_procs(procs=None, return_nb=False, path=_test_file):
    nbp = NBProcessor(path, procs)
    nbp.process()
    if return_nb: return nbp.nb
    return '\n'.join([str(cell) for cell in nbp.nb.cells])

source

populate_language


def populate_language(
    nb
):

Set cell language based on NB metadata and magics


source

insert_warning


def insert_warning(
    nb
):

Insert Autogenerated Warning Into Notebook after the first cell.

This preprocessor inserts a warning in the markdown destination that the file is autogenerated. This warning is inserted in the second cell so we do not interfere with front matter.

res = _run_procs(insert_warning)
assert "<!-- WARNING: THIS FILE WAS AUTOGENERATED!" in res
L('foo', None, 'a').filter(lambda x:x == 1)
_tstre = re.compile('a')

source

add_show_docs


def add_show_docs(
    nb
):

Add show_doc cells after exported cells, unless they are already documented


source

cell_lang


def cell_lang(
    cell
):
res = _run_procs([populate_language, add_show_docs])
assert "show_doc(some_func)'" in res
assert "show_doc(and_another)'" in res
assert "show_doc(another_func)'" not in res

source

fdiv


def fdiv(
    attrs:str=''
):

Create a fenced div markdown cell in quarto

a = fdiv('.py-2')
test_eq(a.cell_type, 'markdown')
test_eq(a.source, '::: {.py-2}')

source

boxify


def boxify(
    cells
):

Add a box around cells


source

mv_exports


def mv_exports(
    nb
):

Move exports cells to after the show_doc


source

add_fold


def add_fold(
    cell
):

Add code-fold to exports cells

res = _run_procs(add_fold)
assert "#| code-fold: show" in res

Gets rid of colors that are streamed from standard out, which can interfere with static site generators:


source

strip_ansi


def strip_ansi(
    cell
):

Strip Ansi Characters.

res = _run_procs(strip_ansi)
assert not _re_ansi_escape.findall(res)

source

strip_hidden_metadata


def strip_hidden_metadata(
    cell
):

Strips “hidden” metadata property from code cells so it doesn’t interfere with docs rendering


source

hide_


def hide_(
    cell
):

Hide cell from output

res = _run_procs(hide_)
assert 'you will not be able to see this cell at all either' not in res

source

hide_line


def hide_line(
    cell
):

Hide lines of code in code cells with the directive hide_line at the end of a line of code

res = _run_procs(hide_line)
assert r"def show():\n    a = 2\n    b = 3" not in res
assert r"def show():\n    a = 2"                in res

source

filter_stream_


def filter_stream_(
    cell, words:VAR_POSITIONAL
):

Remove output lines containing any of words in cell stream output

res = _run_procs(filter_stream_)
exp=r"'A line\n', 'Another line.\n'"
assert exp in res

source

ai_magics


def ai_magics(
    cell
):

A preprocessor to convert AI magics to markdown

res = _run_procs(ai_magics)
assert "'source': 'This is a test.'" in res

source

clean_magics


def clean_magics(
    cell
):

A preprocessor to remove cell magic commands

res = _run_procs(clean_magics)
assert "%%" not in res

source

rm_header_dash


def rm_header_dash(
    cell
):

Remove headings that end with a dash -

res = _run_procs(rm_header_dash)
assert 'some words' in res
assert 'A heading to Hide' not in res
assert 'Yet another heading to hide' not in res

source

rm_export


def rm_export(
    cell
):

Remove cells that are exported or hidden

res = _run_procs(rm_export)
assert 'dontshow' not in res

source

clean_show_doc


def clean_show_doc(
    cell
):

Remove ShowDoc input cells


source

exec_show_docs


def exec_show_docs(
    nb
):

Execute cells needed for show_docs output, including exported cells and imports

res = _run_procs([add_show_docs, exec_show_docs])
assert res

source

FilterDefaults


def FilterDefaults(
    args:VAR_POSITIONAL, kwargs:VAR_KEYWORD
):

Override FilterDefaults to change which notebook processors are used