mirror of
https://github.com/jupyter/notebook.git
synced 2025-02-17 12:39:54 +08:00
Server extensions dict,
and formatted output
This commit is contained in:
parent
e8dd95f41d
commit
24d95a5d62
@ -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()
|
||||
|
@ -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):
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user