mirror of
https://github.com/jupyter/notebook.git
synced 2024-12-21 04:10:17 +08:00
Add command-line interface to enable/disable nbextensions
i.e. to enable cite2c, you'd use `jupyter nbextension enable cite2c/main`. Open questions: 1. Should these commands accept multiple extension names in one call? nbextension install currently doesn't, so there's a symmetry argument, but it would be easy to handle more than one if necessary. 2. Especially for disable, should it give an error if you try to disable something that's not enabled? Currently it will just pass silently. Enable could also fail if it's already enabled, but that seems less useful.
This commit is contained in:
parent
1c3db62b95
commit
29fabd3c16
@ -24,6 +24,7 @@ from jupyter_core.paths import jupyter_data_dir, jupyter_path, SYSTEM_JUPYTER_PA
|
||||
from ipython_genutils.path import ensure_dir_exists
|
||||
from ipython_genutils.py3compat import string_types, cast_unicode_py2
|
||||
from ipython_genutils.tempdir import TemporaryDirectory
|
||||
from notebook.services.config import ConfigManager
|
||||
from ._version import __version__
|
||||
|
||||
class ArgumentConflict(ValueError):
|
||||
@ -316,6 +317,57 @@ class InstallNBExtensionApp(JupyterApp):
|
||||
print(str(e), file=sys.stderr)
|
||||
self.exit(1)
|
||||
|
||||
|
||||
class EnableNBExtensionApp(JupyterApp):
|
||||
name = "jupyter nbextension enable"
|
||||
version = __version__
|
||||
description = "Configure an nbextension to be automatically loaded"
|
||||
|
||||
section = Unicode('notebook', config=True,
|
||||
help=("Which config section to add the extension to. "
|
||||
"'common' will affect all pages.")
|
||||
)
|
||||
|
||||
aliases = {'section': 'EnableNBExtensionApp.section',
|
||||
}
|
||||
|
||||
def enable_nbextension(self, name):
|
||||
cm = ConfigManager(parent=self, config=self.config)
|
||||
cm.update(self.section, {"load_extensions": {name: True}})
|
||||
|
||||
def start(self):
|
||||
if not self.extra_args:
|
||||
self.print_help()
|
||||
sys.exit('No extensions specified')
|
||||
|
||||
self.enable_nbextension(self.extra_args[0])
|
||||
|
||||
|
||||
class DisableNBExtensionApp(JupyterApp):
|
||||
name = "jupyter nbextension disable"
|
||||
version = __version__
|
||||
description = "Remove the configuration to automatically load an extension"
|
||||
|
||||
section = Unicode('notebook', config=True,
|
||||
help=("Which config section to remove the extension from. "
|
||||
"This should match the one it was previously added to.")
|
||||
)
|
||||
|
||||
aliases = {'section': 'DisableNBExtensionApp.section',
|
||||
}
|
||||
|
||||
def disable_nbextension(self, name):
|
||||
cm = ConfigManager(parent=self, config=self.config)
|
||||
# We're using a dict as a set - updating with None removes the key
|
||||
cm.update(self.section, {"load_extensions": {name: None}})
|
||||
|
||||
def start(self):
|
||||
if not self.extra_args:
|
||||
self.print_help()
|
||||
sys.exit('No extensions specified')
|
||||
|
||||
self.disable_nbextension(self.extra_args[0])
|
||||
|
||||
class NBExtensionApp(JupyterApp):
|
||||
name = "jupyter nbextension"
|
||||
version = __version__
|
||||
@ -325,6 +377,8 @@ class NBExtensionApp(JupyterApp):
|
||||
install=(InstallNBExtensionApp,
|
||||
"""Install notebook extensions"""
|
||||
),
|
||||
enable=(EnableNBExtensionApp, "Enable a notebook extension"),
|
||||
disable=(DisableNBExtensionApp, "Disable a notebook extension"),
|
||||
)
|
||||
|
||||
def start(self):
|
||||
|
Loading…
Reference in New Issue
Block a user