Skip to content

Commit 08b045c

Browse files
authored
[3.13] gh-127349: Add check for correct resizing in REPL (GH-127387) (#129485)
(cherry picked from commit 510fefd)
1 parent 506c76f commit 08b045c

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed

Lib/_pyrepl/reader.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -587,10 +587,11 @@ def setpos_from_xy(self, x: int, y: int) -> None:
587587
def pos2xy(self) -> tuple[int, int]:
588588
"""Return the x, y coordinates of position 'pos'."""
589589
# this *is* incomprehensible, yes.
590-
y = 0
590+
p, y = 0, 0
591+
l2: list[int] = []
591592
pos = self.pos
592593
assert 0 <= pos <= len(self.buffer)
593-
if pos == len(self.buffer):
594+
if pos == len(self.buffer) and len(self.screeninfo) > 0:
594595
y = len(self.screeninfo) - 1
595596
p, l2 = self.screeninfo[y]
596597
return p + sum(l2) + l2.count(0), y

Lib/test/test_pyrepl/test_reader.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22
import functools
33
import rlcompleter
44
from unittest import TestCase
5-
from unittest.mock import MagicMock, patch
5+
from unittest.mock import MagicMock
66

7-
from .support import handle_all_events, handle_events_narrow_console, code_to_events, prepare_reader
8-
from test.support import import_helper
7+
from .support import handle_all_events, handle_events_narrow_console, code_to_events, prepare_reader, prepare_console
98
from _pyrepl.console import Event
109
from _pyrepl.reader import Reader
1110

@@ -313,3 +312,10 @@ def test_key_press_on_tab_press_once(self):
313312
reader, _ = handle_all_events(events, prepare_reader=completing_reader)
314313

315314
self.assert_screen_equals(reader, f"{code}a")
315+
316+
def test_pos2xy_with_no_columns(self):
317+
console = prepare_console([])
318+
reader = prepare_reader(console)
319+
# Simulate a resize to 0 columns
320+
reader.screeninfo = []
321+
self.assertEqual(reader.pos2xy(), (0, 0))
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fixed the error when resizing terminal in Python REPL. Patch by Semyon
2+
Moroz.

0 commit comments

Comments
 (0)