Skip to content

Commit 278b89b

Browse files
authored
Merge pull request #179 from blink1073/optional_kernel_path
Allow the path of a kernel to be set in POST
2 parents 7a6cd8e + 671b28c commit 278b89b

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

jupyter_server/services/api/api.yaml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -441,14 +441,19 @@ paths:
441441
tags:
442442
- kernels
443443
parameters:
444-
- name: name
444+
- name: options
445445
in: body
446-
description: Kernel spec name (defaults to default kernel spec for server)
447446
schema:
448447
type: object
448+
required:
449+
- name
449450
properties:
450451
name:
451452
type: string
453+
description: Kernel spec name (defaults to default kernel spec for server)
454+
path:
455+
type: string
456+
description: API path from root to the cwd of the kernel
452457
responses:
453458
201:
454459
description: Kernel started

jupyter_server/services/kernels/handlers.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ def post(self):
4545
else:
4646
model.setdefault('name', km.default_kernel_name)
4747

48-
kernel_id = yield maybe_future(km.start_kernel(kernel_name=model['name']))
48+
kernel_id = yield maybe_future(km.start_kernel(kernel_name=model['name'],
49+
path=model.get('path')))
4950
model = yield maybe_future(km.kernel_model(kernel_id))
5051
location = url_path_join(self.base_url, 'api', 'kernels', url_escape(kernel_id))
5152
self.set_header('Location', location)

tests/services/kernels/test_api.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,18 @@ async def test_main_kernel_handler(fetch):
138138
assert restarted_kernel['id'] == kernel2['id']
139139
assert restarted_kernel['name'] == kernel2['name']
140140

141+
# Start a kernel with a path
142+
r = await fetch(
143+
'api', 'kernels',
144+
method='POST',
145+
body=json.dumps({
146+
'name': NATIVE_KERNEL_NAME,
147+
'path': '/foo'
148+
})
149+
)
150+
kernel3 = json.loads(r.body.decode())
151+
assert isinstance(kernel3, dict)
152+
141153

142154
async def test_kernel_handler(fetch):
143155
# Create a kernel

0 commit comments

Comments
 (0)