Query, run, and clean Jupyter notebooks (name is inspired by "jq
for Jupyter")
pip install juq.py
Slice/Filter cells:
juq cells --help
# Usage: juq cells [OPTIONS] CELLS_SLICE [NB_PATH]
#
# Slice/Filter cells.
#
# Options:
# -m, --metadata / -M, --no-metadata
# Explicitly include or exclude each cell's
# "metadata" key. If only `-m` is passed, only
# the "metadata" value of each cell is printed
# -o, --outputs / -O, --no-outputs
# Explicitly include or exclude each cell's
# "outputs" key. If only `-o` is passed, only
# the "outputs" value of each cell is printed
# -s, --source / -S, --no-source Explicitly include or exclude each cell's
# "source" key. If only `-s` is passed, the
# source is printed directly (not as JSON)
# -t, --cell-type TEXT Only print cells of this type. Recognizes
# abbreviations: "c" for "code", {"m","md"}
# for "markdown", "r" for "raw"
# --help Show this message and exit.
Merge consecutive "stream" outputs (e.g. stderr):
juq merge-outputs --help
# Usage: juq merge-outputs [OPTIONS] [NB_PATH]
#
# Merge consecutive "stream" outputs (e.g. stderr).
#
# Options:
# -a, --ensure-ascii Octal-escape non-ASCII characters in JSON
# output
# -i, --in-place Modify [NB_PATH] in-place
# -I, --keep-ids Keep cell ids
# -n, --indent INTEGER Indentation level for the output notebook
# JSON (default: infer from input)
# -o, --out-path TEXT Write to this file instead of stdout
# -t, --trailing-newline / -T, --no-trailing-newline
# Enforce presence or absence of a trailing
# newline (default: match input)
# --help Show this message and exit.
e.g.:
juq merge-outputs -i notebook.ipynb
Useful for situations like:
As of nbconvert#2089, this should be redundant with:
jupyter nbconvert --coalesce-streams --inplace notebook.ipynb
juq papermill clean --help
# Usage: juq papermill clean [OPTIONS] [NB_PATH]
#
# Remove Papermill metadata from a notebook.
#
# Removes `.metadata.papermill` and
# `.cells[*].metadata.{papermill,execution,widgets}`.
#
# Options:
# -a, --ensure-ascii Octal-escape non-ASCII characters in JSON
# output
# -i, --in-place Modify [NB_PATH] in-place
# -I, --keep-ids Keep cell ids
# -n, --indent INTEGER Indentation level for the output notebook
# JSON (default: infer from input)
# -o, --out-path TEXT Write to this file instead of stdout
# -t, --trailing-newline / -T, --no-trailing-newline
# Enforce presence or absence of a trailing
# newline (default: match input)
# --help Show this message and exit.
juq papermill run --help
# Usage: juq papermill run [OPTIONS] [NB_PATH]
#
# Run a notebook using Papermill, clean nondeterministic metadata, normalize
# output streams.
#
# Options:
# -p, --parameter TEXT "<k>=<v>" variable to set, while executing
# the notebook
# -a, --ensure-ascii Octal-escape non-ASCII characters in JSON
# output
# -i, --in-place Modify [NB_PATH] in-place
# -I, --keep-ids Keep cell ids
# -n, --indent INTEGER Indentation level for the output notebook
# JSON (default: infer from input)
# -o, --out-path TEXT Write to this file instead of stdout
# -t, --trailing-newline / -T, --no-trailing-newline
# Enforce presence or absence of a trailing
# newline (default: match input)
# --help Show this message and exit.