|
10 | 10 | import importlib |
11 | 11 | import signal |
12 | 12 |
|
| 13 | +from notebook.services.kernels.kernelmanager import MappingKernelManager |
| 14 | + |
13 | 15 | try: |
14 | 16 | from urlparse import urlparse |
15 | 17 | except ImportError: |
16 | 18 | from urllib.parse import urlparse |
17 | 19 |
|
18 | | -from traitlets import Unicode, Integer, default, observe |
| 20 | +from traitlets import Unicode, Integer, default, observe, Type, Instance |
19 | 21 |
|
20 | 22 | from jupyter_core.application import JupyterApp, base_aliases |
21 | 23 | from jupyter_client.kernelspec import KernelSpecManager |
@@ -277,6 +279,24 @@ def keyfile_default(self): |
277 | 279 | def client_ca_default(self): |
278 | 280 | return os.getenv(self.client_ca_env) |
279 | 281 |
|
| 282 | + kernel_spec_manager = Instance(KernelSpecManager, allow_none=True) |
| 283 | + |
| 284 | + kernel_spec_manager_class = Type( |
| 285 | + default_value=KernelSpecManager, |
| 286 | + config=True, |
| 287 | + help=""" |
| 288 | + The kernel spec manager class to use. Should be a subclass |
| 289 | + of `jupyter_client.kernelspec.KernelSpecManager`. |
| 290 | + """ |
| 291 | + ) |
| 292 | + |
| 293 | + kernel_manager_class = Type( |
| 294 | + klass=MappingKernelManager, |
| 295 | + default_value=SeedingMappingKernelManager, |
| 296 | + config=True, |
| 297 | + help="""The kernel manager class to use.""" |
| 298 | + ) |
| 299 | + |
280 | 300 | def _load_api_module(self, module_name): |
281 | 301 | """Tries to import the given module name. |
282 | 302 |
|
@@ -366,7 +386,11 @@ def init_configurables(self): |
366 | 386 | kwargs = {} |
367 | 387 | if self.default_kernel_name: |
368 | 388 | kwargs['default_kernel_name'] = self.default_kernel_name |
369 | | - self.kernel_manager = SeedingMappingKernelManager( |
| 389 | + |
| 390 | + self.kernel_spec_manager = self.kernel_spec_manager_class( |
| 391 | + parent=self, |
| 392 | + ) |
| 393 | + self.kernel_manager = self.kernel_manager_class( |
370 | 394 | parent=self, |
371 | 395 | log=self.log, |
372 | 396 | connection_dir=self.runtime_dir, |
@@ -411,7 +435,7 @@ def init_webapp(self): |
411 | 435 | kernel_manager=self.kernel_manager, |
412 | 436 | session_manager=self.session_manager, |
413 | 437 | contents_manager=self.contents_manager, |
414 | | - kernel_spec_manager=self.kernel_manager.kernel_spec_manager, |
| 438 | + kernel_spec_manager=self.kernel_spec_manager, |
415 | 439 | kg_auth_token=self.auth_token, |
416 | 440 | kg_allow_credentials=self.allow_credentials, |
417 | 441 | kg_allow_headers=self.allow_headers, |
|
0 commit comments