[pypy-commit] pypy py3.5: test deque's and impl deque copy
plan_rich
pypy.commits at gmail.com
Sun Oct 9 05:39:08 EDT 2016
Author: Richard Plangger <planrichi at gmail.com>
Branch: py3.5
Changeset: r87656:08c15132273f
Date: 2016-10-09 11:33 +0200
http://bitbucket.org/pypy/pypy/changeset/08c15132273f/
Log: test deque's and impl deque copy
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
@@ -184,6 +184,27 @@
self.extend(w_iterable)
return self.space.wrap(self)
+ def mul(self, w_iterable):
+ pass
+
+ def imul(self, w_iterable):
+ pass
+
+ def copy(self):
+ """ A shallow copy """
+ space = self.space
+ w_iter = space.iter(w_iterable)
+ copy = W_Deque(self.space)
+ while True:
+ try:
+ w_obj = space.next(w_iter)
+ except OperationError as e:
+ if e.match(space, space.w_StopIteration):
+ break
+ raise
+ copy.appendleft(w_obj)
+ return copy
+
def extendleft(self, w_iterable):
"Extend the left side of the deque with elements from the iterable"
# Handle case where id(deque) == id(iterable)
@@ -191,7 +212,6 @@
if space.is_w(space.wrap(self), w_iterable):
w_iterable = space.call_function(space.w_list, w_iterable)
#
- space = self.space
w_iter = space.iter(w_iterable)
while True:
try:
@@ -477,6 +497,7 @@
remove = interp2app(W_Deque.remove),
reverse = interp2app(W_Deque.reverse),
rotate = interp2app(W_Deque.rotate),
+ copy = interp2app(W_Deque.copy),
__weakref__ = make_weakref_descr(W_Deque),
__iter__ = interp2app(W_Deque.iter),
__reversed__ = interp2app(W_Deque.reviter),
@@ -496,6 +517,8 @@
__delitem__ = interp2app(W_Deque.delitem),
__copy__ = interp2app(W_Deque.copy),
__reduce__ = interp2app(W_Deque.reduce),
+ __mul__ = interp2app(W_Deque.mul),
+ __imul__ = interp2app(W_Deque.imul),
maxlen = GetSetProperty(W_Deque.get_maxlen),
)
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
@@ -328,4 +328,8 @@
from _collections import deque
d = deque([1,2,3])
assert d*3 == deque([1,2,3]*3)
-
+
+ def test_copy(self):
+ from _collections import deque
+ d = deque([1,2,3])
+ assert d is not d.copy()
More information about the pypy-commit
mailing list