@@ -58,10 +58,11 @@ def get_kernel_dict():
5858 }
5959
6060
61- def write_kernel_spec (path = None ):
61+ def write_kernel_spec (path = None , overrides = None ):
6262 """Write a kernel spec directory to `path`
6363
6464 If `path` is not specified, a temporary directory is created.
65+ If `overrides` is given, the kernelspec JSON is updated before writing.
6566
6667 The path to the kernelspec is always returned.
6768 """
@@ -71,13 +72,16 @@ def write_kernel_spec(path=None):
7172 # stage resources
7273 shutil .copytree (RESOURCES , path )
7374 # write kernel.json
75+ kernel_dict = get_kernel_dict ()
76+ if overrides :
77+ kernel_dict .update (overrides )
7478 with open (pjoin (path , 'kernel.json' ), 'w' ) as f :
75- json .dump (get_kernel_dict () , f , indent = 1 )
79+ json .dump (kernel_dict , f , indent = 1 )
7680
7781 return path
7882
7983
80- def install (kernel_spec_manager = None , user = False , kernel_name = None , prefix = None ):
84+ def install (kernel_spec_manager = None , user = False , kernel_name = None , display_name = None , prefix = None ):
8185 """Install the IPython kernelspec for Jupyter
8286
8387 Parameters
@@ -94,6 +98,8 @@ def install(kernel_spec_manager=None, user=False, kernel_name=None, prefix=None)
9498 prefix: str, optional
9599 Specify an install prefix for the kernelspec.
96100 This is needed to install into a non-default location, such as a conda/virtual-env.
101+ display_name: str, optional
102+ Specify the display name for the kernelspec
97103
98104 Returns
99105 -------
@@ -104,7 +110,11 @@ def install(kernel_spec_manager=None, user=False, kernel_name=None, prefix=None)
104110 kernel_spec_manager = KernelSpecManager ()
105111 if kernel_name is None :
106112 kernel_name = KERNEL_NAME
107- path = write_kernel_spec ()
113+ if display_name :
114+ overrides = dict (display_name = display_name )
115+ else :
116+ overrides = None
117+ path = write_kernel_spec (overrides = overrides )
108118 dest = kernel_spec_manager .install_kernel_spec (path ,
109119 kernel_name = kernel_name , user = user , prefix = prefix )
110120 # cleanup afterward
@@ -134,12 +144,17 @@ def start(self):
134144 parser .add_argument ('--name' , type = str , default = KERNEL_NAME ,
135145 help = "Specify a name for the kernelspec."
136146 " This is needed to have multiple IPython kernels at the same time." )
147+ parser .add_argument ('--display-name' , type = str ,
148+ help = "Specify the display name for the kernelspec."
149+ " This is helpful when you have multiple IPython kernels." )
137150 parser .add_argument ('--prefix' , type = str ,
138151 help = "Specify an install prefix for the kernelspec."
139152 " This is needed to install into a non-default location, such as a conda/virtual-env." )
140153 opts = parser .parse_args (self .argv )
141154 try :
142- dest = install (user = opts .user , kernel_name = opts .name , prefix = opts .prefix )
155+ dest = install (user = opts .user , kernel_name = opts .name , prefix = opts .prefix ,
156+ dispay_name = opts .display_name ,
157+ )
143158 except OSError as e :
144159 if e .errno == errno .EACCES :
145160 print (e , file = sys .stderr )
0 commit comments