gh-133490: Add color support to remote PDB (#133491)

This commit is contained in:
Matt Wozniski 2025-05-06 01:28:16 -04:00 committed by GitHub
parent 57c9810ba4
commit 982830ce56
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 30 additions and 3 deletions

View file

@ -2677,6 +2677,7 @@ class _PdbServer(Pdb):
sockfile,
signal_server=None,
owns_sockfile=True,
colorize=False,
**kwargs,
):
self._owns_sockfile = owns_sockfile
@ -2687,7 +2688,10 @@ class _PdbServer(Pdb):
if signal_server:
# Only started by the top level _PdbServer, not recursive ones.
self._start_signal_listener(signal_server)
# Override the `colorize` attribute set by the parent constructor,
# because it checks the server's stdout, rather than the client's.
super().__init__(colorize=False, **kwargs)
self.colorize = colorize
@staticmethod
def protocol_version():
@ -2975,7 +2979,11 @@ class _PdbServer(Pdb):
@typing.override
def _create_recursive_debugger(self):
return _PdbServer(self._sockfile, owns_sockfile=False)
return _PdbServer(
self._sockfile,
owns_sockfile=False,
colorize=self.colorize,
)
@typing.override
def _prompt_for_confirmation(self, prompt, default):
@ -3336,7 +3344,16 @@ class _PdbClient:
return None
def _connect(*, host, port, frame, commands, version, signal_raising_thread):
def _connect(
*,
host,
port,
frame,
commands,
version,
signal_raising_thread,
colorize,
):
with closing(socket.create_connection((host, port))) as conn:
sockfile = conn.makefile("rwb")
@ -3347,7 +3364,11 @@ def _connect(*, host, port, frame, commands, version, signal_raising_thread):
else:
signal_server = None
remote_pdb = _PdbServer(sockfile, signal_server=signal_server)
remote_pdb = _PdbServer(
sockfile,
signal_server=signal_server,
colorize=colorize,
)
weakref.finalize(remote_pdb, sockfile.close)
if Pdb._last_pdb_instance is not None:
@ -3379,6 +3400,7 @@ def attach(pid, commands=()):
)
use_signal_thread = sys.platform == "win32"
colorize = _colorize.can_colorize()
connect_script.write(
textwrap.dedent(
@ -3391,6 +3413,7 @@ def attach(pid, commands=()):
commands={json.dumps("\n".join(commands))},
version={_PdbServer.protocol_version()},
signal_raising_thread={use_signal_thread!r},
colorize={colorize!r},
)
"""
)

View file

@ -1040,6 +1040,7 @@ class PdbConnectTestCase(unittest.TestCase):
commands="",
version=pdb._PdbServer.protocol_version(),
signal_raising_thread=False,
colorize=False,
)
return x # This line won't be reached in debugging
@ -1210,6 +1211,7 @@ class PdbConnectTestCase(unittest.TestCase):
commands="",
version=pdb._PdbServer.protocol_version(),
signal_raising_thread=True,
colorize=False,
)
print("Connected to debugger")
iterations = 50
@ -1301,6 +1303,7 @@ class PdbConnectTestCase(unittest.TestCase):
commands="",
version=fake_version,
signal_raising_thread=False,
colorize=False,
)
# This should print if the debugger detaches correctly

View file

@ -0,0 +1 @@
Add color support to PDB in remote mode.