Server extensions dict,

and formatted output
This commit is contained in:
Jonathan Frederic 2016-02-26 07:45:22 -08:00
parent e8dd95f41d
commit 24d95a5d62
3 changed files with 48 additions and 26 deletions

View File

@ -604,7 +604,8 @@ class ListNBExtensionsApp(BaseNBExtensionApp):
self.log.info(' {} section'.format(section))
load_extensions = data['load_extensions']
[self.log.info(' {1} {0}'.format(x, GREEN_CHECK if load_extensions[x] else RED_EX)) for x in load_extensions]
for x in load_extensions:
self.log.info(' {1} {0}'.format(x, GREEN_CHECK if load_extensions[x] else RED_EX))
def start(self):
self.list_nbextensions()

View File

@ -823,9 +823,18 @@ class NotebookApp(JupyterApp):
self.config.FileContentsManager.root_dir = new
self.config.MappingKernelManager.root_dir = new
# TODO: Remove me in notebook 5.0
server_extensions = List(Unicode(), config=True,
help=("Python modules to load as notebook server extensions. "
"This is an experimental API, and may change in future releases.")
help=("DEPRECATED use the nbserver_extensions dict instead")
)
def _server_extensions_changed(self, name, old, new):
self.log.warning("server_extensions is deprecated, use nbserver_extensions")
self.server_extensions = new
nbserver_extensions = Dict({}, config=True,
help=("Dict of Python modules to load as notebook server extensions."
"Entry values can be used to enable and disable the loading of"
"the extensions.")
)
reraise_server_extension_failures = Bool(
@ -1064,17 +1073,26 @@ class NotebookApp(JupyterApp):
The extension API is experimental, and may change in future releases.
"""
# TODO: Remove me in notebook 5.0
for modulename in self.server_extensions:
try:
mod = importlib.import_module(modulename)
func = getattr(mod, 'load_jupyter_server_extension', None)
if func is not None:
func(self)
except Exception:
if self.reraise_server_extension_failures:
raise
self.log.warning("Error loading server extension %s", modulename,
exc_info=True)
# Don't override disable state of the extension if it already exist
# in the new traitlet
if not modulename in self.nbserver_extensions:
self.nbserver_extensions[modulename] = True
for modulename in self.nbserver_extensions:
if self.nbserver_extensions[modulename]:
try:
mod = importlib.import_module(modulename)
func = getattr(mod, 'load_jupyter_server_extension', None)
if func is not None:
func(self)
except Exception:
if self.reraise_server_extension_failures:
raise
self.log.warning("Error loading server extension %s", modulename,
exc_info=True)
@catch_config_error
def initialize(self, argv=None):

View File

@ -76,18 +76,18 @@ class ToggleServerExtensionApp(ToggleNBExtensionApp):
cfg = cm.get("jupyter_notebook_config")
server_extensions = (
cfg.setdefault("NotebookApp", {})
.setdefault("server_extensions", [])
.setdefault("nbserver_extensions", {})
)
if self._toggle_value:
if require not in server_extensions:
server_extensions.append(require)
server_extensions[require] = True
else:
if self._toggle_value is None:
if require not in server_extensions:
print("server extension not installed")
else:
server_extensions[require] = not server_extensions[require]
else:
print("server extension already enabled")
elif self._toggle_value is None:
if require not in server_extensions:
print("server extension already disabled")
else:
server_extensions.remove(require)
server_extensions[require] = False
cm.update("jupyter_notebook_config", cfg)
def toggle_server_extension_python(self, package):
@ -121,7 +121,7 @@ class DisableServerExtensionApp(ToggleServerExtensionApp):
name = "jupyter serverextension disable"
description = "Disable an serverextension using frontend configuration files."
_toggle_value = None
_toggle_value = False
class ListServerExtensionsApp(BaseNBExtensionApp):
@ -131,6 +131,9 @@ class ListServerExtensionsApp(BaseNBExtensionApp):
description = "List all server extensions known by the configuration system"
def list_server_extensions(self):
GREEN_CHECK = '\033[92m✔\033[0m'
RED_EX = '\033[91m❌\033[0m'
config_dirs = jupyter_config_path()
for config_dir in config_dirs:
self.log.info('config dir: {}'.format(config_dir))
@ -138,10 +141,10 @@ class ListServerExtensionsApp(BaseNBExtensionApp):
data = cm.get("jupyter_notebook_config")
server_extensions = (
data.setdefault("NotebookApp", {})
.setdefault("server_extensions", [])
.setdefault("nbserver_extensions", {})
)
if server_extensions:
self.log.info(' {}'.format(server_extensions))
for x in server_extensions:
self.log.info(' {1} {0}'.format(x, GREEN_CHECK if server_extensions[x] else RED_EX))
def start(self):
self.list_server_extensions()