Skip to content

Commit eba250f

Browse files
Add support of 'custom_kernel_specs' parameters
1 parent af1342d commit eba250f

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

jupyter_server/services/sessions/handlers.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ async def post(self):
7777
kernel = model.get("kernel", {})
7878
kernel_name = kernel.get("name", None)
7979
kernel_id = kernel.get("id", None)
80+
custom_kernel_specs = kernel.get("custom_kernel_specs", {})
8081

8182
if not kernel_id and not kernel_name:
8283
self.log.debug("No kernel specified, using default kernel")
@@ -93,6 +94,7 @@ async def post(self):
9394
kernel_id=kernel_id,
9495
name=name,
9596
type=mtype,
97+
custom_kernel_specs=custom_kernel_specs
9698
)
9799
except NoSuchKernel:
98100
msg = (
@@ -152,6 +154,9 @@ async def patch(self, session_id):
152154
changes["name"] = model["name"]
153155
if "type" in model:
154156
changes["type"] = model["type"]
157+
if "custom_kernel_specs" in model:
158+
changes["custom_kernel_specs"] = model["custom_kernel_specs"]
159+
155160
if "kernel" in model:
156161
# Kernel id takes precedence over name.
157162
if model["kernel"].get("id") is not None:
@@ -160,13 +165,18 @@ async def patch(self, session_id):
160165
raise web.HTTPError(400, "No such kernel: %s" % kernel_id)
161166
changes["kernel_id"] = kernel_id
162167
elif model["kernel"].get("name") is not None:
168+
if "custom_kernel_specs" in model["kernel"]:
169+
custom_kernel_specs = model["kernel"]["custom_kernel_specs"]
170+
else:
171+
custom_kernel_specs = None
163172
kernel_name = model["kernel"]["name"]
164173
kernel_id = await sm.start_kernel_for_session(
165174
session_id,
166175
kernel_name=kernel_name,
167176
name=before["name"],
168177
path=before["path"],
169178
type=before["type"],
179+
custom_kernel_specs = custom_kernel_specs
170180
)
171181
changes["kernel_id"] = kernel_id
172182

jupyter_server/services/sessions/sessionmanager.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,7 @@ async def create_session(
267267
type: Optional[str] = None,
268268
kernel_name: Optional[KernelName] = None,
269269
kernel_id: Optional[str] = None,
270+
custom_kernel_specs: Optional[Dict[str, Any]] = None
270271
) -> Dict[str, Any]:
271272
"""Creates a session and returns its model
272273
@@ -282,8 +283,9 @@ async def create_session(
282283
if kernel_id is not None and kernel_id in self.kernel_manager:
283284
pass
284285
else:
286+
#
285287
kernel_id = await self.start_kernel_for_session(
286-
session_id, path, name, type, kernel_name
288+
session_id, path, name, type, kernel_name, custom_kernel_specs
287289
)
288290
record.kernel_id = kernel_id
289291
self._pending_sessions.update(record)
@@ -306,6 +308,7 @@ def get_kernel_env(
306308
Here the name is likely to be the name of the associated file
307309
with the current kernel at startup time.
308310
"""
311+
#
309312
if name is not None:
310313
cwd = self.kernel_manager.cwd_for_path(path)
311314
path = os.path.join(cwd, name)
@@ -319,6 +322,7 @@ async def start_kernel_for_session(
319322
name: Optional[ModelName],
320323
type: Optional[str],
321324
kernel_name: Optional[KernelName],
325+
custom_kernel_specs: Optional[Dict[str, Any]] = None
322326
) -> str:
323327
"""Start a new kernel for a given session.
324328
@@ -335,6 +339,8 @@ async def start_kernel_for_session(
335339
the type of the session
336340
kernel_name : str
337341
the name of the kernel specification to use. The default kernel name will be used if not provided.
342+
custom_kernel_specs: dict
343+
dictionary of kernek custom specifications
338344
"""
339345
# allow contents manager to specify kernels cwd
340346
kernel_path = await ensure_async(self.contents_manager.get_kernel_path(path=path))

0 commit comments

Comments
 (0)