Skip to content

Commit b9bbb5c

Browse files
committed
Add support for AsyncMappingKernelManager
Supports running against incompatible jupyter_client so long as the desired kernel_manager_class is not `AsyncMappingKernelManager`.
1 parent aea262d commit b9bbb5c

File tree

4 files changed

+347
-122
lines changed

4 files changed

+347
-122
lines changed

notebook/notebookapp.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
except ImportError: #PY2
3838
from base64 import encodestring as encodebytes
3939

40-
4140
from jinja2 import Environment, FileSystemLoader
4241

4342
from notebook.transutils import trans, _
@@ -78,7 +77,7 @@
7877

7978
from .base.handlers import Template404, RedirectWithParams
8079
from .log import log_request
81-
from .services.kernels.kernelmanager import MappingKernelManager
80+
from .services.kernels.kernelmanager import MappingKernelManager, AsyncMappingKernelManager, MappingKernelManagerBase
8281
from .services.config import ConfigManager
8382
from .services.contents.manager import ContentsManager
8483
from .services.contents.filemanager import FileContentsManager
@@ -1138,6 +1137,7 @@ def _update_mathjax_config(self, change):
11381137

11391138
kernel_manager_class = Type(
11401139
default_value=MappingKernelManager,
1140+
klass=MappingKernelManagerBase,
11411141
config=True,
11421142
help=_('The kernel manager class to use.')
11431143
)
@@ -1349,6 +1349,13 @@ def init_configurables(self):
13491349
connection_dir=self.runtime_dir,
13501350
kernel_spec_manager=self.kernel_spec_manager,
13511351
)
1352+
# Ensure the appropriate jupyter_client is in place.
1353+
# TODO: remove once dependencies are updated.
1354+
if isinstance(self.kernel_manager, AsyncMappingKernelManager):
1355+
if not hasattr(self.kernel_manager, 'list_kernel_ids'):
1356+
raise RuntimeError("Using `AsyncMappingKernelManager` without an appropriate "
1357+
"jupyter_client installed! Upgrade jupyter_client and try again.")
1358+
13521359
self.contents_manager = self.contents_manager_class(
13531360
parent=self,
13541361
log=self.log,

0 commit comments

Comments
 (0)