https://github.com/python/cpython/commit/65afd6579fb23513432e152ca05a22d0c174f7bb
commit: 65afd6579fb23513432e152ca05a22d0c174f7bb
branch: main
author: Lukas Geiger <[email protected]>
committer: pablogsal <[email protected]>
date: 2026-07-11T16:59:37+01:00
summary:
gh-141968: Use `take_bytes` to simplify and remove copy from pyrepl
`BaseEventQueue` (#149852)
files:
M Lib/_pyrepl/base_eventqueue.py
M Lib/test/test_pyrepl/test_eventqueue.py
diff --git a/Lib/_pyrepl/base_eventqueue.py b/Lib/_pyrepl/base_eventqueue.py
index 0589a0f437ec7c5..f520ffd7d8ad11d 100644
--- a/Lib/_pyrepl/base_eventqueue.py
+++ b/Lib/_pyrepl/base_eventqueue.py
@@ -54,14 +54,6 @@ def empty(self) -> bool:
"""
return not self.events
- def flush_buf(self) -> bytearray:
- """
- Flushes the buffer and returns its contents.
- """
- old = self.buf
- self.buf = bytearray()
- return old
-
def insert(self, event: Event) -> None:
"""
Inserts an event into the queue.
@@ -87,7 +79,7 @@ def push(self, char: int | bytes) -> None:
if isinstance(k, dict):
self.keymap = k
else:
- self.insert(Event('key', k, bytes(self.flush_buf())))
+ self.insert(Event('key', k, self.buf.take_bytes())) # type:
ignore[attr-defined]
self.keymap = self.compiled_keymap
elif self.buf and self.buf[0] == 27: # escape
@@ -97,14 +89,14 @@ def push(self, char: int | bytes) -> None:
trace('unrecognized escape sequence, propagating...')
self.keymap = self.compiled_keymap
self.insert(Event('key', '\033', b'\033'))
- for _c in self.flush_buf()[1:]:
+ for _c in self.buf.take_bytes()[1:]: # type: ignore[attr-defined]
self.push(_c)
else:
try:
- decoded = bytes(self.buf).decode(self.encoding)
+ decoded = self.buf.decode(self.encoding)
except UnicodeError:
return
else:
- self.insert(Event('key', decoded, bytes(self.flush_buf())))
+ self.insert(Event('key', decoded, self.buf.take_bytes())) #
type: ignore[attr-defined]
self.keymap = self.compiled_keymap
diff --git a/Lib/test/test_pyrepl/test_eventqueue.py
b/Lib/test/test_pyrepl/test_eventqueue.py
index 69d9612b70dc776..56ab43211847a49 100644
--- a/Lib/test/test_pyrepl/test_eventqueue.py
+++ b/Lib/test/test_pyrepl/test_eventqueue.py
@@ -38,12 +38,6 @@ def test_empty(self):
eq.insert(Event("key", "a", b"a"))
self.assertFalse(eq.empty())
- def test_flush_buf(self):
- eq = self.make_eventqueue()
- eq.buf.extend(b"test")
- self.assertEqual(eq.flush_buf(), b"test")
- self.assertEqual(eq.buf, bytearray())
-
def test_insert(self):
eq = self.make_eventqueue()
event = Event("key", "a", b"a")
@@ -93,7 +87,7 @@ def test_push_with_keymap_in_keymap_and_escape(self,
mock_keymap):
eq.push(b"a")
mock_keymap.compile_keymap.assert_called()
self.assertTrue(eq.empty())
- eq.flush_buf()
+ eq.buf.resize(0)
eq.push(b"\033")
self.assertEqual(eq.events[0].evt, "key")
self.assertEqual(eq.events[0].data, "\033")
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]