[pypy-commit] pypy py3k: iterators now must implement the __next__ method.
amauryfa
noreply at buildbot.pypy.org
Fri Oct 14 00:52:45 CEST 2011
Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: py3k
Changeset: r48040:f403ac4c1c5c
Date: 2011-10-14 00:39 +0200
http://bitbucket.org/pypy/pypy/changeset/f403ac4c1c5c/
Log: iterators now must implement the __next__ method.
diff --git a/pypy/interpreter/baseobjspace.py b/pypy/interpreter/baseobjspace.py
--- a/pypy/interpreter/baseobjspace.py
+++ b/pypy/interpreter/baseobjspace.py
@@ -1491,7 +1491,7 @@
('coerce', 'coerce', 2, ['__coerce__', '__coerce__']),
('contains', 'contains', 2, ['__contains__']),
('iter', 'iter', 1, ['__iter__']),
- ('next', 'next', 1, ['next']),
+ ('next', 'next', 1, ['__next__']),
# ('call', 'call', 3, ['__call__']),
('get', 'get', 3, ['__get__']),
('set', 'set', 3, ['__set__']),
diff --git a/pypy/interpreter/typedef.py b/pypy/interpreter/typedef.py
--- a/pypy/interpreter/typedef.py
+++ b/pypy/interpreter/typedef.py
@@ -861,8 +861,8 @@
GeneratorIterator.typedef = TypeDef("generator",
__repr__ = interp2app(GeneratorIterator.descr__repr__),
__reduce__ = interp2app(GeneratorIterator.descr__reduce__),
- next = interp2app(GeneratorIterator.descr_next,
- descrmismatch='next'),
+ __next__ = interp2app(GeneratorIterator.descr_next,
+ descrmismatch='__next__'),
send = interp2app(GeneratorIterator.descr_send,
descrmismatch='send'),
throw = interp2app(GeneratorIterator.descr_throw,
diff --git a/pypy/module/__builtin__/functional.py b/pypy/module/__builtin__/functional.py
--- a/pypy/module/__builtin__/functional.py
+++ b/pypy/module/__builtin__/functional.py
@@ -372,7 +372,7 @@
W_Enumerate.typedef = TypeDef("enumerate",
__new__=interp2app(W_Enumerate.descr___new__.im_func),
__iter__=interp2app(W_Enumerate.descr___iter__),
- next=interp2app(W_Enumerate.descr_next),
+ __next__=interp2app(W_Enumerate.descr_next),
__reduce__=interp2app(W_Enumerate.descr___reduce__),
)
@@ -429,7 +429,7 @@
W_ReversedIterator.typedef = TypeDef("reversed",
__iter__=interp2app(W_ReversedIterator.descr___iter__),
- next=interp2app(W_ReversedIterator.descr_next),
+ __next__=interp2app(W_ReversedIterator.descr_next),
__reduce__=interp2app(W_ReversedIterator.descr___reduce__),
)
@@ -555,6 +555,6 @@
__iter__ = interp2app(W_RangeIterator.descr_iter),
# XXX __length_hint__()
## __len__ = interp2app(W_RangeIterator.descr_len),
- next = interp2app(W_RangeIterator.descr_next),
+ __next__ = interp2app(W_RangeIterator.descr_next),
__reduce__ = interp2app(W_RangeIterator.descr_reduce),
)
diff --git a/pypy/module/__builtin__/interp_classobj.py b/pypy/module/__builtin__/interp_classobj.py
--- a/pypy/module/__builtin__/interp_classobj.py
+++ b/pypy/module/__builtin__/interp_classobj.py
@@ -496,8 +496,8 @@
space.w_TypeError,
space.wrap("iteration over non-sequence"))
return space.newseqiter(self)
- #XXX do I really need a next method? the old implementation had one, but I
- # don't see the point
+ # XXX do I really need a __next__ method? the old implementation
+ # had one, but I don't see the point
def descr_call(self, space, __args__):
w_meth = self.getattr(space, '__call__')
@@ -674,10 +674,10 @@
return space.w_NotImplemented
def descr_next(self, space):
- w_func = self.getattr(space, 'next', False)
+ w_func = self.getattr(space, '__next__', False)
if w_func is None:
- raise OperationError(space.w_TypeError,
- space.wrap("instance has no next() method"))
+ raise OperationError(space.w_TypeError, space.wrap(
+ "instance has no __next__() method"))
return space.call_function(w_func)
def descr_del(self, space):
@@ -759,7 +759,7 @@
__contains__ = interp2app(W_InstanceObject.descr_contains),
__pow__ = interp2app(W_InstanceObject.descr_pow),
__rpow__ = interp2app(W_InstanceObject.descr_rpow),
- next = interp2app(W_InstanceObject.descr_next),
+ __next__ = interp2app(W_InstanceObject.descr_next),
__del__ = interp2app(W_InstanceObject.descr_del),
__exit__ = interp2app(W_InstanceObject.descr_exit),
__dict__ = dict_descr,
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
@@ -533,7 +533,7 @@
W_DequeIter.typedef = TypeDef("deque_iterator",
__iter__ = interp2app(W_DequeIter.iter),
- next = interp2app(W_DequeIter.next),
+ __next__ = interp2app(W_DequeIter.next),
)
W_DequeIter.typedef.acceptable_as_base_class = False
@@ -568,7 +568,7 @@
W_DequeRevIter.typedef = TypeDef("deque_reverse_iterator",
__iter__ = interp2app(W_DequeRevIter.iter),
- next = interp2app(W_DequeRevIter.next),
+ __next__ = interp2app(W_DequeRevIter.next),
)
W_DequeRevIter.typedef.acceptable_as_base_class = False
diff --git a/pypy/module/_file/interp_file.py b/pypy/module/_file/interp_file.py
--- a/pypy/module/_file/interp_file.py
+++ b/pypy/module/_file/interp_file.py
@@ -158,7 +158,7 @@
def direct_flush(self):
self.getstream().flush()
- def direct_next(self):
+ def direct___next__(self):
line = self.getstream().readline()
if line == '':
raise OperationError(self.space.w_StopIteration, self.space.w_None)
@@ -344,8 +344,8 @@
_decl(locals(), "isatty",
"""isatty() -> true or false. True if the file is connected to a tty device.""")
- _decl(locals(), "next",
- """next() -> the next line in the file, or raise StopIteration""")
+ _decl(locals(), "__next__",
+ """__next__() -> the next line in the file, or raise StopIteration""")
_decl(locals(), "read",
"""read([size]) -> read at most size bytes, returned as a string.
diff --git a/pypy/module/_io/interp_iobase.py b/pypy/module/_io/interp_iobase.py
--- a/pypy/module/_io/interp_iobase.py
+++ b/pypy/module/_io/interp_iobase.py
@@ -241,7 +241,7 @@
__enter__ = interp2app(W_IOBase.enter_w),
__exit__ = interp2app(W_IOBase.exit_w),
__iter__ = interp2app(W_IOBase.iter_w),
- next = interp2app(W_IOBase.next_w),
+ __next__ = interp2app(W_IOBase.next_w),
close = interp2app(W_IOBase.close_w),
flush = interp2app(W_IOBase.flush_w),
tell = interp2app(W_IOBase.tell_w),
diff --git a/pypy/module/_io/interp_textio.py b/pypy/module/_io/interp_textio.py
--- a/pypy/module/_io/interp_textio.py
+++ b/pypy/module/_io/interp_textio.py
@@ -980,7 +980,7 @@
__repr__ = interp2app(W_TextIOWrapper.descr_repr),
__module__ = "_io",
- next = interp2app(W_TextIOWrapper.next_w),
+ __next__ = interp2app(W_TextIOWrapper.next_w),
read = interp2app(W_TextIOWrapper.read_w),
readline = interp2app(W_TextIOWrapper.readline_w),
write = interp2app(W_TextIOWrapper.write_w),
diff --git a/pypy/module/_sre/interp_sre.py b/pypy/module/_sre/interp_sre.py
--- a/pypy/module/_sre/interp_sre.py
+++ b/pypy/module/_sre/interp_sre.py
@@ -542,7 +542,7 @@
W_SRE_Scanner.typedef = TypeDef(
'SRE_Scanner',
__iter__ = interp2app(W_SRE_Scanner.iter_w),
- next = interp2app(W_SRE_Scanner.next_w),
+ __next__ = interp2app(W_SRE_Scanner.next_w),
match = interp2app(W_SRE_Scanner.match_w),
search = interp2app(W_SRE_Scanner.search_w),
pattern = interp_attrproperty('srepat', W_SRE_Scanner),
diff --git a/pypy/module/cStringIO/interp_stringio.py b/pypy/module/cStringIO/interp_stringio.py
--- a/pypy/module/cStringIO/interp_stringio.py
+++ b/pypy/module/cStringIO/interp_stringio.py
@@ -32,7 +32,7 @@
self.check_closed()
return self.space.w_False
- def descr_next(self):
+ def descr___next__(self):
space = self.space
self.check_closed()
line = self.readline()
@@ -207,11 +207,11 @@
common_descrs = {
'__iter__': interp2app(W_InputOutputType.descr___iter__),
+ '__next__': interp2app(W_InputOutputType.descr___next__),
'close': interp2app(W_InputOutputType.descr_close),
'flush': interp2app(W_InputOutputType.descr_flush),
'getvalue': interp2app(W_InputOutputType.descr_getvalue),
'isatty': interp2app(W_InputOutputType.descr_isatty),
- 'next': interp2app(W_InputOutputType.descr_next),
'read': interp2app(W_InputOutputType.descr_read),
'readline': interp2app(W_InputOutputType.descr_readline),
'readlines': interp2app(W_InputOutputType.descr_readlines),
diff --git a/pypy/module/cpyext/dictobject.py b/pypy/module/cpyext/dictobject.py
--- a/pypy/module/cpyext/dictobject.py
+++ b/pypy/module/cpyext/dictobject.py
@@ -177,10 +177,10 @@
w_iter = space.call_method(w_dict, "iteritems")
pos = ppos[0]
while pos:
- space.call_method(w_iter, "next")
+ space.next(w_iter)
pos -= 1
- w_item = space.call_method(w_iter, "next")
+ w_item = space.next(w_iter)
w_key, w_value = space.fixedview(w_item, 2)
state = space.fromcache(RefcountState)
pkey[0] = state.make_borrowed(w_dict, w_key)
diff --git a/pypy/module/cpyext/iterator.py b/pypy/module/cpyext/iterator.py
--- a/pypy/module/cpyext/iterator.py
+++ b/pypy/module/cpyext/iterator.py
@@ -40,7 +40,7 @@
def PyIter_Check(space, w_obj):
"""Return true if the object o supports the iterator protocol."""
try:
- w_attr = space.getattr(space.type(w_obj), space.wrap("next"))
+ w_attr = space.getattr(space.type(w_obj), space.wrap("__next__"))
except:
return False
else:
diff --git a/pypy/module/cpyext/slotdefs.py b/pypy/module/cpyext/slotdefs.py
--- a/pypy/module/cpyext/slotdefs.py
+++ b/pypy/module/cpyext/slotdefs.py
@@ -568,8 +568,8 @@
"x.__ge__(y) <==> x>=y"),
TPSLOT("__iter__", tp_iter, slot_tp_iter, wrap_unaryfunc,
"x.__iter__() <==> iter(x)"),
- TPSLOT("next", tp_iternext, slot_tp_iternext, wrap_next,
- "x.next() -> the next value, or raise StopIteration"),
+ TPSLOT("__next__", tp_iternext, slot_tp_iternext, wrap_next,
+ "x.__next__() -> the next value, or raise StopIteration"),
TPSLOT("__get__", tp_descr_get, slot_tp_descr_get, wrap_descr_get,
"descr.__get__(obj[, type]) -> value"),
TPSLOT("__set__", tp_descr_set, slot_tp_descr_set, wrap_descr_set,
diff --git a/pypy/module/exceptions/interp_exceptions.py b/pypy/module/exceptions/interp_exceptions.py
--- a/pypy/module/exceptions/interp_exceptions.py
+++ b/pypy/module/exceptions/interp_exceptions.py
@@ -367,7 +367,7 @@
__str__ = key_error_str)
W_StopIteration = _new_exception('StopIteration', W_Exception,
- """Signal the end from iterator.next().""")
+ """Signal the end from iterator.__next__().""")
W_Warning = _new_exception('Warning', W_Exception,
"""Base class for warning categories.""")
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
@@ -61,7 +61,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_Count___new__),
__iter__ = interp2app(W_Count.iter_w),
- next = interp2app(W_Count.next_w),
+ __next__ = interp2app(W_Count.next_w),
__reduce__ = interp2app(W_Count.reduce_w),
__repr__ = interp2app(W_Count.repr_w),
__doc__ = """Make an iterator that returns consecutive integers starting
@@ -122,7 +122,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_Repeat___new__),
__iter__ = interp2app(W_Repeat.iter_w),
- next = interp2app(W_Repeat.next_w),
+ __next__ = interp2app(W_Repeat.next_w),
__repr__ = interp2app(W_Repeat.repr_w),
__doc__ = """Make an iterator that returns object over and over again.
Runs indefinitely unless the times argument is specified. Used
@@ -175,7 +175,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_TakeWhile___new__),
__iter__ = interp2app(W_TakeWhile.iter_w),
- next = interp2app(W_TakeWhile.next_w),
+ __next__ = interp2app(W_TakeWhile.next_w),
__doc__ = """Make an iterator that returns elements from the iterable as
long as the predicate is true.
@@ -224,7 +224,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_DropWhile___new__),
__iter__ = interp2app(W_DropWhile.iter_w),
- next = interp2app(W_DropWhile.next_w),
+ __next__ = interp2app(W_DropWhile.next_w),
__doc__ = """Make an iterator that drops elements from the iterable as long
as the predicate is true; afterwards, returns every
element. Note, the iterator does not produce any output until the
@@ -281,7 +281,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_IFilter___new__),
__iter__ = interp2app(W_IFilter.iter_w),
- next = interp2app(W_IFilter.next_w),
+ __next__ = interp2app(W_IFilter.next_w),
__doc__ = """Make an iterator that filters elements from iterable returning
only those for which the predicate is True. If predicate is
None, return the items that are true.
@@ -309,7 +309,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_IFilterFalse___new__),
__iter__ = interp2app(W_IFilterFalse.iter_w),
- next = interp2app(W_IFilterFalse.next_w),
+ __next__ = interp2app(W_IFilterFalse.next_w),
__doc__ = """Make an iterator that filters elements from iterable returning
only those for which the predicate is False. If predicate is
None, return the items that are false.
@@ -411,7 +411,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_ISlice___new__),
__iter__ = interp2app(W_ISlice.iter_w),
- next = interp2app(W_ISlice.next_w),
+ __next__ = interp2app(W_ISlice.next_w),
__doc__ = """Make an iterator that returns selected elements from the
iterable. If start is non-zero, then elements from the iterable
are skipped until start is reached. Afterward, elements are
@@ -479,7 +479,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_Chain___new__),
__iter__ = interp2app(W_Chain.iter_w),
- next = interp2app(W_Chain.next_w),
+ __next__ = interp2app(W_Chain.next_w),
from_iterable = interp2app(chain_from_iterable, as_classmethod=True),
__doc__ = """Make an iterator that returns elements from the first iterable
until it is exhausted, then proceeds to the next iterable, until
@@ -560,7 +560,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_IMap___new__),
__iter__ = interp2app(W_IMap.iter_w),
- next = interp2app(W_IMap.next_w),
+ __next__ = interp2app(W_IMap.next_w),
__doc__ = """Make an iterator that computes the function using arguments
from each of the iterables. If function is set to None, then
imap() returns the arguments as a tuple. Like map() but stops
@@ -605,7 +605,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_IZip___new__),
__iter__ = interp2app(W_IZip.iter_w),
- next = interp2app(W_IZip.next_w),
+ __next__ = interp2app(W_IZip.next_w),
__doc__ = """Make an iterator that aggregates elements from each of the
iterables. Like zip() except that it returns an iterator instead
of a list. Used for lock-step iteration over several iterables at
@@ -674,7 +674,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_IZipLongest___new__),
__iter__ = interp2app(W_IZipLongest.iter_w),
- next = interp2app(W_IZipLongest.next_w),
+ __next__ = interp2app(W_IZipLongest.next_w),
__doc__ = """Return an izip_longest object whose .next() method returns a tuple where
the i-th element comes from the i-th iterable argument. The .next()
method continues until the longest iterable in the argument sequence
@@ -734,7 +734,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_Cycle___new__),
__iter__ = interp2app(W_Cycle.iter_w),
- next = interp2app(W_Cycle.next_w),
+ __next__ = interp2app(W_Cycle.next_w),
__doc__ = """Make an iterator returning elements from the iterable and
saving a copy of each. When the iterable is exhausted, return
elements from the saved copy. Repeats indefinitely.
@@ -775,7 +775,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_StarMap___new__),
__iter__ = interp2app(W_StarMap.iter_w),
- next = interp2app(W_StarMap.next_w),
+ __next__ = interp2app(W_StarMap.next_w),
__doc__ = """Make an iterator that computes the function using arguments
tuples obtained from the iterable. Used instead of imap() when
argument parameters are already grouped in tuples from a single
@@ -880,7 +880,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_TeeIterable___new__),
__iter__ = interp2app(W_TeeIterable.iter_w),
- next = interp2app(W_TeeIterable.next_w),
+ __next__ = interp2app(W_TeeIterable.next_w),
__weakref__ = make_weakref_descr(W_TeeIterable),
)
W_TeeIterable.typedef.acceptable_as_base_class = False
@@ -983,7 +983,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_GroupBy___new__),
__iter__ = interp2app(W_GroupBy.iter_w),
- next = interp2app(W_GroupBy.next_w),
+ __next__ = interp2app(W_GroupBy.next_w),
__doc__ = """Make an iterator that returns consecutive keys and groups from the
iterable. The key is a function computing a key value for each
element. If not specified or is None, key defaults to an identity
@@ -1029,7 +1029,7 @@
'_groupby',
__module__ = 'itertools',
__iter__ = interp2app(W_GroupByIterator.iter_w),
- next = interp2app(W_GroupByIterator.next_w))
+ __next__ = interp2app(W_GroupByIterator.next_w))
W_GroupByIterator.typedef.acceptable_as_base_class = False
@@ -1062,7 +1062,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_Compress__new__),
__iter__ = interp2app(W_Compress.iter_w),
- next = interp2app(W_Compress.next_w),
+ __next__ = interp2app(W_Compress.next_w),
__doc__ = """Make an iterator that filters elements from *data* returning
only those that have a corresponding element in *selectors* that evaluates to
``True``. Stops when either the *data* or *selectors* iterables has been
@@ -1152,7 +1152,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_Product__new__),
__iter__ = interp2app(W_Product.iter_w),
- next = interp2app(W_Product.next_w),
+ __next__ = interp2app(W_Product.next_w),
__doc__ = """
Cartesian product of input iterables.
@@ -1256,7 +1256,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_Combinations__new__),
__iter__ = interp2app(W_Combinations.descr__iter__),
- next = interp2app(W_Combinations.descr_next),
+ __next__ = interp2app(W_Combinations.descr_next),
__doc__ = """\
combinations(iterable, r) --> combinations object
@@ -1291,7 +1291,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_CombinationsWithReplacement__new__),
__iter__ = interp2app(W_CombinationsWithReplacement.descr__iter__),
- next = interp2app(W_CombinationsWithReplacement.descr_next),
+ __next__ = interp2app(W_CombinationsWithReplacement.descr_next),
__doc__ = """\
combinations_with_replacement(iterable, r) --> combinations_with_replacement object
@@ -1357,7 +1357,7 @@
__module__ = 'itertools',
__new__ = interp2app(W_Permutations__new__),
__iter__ = interp2app(W_Permutations.descr__iter__),
- next = interp2app(W_Permutations.descr_next),
+ __next__ = interp2app(W_Permutations.descr_next),
__doc__ = """\
permutations(iterable[, r]) --> permutations object
diff --git a/pypy/module/oracle/interp_cursor.py b/pypy/module/oracle/interp_cursor.py
--- a/pypy/module/oracle/interp_cursor.py
+++ b/pypy/module/oracle/interp_cursor.py
@@ -1083,7 +1083,7 @@
setoutputsize = interp2app(W_Cursor.setoutputsize),
__iter__ = interp2app(W_Cursor.descr_iter),
- next = interp2app(W_Cursor.descr_next),
+ __next__ = interp2app(W_Cursor.descr_next),
arraysize = GetSetProperty(W_Cursor.arraysize_get,
W_Cursor.arraysize_set),
diff --git a/pypy/objspace/descroperation.py b/pypy/objspace/descroperation.py
--- a/pypy/objspace/descroperation.py
+++ b/pypy/objspace/descroperation.py
@@ -279,14 +279,14 @@
typename)
return space.newseqiter(w_obj)
w_iter = space.get_and_call_function(w_descr, w_obj)
- w_next = space.lookup(w_iter, 'next')
+ w_next = space.lookup(w_iter, '__next__')
if w_next is None:
raise OperationError(space.w_TypeError,
space.wrap("iter() returned non-iterator"))
return w_iter
def next(space, w_obj):
- w_descr = space.lookup(w_obj, 'next')
+ w_descr = space.lookup(w_obj, '__next__')
if w_descr is None:
typename = space.type(w_obj).getname(space)
raise operationerrfmt(space.w_TypeError,
More information about the pypy-commit
mailing list