Source code for nbpresent.install

#!/usr/bin/env python

import argparse
import os
# import subprocess
from os.path import (
    abspath,
    dirname,
    exists,
    join,
)
from pprint import pprint
try:
    from inspect import signature
except ImportError:
    from funcsigs import signature

from jupyter_core.paths import jupyter_config_dir  # , ENV_CONFIG_PATH


[docs]def install(enable=False, **kwargs): """Install the nbpresent nbextension assets and optionally enables the nbextension and server extension for every run. Parameters ---------- enable: bool Enable the extension on every notebook launch **kwargs: keyword arguments Other keyword arguments passed to the install_nbextension command """ from notebook.nbextensions import install_nbextension from notebook.services.config import ConfigManager directory = join(dirname(abspath(__file__)), 'static', 'nbpresent') kwargs = {k: v for k, v in kwargs.items() if not (v is None)} kwargs["destination"] = "nbpresent" install_nbextension(directory, **kwargs) if enable: path = jupyter_config_dir() if "prefix" in kwargs: path = join(kwargs["prefix"], "etc", "jupyter") if not exists(path): print("Making directory", path) os.makedirs(path) cm = ConfigManager(config_dir=path) print("Enabling nbpresent server component in", cm.config_dir) cfg = cm.get("jupyter_notebook_config") print("Existing config...") pprint(cfg) server_extensions = ( cfg.setdefault("NotebookApp", {}) .setdefault("server_extensions", []) ) if "nbpresent" not in server_extensions: cfg["NotebookApp"]["server_extensions"] += ["nbpresent"] cm.update("jupyter_notebook_config", cfg) print("New config...") pprint(cm.get("jupyter_notebook_config")) _jupyter_config_dir = jupyter_config_dir() # try: # subprocess.call(["conda", "info", "--root"]) # print("conda detected") # _jupyter_config_dir = ENV_CONFIG_PATH[0] # except OSError: # print("conda not detected") cm = ConfigManager(config_dir=join(_jupyter_config_dir, "nbconfig")) print( "Enabling nbpresent nbextension at notebook launch in", cm.config_dir ) if not exists(cm.config_dir): print("Making directory", cm.config_dir) os.makedirs(cm.config_dir) cm.update( "notebook", { "load_extensions": { "nbpresent/nbpresent.min": True }, } )
if __name__ == '__main__': from notebook.nbextensions import install_nbextension install_kwargs = list(signature(install_nbextension).parameters) parser = argparse.ArgumentParser( description="Installs nbpresent nbextension") parser.add_argument( "-e", "--enable", help="Automatically load server and nbextension on notebook launch", action="store_true") default_kwargs = dict( action="store", nargs="?" ) store_true_kwargs = dict(action="store_true") store_true = ["symlink", "overwrite", "quiet", "user"] [parser.add_argument( "--{}".format(arg), **(store_true_kwargs if arg in store_true else default_kwargs) ) for arg in install_kwargs] install(**parser.parse_args().__dict__)