@@ -128,6 +128,7 @@ def setup(self):
128
128
else :
129
129
self .prefix = args .prefix
130
130
self .replace = args .replace
131
+ self .copy_files = { }
131
132
132
133
# Setting the kernel. Go through least-specific to
133
134
# most-specific, updating self.kernel with the latest (most
@@ -140,6 +141,8 @@ def setup(self):
140
141
if args .kernel_template :
141
142
import jupyter_client .kernelspec
142
143
template = jupyter_client .kernelspec .KernelSpecManager ().get_kernel_spec (args .kernel_template )
144
+ template_dir = template .resource_dir
145
+ self .copy_files .update ({x : pjoin (template_dir , x ) for x in os .listdir (template_dir )})
143
146
self .kernel = json .loads (template .to_json ())
144
147
# --kernel which sets to default well-known kernels.
145
148
if args .kernel is None and 'argv' not in self .kernel :
@@ -169,7 +172,10 @@ def setup(self):
169
172
import ipykernel
170
173
ipykernel_dir = os .path .dirname (ipykernel .__file__ )
171
174
logos = glob .glob (pjoin (ipykernel_dir , 'resources' , '*' ))
172
- self .logos = logos
175
+ for fullpath in logos :
176
+ fname = os .path .basename (fullpath )
177
+ if fname not in self .copy_files :
178
+ self .copy_files [fname ] = fullpath
173
179
except ImportError :
174
180
LOG .debug ("Could not automatically find ipykernel logos" )
175
181
# env
@@ -206,14 +212,13 @@ def install_kernel(self, kernel, name, user=False, replace=None, prefix=None, lo
206
212
umask = os .umask (0 )
207
213
os .umask (umask ) # Restore previous, this is just how it works...
208
214
os .chmod (kernel_dir , 0o777 & (~ umask ))
209
- #
215
+ # Copy files from template. This also copies kernel.json,
216
+ # but we will overwrite that next.
217
+ for fname , fullpath in self .copy_files .items ():
218
+ shutil .copy (fullpath , pjoin (kernel_dir , fname ))
219
+ # Write kernel.json
210
220
open (pjoin (kernel_dir , 'kernel.json' ), 'w' ).write (
211
221
json .dumps (kernel , sort_keys = True , indent = 1 ))
212
- if self .logos :
213
- if isinstance (self .logos , str ) and os .path .isdir (self .logos ):
214
- self .logos = os .listdir (self .logos )
215
- for logo in self .logos :
216
- shutil .copy (logo , kernel_dir )
217
222
jupyter_client .kernelspec .KernelSpecManager ().install_kernel_spec (
218
223
kernel_dir , kernel_name = name ,
219
224
user = user , replace = replace , prefix = prefix )
0 commit comments