Skip to content

Commit 49078f3

Browse files
committed
only accept bytes of length=1 in BaseEventQueue.push()
1 parent ab8efa7 commit 49078f3

File tree

2 files changed

+18
-18
lines changed

2 files changed

+18
-18
lines changed

Lib/_pyrepl/base_eventqueue.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,13 @@ def insert(self, event: Event) -> None:
6969
trace('added event {event}', event=event)
7070
self.events.append(event)
7171

72-
def push(self, char: int | bytes) -> None:
72+
def push(self, char: bytes) -> None:
7373
"""
7474
Processes a character by updating the buffer and handling special key mappings.
7575
"""
76-
ord_char = char if isinstance(char, int) else ord(char)
77-
char = bytes(bytearray((ord_char,)))
78-
self.buf.append(ord_char)
76+
assert isinstance(char, bytes)
77+
assert len(char) == 1
78+
self.buf.extend(char)
7979
if char in self.keymap:
8080
if self.keymap is self.compiled_keymap:
8181
# sanity check, buffer is empty when a special key comes

Lib/test/test_pyrepl/test_eventqueue.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def test_push_with_key_in_keymap(self, mock_keymap):
5353
mock_keymap.compile_keymap.return_value = {"a": "b"}
5454
eq = self.make_eventqueue()
5555
eq.keymap = {b"a": "b"}
56-
eq.push("a")
56+
eq.push(b"a")
5757
mock_keymap.compile_keymap.assert_called()
5858
self.assertEqual(eq.events[0].evt, "key")
5959
self.assertEqual(eq.events[0].data, "b")
@@ -63,7 +63,7 @@ def test_push_without_key_in_keymap(self, mock_keymap):
6363
mock_keymap.compile_keymap.return_value = {"a": "b"}
6464
eq = self.make_eventqueue()
6565
eq.keymap = {b"c": "d"}
66-
eq.push("a")
66+
eq.push(b"a")
6767
mock_keymap.compile_keymap.assert_called()
6868
self.assertEqual(eq.events[0].evt, "key")
6969
self.assertEqual(eq.events[0].data, "a")
@@ -73,13 +73,13 @@ def test_push_with_keymap_in_keymap(self, mock_keymap):
7373
mock_keymap.compile_keymap.return_value = {"a": "b"}
7474
eq = self.make_eventqueue()
7575
eq.keymap = {b"a": {b"b": "c"}}
76-
eq.push("a")
76+
eq.push(b"a")
7777
mock_keymap.compile_keymap.assert_called()
7878
self.assertTrue(eq.empty())
79-
eq.push("b")
79+
eq.push(b"b")
8080
self.assertEqual(eq.events[0].evt, "key")
8181
self.assertEqual(eq.events[0].data, "c")
82-
eq.push("d")
82+
eq.push(b"d")
8383
self.assertEqual(eq.events[1].evt, "key")
8484
self.assertEqual(eq.events[1].data, "d")
8585

@@ -88,32 +88,32 @@ def test_push_with_keymap_in_keymap_and_escape(self, mock_keymap):
8888
mock_keymap.compile_keymap.return_value = {"a": "b"}
8989
eq = self.make_eventqueue()
9090
eq.keymap = {b"a": {b"b": "c"}}
91-
eq.push("a")
91+
eq.push(b"a")
9292
mock_keymap.compile_keymap.assert_called()
9393
self.assertTrue(eq.empty())
9494
eq.flush_buf()
95-
eq.push("\033")
95+
eq.push(b"\033")
9696
self.assertEqual(eq.events[0].evt, "key")
9797
self.assertEqual(eq.events[0].data, "\033")
98-
eq.push("b")
98+
eq.push(b"b")
9999
self.assertEqual(eq.events[1].evt, "key")
100100
self.assertEqual(eq.events[1].data, "b")
101101

102102
def test_push_special_key(self):
103103
eq = self.make_eventqueue()
104104
eq.keymap = {}
105-
eq.push("\x1b")
106-
eq.push("[")
107-
eq.push("A")
105+
eq.push(b"\x1b")
106+
eq.push(b"[")
107+
eq.push(b"A")
108108
self.assertEqual(eq.events[0].evt, "key")
109109
self.assertEqual(eq.events[0].data, "\x1b")
110110

111111
def test_push_unrecognized_escape_sequence(self):
112112
eq = self.make_eventqueue()
113113
eq.keymap = {}
114-
eq.push("\x1b")
115-
eq.push("[")
116-
eq.push("Z")
114+
eq.push(b"\x1b")
115+
eq.push(b"[")
116+
eq.push(b"Z")
117117
self.assertEqual(len(eq.events), 3)
118118
self.assertEqual(eq.events[0].evt, "key")
119119
self.assertEqual(eq.events[0].data, "\x1b")

0 commit comments

Comments
 (0)