Skip to content

Commit 38ccbdc

Browse files
committed
Rename kernel finders -> kernel providers
MetaKernelFinder -> KernelFinder
1 parent 1509dac commit 38ccbdc

File tree

3 files changed

+43
-28
lines changed

3 files changed

+43
-28
lines changed

jupyter_client/discovery.py

Lines changed: 35 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88

99
log = logging.getLogger(__name__)
1010

11-
class KernelFinderBase(six.with_metaclass(ABCMeta, object)):
12-
id = None # Should be a short string identifying the finder class.
11+
class KernelProviderBase(six.with_metaclass(ABCMeta, object)):
12+
id = None # Should be a short string identifying the provider class.
1313

1414
@abstractmethod
1515
def find_kernels(self):
@@ -24,7 +24,7 @@ def make_manager(self, name):
2424
"""
2525
pass
2626

27-
class KernelSpecFinder(KernelFinderBase):
27+
class KernelSpecProvider(KernelProviderBase):
2828
"""Find kernels from installed kernelspec directories.
2929
"""
3030
id = 'spec'
@@ -47,7 +47,7 @@ def make_manager(self, name):
4747
return KernelManager(kernel_cmd=spec.argv, extra_env=spec.env)
4848

4949

50-
class IPykernelFinder(KernelFinderBase):
50+
class IPykernelProvider(KernelProviderBase):
5151
"""Find ipykernel on this Python version by trying to import it.
5252
"""
5353
id = 'pyimport'
@@ -82,31 +82,46 @@ def make_manager(self, name):
8282
return KernelManager(kernel_cmd=info['spec']['argv'])
8383

8484

85-
class MetaKernelFinder(object):
86-
def __init__(self, finders):
87-
self.finders = finders
85+
class KernelFinder(object):
86+
"""Manages a collection of kernel providers to find available kernels
87+
"""
88+
def __init__(self, providers):
89+
self.providers = providers
8890

8991
@classmethod
9092
def from_entrypoints(cls):
91-
finders = []
92-
for ep in entrypoints.get_group_all('jupyter_client.kernel_finders'):
93+
"""Load all kernel providers advertised by entry points.
94+
95+
Kernel providers should use the "jupyter_client.kernel_providers"
96+
entry point group.
97+
98+
Returns an instance of KernelFinder.
99+
"""
100+
providers = []
101+
for ep in entrypoints.get_group_all('jupyter_client.kernel_providers'):
93102
try:
94-
finder = ep.load()() # Load and instantiate
103+
provider = ep.load()() # Load and instantiate
95104
except Exception:
96-
log.error('Error loading kernel finder', exc_info=True)
105+
log.error('Error loading kernel provider', exc_info=True)
97106
else:
98-
finders.append(finder)
107+
providers.append(provider)
99108

100-
return cls(finders)
109+
return cls(providers)
101110

102111
def find_kernels(self):
103-
for finder in self.finders:
104-
for kid, attributes in finder.find_kernels():
105-
id = finder.id + '/' + kid
112+
"""Iterate over available kernels.
113+
114+
Yields 2-tuples of (id_str, attributes)
115+
"""
116+
for provider in self.providers:
117+
for kid, attributes in provider.find_kernels():
118+
id = provider.id + '/' + kid
106119
yield id, attributes
107120

108121
def make_manager(self, id):
109-
finder_id, kernel_id = id.split('/', 1)
110-
for finder in self.finders:
111-
if finder_id == finder.id:
112-
return finder.make_manager(kernel_id)
122+
"""Make a KernelManager instance for a given kernel ID.
123+
"""
124+
provider_id, kernel_id = id.split('/', 1)
125+
for provider in self.providers:
126+
if provider_id == provider.id:
127+
return provider.make_manager(kernel_id)

jupyter_client/tests/test_discovery.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@
33
from jupyter_client import KernelManager
44
from jupyter_client import discovery
55

6-
def test_ipykernel_finder():
6+
def test_ipykernel_provider():
77
import ipykernel # Fail clearly if ipykernel not installed
8-
ikf = discovery.IPykernelFinder()
8+
ikf = discovery.IPykernelProvider()
99

1010
res = list(ikf.find_kernels())
1111
assert len(res) == 1, res
1212
id, info = res[0]
1313
assert id == 'kernel'
1414
assert info['argv'][0] == sys.executable
1515

16-
class DummyKernelFinder(discovery.KernelFinderBase):
17-
"""A dummy kernel finder for testing MetaKernelFinder"""
16+
class DummyKernelProvider(discovery.KernelProviderBase):
17+
"""A dummy kernel provider for testing KernelFinder"""
1818
id = 'dummy'
1919

2020
def find_kernels(self):
@@ -24,9 +24,9 @@ def make_manager(self, name):
2424
return KernelManager(kernel_cmd=['dummy_kernel'])
2525

2626
def test_meta_kernel_finder():
27-
mkf = discovery.MetaKernelFinder(finders=[DummyKernelFinder()])
28-
assert list(mkf.find_kernels()) == \
27+
kf = discovery.KernelFinder(providers=[DummyKernelProvider()])
28+
assert list(kf.find_kernels()) == \
2929
[('dummy/sample', {'argv': ['dummy_kernel']})]
3030

31-
manager = mkf.make_manager('dummy/sample')
31+
manager = kf.make_manager('dummy/sample')
3232
assert manager.kernel_cmd == ['dummy_kernel']

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def run(self):
9494
'jupyter-kernelspec = jupyter_client.kernelspecapp:KernelSpecApp.launch_instance',
9595
'jupyter-run = jupyter_client.runapp:RunApp.launch_instance',
9696
],
97-
'jupyter_client.kernel_finders' : [
97+
'jupyter_client.kernel_providers' : [
9898
'spec = jupyter_client.discovery:KernelSpecFinder',
9999
'pyimport = jupyter_client.discovery:IPykernelFinder',
100100
]

0 commit comments

Comments
 (0)