Source code for jupyterlab_autoversion.extension

from notebook.utils import url_path_join


[docs]def load_jupyter_server_extension(nb_server_app): """ Called when the extension is loaded. Args: nb_server_app (NotebookWebApplication): handle to the Notebook webserver instance. """ web_app = nb_server_app.web_app base_url = web_app.settings['base_url'] host_pattern = '.*$' backend = nb_server_app.config.get('JupyterLabAutoversion', {}).get('backend', 'git') if backend not in ('git', 's3', 'sql'): raise Exception('jupyterlab_autoversion backend not recognized: {}'.format(backend)) if backend == 's3': from .storage.s3 import initialize elif backend == 'sql': from .storage.sql import initialize else: from .storage.git import initialize hook, handlers = initialize(nb_server_app) print('Installing jupyterlab_autoversion handler on path %s' % url_path_join(base_url, 'autoversion')) web_app.add_handlers(host_pattern, handlers) if callable(nb_server_app.contents_manager.pre_save_hook): # grab existing hook, and add on top temp_hook = nb_server_app.contents_manager.pre_save_hook def _hook(*args, **kwargs): temp_hook(*args, **kwargs) hook(*args, **kwargs) nb_server_app.contents_manager.pre_save_hook = _hook else: nb_server_app.contents_manager.pre_save_hook = hook