1
1
# Copyright (c) Jupyter Development Team.
2
2
# Distributed under the terms of the Modified BSD License.
3
3
"""Kernel manager that optionally seeds kernel memory."""
4
-
4
+ import os
5
5
from typing import List , Optional
6
+ from traitlets import default
6
7
from jupyter_server .services .kernels .kernelmanager import AsyncMappingKernelManager
7
8
from jupyter_client .ioloop import AsyncIOLoopKernelManager
8
9
@@ -15,8 +16,14 @@ class SeedingMappingKernelManager(AsyncMappingKernelManager):
15
16
_seed_source : Optional [List ]
16
17
_seed_kernelspec : Optional [str ]
17
18
19
+ @default ("root_dir" )
20
+ def _default_root_dir (self ):
21
+ return os .getcwd ()
22
+
18
23
def _kernel_manager_class_default (self ):
19
- return 'kernel_gateway.services.kernels.manager.KernelGatewayIOLoopKernelManager'
24
+ return (
25
+ "kernel_gateway.services.kernels.manager.KernelGatewayIOLoopKernelManager"
26
+ )
20
27
21
28
@property
22
29
def seed_kernelspec (self ) -> Optional [str ]:
@@ -30,14 +37,16 @@ def seed_kernelspec(self) -> Optional[str]:
30
37
str
31
38
Name of the notebook kernelspec or None if no seed notebook exists
32
39
"""
33
- if hasattr (self , ' _seed_kernelspec' ):
40
+ if hasattr (self , " _seed_kernelspec" ):
34
41
return self ._seed_kernelspec
35
42
36
43
if self .parent .seed_notebook :
37
44
if self .parent .force_kernel_name :
38
45
self ._seed_kernelspec = self .parent .force_kernel_name
39
46
else :
40
- self ._seed_kernelspec = self .parent .seed_notebook ['metadata' ]['kernelspec' ]['name' ]
47
+ self ._seed_kernelspec = self .parent .seed_notebook ["metadata" ][
48
+ "kernelspec"
49
+ ]["name" ]
41
50
else :
42
51
self ._seed_kernelspec = None
43
52
@@ -52,13 +61,14 @@ def seed_source(self) -> Optional[List]:
52
61
list
53
62
Notebook code cell contents or None if no seed notebook exists
54
63
"""
55
- if hasattr (self , ' _seed_source' ):
64
+ if hasattr (self , " _seed_source" ):
56
65
return self ._seed_source
57
66
58
67
if self .parent .seed_notebook :
59
68
self ._seed_source = [
60
- cell ['source' ] for cell in self .parent .seed_notebook .cells
61
- if cell ['cell_type' ] == 'code'
69
+ cell ["source" ]
70
+ for cell in self .parent .seed_notebook .cells
71
+ if cell ["cell_type" ] == "code"
62
72
]
63
73
else :
64
74
self ._seed_source = None
@@ -78,8 +88,10 @@ async def start_kernel(self, *args, **kwargs):
78
88
seed notebook exists.
79
89
"""
80
90
if self .parent .force_kernel_name :
81
- kwargs ['kernel_name' ] = self .parent .force_kernel_name
82
- kernel_id = await super (SeedingMappingKernelManager , self ).start_kernel (* args , ** kwargs )
91
+ kwargs ["kernel_name" ] = self .parent .force_kernel_name
92
+ kernel_id = await super (SeedingMappingKernelManager , self ).start_kernel (
93
+ * args , ** kwargs
94
+ )
83
95
84
96
if kernel_id and self .seed_source is not None :
85
97
# Only run source if the kernel spec matches the notebook kernel spec
@@ -104,13 +116,15 @@ async def start_kernel(self, *args, **kwargs):
104
116
msg_type = "kernel_info_reply"
105
117
while msg_type == "kernel_info_reply" :
106
118
msg = await client .get_shell_msg ()
107
- msg_type = msg [' msg_type' ]
108
- if msg [' content' ][ ' status' ] != 'ok' :
119
+ msg_type = msg [" msg_type" ]
120
+ if msg [" content" ][ " status" ] != "ok" :
109
121
# Shutdown the channels to remove any lingering ZMQ messages
110
122
client .stop_channels ()
111
123
# Shutdown the kernel
112
124
await self .shutdown_kernel (kernel_id )
113
- raise RuntimeError ('Error seeding kernel memory' , msg ['content' ])
125
+ raise RuntimeError (
126
+ "Error seeding kernel memory" , msg ["content" ]
127
+ )
114
128
# Shutdown the channels to remove any lingering ZMQ messages
115
129
client .stop_channels ()
116
130
return kernel_id
@@ -121,14 +135,16 @@ class KernelGatewayIOLoopKernelManager(AsyncIOLoopKernelManager):
121
135
122
136
Sets the environment variable 'KERNEL_GATEWAY' to '1' to indicate that the
123
137
kernel is executing within a Jupyter Kernel Gateway instance. Removes the
124
- KG_AUTH_TOKEN from the environment variables passed to the kernel when it
138
+ KG_AUTH_TOKEN from the environment variables passed to the kernel when it
125
139
starts.
126
140
"""
127
141
128
142
async def _async_launch_kernel (self , kernel_cmd , ** kw ):
129
143
# TODO - should probably figure out a better place to deal with this
130
- env = kw ['env' ]
131
- env ['KERNEL_GATEWAY' ] = '1'
132
- if 'KG_AUTH_TOKEN' in env :
133
- del env ['KG_AUTH_TOKEN' ]
134
- return await super (KernelGatewayIOLoopKernelManager , self )._async_launch_kernel (kernel_cmd , ** kw )
144
+ env = kw ["env" ]
145
+ env ["KERNEL_GATEWAY" ] = "1"
146
+ if "KG_AUTH_TOKEN" in env :
147
+ del env ["KG_AUTH_TOKEN" ]
148
+ return await super (KernelGatewayIOLoopKernelManager , self )._async_launch_kernel (
149
+ kernel_cmd , ** kw
150
+ )
0 commit comments