diff --git a/jupyter_server/extension/application.py b/jupyter_server/extension/application.py index 791bc9fca6..db9909c609 100644 --- a/jupyter_server/extension/application.py +++ b/jupyter_server/extension/application.py @@ -152,8 +152,8 @@ def _prepare_config(self): the object to the webapp's settings as `_config`. """ traits = self.class_own_traits().keys() - self.config = Config({t: getattr(self, t) for t in traits}) - self.settings['{}_config'.format(self.extension_name)] = self.config + self.extension_config = Config({t: getattr(self, t) for t in traits}) + self.settings['{}_config'.format(self.extension_name)] = self.extension_config def _prepare_settings(self): # Make webapp settings accessible to initialize_settings method @@ -279,7 +279,6 @@ def load_jupyter_server_extension(cls, serverapp, argv=[], **kwargs): # Configure and initialize extension. extension = cls() extension.initialize(serverapp, argv=argv) - return extension @classmethod @@ -290,7 +289,6 @@ def _prepare_launch(cls, serverapp, argv=[], **kwargs): """ # Load the extension extension = cls.load_jupyter_server_extension(serverapp, argv=argv, **kwargs) - # Start the browser at this extensions default_url, unless user # configures ServerApp.default_url on command line. try: @@ -313,11 +311,10 @@ def launch_instance(cls, argv=None, **kwargs): # arguments trigger actions from the extension not the server. _preparse_command_line(cls) # Handle arguments. - if argv is not None: + if argv is None: args = sys.argv[1:] # slice out extension config. else: args = [] - # Get a jupyter server instance. serverapp = cls.initialize_server(argv=args) extension = cls._prepare_launch(serverapp, argv=args, **kwargs) diff --git a/jupyter_server/extension/handler.py b/jupyter_server/extension/handler.py index ea6f8ba5d6..22737ed3bb 100644 --- a/jupyter_server/extension/handler.py +++ b/jupyter_server/extension/handler.py @@ -19,6 +19,10 @@ def initialize(self, extension_name): def config(self): return self.settings["{}_config".format(self.extension_name)] + @property + def server_config(self): + return self.settings["config"] + @property def static_url_prefix(self): return "/static/{extension_name}/".format( diff --git a/jupyter_server/serverapp.py b/jupyter_server/serverapp.py index 801ec7b22c..2f6826dc78 100755 --- a/jupyter_server/serverapp.py +++ b/jupyter_server/serverapp.py @@ -492,6 +492,11 @@ def start(self): _("Allow the server to be run from root user.") ) +flags['standalone']=( + {'ServerApp' : {'standalone' : True}}, + _("Run the server without enabling extensions.") +) + # Add notebook manager flags flags.update(boolean_flag('script', 'FileContentsManager.save_script', 'DEPRECATED, IGNORED', @@ -1138,6 +1143,12 @@ def _update_server_extensions(self, change): is not available. """)) + standalone = Bool( + False, + config=True, + help="Run the server without enabling extensions." + ) + def parse_command_line(self, argv=None): super(ServerApp, self).parse_command_line(argv) @@ -1469,7 +1480,8 @@ def initialize(self, argv=None): self.init_webapp() self.init_terminals() self.init_signal() - self.init_server_extensions() + if self.standalone is False: + self.init_server_extensions() self.init_mime_overrides() self.init_shutdown_no_activity()