Skip to content

Commit 1c0e0c8

Browse files
kevin-batestoonijn
authored andcommitted
Indicate that async kernel management is configured
1 parent 726c2ea commit 1c0e0c8

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

notebook/notebookapp.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,13 @@
108108
from ._tz import utcnow, utcfromtimestamp
109109
from .utils import url_path_join, check_pid, url_escape, urljoin, pathname2url
110110

111+
# Check if we can user async kernel management
112+
try:
113+
from jupyter_client import AsyncMultiKernelManager
114+
async_kernel_mgmt_available = True
115+
except ImportError:
116+
async_kernel_mgmt_available = False
117+
111118
#-----------------------------------------------------------------------------
112119
# Module globals
113120
#-----------------------------------------------------------------------------
@@ -1375,18 +1382,21 @@ def init_configurables(self):
13751382
self.kernel_spec_manager = self.kernel_spec_manager_class(
13761383
parent=self,
13771384
)
1385+
13781386
self.kernel_manager = self.kernel_manager_class(
13791387
parent=self,
13801388
log=self.log,
13811389
connection_dir=self.runtime_dir,
13821390
kernel_spec_manager=self.kernel_spec_manager,
13831391
)
13841392
# Ensure the appropriate jupyter_client is in place.
1385-
# TODO: remove once dependencies are updated.
13861393
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.")
1394+
if not async_kernel_mgmt_available:
1395+
raise ValueError("You're using `AsyncMappingKernelManager` without an appropriate "
1396+
"jupyter_client installed! Upgrade jupyter_client or change kernel managers.")
1397+
else:
1398+
self.log.info("Asynchronous kernel management has been configured via '{}'.".
1399+
format(self.kernel_manager.__class__.__name__))
13901400

13911401
self.contents_manager = self.contents_manager_class(
13921402
parent=self,

notebook/services/kernels/kernelmanager.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
from jupyter_client.multikernelmanager import AsyncMultiKernelManager
3636
except ImportError:
3737
class AsyncMultiKernelManager(object):
38+
"""Empty class to satisfy unused reference by AsyncMappingKernelManager."""
3839
pass
3940

4041

@@ -46,8 +47,6 @@ class MappingKernelManagerBase(LoggingConfigurable):
4647
4748
Since we have this class, we'll reduce duplication of code between the disjoint classes by using this
4849
common superclass for configuration properties and static methods and local member variables.
49-
50-
TODO - move contents back to appropriate mapping kernel manager once we converge to async only.
5150
"""
5251

5352
kernel_argv = List(Unicode())

0 commit comments

Comments
 (0)