diff options
author | Sergey B Kirpichev <skirpichev@gmail.com> | 2024-08-24 15:46:05 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-24 15:46:05 (GMT) |
commit | ca18ff2a34435faa557f7f9d4d3a554dadb05e50 (patch) | |
tree | b7c6b7db0b7525cfa002bdd10a0e6b7fb11285e1 | |
parent | c4ee4e756a311f03633723445299bde90eb7b79c (diff) | |
download | cpython-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.py | 7 | ||||
-rw-r--r-- | Lib/test/test_pyrepl/test_pyrepl.py | 8 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2024-08-24-06-05-41.gh-issue-123228.jR_5O5.rst | 3 |
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. |