From d20679b535718501849fd341b2cd08790b8e20d5 Mon Sep 17 00:00:00 2001 From: SafetyQuincyF Date: Wed, 30 Oct 2024 16:39:06 -0700 Subject: [PATCH] fix:jupyter notebook rich format removal --- .vscode/launch.json | 10 ++++++++++ safety/auth/server.py | 41 +++++++++++++---------------------------- 2 files changed, 23 insertions(+), 28 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index c3d91a7c..18caeb25 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -11,6 +11,16 @@ ], "console": "integratedTerminal" }, + { + "name": "Safety Auth Login --headless", + "type": "debugpy", + "request": "launch", + "module": "safety", + "args": [ + "auth","login","--headless" + ], + "console": "integratedTerminal" + }, { "name": "Safety Auth Logout", "type": "debugpy", diff --git a/safety/auth/server.py b/safety/auth/server.py index 9003df9a..d926eaa4 100644 --- a/safety/auth/server.py +++ b/safety/auth/server.py @@ -10,6 +10,7 @@ import click from safety.auth.cli_utils import load_auth_session +from safety.auth.utils import is_jupyter_notebook from safety.console import main_console as console from safety.auth.constants import AUTH_SERVER_URL, CLI_AUTH_SUCCESS, CLI_LOGOUT_SUCCESS, HOST @@ -189,13 +190,6 @@ def process_browser_callback(uri: str, **kwargs: Any) -> Any: class ThreadedHTTPServer(http.server.HTTPServer): def __init__(self, server_address: Tuple, RequestHandlerClass: Any) -> None: - """ - Initialize the ThreadedHTTPServer. - - Args: - server_address (Tuple): The server address as a tuple (host, port). - RequestHandlerClass (Any): The request handler class. - """ super().__init__(server_address, RequestHandlerClass) self.initial_state = None self.ctx = None @@ -203,9 +197,6 @@ def __init__(self, server_address: Tuple, RequestHandlerClass: Any) -> None: self.timeout_reached = False def handle_timeout(self) -> None: - """ - Handle server timeout. - """ self.timeout_reached = True return super().handle_timeout() @@ -222,24 +213,23 @@ def handle_timeout(self) -> None: message = "Copy and paste this url into your browser:" - if not headless: - # Start a threaded HTTP server to handle the callback server = ThreadedHTTPServer((HOST, PORT), CallbackHandler) server.initial_state = initial_state server.timeout = kwargs.get("timeout", 600) server.ctx = ctx server_thread = threading.Thread(target=server.handle_request) server_thread.start() - message = f"If the browser does not automatically open in 5 seconds, " \ - "copy and paste this url into your browser:" + message = f"If the browser does not automatically open in 5 seconds, copy and paste this url into your browser:" target = uri if headless else f"{uri}&port={PORT}" - console.print(f"{message} [link={target}]{target}[/link]") - console.print() + + if is_jupyter_notebook(): + console.print(f"{message} {target}") + else: + console.print(f"{message} [link={target}]{target}[/link]") if headless: - # Handle the headless mode where user manually provides the response exchange_data = None while not exchange_data: auth_code_text = Prompt.ask("Paste the response here", default=None, console=console) @@ -247,18 +237,16 @@ def handle_timeout(self) -> None: exchange_data = json.loads(auth_code_text) state = exchange_data["state"] code = exchange_data["code"] - except Exception as e: + except Exception: code = state = None return auth_process(code=code, - state=state, - initial_state=initial_state, - code_verifier=ctx.obj.auth.code_verifier, - client=ctx.obj.auth.client) + state=state, + initial_state=initial_state, + code_verifier=ctx.obj.auth.code_verifier, + client=ctx.obj.auth.client) else: - # Wait for the browser authentication in non-headless mode wait_msg = "waiting for browser authentication" - with console.status(wait_msg, spinner="bouncingBar"): time.sleep(2) click.launch(target) @@ -266,10 +254,7 @@ def handle_timeout(self) -> None: except OSError as e: if e.errno == socket.errno.EADDRINUSE: - reason = f"The port {HOST}:{PORT} is currently being used by another" \ - "application or process. Please choose a different port or " \ - "terminate the conflicting application/process to free up " \ - "the port." + reason = f"The port {HOST}:{PORT} is currently being used by another application or process. Please choose a different port or terminate the conflicting application/process to free up the port." else: reason = "An error occurred while performing this operation."