Skip to content

Commit 726c2ea

Browse files
kevin-batestoonijn
authored andcommitted
Add support for AsyncMappingKernelManager
Supports running against incompatible jupyter_client so long as the desired kernel_manager_class is not `AsyncMappingKernelManager`.
1 parent f2d6c11 commit 726c2ea

File tree

4 files changed

+349
-123
lines changed

4 files changed

+349
-123
lines changed

notebook/notebookapp.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575

7676
from .base.handlers import Template404, RedirectWithParams
7777
from .log import log_request
78-
from .services.kernels.kernelmanager import MappingKernelManager
78+
from .services.kernels.kernelmanager import MappingKernelManager, AsyncMappingKernelManager, MappingKernelManagerBase
7979
from .services.config import ConfigManager
8080
from .services.contents.manager import ContentsManager
8181
from .services.contents.filemanager import FileContentsManager
@@ -1177,6 +1177,7 @@ def _update_mathjax_config(self, change):
11771177

11781178
kernel_manager_class = Type(
11791179
default_value=MappingKernelManager,
1180+
klass=MappingKernelManagerBase,
11801181
config=True,
11811182
help=_('The kernel manager class to use.')
11821183
)
@@ -1380,6 +1381,13 @@ def init_configurables(self):
13801381
connection_dir=self.runtime_dir,
13811382
kernel_spec_manager=self.kernel_spec_manager,
13821383
)
1384+
# Ensure the appropriate jupyter_client is in place.
1385+
# TODO: remove once dependencies are updated.
1386+
if isinstance(self.kernel_manager, AsyncMappingKernelManager):
1387+
if not hasattr(self.kernel_manager, 'list_kernel_ids'):
1388+
raise RuntimeError("Using `AsyncMappingKernelManager` without an appropriate "
1389+
"jupyter_client installed! Upgrade jupyter_client and try again.")
1390+
13831391
self.contents_manager = self.contents_manager_class(
13841392
parent=self,
13851393
log=self.log,
@@ -1897,8 +1905,8 @@ def launch_browser(self):
18971905
assembled_url = urljoin('file:', pathname2url(open_file))
18981906
else:
18991907
assembled_url = url_path_join(self.connection_url, uri)
1900-
1901-
b = lambda: browser.open(assembled_url, new=self.webbrowser_open_new)
1908+
1909+
b = lambda: browser.open(assembled_url, new=self.webbrowser_open_new)
19021910
threading.Thread(target=b).start()
19031911

19041912
def start(self):

0 commit comments

Comments
 (0)