Author: Richard Plangger <[email protected]>
Branch: py3.5
Changeset: r87843:25ba0d3a5e64
Date: 2016-10-17 14:59 +0200
http://bitbucket.org/pypy/pypy/changeset/25ba0d3a5e64/
Log: if a deque is internally copied, set maxlen
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
@@ -177,6 +177,7 @@
def add(self, w_iterable):
copy = W_Deque(self.space)
+ copy.maxlen = self.maxlen
copy.extend(self.iter())
copy.extend(w_iterable)
return self.space.wrap(copy)
@@ -188,6 +189,7 @@
def mul(self, w_int):
space = self.space
copied = W_Deque(space)
+ copied.maxlen = self.maxlen
num = space.int_w(w_int)
for _ in range(num):
@@ -201,6 +203,7 @@
def imul(self, w_int):
space = self.space
copy = W_Deque(space)
+ copy.maxlen = self.maxlen
copy.extend(self.iter())
num = space.int_w(w_int)
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
@@ -386,3 +386,12 @@
d = deque([1,2])
assert 2 * d == deque([1,2,1,2])
assert -5 * d == deque()
+
+ def test_deque_maxlen(self):
+ from _collections import deque
+ g = deque('abcdef', maxlen=4)
+ assert len(g) == 4 and g == deque('cdef')
+ h = deque('gh')
+ assert ''.join(g + h) == 'efgh'
+ assert g + h == deque('efgh')
+
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit