Spaces:
Runtime error
Runtime error
| import os.path, re, nbformat, jupyter_contrib_nbextensions | |
| from nbconvert.preprocessors import Preprocessor | |
| from nbconvert import HTMLExporter | |
| from traitlets.config import Config | |
| from pathlib import Path | |
| __all__ = ['read_nb', 'convert_nb', 'convert_all'] | |
| exporter = HTMLExporter(Config()) | |
| exporter.exclude_input_prompt=True | |
| exporter.exclude_output_prompt=True | |
| #Loads the template to deal with hidden cells. | |
| exporter.template_file = 'jekyll.tpl' | |
| path = Path(__file__).parent | |
| exporter.template_path.append(str(path)) | |
| def read_nb(fname): | |
| "Read the notebook in `fname`." | |
| with open(fname,'r') as f: return nbformat.reads(f.read(), as_version=4) | |
| def convert_nb(fname, dest_path='.'): | |
| "Convert a notebook `fname` to html file in `dest_path`." | |
| from .gen_notebooks import remove_undoc_cells, remove_code_cell_jupyter_widget_state_elem | |
| nb = read_nb(fname) | |
| nb['cells'] = remove_undoc_cells(nb['cells']) | |
| nb['cells'] = remove_code_cell_jupyter_widget_state_elem(nb['cells']) | |
| fname = Path(fname).absolute() | |
| dest_name = fname.with_suffix('.html').name | |
| meta = nb['metadata'] | |
| meta_jekyll = meta['jekyll'] if 'jekyll' in meta else {'title': fname.with_suffix('').name} | |
| meta_jekyll['nb_path'] = f'{fname.parent.name}/{fname.name}' | |
| with open(f'{dest_path}/{dest_name}','w') as f: | |
| f.write(exporter.from_notebook_node(nb, resources=meta_jekyll)[0]) | |
| def convert_all(folder, dest_path='.', force_all=False): | |
| "Convert modified notebooks in `folder` to html pages in `dest_path`." | |
| path = Path(folder) | |
| changed_cnt = 0 | |
| for fname in path.glob("*.ipynb"): | |
| # only rebuild modified files | |
| fname_out = Path(dest_path)/fname.with_suffix('.html').name | |
| if not force_all and fname_out.exists(): | |
| in_mod = os.path.getmtime(fname) | |
| out_mod = os.path.getmtime(fname_out) | |
| if in_mod < out_mod: continue | |
| print(f"converting: {fname} => {fname_out}") | |
| changed_cnt += 1 | |
| convert_nb(fname, dest_path=dest_path) | |
| if not changed_cnt: print("No notebooks were modified") | |