[pypy-commit] pypy default: hg backout a27a481ec877
hakanardo
noreply at buildbot.pypy.org
Sat Nov 5 10:02:26 CET 2011
Author: Hakan Ardo <hakan at debian.org>
Branch:
Changeset: r48768:21cb735ed98a
Date: 2011-11-04 22:38 +0100
http://bitbucket.org/pypy/pypy/changeset/21cb735ed98a/
Log: hg backout a27a481ec877
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
@@ -312,11 +312,10 @@
class W_XRange(Wrappable):
- def __init__(self, space, start, stop, step):
+ def __init__(self, space, start, len, step):
self.space = space
self.start = start
- self.stop = stop
- self.len = get_len_of_range(space, start, stop, step)
+ self.len = len
self.step = step
def descr_new(space, w_subtype, w_start, w_stop=None, w_step=1):
@@ -326,8 +325,9 @@
start, stop = 0, start
else:
stop = _toint(space, w_stop)
+ howmany = get_len_of_range(space, start, stop, step)
obj = space.allocate_instance(W_XRange, w_subtype)
- W_XRange.__init__(obj, space, start, stop, step)
+ W_XRange.__init__(obj, space, start, howmany, step)
return space.wrap(obj)
def descr_repr(self):
@@ -357,12 +357,12 @@
def descr_iter(self):
return self.space.wrap(W_XRangeIterator(self.space, self.start,
- self.stop, self.step))
+ self.len, self.step))
def descr_reversed(self):
lastitem = self.start + (self.len-1) * self.step
return self.space.wrap(W_XRangeIterator(self.space, lastitem,
- self.start - 1, -self.step))
+ self.len, -self.step))
def descr_reduce(self):
space = self.space
@@ -389,24 +389,25 @@
)
class W_XRangeIterator(Wrappable):
- def __init__(self, space, start, stop, step):
+ def __init__(self, space, current, remaining, step):
self.space = space
- self.current = start
- self.stop = stop
+ self.current = current
+ self.remaining = remaining
self.step = step
def descr_iter(self):
return self.space.wrap(self)
def descr_next(self):
- if (self.step > 0 and self.current < self.stop) or (self.step < 0 and self.current > self.stop):
+ if self.remaining > 0:
item = self.current
self.current = item + self.step
+ self.remaining -= 1
return self.space.wrap(item)
raise OperationError(self.space.w_StopIteration, self.space.w_None)
- #def descr_len(self):
- # return self.space.wrap(self.remaining)
+ def descr_len(self):
+ return self.space.wrap(self.remaining)
def descr_reduce(self):
from pypy.interpreter.mixedmodule import MixedModule
@@ -417,7 +418,7 @@
w = space.wrap
nt = space.newtuple
- tup = [w(self.current), w(self.stop), w(self.step)]
+ tup = [w(self.current), w(self.remaining), w(self.step)]
return nt([new_inst, nt(tup)])
W_XRangeIterator.typedef = TypeDef("rangeiterator",
diff --git a/pypy/module/_pickle_support/maker.py b/pypy/module/_pickle_support/maker.py
--- a/pypy/module/_pickle_support/maker.py
+++ b/pypy/module/_pickle_support/maker.py
@@ -66,10 +66,10 @@
new_generator.running = running
return space.wrap(new_generator)
- at unwrap_spec(current=int, stop=int, step=int)
-def xrangeiter_new(space, current, stop, step):
+ at unwrap_spec(current=int, remaining=int, step=int)
+def xrangeiter_new(space, current, remaining, step):
from pypy.module.__builtin__.functional import W_XRangeIterator
- new_iter = W_XRangeIterator(space, current, stop, step)
+ new_iter = W_XRangeIterator(space, current, remaining, step)
return space.wrap(new_iter)
@unwrap_spec(identifier=str)
More information about the pypy-commit
mailing list