From d1bed1a87f3992088b469f90f24b4d61e74630d1 Mon Sep 17 00:00:00 2001 From: krassowski <5832902+krassowski@users.noreply.github.com> Date: Wed, 27 Mar 2024 15:48:28 +0000 Subject: [PATCH] Backport PR #1223: Do not import debugger/debugpy unless needed --- ipykernel/ipkernel.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ipykernel/ipkernel.py b/ipykernel/ipkernel.py index 9bea4d56..39c6c767 100644 --- a/ipykernel/ipkernel.py +++ b/ipykernel/ipkernel.py @@ -22,7 +22,6 @@ from .comm.comm import BaseComm from .comm.manager import CommManager from .compiler import XCachingCompiler -from .debugger import Debugger, _is_debugpy_available from .eventloops import _use_appnope from .iostream import OutStream from .kernelbase import Kernel as KernelBase @@ -81,7 +80,7 @@ class IPythonKernel(KernelBase): help="Set this flag to False to deactivate the use of experimental IPython completion APIs.", ).tag(config=True) - debugpy_stream = Instance(ZMQStream, allow_none=True) if _is_debugpy_available else None + debugpy_stream = Instance(ZMQStream, allow_none=True) user_module = Any() @@ -109,6 +108,8 @@ def __init__(self, **kwargs): """Initialize the kernel.""" super().__init__(**kwargs) + from .debugger import Debugger, _is_debugpy_available + # Initialize the Debugger if _is_debugpy_available: self.debugger = Debugger( @@ -209,6 +210,8 @@ def __init__(self, **kwargs): } def dispatch_debugpy(self, msg): + from .debugger import _is_debugpy_available + if _is_debugpy_available: # The first frame is the socket id, we can drop it frame = msg[1].bytes.decode("utf-8") @@ -524,6 +527,8 @@ def do_complete(self, code, cursor_pos): async def do_debug_request(self, msg): """Handle a debug request.""" + from .debugger import _is_debugpy_available + if _is_debugpy_available: return await self.debugger.process_request(msg) return None