Author: Mark Young <marky1...@gmail.com>
Branch: 33_fix_itertools
Changeset: r84045:4608f2a4e438
Date: 2016-04-29 15:01 -0400
http://bitbucket.org/pypy/pypy/changeset/4608f2a4e438/

Log:    Respond to review.

diff --git a/lib-python/3/test/test_itertools.py 
b/lib-python/3/test/test_itertools.py
--- a/lib-python/3/test/test_itertools.py
+++ b/lib-python/3/test/test_itertools.py
@@ -4,7 +4,7 @@
 from weakref import proxy
 from decimal import Decimal
 from fractions import Fraction
-import sys
+import sys, gc
 import operator
 import random
 import copy
@@ -1204,7 +1204,8 @@
         p = proxy(a)
         self.assertEqual(getattr(p, '__class__'), type(b))
         del a
-        #self.assertRaises(ReferenceError, getattr, p, '__class__')
+        gc.collect()
+        self.assertRaises(ReferenceError, getattr, p, '__class__')
         ans = list('abc')
         long_ans = list(range(10000))
 
@@ -1569,6 +1570,7 @@
     'Test multiple tiers of iterators'
     return chain(map(lambda x:x, R(Ig(G(seqn)))))
 
+
 class TestVariousIteratorArgs(unittest.TestCase):
 
     def test_accumulate(self):
diff --git a/pypy/module/itertools/interp_itertools.py 
b/pypy/module/itertools/interp_itertools.py
--- a/pypy/module/itertools/interp_itertools.py
+++ b/pypy/module/itertools/interp_itertools.py
@@ -1,5 +1,5 @@
 from pypy.interpreter.baseobjspace import W_Root
-from pypy.interpreter.error import OperationError
+from pypy.interpreter.error import OperationError, oefmt
 from pypy.interpreter.typedef import TypeDef, make_weakref_descr
 from pypy.interpreter.gateway import interp2app, unwrap_spec, WrappedDefault
 from rpython.rlib import jit
@@ -922,15 +922,14 @@
         state = self.space.unpackiterable(w_state)
         num_args = len(state)
         if num_args != 2:
-            raise OperationError(self.space.w_TypeError,
-                                 self.space.wrap("function takes exactly 2 
arguments "
-                                            "(" + str(num_args) + " given)"))
+            raise oefmt(self.space.w_TypeError,
+                        "function takes exactly 2 arguments (%d given)",
+                        num_args)
         w_iterator, w_chained_list = state
         if not isinstance(w_chained_list, W_TeeChainedListNode):
-            raise OperationError(
-                    self.space.w_TypeError,
-                    self.space.wrap("must be itertools._tee_dataobject, not " +
-                                    self.space.type(w_chained_list).name))
+            raise oefmt(self.space.w_TypeError,
+                        "must be itertools._tee_dataobject, not %s",
+                        self.space.type(w_chained_list).name)
 
         self.w_iterator = w_iterator
         self.w_chained_list = w_chained_list
diff --git a/pypy/objspace/std/iterobject.py b/pypy/objspace/std/iterobject.py
--- a/pypy/objspace/std/iterobject.py
+++ b/pypy/objspace/std/iterobject.py
@@ -14,7 +14,7 @@
         self.index = index
 
     def getlength(self, space):
-        if self.w_seq is None or space.is_w(self.w_seq, space.w_None):
+        if space.is_none(self.w_seq):
             return space.wrap(0)
         index = self.index
         w_length = space.len(self.w_seq)
@@ -60,7 +60,7 @@
     """Sequence iterator implementation for general sequences."""
 
     def descr_next(self, space):
-        if self.w_seq is None or space.is_w(self.w_seq, space.w_None):
+        if space.is_none(self.w_seq):
             raise OperationError(space.w_StopIteration, space.w_None)
         try:
             w_item = space.getitem(self.w_seq, space.wrap(self.index))
@@ -79,7 +79,7 @@
     def descr_next(self, space):
         from pypy.objspace.std.listobject import W_ListObject
         w_seq = self.w_seq
-        if w_seq is None or space.is_w(w_seq, space.w_None):
+        if space.is_none(w_seq):
             raise OperationError(space.w_StopIteration, space.w_None)
         assert isinstance(w_seq, W_ListObject)
         index = self.index
@@ -129,7 +129,7 @@
         return space.newtuple([new_inst, space.newtuple(tup)])
 
     def descr_length_hint(self, space):
-        if self.w_seq is None or space.is_w(self.w_seq, space.w_None):
+        if space.is_none(self.w_seq):
             return space.wrap(0)
         index = self.index + 1
         w_length = space.len(self.w_seq)
@@ -147,9 +147,7 @@
         return self
 
     def descr_next(self, space):
-        if (self.w_seq is None
-            or space.is_w(self.w_seq, space.w_None)
-            or self.index < 0):
+        if space.is_none(self.w_seq) or self.index < 0:
             raise OperationError(space.w_StopIteration, space.w_None)
         try:
             w_item = space.getitem(self.w_seq, space.wrap(self.index))
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to