Forked from masnick/jupyter_notebook_config.py
Last active
September 11, 2018 03:17
-
-
Save aculich/e5a7b20fef31dcba88b3e8f39973b06b to your computer and use it in GitHub Desktop.
jupyter notebook script_post_save
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Based off of https://github.com/jupyter/notebook/blob/master/docs/source/extending/savehooks.rst | |
import io | |
import os | |
from notebook.utils import to_api_path | |
_script_exporter = None | |
_html_exporter = None | |
def script_post_save(model, os_path, contents_manager, **kwargs): | |
"""convert notebooks to Python script after save with nbconvert | |
replaces `ipython notebook --script` | |
""" | |
from nbconvert.exporters.script import ScriptExporter | |
from nbconvert.exporters.html import HTMLExporter | |
if model['type'] != 'notebook': | |
return | |
global _script_exporter | |
if _script_exporter is None: | |
_script_exporter = ScriptExporter(parent=contents_manager) | |
log = contents_manager.log | |
global _html_exporter | |
if _html_exporter is None: | |
_html_exporter = HTMLExporter(parent=contents_manager) | |
log = contents_manager.log | |
# save .py file | |
base, ext = os.path.splitext(os_path) | |
script, resources = _script_exporter.from_filename(os_path) | |
script_fname = base + resources.get('output_extension', '.txt') | |
log.info("Saving script /%s", to_api_path(script_fname, contents_manager.root_dir)) | |
with io.open(script_fname, 'w', encoding='utf-8') as f: | |
f.write(script) | |
# save html | |
base, ext = os.path.splitext(os_path) | |
script, resources = _html_exporter.from_filename(os_path) | |
script_fname = base + resources.get('output_extension', '.txt') | |
log.info("Saving html /%s", to_api_path(script_fname, contents_manager.root_dir)) | |
with io.open(script_fname, 'w', encoding='utf-8') as f: | |
f.write(script) | |
c.FileContentsManager.post_save_hook = script_post_save |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment