[pypy-commit] pyrepl py3ksupport: use deque + O(1) popleft in inputtranslator instead of list + O(N) pop(0)
RonnyPfannschmidt
noreply at buildbot.pypy.org
Wed Oct 19 10:44:50 CEST 2011
Author: Ronny Pfannschmidt <Ronny.Pfannschmidt at gmx.de>
Branch: py3ksupport
Changeset: r137:1d4238db5d7e
Date: 2011-10-19 09:21 +0200
http://bitbucket.org/pypy/pyrepl/changeset/1d4238db5d7e/
Log: use deque + O(1) popleft in inputtranslator instead of list + O(N)
pop(0)
diff --git a/pyrepl/input.py b/pyrepl/input.py
--- a/pyrepl/input.py
+++ b/pyrepl/input.py
@@ -34,6 +34,8 @@
# class does quite a lot towards emulating a unix terminal.
from pyrepl import unicodedata_
+from collections import deque
+
class InputTranslator(object):
def push(self, evt):
@@ -43,7 +45,9 @@
def empty(self):
pass
+
class KeymapTranslator(InputTranslator):
+
def __init__(self, keymap, verbose=0,
invalid_cls=None, character_cls=None):
self.verbose = verbose
@@ -58,8 +62,9 @@
if self.verbose:
print d
self.k = self.ck = compile_keymap(d, ())
- self.results = []
+ self.results = deque()
self.stack = []
+
def push(self, evt):
if self.verbose:
print "pushed", evt.data,
@@ -88,10 +93,12 @@
self.results.append((d, self.stack + [key]))
self.stack = []
self.k = self.ck
+
def get(self):
if self.results:
- return self.results.pop(0)
+ return self.results.popleft()
else:
return None
+
def empty(self):
return not self.results
More information about the pypy-commit
mailing list