Skip to content

Commit ca18ff2

Browse files
skirpichevcfbolz
andauthored
gh-123228: fix return type for _ReadlineWrapper.get_line_buffer() (#123281)
Co-authored-by: Carl Friedrich Bolz-Tereick <[email protected]>
1 parent c4ee4e7 commit ca18ff2

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

Lib/_pyrepl/readline.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -479,15 +479,14 @@ def add_history(self, line: str) -> None:
479479
def set_startup_hook(self, function: Callback | None = None) -> None:
480480
self.startup_hook = function
481481

482-
def get_line_buffer(self) -> bytes:
483-
buf_str = self.get_reader().get_unicode()
484-
return buf_str.encode(ENCODING)
482+
def get_line_buffer(self) -> str:
483+
return self.get_reader().get_unicode()
485484

486485
def _get_idxs(self) -> tuple[int, int]:
487486
start = cursor = self.get_reader().pos
488487
buf = self.get_line_buffer()
489488
for i in range(cursor - 1, -1, -1):
490-
if str(buf[i]) in self.get_completer_delims():
489+
if buf[i] in self.get_completer_delims():
491490
break
492491
start = i
493492
return start, cursor

Lib/test/test_pyrepl/test_pyrepl.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
make_clean_env,
2727
)
2828
from _pyrepl.console import Event
29-
from _pyrepl.readline import ReadlineAlikeReader, ReadlineConfig
29+
from _pyrepl.readline import (ReadlineAlikeReader, ReadlineConfig,
30+
_ReadlineWrapper)
3031
from _pyrepl.readline import multiline_input as readline_multiline_input
3132

3233
try:
@@ -516,6 +517,11 @@ def test_basic(self):
516517
self.assertEqual(output, "1+1")
517518
self.assertEqual(clean_screen(reader.screen), "1+1")
518519

520+
def test_get_line_buffer_returns_str(self):
521+
reader = self.prepare_reader(code_to_events("\n"))
522+
wrapper = _ReadlineWrapper(reader=reader)
523+
self.assertIs(type(wrapper.get_line_buffer()), str)
524+
519525
def test_multiline_edit(self):
520526
events = itertools.chain(
521527
code_to_events("def f():\n...\n\n"),
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Fix return type for
2+
:func:`!_pyrepl.readline._ReadlineWrapper.get_line_buffer` to be
3+
:func:`str`. Patch by Sergey B Kirpichev.

0 commit comments

Comments
 (0)