def clean_root()

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