Author: Richard Plangger <planri...@gmail.com>
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
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to