https://github.com/python/cpython/commit/982830ce564f1ed439c516533bbfeb03d655f6df
commit: 982830ce564f1ed439c516533bbfeb03d655f6df
branch: main
author: Matt Wozniski <[email protected]>
committer: gaogaotiantian <[email protected]>
date: 2025-05-06T01:28:16-04:00
summary:
gh-133490: Add color support to remote PDB (#133491)
files:
A Misc/NEWS.d/next/Library/2025-05-06-00-10-10.gh-issue-133490.Ubrppz.rst
M Lib/pdb.py
M Lib/test/test_remote_pdb.py
diff --git a/Lib/pdb.py b/Lib/pdb.py
index 225bbb9c5e592b..4efda171b7a813 100644
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -2677,6 +2677,7 @@ def __init__(
sockfile,
signal_server=None,
owns_sockfile=True,
+ colorize=False,
**kwargs,
):
self._owns_sockfile = owns_sockfile
@@ -2687,7 +2688,10 @@ def __init__(
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 @@ def do_interact(self, arg):
@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 @@ def complete(self, text, state):
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},
)
"""
)
diff --git a/Lib/test/test_remote_pdb.py b/Lib/test/test_remote_pdb.py
index 9c794991dd5ed9..7c77bedb766c53 100644
--- a/Lib/test/test_remote_pdb.py
+++ b/Lib/test/test_remote_pdb.py
@@ -1040,6 +1040,7 @@ def dummy_function():
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 @@ def bar():
commands="",
version=pdb._PdbServer.protocol_version(),
signal_raising_thread=True,
+ colorize=False,
)
print("Connected to debugger")
iterations = 50
@@ -1301,6 +1303,7 @@ def run_test():
commands="",
version=fake_version,
signal_raising_thread=False,
+ colorize=False,
)
# This should print if the debugger detaches correctly
diff --git
a/Misc/NEWS.d/next/Library/2025-05-06-00-10-10.gh-issue-133490.Ubrppz.rst
b/Misc/NEWS.d/next/Library/2025-05-06-00-10-10.gh-issue-133490.Ubrppz.rst
new file mode 100644
index 00000000000000..beaa8db7fa93c6
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-05-06-00-10-10.gh-issue-133490.Ubrppz.rst
@@ -0,0 +1 @@
+Add color support to PDB in remote mode.
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]