diff --git a/Lib/idlelib/idle_test/test_redirector.py b/Lib/idlelib/idle_test/test_redirector.py index bd486d7da660108..58e7775071c19c1 100644 --- a/Lib/idlelib/idle_test/test_redirector.py +++ b/Lib/idlelib/idle_test/test_redirector.py @@ -64,8 +64,10 @@ def tearDown(self): self.redir.close() def test_repr(self): # partly for 100% coverage - self.assertIn('Redirector', repr(self.redir)) - self.assertIn('Original', repr(self.orig_insert)) + self.assertEqual(repr(self.redir), + f"WidgetRedirector(Text<{self.text._w}>)") + self.assertEqual(repr(self.orig_insert), + f"OriginalCommand({self.redir!r}, 'insert')") def test_register(self): self.assertEqual(self.text.get('1.0', 'end'), '\n') diff --git a/Lib/idlelib/redirector.py b/Lib/idlelib/redirector.py index 8e2ba68d3815bf0..821a45ee7982a47 100644 --- a/Lib/idlelib/redirector.py +++ b/Lib/idlelib/redirector.py @@ -48,7 +48,7 @@ def __init__(self, widget): def __repr__(self): w = self.widget - return f"{self.__class__.__name__,}({w.__class__.__name__}<{w._w}>)" + return f"{self.__class__.__name__}({w.__class__.__name__}<{w._w}>)" def close(self): "Unregister operations and revert redirection created by .__init__." @@ -143,7 +143,7 @@ def __init__(self, redir, operation): self.orig_and_operation = (redir.orig, operation) def __repr__(self): - return f"{self.__class__.__name__,}({self.redir!r}, {self.operation!r})" + return f"{self.__class__.__name__}({self.redir!r}, {self.operation!r})" def __call__(self, *args): return self.tk_call(self.orig_and_operation + args) diff --git a/Misc/NEWS.d/next/IDLE/2026-11-06-17-12-40.gh-issue-161477.smXIKC.rst b/Misc/NEWS.d/next/IDLE/2026-11-06-17-12-40.gh-issue-161477.smXIKC.rst new file mode 100644 index 000000000000000..ca955e608bc8936 --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2026-11-06-17-12-40.gh-issue-161477.smXIKC.rst @@ -0,0 +1,3 @@ +Fix ``repr()`` of ``idlelib.redirector.WidgetRedirector`` and +``idlelib.redirector.OriginalCommand``, which displayed a spurious +one-element tuple.