Skip to content
This repository was archived by the owner on Jun 16, 2021. It is now read-only.

Commit a956009

Browse files
committed
Allow for a provider to have multiple lifecycle managers
1 parent d44cc08 commit a956009

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

remote_kernel_provider/provider.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class RemoteKernelProviderBase(KernelSpecProvider):
1313
# The following must be overridden by subclasses
1414
id = None
1515
kernel_file = None
16-
lifecycle_manager_class = None
16+
lifecycle_manager_classes = []
1717

1818
def launch(self, kernelspec_name, cwd=None, kernel_params=None):
1919
"""Launch a kernel, return (connection_info, kernel_manager).
@@ -64,20 +64,20 @@ def _get_lifecycle_info(self, kernel_spec):
6464
if lifecycle_info:
6565
class_name = lifecycle_info.get('class_name', None)
6666
if class_name is not None:
67-
if class_name != self.lifecycle_manager_class: # Legacy check...
67+
if class_name not in self.lifecycle_manager_classes: # Legacy check...
6868
legacy_detected = True
69-
lifecycle_info.update({'class_name': self.lifecycle_manager_class})
69+
lifecycle_info.update({'class_name': self.lifecycle_manager_classes[0]})
7070
if 'config' not in lifecycle_info: # if no config stanza, add one for consistency
7171
lifecycle_info.update({"config": {}})
7272

7373
if lifecycle_info is None: # Be sure to have a class_name with empty config
74-
lifecycle_info = {'class_name': self.lifecycle_manager_class, 'config': {}}
74+
lifecycle_info = {'class_name': self.lifecycle_manager_classes[0], 'config': {}}
7575

7676
if legacy_detected:
7777
self.log.warn("Legacy kernelspec detected with at '{resource_dir}'. Ensure the contents of "
7878
"'{kernel_json}' contain a 'lifecycle_info' stanza within 'metadata' with field "
79-
"'class_name: {expected_class}'".
79+
"class_name in '{expected_classes}'".
8080
format(resource_dir=kernel_spec.resource_dir, kernel_json=self.kernel_file,
81-
expected_class=self.lifecycle_manager_class))
81+
expected_classes=self.lifecycle_manager_classes))
8282

8383
return lifecycle_info

remote_kernel_provider/tests/test_provider.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class DummyKernelProvider(RemoteKernelProviderBase):
6969
"""A dummy kernelspec provider subclass for testing"""
7070
id = 'dummy'
7171
kernel_file = 'dummy_kspec.json'
72-
lifecycle_manager_class = 'remote_kernel_provider.tests.test_provider.DummyKernelLifecycleManager'
72+
lifecycle_manager_classes = ['remote_kernel_provider.tests.test_provider.DummyKernelLifecycleManager']
7373

7474

7575
class RemoteKernelProviderTests(unittest.TestCase):

0 commit comments

Comments
 (0)