From 614b3784d41f9a9f2e5ee663ab92279134c72bca Mon Sep 17 00:00:00 2001 From: Patrick Avery Date: Thu, 14 Apr 2022 13:08:19 -0500 Subject: [PATCH] feat(server): add python option to disable web browser opening This adds a "server" argument, which can override the sys.argv argument and set whether or not to open the web browser. Signed-off-by: Patrick Avery --- trame/internal/utils/logging.py | 8 ++++++-- trame/layouts/core.py | 10 +++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/trame/internal/utils/logging.py b/trame/internal/utils/logging.py index 43cf82eb..887a1b70 100644 --- a/trame/internal/utils/logging.py +++ b/trame/internal/utils/logging.py @@ -5,7 +5,7 @@ def log_js_error(message): print(f" > JS error | {message}") -def print_server_info(_fn=None): +def print_server_info(_fn=None, server=None, **kwargs): """Provide network info so clients can connect to the started server""" from trame.internal.app import get_app_instance @@ -40,7 +40,11 @@ def ready(**kwargs): except TypeError: _fn() - if not args.server: + nonlocal server + if server is None: + server = args.server + + if not server: import webbrowser import asyncio diff --git a/trame/layouts/core.py b/trame/layouts/core.py index 261188be..ba932db3 100644 --- a/trame/layouts/core.py +++ b/trame/layouts/core.py @@ -115,6 +115,10 @@ def start(self, port=None, debug=None, **kwargs): * exec_mode (str): "main" (default) or "task" for running in an environment that already has an event loop, such as a Jupyter notebook. + + The kwargs will also be forwarded to print_server_info(), so that + the `server` kwarg may be used to indicate whether a new window + should be opened. """ _app = tri.get_app_instance() @@ -126,11 +130,7 @@ def start(self, port=None, debug=None, **kwargs): debug = args.dev _app._debug = debug - - if self.on_ready: - _app.on_ready = tri.print_server_info(self.on_ready) - else: - _app.on_ready = tri.print_server_info() + _app.on_ready = tri.print_server_info(self.on_ready, **kwargs) # Dev validation tri.validate_key_names()