Skip to content

Commit 4cda22a

Browse files
committed
Merge pull request #57 from minrk/install-display-name
allow `ipython kernelspec install --display-name FOO`
2 parents d3f7002 + 479ba08 commit 4cda22a

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

ipykernel/kernelspec.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)