Skip to content

Commit 68a64ea

Browse files
authored
Merge pull request #485 from afshin/siblings
Fix loading of sibling extensions
2 parents 8bfdd40 + 0d11ffc commit 68a64ea

File tree

3 files changed

+26
-4
lines changed

3 files changed

+26
-4
lines changed

jupyter_server/extension/application.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -477,13 +477,18 @@ def initialize_server(cls, argv=[], load_other_extensions=True, **kwargs):
477477
The `launch_instance` method uses this method to initialize
478478
and start a server.
479479
"""
480+
jpserver_extensions = {cls.get_extension_package(): True}
481+
find_extensions = cls.load_other_extensions
482+
if 'jpserver_extensions' in cls.serverapp_config:
483+
jpserver_extensions.update(cls.serverapp_config['jpserver_extensions'])
484+
cls.serverapp_config['jpserver_extensions'] = jpserver_extensions
485+
find_extensions = False
480486
serverapp = ServerApp.instance(
481-
jpserver_extensions={cls.get_extension_package(): True}, **kwargs)
482-
serverapp.aliases.update(cls.aliases)
487+
jpserver_extensions=jpserver_extensions, **kwargs)
483488
serverapp.initialize(
484489
argv=argv,
485490
starter_extension=cls.name,
486-
find_extensions=cls.load_other_extensions,
491+
find_extensions=find_extensions,
487492
)
488493
return serverapp
489494

@@ -510,7 +515,6 @@ def launch_instance(cls, argv=None, **kwargs):
510515
# before initializing server to make sure these
511516
# arguments trigger actions from the extension not the server.
512517
_preparse_for_stopping_flags(cls, args)
513-
514518
serverapp = cls.initialize_server(argv=args)
515519

516520
# Log if extension is blocking other extensions from loading.

jupyter_server/tests/extension/mockextensions/app.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ class MockExtensionApp(ExtensionAppJinjaMixin, ExtensionApp):
4747
mock_trait = Unicode('mock trait', config=True)
4848
loaded = False
4949

50+
serverapp_config = {
51+
"jpserver_extensions": {
52+
"jupyter_server.tests.extension.mockextensions.mock1": True
53+
}
54+
}
55+
5056
@staticmethod
5157
def get_extension_package():
5258
return "jupyter_server.tests.extension.mockextensions"

jupyter_server/tests/extension/test_app.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,15 @@ def test_extensionapp_load_config_file(
8989
def test_browser_open(monkeypatch, jp_environ, config, expected_value):
9090
serverapp = MockExtensionApp.initialize_server(config=Config(config))
9191
assert serverapp.open_browser == expected_value
92+
93+
94+
95+
def test_load_parallel_extensions(monkeypatch, jp_environ):
96+
serverapp = MockExtensionApp.initialize_server()
97+
exts = serverapp.extension_manager.extensions
98+
assert 'jupyter_server.tests.extension.mockextensions.mock1' in exts
99+
assert 'jupyter_server.tests.extension.mockextensions' in exts
100+
101+
exts = serverapp.jpserver_extensions
102+
assert exts['jupyter_server.tests.extension.mockextensions.mock1']
103+
assert exts['jupyter_server.tests.extension.mockextensions']

0 commit comments

Comments
 (0)