diff --git a/cytoolz/__init__.py b/cytoolz/__init__.py index 01746e9..81f34a3 100644 --- a/cytoolz/__init__.py +++ b/cytoolz/__init__.py @@ -8,8 +8,6 @@ from .compatibility import map, filter -# from . import sandbox - from functools import partial, reduce sorted = sorted @@ -21,6 +19,8 @@ flip = functoolz.flip = curry(functoolz.flip) memoize = functoolz.memoize = curry(functoolz.memoize) +from . import curried # sandbox + functoolz._sigs.update_signature_registry() from ._version import __version__, __toolz_version__ diff --git a/cytoolz/itertoolz.pyx b/cytoolz/itertoolz.pyx index bd3960a..29193b4 100644 --- a/cytoolz/itertoolz.pyx +++ b/cytoolz/itertoolz.pyx @@ -964,8 +964,7 @@ cdef class sliding_window: cdef Py_ssize_t i self.iterseq = iter(seq) self.prev = PyTuple_New(n) - for i in range(1, n): - seq = next(self.iterseq) + for i, seq in enumerate(islice(self.iterseq, n-1), 1): Py_INCREF(seq) PyTuple_SET_ITEM(self.prev, i, seq) self.n = n @@ -977,14 +976,15 @@ cdef class sliding_window: cdef tuple current cdef object item cdef Py_ssize_t i + + item = next(self.iterseq) current = PyTuple_New(self.n) + Py_INCREF(item) + PyTuple_SET_ITEM(current, self.n-1, item) for i in range(1, self.n): item = self.prev[i] Py_INCREF(item) PyTuple_SET_ITEM(current, i-1, item) - item = next(self.iterseq) - Py_INCREF(item) - PyTuple_SET_ITEM(current, self.n-1, item) self.prev = current return current diff --git a/cytoolz/tests/test_inspect_args.py b/cytoolz/tests/test_inspect_args.py index bbe68cb..d39278e 100644 --- a/cytoolz/tests/test_inspect_args.py +++ b/cytoolz/tests/test_inspect_args.py @@ -402,7 +402,6 @@ def add_blacklist(mod, attr): blacklist.add(getattr(mod, attr)) add_blacklist(builtins, 'basestring') - add_blacklist(builtins, 'breakpoint') add_blacklist(builtins, 'NoneType') add_blacklist(builtins, '__metaclass__') add_blacklist(builtins, 'sequenceiterator') diff --git a/cytoolz/tests/test_itertoolz.py b/cytoolz/tests/test_itertoolz.py index 649e879..86c4370 100644 --- a/cytoolz/tests/test_itertoolz.py +++ b/cytoolz/tests/test_itertoolz.py @@ -304,6 +304,7 @@ def test_sliding_window(): def test_sliding_window_of_short_iterator(): assert list(sliding_window(3, [1, 2])) == [] + assert list(sliding_window(7, [1, 2])) == [] def test_partition():