]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-123228: fix return type for _ReadlineWrapper.get_line_buffer() (#123281)
authorSergey B Kirpichev <skirpichev@gmail.com>
Sat, 24 Aug 2024 15:46:05 +0000 (18:46 +0300)
committerGitHub <noreply@github.com>
Sat, 24 Aug 2024 15:46:05 +0000 (17:46 +0200)
Co-authored-by: Carl Friedrich Bolz-Tereick <cfbolz@gmx.de>
Lib/_pyrepl/readline.py
Lib/test/test_pyrepl/test_pyrepl.py
Misc/NEWS.d/next/Library/2024-08-24-06-05-41.gh-issue-123228.jR_5O5.rst [new file with mode: 0644]

index 143770a885a2c2bd290736225d4d26d5b613215f..483eb1039fa062df94b169863116725c53fd9fb9 100644 (file)
@@ -479,15 +479,14 @@ class _ReadlineWrapper:
     def set_startup_hook(self, function: Callback | None = None) -> None:
         self.startup_hook = function
 
-    def get_line_buffer(self) -> bytes:
-        buf_str = self.get_reader().get_unicode()
-        return buf_str.encode(ENCODING)
+    def get_line_buffer(self) -> str:
+        return self.get_reader().get_unicode()
 
     def _get_idxs(self) -> tuple[int, int]:
         start = cursor = self.get_reader().pos
         buf = self.get_line_buffer()
         for i in range(cursor - 1, -1, -1):
-            if str(buf[i]) in self.get_completer_delims():
+            if buf[i] in self.get_completer_delims():
                 break
             start = i
         return start, cursor
index b03cf136ec5c782961c23932e90f14149981c3f6..58078d6ff11b39487f0dca5e9475bd157c14696c 100644 (file)
@@ -26,7 +26,8 @@ from .support import (
     make_clean_env,
 )
 from _pyrepl.console import Event
-from _pyrepl.readline import ReadlineAlikeReader, ReadlineConfig
+from _pyrepl.readline import (ReadlineAlikeReader, ReadlineConfig,
+                              _ReadlineWrapper)
 from _pyrepl.readline import multiline_input as readline_multiline_input
 
 try:
@@ -516,6 +517,11 @@ class TestPyReplOutput(TestCase):
         self.assertEqual(output, "1+1")
         self.assertEqual(clean_screen(reader.screen), "1+1")
 
+    def test_get_line_buffer_returns_str(self):
+        reader = self.prepare_reader(code_to_events("\n"))
+        wrapper = _ReadlineWrapper(reader=reader)
+        self.assertIs(type(wrapper.get_line_buffer()), str)
+
     def test_multiline_edit(self):
         events = itertools.chain(
             code_to_events("def f():\n...\n\n"),
diff --git a/Misc/NEWS.d/next/Library/2024-08-24-06-05-41.gh-issue-123228.jR_5O5.rst b/Misc/NEWS.d/next/Library/2024-08-24-06-05-41.gh-issue-123228.jR_5O5.rst
new file mode 100644 (file)
index 0000000..99b3c0c
--- /dev/null
@@ -0,0 +1,3 @@
+Fix return type for
+:func:`!_pyrepl.readline._ReadlineWrapper.get_line_buffer` to be
+:func:`str`.  Patch by Sergey B Kirpichev.