1
1
"""An extension application."""
2
+ from __future__ import annotations
3
+
2
4
import logging
3
5
import re
4
6
import sys
@@ -158,19 +160,21 @@ class method. This method can be set as a entry_point in
158
160
159
161
@default ("open_browser" )
160
162
def _default_open_browser (self ):
163
+ assert self .serverapp is not None
161
164
return self .serverapp .config ["ServerApp" ].get ("open_browser" , True )
162
165
163
166
@property
164
167
def config_file_paths (self ):
165
168
"""Look on the same path as our parent for config files"""
166
169
# rely on parent serverapp, which should control all config loading
170
+ assert self .serverapp is not None
167
171
return self .serverapp .config_file_paths
168
172
169
173
# The extension name used to name the jupyter config
170
174
# file, jupyter_{name}_config.
171
175
# This should also match the jupyter subcommand used to launch
172
176
# this extension from the CLI, e.g. `jupyter {name}`.
173
- name : t . Union [ str , Unicode ] = "ExtensionApp" # type:ignore[assignment]
177
+ name : str | Unicode = "ExtensionApp" # type:ignore[assignment]
174
178
175
179
@classmethod
176
180
def get_extension_package (cls ):
@@ -206,7 +210,7 @@ def _default_url(self):
206
210
]
207
211
208
212
# A ServerApp is not defined yet, but will be initialized below.
209
- serverapp = Any ()
213
+ serverapp : ServerApp | None = Any () # type:ignore[assignment]
210
214
211
215
@default ("serverapp" )
212
216
def _default_serverapp (self ):
@@ -242,6 +246,7 @@ def _default_log_format(self):
242
246
@default ("static_url_prefix" )
243
247
def _default_static_url_prefix (self ):
244
248
static_url = f"static/{ self .name } /"
249
+ assert self .serverapp is not None
245
250
return url_path_join (self .serverapp .base_url , static_url )
246
251
247
252
static_paths = List (
@@ -264,7 +269,9 @@ def _default_static_url_prefix(self):
264
269
265
270
settings = Dict (help = _i18n ("""Settings that will passed to the server.""" )).tag (config = True )
266
271
267
- handlers = List (help = _i18n ("""Handlers appended to the server.""" )).tag (config = True )
272
+ handlers : List [tuple [t .Any , ...]] = List (
273
+ help = _i18n ("""Handlers appended to the server.""" )
274
+ ).tag (config = True ) # type:ignore[assignment]
268
275
269
276
def _config_file_name_default (self ):
270
277
"""The default config file name."""
@@ -295,6 +302,7 @@ def _prepare_config(self):
295
302
def _prepare_settings (self ):
296
303
"""Prepare the settings."""
297
304
# Make webapp settings accessible to initialize_settings method
305
+ assert self .serverapp is not None
298
306
webapp = self .serverapp .web_app
299
307
self .settings .update (** webapp .settings )
300
308
@@ -314,6 +322,7 @@ def _prepare_settings(self):
314
322
315
323
def _prepare_handlers (self ):
316
324
"""Prepare the handlers."""
325
+ assert self .serverapp is not None
317
326
webapp = self .serverapp .web_app
318
327
319
328
# Get handlers defined by extension subclass.
@@ -352,7 +361,7 @@ def _prepare_handlers(self):
352
361
)
353
362
new_handlers .append (handler )
354
363
355
- webapp .add_handlers (".*$" , new_handlers )
364
+ webapp .add_handlers (".*$" , new_handlers ) # type:ignore[arg-type]
356
365
357
366
def _prepare_templates (self ):
358
367
"""Add templates to web app settings if extension has templates."""
@@ -372,7 +381,7 @@ def _jupyter_server_config(self):
372
381
base_config ["ServerApp" ].update (self .serverapp_config )
373
382
return base_config
374
383
375
- def _link_jupyter_server_extension (self , serverapp ) :
384
+ def _link_jupyter_server_extension (self , serverapp : ServerApp ) -> None :
376
385
"""Link the ExtensionApp to an initialized ServerApp.
377
386
378
387
The ServerApp is stored as an attribute and config
@@ -436,6 +445,7 @@ def start(self):
436
445
"""
437
446
super ().start ()
438
447
# Start the server.
448
+ assert self .serverapp is not None
439
449
self .serverapp .start ()
440
450
441
451
def current_activity (self ):
@@ -447,6 +457,7 @@ async def stop_extension(self):
447
457
448
458
def stop (self ):
449
459
"""Stop the underlying Jupyter server."""
460
+ assert self .serverapp is not None
450
461
self .serverapp .stop ()
451
462
self .serverapp .clear_instance ()
452
463
0 commit comments