8
8
9
9
log = logging .getLogger (__name__ )
10
10
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.
13
13
14
14
@abstractmethod
15
15
def find_kernels (self ):
@@ -24,7 +24,7 @@ def make_manager(self, name):
24
24
"""
25
25
pass
26
26
27
- class KernelSpecFinder ( KernelFinderBase ):
27
+ class KernelSpecProvider ( KernelProviderBase ):
28
28
"""Find kernels from installed kernelspec directories.
29
29
"""
30
30
id = 'spec'
@@ -47,7 +47,7 @@ def make_manager(self, name):
47
47
return KernelManager (kernel_cmd = spec .argv , extra_env = spec .env )
48
48
49
49
50
- class IPykernelFinder ( KernelFinderBase ):
50
+ class IPykernelProvider ( KernelProviderBase ):
51
51
"""Find ipykernel on this Python version by trying to import it.
52
52
"""
53
53
id = 'pyimport'
@@ -82,31 +82,46 @@ def make_manager(self, name):
82
82
return KernelManager (kernel_cmd = info ['spec' ]['argv' ])
83
83
84
84
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
88
90
89
91
@classmethod
90
92
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' ):
93
102
try :
94
- finder = ep .load ()() # Load and instantiate
103
+ provider = ep .load ()() # Load and instantiate
95
104
except Exception :
96
- log .error ('Error loading kernel finder ' , exc_info = True )
105
+ log .error ('Error loading kernel provider ' , exc_info = True )
97
106
else :
98
- finders .append (finder )
107
+ providers .append (provider )
99
108
100
- return cls (finders )
109
+ return cls (providers )
101
110
102
111
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
106
119
yield id , attributes
107
120
108
121
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 )
0 commit comments