in tools/tensorflow_docs/tools/nbfmt/__main__.py [0:0]
def clean_root(data: Dict[str, Any], filepath: pathlib.Path) -> None:
"""Deletes extra top-level notebook fields and metadata.
Jupyter format spec:
https://nbformat.readthedocs.io/en/latest/format_description.html
Args:
data: object representing a parsed JSON notebook.
filepath: String of notebook filepath passed to the command-line.
"""
# These top-level fields are required:
notebook_utils.del_entries_except(
data, keep=["cells", "metadata", "nbformat_minor", "nbformat"])
# All metadata is optional according to spec, but we use some of it.
notebook_utils.del_entries_except(
data["metadata"], keep=["accelerator", "colab", "kernelspec"])
metadata = data.get("metadata", {})
colab = metadata.get("colab", {})
# Set top-level notebook defaults.
data["nbformat"] = 4
data["nbformat_minor"] = 0
# Colab metadata
notebook_utils.del_entries_except(
colab, keep=["collapsed_sections", "name", "toc_visible"])
colab["name"] = os.path.basename(filepath)
colab["toc_visible"] = True
metadata["colab"] = colab
# Kernelspec metadata
kernelspec = metadata.get("kernelspec", {})
notebook_utils.del_entries_except(kernelspec, keep=["display_name", "name"])
supported_kernels = {"python3": "Python 3", "swift": "Swift"}
kernel_name = kernelspec.get("name")
if kernel_name not in supported_kernels:
kernel_name = "python3" # Notebook defaults to Python3 (same as Colab).
kernelspec["name"] = kernel_name
kernelspec["display_name"] = supported_kernels[kernel_name]
metadata["kernelspec"] = kernelspec
data["metadata"] = metadata