[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