[pypy-commit] pypy default: Add support for floats as parameters to itertools.islice. Improves compatibility with CPython.
jonaspf
pypy.commits at gmail.com
Fri Jan 8 13:09:57 EST 2016
Author: Jonas Pfannschmidt <jonas.pfannschmidt at gmail.com>
Branch:
Changeset: r81629:8ba0a03b22db
Date: 2016-01-08 12:22 +0000
http://bitbucket.org/pypy/pypy/changeset/8ba0a03b22db/
Log: Add support for floats as parameters to itertools.islice. Improves
compatibility with CPython.
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
@@ -372,7 +372,7 @@
def arg_int_w(self, w_obj, minimum, errormsg):
space = self.space
try:
- result = space.int_w(w_obj)
+ result = space.int_w(space.int(w_obj)) # CPython allows floats as parameters
except OperationError, e:
if e.async(space):
raise
diff --git a/pypy/module/itertools/test/test_itertools.py b/pypy/module/itertools/test/test_itertools.py
--- a/pypy/module/itertools/test/test_itertools.py
+++ b/pypy/module/itertools/test/test_itertools.py
@@ -225,6 +225,12 @@
assert it.next() == x
raises(StopIteration, it.next)
+ # CPython implementation allows floats
+ it = itertools.islice([1, 2, 3, 4, 5], 0.0, 3.0, 2.0)
+ for x in [1, 3]:
+ assert it.next() == x
+ raises(StopIteration, it.next)
+
it = itertools.islice([1, 2, 3], 0, None)
for x in [1, 2, 3]:
assert it.next() == x
More information about the pypy-commit
mailing list