summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergey B Kirpichev <skirpichev@gmail.com>2024-08-24 15:46:05 (GMT)
committerGitHub <noreply@github.com>2024-08-24 15:46:05 (GMT)
commitca18ff2a34435faa557f7f9d4d3a554dadb05e50 (patch)
treeb7c6b7db0b7525cfa002bdd10a0e6b7fb11285e1
parentc4ee4e756a311f03633723445299bde90eb7b79c (diff)
downloadcpython-ca18ff2a34435faa557f7f9d4d3a554dadb05e50.zip
cpython-ca18ff2a34435faa557f7f9d4d3a554dadb05e50.tar.gz
cpython-ca18ff2a34435faa557f7f9d4d3a554dadb05e50.tar.bz2
gh-123228: fix return type for _ReadlineWrapper.get_line_buffer() (#123281)
Co-authored-by: Carl Friedrich Bolz-Tereick <cfbolz@gmx.de>
-rw-r--r--Lib/_pyrepl/readline.py7
-rw-r--r--Lib/test/test_pyrepl/test_pyrepl.py8
-rw-r--r--Misc/NEWS.d/next/Library/2024-08-24-06-05-41.gh-issue-123228.jR_5O5.rst3
3 files changed, 13 insertions, 5 deletions
diff --git a/Lib/_pyrepl/readline.py b/Lib/_pyrepl/readline.py
index 143770a..483eb10 100644
--- a/Lib/_pyrepl/readline.py
+++ b/Lib/_pyrepl/readline.py
@@ -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
diff --git a/Lib/test/test_pyrepl/test_pyrepl.py b/Lib/test/test_pyrepl/test_pyrepl.py
index b03cf13..58078d6 100644
--- a/Lib/test/test_pyrepl/test_pyrepl.py
+++ b/Lib/test/test_pyrepl/test_pyrepl.py
@@ -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
index 0000000..99b3c0c
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2024-08-24-06-05-41.gh-issue-123228.jR_5O5.rst
@@ -0,0 +1,3 @@
+Fix return type for
+:func:`!_pyrepl.readline._ReadlineWrapper.get_line_buffer` to be
+:func:`str`. Patch by Sergey B Kirpichev.