From d08180c1347a2d9ac68c856eb358ad77fdcb2d15 Mon Sep 17 00:00:00 2001 From: Daniel Hahler <git@thequod.de> Date: Sun, 10 Mar 2019 22:41:47 +0100 Subject: [PATCH 1/2] Fix/re-enable quoted_insert: use self.evt.data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reverts https://github.com/pypy/pyrepl/commit/a59f338cc7b6c. Fixes: File "/usr/lib/python3.7/cmd.py", line 126, in cmdloop line = input(self.prompt) File "…/src/pyrepl/pyrepl/readline.py", line 229, in raw_input ret = reader.readline(startup_hook=self.startup_hook) File "…/src/pyrepl/pyrepl/reader.py", line 605, in readline self.handle1() File "…/src/pyrepl/pyrepl/reader.py", line 588, in handle1 self.do_cmd(cmd) File "…/src/pyrepl/pyrepl/reader.py", line 535, in do_cmd cmd.do() File "…/src/pyrepl/pyrepl/commands.py", line 373, in do r.insert((self.event + r.console.getpending().data) * r.get_arg()) TypeError: can't concat str to bytearray --- pyrepl/commands.py | 8 ++++++-- testing/infrastructure.py | 4 ++++ testing/test_wishes.py | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/pyrepl/commands.py b/pyrepl/commands.py index af71c70..17a6190 100644 --- a/pyrepl/commands.py +++ b/pyrepl/commands.py @@ -369,8 +369,12 @@ def do(self): class qIHelp(Command): def do(self): + from .reader import disp_str + r = self.reader - r.insert((bytes(self.event) + r.console.getpending().data) * r.get_arg()) + pending = r.console.getpending().data + disp = disp_str((self.event + pending).encode())[0] + r.insert(disp * r.get_arg()) r.pop_input_trans() from pyrepl import input @@ -379,7 +383,7 @@ class QITrans(object): def push(self, evt): self.evt = evt def get(self): - return ('qIHelp', self.evt.raw) + return ('qIHelp', self.evt.data) class quoted_insert(Command): kills_digit_arg = 0 diff --git a/testing/infrastructure.py b/testing/infrastructure.py index c5a4c96..e90298b 100644 --- a/testing/infrastructure.py +++ b/testing/infrastructure.py @@ -55,6 +55,10 @@ def get_event(self, block=1): print("event", ev) return Event(*ev) + def getpending(self): + """Nothing pending, but do not return None here.""" + return Event('key', '', b'') + class TestReader(Reader): __test__ = False diff --git a/testing/test_wishes.py b/testing/test_wishes.py index 650dff7..d0c1e6f 100644 --- a/testing/test_wishes.py +++ b/testing/test_wishes.py @@ -27,5 +27,5 @@ def test_quoted_insert_repeat(): read_spec([ (('digit-arg', '3'), ['']), (('quoted-insert', None), ['']), - (('self-insert', '\033'), ['^[^[^[']), + (('key', '\033'), ['^[^[^[']), (('accept', None), None)]) From 9a24f25ee45aab7c012fac58b03e6bca5f9e0f31 Mon Sep 17 00:00:00 2001 From: Daniel Hahler <git@thequod.de> Date: Thu, 15 Aug 2019 05:26:06 +0200 Subject: [PATCH 2/2] fixup! Fix/re-enable quoted_insert: use self.evt.data --- pyrepl/commands.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyrepl/commands.py b/pyrepl/commands.py index 17a6190..c121f34 100644 --- a/pyrepl/commands.py +++ b/pyrepl/commands.py @@ -373,7 +373,7 @@ def do(self): r = self.reader pending = r.console.getpending().data - disp = disp_str((self.event + pending).encode())[0] + disp = disp_str((self.event + pending))[0] r.insert(disp * r.get_arg()) r.pop_input_trans()