@@ -47,6 +47,30 @@ def _get_config_dir(user=False, sys_prefix=False):
47
47
return extdir
48
48
49
49
50
+ def _get_extmanager_for_context (user = False , sys_prefix = False ):
51
+ """Get an extension manager pointing at the current context
52
+
53
+ Returns the path to the current context and an ExtensionManager object.
54
+
55
+ Parameters
56
+ ----------
57
+
58
+ user : bool [default: False]
59
+ Get the user's .jupyter config directory
60
+ sys_prefix : bool [default: False]
61
+ Get sys.prefix, i.e. ~/.envs/my-env/etc/jupyter
62
+ """
63
+ config_dir = _get_config_dir (user = user , sys_prefix = sys_prefix )
64
+ config_manager = ExtensionConfigManager (
65
+ read_config_path = [config_dir ],
66
+ write_config_dir = os .path .join (config_dir , "jupyter_server_config.d" ),
67
+ )
68
+ extension_manager = ExtensionManager (
69
+ config_manager = config_manager ,
70
+ )
71
+ return config_dir , extension_manager
72
+
73
+
50
74
class ArgumentConflict (ValueError ):
51
75
pass
52
76
@@ -102,19 +126,6 @@ def _log_format_default(self):
102
126
def config_dir (self ):
103
127
return _get_config_dir (user = self .user , sys_prefix = self .sys_prefix )
104
128
105
- def initialize (self , * args , ** kwargs ):
106
- # Locate Server extension config in Jupyter Server's config.d
107
- self .config_manager = ExtensionConfigManager (
108
- read_config_path = [self .config_dir ],
109
- write_config_dir = os .path .join (self .config_dir , "jupyter_server_config.d" ),
110
- log = self .log
111
- )
112
- self .extension_manager = ExtensionManager (
113
- config_manager = self .config_manager ,
114
- log = self .log
115
- )
116
- super ().initialize (* args , ** kwargs )
117
-
118
129
119
130
# Constants for pretty print extension listing function.
120
131
# Window doesn't support coloring in the commandline
@@ -206,12 +217,17 @@ def toggle_server_extension(self, import_name):
206
217
Importable Python module (dotted-notation) exposing the magic-named
207
218
`load_jupyter_server_extension` function
208
219
"""
220
+ # Create an extension manager for this instance.
221
+ ext_manager , extension_manager = _get_extmanager_for_context (
222
+ user = self .user ,
223
+ sys_prefix = self .sys_prefix
224
+ )
209
225
try :
210
226
self .log .info ("{}: {}" .format (self ._toggle_pre_message .capitalize (), import_name ))
211
- self .log .info ("- Writing config: {}" .format (self . config_dir ))
227
+ self .log .info ("- Writing config: {}" .format (ext_manager ))
212
228
# Validate the server extension.
213
229
self .log .info (" - Validating {}..." .format (import_name ))
214
- extension = self . extension_manager .extensions [import_name ]
230
+ extension = extension_manager .extensions [import_name ]
215
231
extension .validate ()
216
232
version = extension .version
217
233
self .log .info (" {} {} {}" .format (import_name , version , GREEN_OK ))
@@ -275,22 +291,31 @@ def list_server_extensions(self):
275
291
276
292
Enabled extensions are validated, potentially generating warnings.
277
293
"""
278
- self .log .info ("Config dir: {}" .format (self .config_dir ))
279
- for name , extension in self .extension_manager .extensions .items ():
280
- enabled = extension .enabled
281
- # Attempt to get extension metadata
282
- self .log .info (u' {} {}' .format (
283
- name ,
284
- GREEN_ENABLED if enabled else RED_DISABLED ))
285
- try :
286
- self .log .info (" - Validating {}..." .format (name ))
287
- extension .validate ()
288
- version = extension .version
289
- self .log .info (
290
- " {} {} {}" .format (name , version , GREEN_OK )
291
- )
292
- except Exception as err :
293
- self .log .warn (" {} {}" .format (RED_X , err ))
294
+ configurations = (
295
+ {"user" :True , "sys_prefix" : False },
296
+ {"user" :False , "sys_prefix" : True },
297
+ {"user" :False , "sys_prefix" : False }
298
+ )
299
+ for option in configurations :
300
+ config_dir , ext_manager = _get_extmanager_for_context (** option )
301
+ self .log .info ("Config dir: {}" .format (config_dir ))
302
+ for name , extension in ext_manager .extensions .items ():
303
+ enabled = extension .enabled
304
+ # Attempt to get extension metadata
305
+ self .log .info (u' {} {}' .format (
306
+ name ,
307
+ GREEN_ENABLED if enabled else RED_DISABLED ))
308
+ try :
309
+ self .log .info (" - Validating {}..." .format (name ))
310
+ extension .validate ()
311
+ version = extension .version
312
+ self .log .info (
313
+ " {} {} {}" .format (name , version , GREEN_OK )
314
+ )
315
+ except Exception as err :
316
+ self .log .warn (" {} {}" .format (RED_X , err ))
317
+ # Add a blank line between paths.
318
+ self .log .info ("" )
294
319
295
320
def start (self ):
296
321
"""Perform the App's actions as configured"""
0 commit comments