def get_nbconvert_app(execute=False, kernel_name="", start=0, end=None) -> NbConvertApp: """Create""" # Load the user's nbconvert configuration app = NbConvertApp() app.load_config_file() app.config.update({ # This Preprocessor changes the pygments css prefixes # from .highlight to .highlight-ipynb "CSSHTMLHeaderPreprocessor": { "enabled": True, "highlight_class": ".highlight-ipynb", }, "SubCell": { "enabled": True, "start": start, "end": end }, "ExecutePreprocessor": { "enabled": execute, "store_widget_state": True, "kernel_name": kernel_name, "allow_errors": True, }, }) return app
def _get_config(default=None): """Load and return the user's nbconvert configuration """ config = Config(default) if default is not None else Config() app = NbConvertApp() app.load_config_file() _update_config(config, app.config) return config
def get_html_from_filepath(filepath, start=0, end=None, template=None): """Return the HTML from a Jupyter Notebook """ preprocessors_ = [SubCell] template_file = "basic" extra_loaders = [] if template: extra_loaders.append( jinja2.FileSystemLoader([os.path.dirname(template)])) template_file = os.path.basename(template) # Load the user's nbconvert configuration app = NbConvertApp() app.load_config_file() app.config.update({ # This Preprocessor changes the pygments css prefixes # from .highlight to .highlight-ipynb "CSSHTMLHeaderPreprocessor": { "enabled": True, "highlight_class": ".highlight-ipynb", }, "SubCell": { "enabled": True, "start": start, "end": end }, }) # Overwrite Custom jinja filters # This is broken right now so needs fix from below # https://github.com/jupyter/nbconvert/pull/877 filters = { "highlight_code": custom_highlight_code } exporter = HTMLExporter( config=app.config, template_file=template_file, extra_loaders=extra_loaders, filters=filters, preprocessors=preprocessors_, ) content, info = exporter.from_filename(filepath) # Fix for nbconvert bug # content = content.replace("<pre>", '<pre class="highlight highlight-ipynb">') # end-fix # Since we make a Markdown file we need to remove empty lines and strip content = "\n".join([line.rstrip() for line in content.split("\n") if line.rstrip()]) return content, info
def get_html_from_filepath(filepath, start=0, end=None, template=None, execute=False): """Return the HTML from a Jupyter Notebook """ preprocessors_ = [SubCell] template_file = "basic" extra_loaders = [] if template: extra_loaders.append( jinja2.FileSystemLoader([os.path.dirname(template)])) template_file = os.path.basename(template) # Load the user's nbconvert configuration app = NbConvertApp() app.load_config_file() app.config.update({ # This Preprocessor changes the pygments css prefixes # from .highlight to .highlight-ipynb "CSSHTMLHeaderPreprocessor": { "enabled": True, "highlight_class": ".highlight-ipynb", }, "SubCell": { "enabled": True, "start": start, "end": end }, # "ExecutePreprocessor": { # "enabled": execute, # "store_widget_state": True # } }) # Overwrite Custom jinja filters # This is broken right now so needs fix from below # https://github.com/jupyter/nbconvert/pull/877 # TODO: is this fixed and released? filters = { "highlight_code": custom_highlight_code, } exporter = HTMLExporter( config=app.config, template_file=template_file, preprocessors=preprocessors_, extra_loaders=extra_loaders, filters=filters, ) content, info = exporter.from_filename(filepath) return content, info
def nb2html(nb_path, start=0, end=None, execute=False, kernel_name=""): """Convert a notebook and return html""" logger.info(f"Convert notebook {nb_path}") # Load the user's nbconvert configuration app = NbConvertApp() app.load_config_file() app.config.update( { # This Preprocessor changes the pygments css prefixes # from .highlight to .highlight-ipynb "CSSHTMLHeaderPreprocessor": { "enabled": True, "highlight_class": ".highlight-ipynb", }, "SubCell": {"enabled": True, "start": start, "end": end}, "ExecutePreprocessor": { "enabled": execute, "store_widget_state": True, "kernel_name": kernel_name, }, } ) preprocessors_ = [SubCell] filters = { "highlight_code": custom_highlight_code, } template_file = "mkdocs_html/notebook.html.j2" # template_file = "lab/index.html.j2" exporter = HTMLExporter( config=app.config, template_file=template_file, # uncomment this line when new nbconvert is released # https://github.com/jupyter/nbconvert/pull/1429 extra_template_paths=[os.path.join(THIS_DIR, "templates")], preprocessors=preprocessors_, filters=filters, ) # Delete this block when nbconvert is released # https://github.com/jupyter/nbconvert/pull/1429 # exporter.template_paths.append(os.path.join(THIS_DIR, "templates")) # print(exporter.template_paths) # End block html, info = exporter.from_filename(nb_path) # HTML and CSS fixes # html = html_fixes(html, info, fix_css=True, ignore_css=False) return GENERATED_MD.format(html=html)
def get_html_from_filepath(filepath, start=0, end=None, template=None): """Return the HTML from a Jupyter Notebook """ preprocessors_ = [SubCell] template_file = "basic" extra_loaders = [] if template: extra_loaders.append( jinja2.FileSystemLoader([os.path.dirname(template)])) template_file = os.path.basename(template) # Load the user's nbconvert configuration app = NbConvertApp() app.load_config_file() app.config.update({ # This Preprocessor changes the pygments css prefixes # from .highlight to .highlight-ipynb "CSSHTMLHeaderPreprocessor": { "enabled": True, "highlight_class": ".highlight-ipynb", }, "SubCell": { "enabled": True, "start": start, "end": end }, }) # Overwrite Custom jinja filters # This is broken right now so needs fix from below # https://github.com/jupyter/nbconvert/pull/877 filters = {"highlight_code": custom_highlight_code} exporter = HTMLExporter( config=app.config, template_file=template_file, extra_loaders=extra_loaders, filters=filters, preprocessors=preprocessors_, ) content, info = exporter.from_filename(filepath) # Fix for nbconvert bug content = content.replace("<pre>", '<pre class="highlight highlight-ipynb">') # end-fix # Since we make a Markdown file we need to remove empty lines and strip content = "\n".join( [line.strip() for line in content.split("\n") if line.strip()]) return content, info
def get_config(): """Load and return the user's nbconvert configuration """ app = NbConvertApp() app.load_config_file() return app.config