def check_notebooks()

in utils/check_nb_kernel.py [0:0]


def check_notebooks(nb_path: str, k_tgts: Iterable[str], verbose: bool = False):
    """Check notebooks for valid kernelspec."""
    err_count = 0
    good_count = 0
    for nbook in _get_notebook_paths(nb_path):
        if ".ipynb_checkpoints" in str(nbook):
            continue
        try:
        	nb_obj = nbformat.read(str(nbook), as_version=4.0)
        except nbformat.reader.NotJSONError as err:
        	print(f"Error reading {nbook}\n{err}")
        	err_count += 1
        	continue
        kernelspec = nb_obj.get("metadata", {}).get("kernelspec", None)
        if not kernelspec:
            print("Error: no kernel information.")
            continue
        nb_ok = False
        for config in k_tgts:
            tgt_spec = IP_KERNEL_SPEC[config]
            for k_name, k_item in kernelspec.items():
                if tgt_spec[k_name] != k_item:
                    break
            else:
                nb_ok = True
        if not nb_ok:
            err_count += 1
            _print_nb_header(nbook)
            print("ERROR - Invalid kernelspec '" f"{kernelspec.get('name')}" "'")
            print("  ", kernelspec, "\n")
            continue
        if verbose:
            _print_nb_header(nbook)
            print(f"{kernelspec['name']} ok\n")
        good_count += 1
    print(f"{good_count} notebooks with no errors, {err_count} with errors")
    return good_count, err_count