Mercurial > public > mercurial-scm > hg
diff mercurial/util.py @ 16834:cafd8a8fb713
util: subclass deque for Python 2.4 backwards compatibility
It turns out that Python 2.4's deque type is lacking a remove method.
We can't implement remove in terms of find, because it doesn't have
find either.
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Fri, 01 Jun 2012 17:05:31 -0700 |
parents | 107a3270a24a |
children | 37e081609828 |
line wrap: on
line diff
--- a/mercurial/util.py Sat Jun 02 15:35:53 2012 -0500 +++ b/mercurial/util.py Fri Jun 01 17:05:31 2012 -0700 @@ -202,10 +202,22 @@ return f +try: + collections.deque.remove + deque = collections.deque +except AttributeError: + # python 2.4 lacks deque.remove + class deque(collections.deque): + def remove(self, val): + for i, v in enumerate(self): + if v == val: + del self[i] + break + def lrucachefunc(func): '''cache most recent results of function calls''' cache = {} - order = collections.deque() + order = deque() if func.func_code.co_argcount == 1: def f(arg): if arg not in cache: @@ -865,7 +877,7 @@ Returns less than L bytes if the iterator runs dry.""" left = l buf = '' - queue = collections.deque(self._queue) + queue = deque(self._queue) while left > 0: # refill the queue if not queue: