[pypy-commit] pypy py3.5: special case in imul
plan_rich
pypy.commits at gmail.com
Mon Oct 17 09:37:35 EDT 2016
Author: Richard Plangger <planrichi at gmail.com>
Branch: py3.5
Changeset: r87845:00590aa7234c
Date: 2016-10-17 15:36 +0200
http://bitbucket.org/pypy/pypy/changeset/00590aa7234c/
Log: special case in imul
diff --git a/pypy/module/_collections/interp_deque.py b/pypy/module/_collections/interp_deque.py
--- a/pypy/module/_collections/interp_deque.py
+++ b/pypy/module/_collections/interp_deque.py
@@ -202,10 +202,16 @@
def imul(self, w_int):
space = self.space
+ num = space.int_w(w_int)
+ if self.len == 0 or num == 1:
+ return space.wrap(self)
+ if num <= 0:
+ self.clear()
+ return space.wrap(self)
+ # use a copy to extend self
copy = W_Deque(space)
copy.maxlen = self.maxlen
copy.extend(self.iter())
- num = space.int_w(w_int)
for _ in range(num - 1):
self.extend(copy)
diff --git a/pypy/module/_collections/test/test_deque.py b/pypy/module/_collections/test/test_deque.py
--- a/pypy/module/_collections/test/test_deque.py
+++ b/pypy/module/_collections/test/test_deque.py
@@ -350,6 +350,12 @@
d *= 3
assert d == deque([1,2,3]*3)
assert d is not deque([1,2,3]*3)
+ d = deque('a')
+ for n in (-10, -1, 0, 1, 2, 10, 1000):
+ d = deque('a')
+ d *= n
+ assert d == deque('a' * n)
+ assert d.maxlen is None
def test_deque_insert(self):
from _collections import deque
@@ -405,3 +411,9 @@
s.insert(i, 'Z')
assert list(d) == s
+ def test_deque_index_overflow_start_end(self):
+ from _collections import deque
+ import sys
+ elements = 'ABCDEFGHI'
+ d = deque([-2, -1, 0, 0, 1, 2])
+ assert a.index(0, -4*sys.maxsize, 4*sys.maxsize) == 2
More information about the pypy-commit
mailing list