versions.rst (7929B)
1 =============== 2 Version History 3 =============== 4 5 .. automodule:: more_itertools 6 7 4.2.0 8 ----- 9 10 * New itertools: 11 * :func:`map_reduce` (thanks to pylang) 12 * :func:`prepend` (from the `Python 3.7 docs <https://docs.python.org/3.7/library/itertools.html#itertools-recipes>`_) 13 14 * Improvements to existing itertools: 15 * :func:`bucket` now complies with PEP 479 (thanks to irmen) 16 17 * Other changes: 18 * Python 3.7 is now supported (thanks to irmen) 19 * Python 3.3 is no longer supported 20 * The test suite no longer requires third-party modules to run 21 * The API docs now include links to source code 22 23 4.1.0 24 ----- 25 26 * New itertools: 27 * :func:`split_at` (thanks to michael-celani) 28 * :func:`circular_shifts` (thanks to hiqua) 29 * :func:`make_decorator` - see the blog post `Yo, I heard you like decorators <https://sites.google.com/site/bbayles/index/decorator_factory>`_ 30 for a tour (thanks to pylang) 31 * :func:`always_reversible` (thanks to michael-celani) 32 * :func:`nth_combination` (from the `Python 3.7 docs <https://docs.python.org/3.7/library/itertools.html#itertools-recipes>`_) 33 34 * Improvements to existing itertools: 35 * :func:`seekable` now has an ``elements`` method to return cached items. 36 * The performance tradeoffs between :func:`roundrobin` and 37 :func:`interleave_longest` are now documented (thanks michael-celani, 38 pylang, and MSeifert04) 39 40 4.0.1 41 ----- 42 43 * No code changes - this release fixes how the docs display on PyPI. 44 45 4.0.0 46 ----- 47 48 * New itertools: 49 * :func:`consecutive_groups` (Based on the example in the `Python 2.4 docs <https://docs.python.org/release/2.4.4/lib/itertools-example.html>`_) 50 * :func:`seekable` (If you're looking for how to "reset" an iterator, 51 you're in luck!) 52 * :func:`exactly_n` (thanks to michael-celani) 53 * :func:`run_length.encode` and :func:`run_length.decode` 54 * :func:`difference` 55 56 * Improvements to existing itertools: 57 * The number of items between filler elements in :func:`intersperse` can 58 now be specified (thanks to pylang) 59 * :func:`distinct_permutations` and :func:`peekable` got some minor 60 adjustments (thanks to MSeifert04) 61 * :func:`always_iterable` now returns an iterator object. It also now 62 allows different types to be considered iterable (thanks to jaraco) 63 * :func:`bucket` can now limit the keys it stores in memory 64 * :func:`one` now allows for custom exceptions (thanks to kalekundert) 65 66 * Other changes: 67 * A few typos were fixed (thanks to EdwardBetts) 68 * All tests can now be run with ``python setup.py test`` 69 70 The major version update is due to the change in the return value of :func:`always_iterable`. 71 It now always returns iterator objects: 72 73 .. code-block:: python 74 75 >>> from more_itertools import always_iterable 76 # Non-iterable objects are wrapped with iter(tuple(obj)) 77 >>> always_iterable(12345) 78 <tuple_iterator object at 0x7fb24c9488d0> 79 >>> list(always_iterable(12345)) 80 [12345] 81 # Iterable objects are wrapped with iter() 82 >>> always_iterable([1, 2, 3, 4, 5]) 83 <list_iterator object at 0x7fb24c948c50> 84 85 3.2.0 86 ----- 87 88 * New itertools: 89 * :func:`lstrip`, :func:`rstrip`, and :func:`strip` 90 (thanks to MSeifert04 and pylang) 91 * :func:`islice_extended` 92 * Improvements to existing itertools: 93 * Some bugs with slicing :func:`peekable`-wrapped iterables were fixed 94 95 3.1.0 96 ----- 97 98 * New itertools: 99 * :func:`numeric_range` (Thanks to BebeSparkelSparkel and MSeifert04) 100 * :func:`count_cycle` (Thanks to BebeSparkelSparkel) 101 * :func:`locate` (Thanks to pylang and MSeifert04) 102 * Improvements to existing itertools: 103 * A few itertools are now slightly faster due to some function 104 optimizations. (Thanks to MSeifert04) 105 * The docs have been substantially revised with installation notes, 106 categories for library functions, links, and more. (Thanks to pylang) 107 108 109 3.0.0 110 ----- 111 112 * Removed itertools: 113 * ``context`` has been removed due to a design flaw - see below for 114 replacement options. (thanks to NeilGirdhar) 115 * Improvements to existing itertools: 116 * ``side_effect`` now supports ``before`` and ``after`` keyword 117 arguments. (Thanks to yardsale8) 118 * PyPy and PyPy3 are now supported. 119 120 The major version change is due to the removal of the ``context`` function. 121 Replace it with standard ``with`` statement context management: 122 123 .. code-block:: python 124 125 # Don't use context() anymore 126 file_obj = StringIO() 127 consume(print(x, file=f) for f in context(file_obj) for x in u'123') 128 129 # Use a with statement instead 130 file_obj = StringIO() 131 with file_obj as f: 132 consume(print(x, file=f) for x in u'123') 133 134 2.6.0 135 ----- 136 137 * New itertools: 138 * ``adjacent`` and ``groupby_transform`` (Thanks to diazona) 139 * ``always_iterable`` (Thanks to jaraco) 140 * (Removed in 3.0.0) ``context`` (Thanks to yardsale8) 141 * ``divide`` (Thanks to mozbhearsum) 142 * Improvements to existing itertools: 143 * ``ilen`` is now slightly faster. (Thanks to wbolster) 144 * ``peekable`` can now prepend items to an iterable. (Thanks to diazona) 145 146 2.5.0 147 ----- 148 149 * New itertools: 150 * ``distribute`` (Thanks to mozbhearsum and coady) 151 * ``sort_together`` (Thanks to clintval) 152 * ``stagger`` and ``zip_offset`` (Thanks to joshbode) 153 * ``padded`` 154 * Improvements to existing itertools: 155 * ``peekable`` now handles negative indexes and slices with negative 156 components properly. 157 * ``intersperse`` is now slightly faster. (Thanks to pylang) 158 * ``windowed`` now accepts a ``step`` keyword argument. 159 (Thanks to pylang) 160 * Python 3.6 is now supported. 161 162 2.4.1 163 ----- 164 165 * Move docs 100% to readthedocs.io. 166 167 2.4 168 ----- 169 170 * New itertools: 171 * ``accumulate``, ``all_equal``, ``first_true``, ``partition``, and 172 ``tail`` from the itertools documentation. 173 * ``bucket`` (Thanks to Rosuav and cvrebert) 174 * ``collapse`` (Thanks to abarnet) 175 * ``interleave`` and ``interleave_longest`` (Thanks to abarnet) 176 * ``side_effect`` (Thanks to nvie) 177 * ``sliced`` (Thanks to j4mie and coady) 178 * ``split_before`` and ``split_after`` (Thanks to astronouth7303) 179 * ``spy`` (Thanks to themiurgo and mathieulongtin) 180 * Improvements to existing itertools: 181 * ``chunked`` is now simpler and more friendly to garbage collection. 182 (Contributed by coady, with thanks to piskvorky) 183 * ``collate`` now delegates to ``heapq.merge`` when possible. 184 (Thanks to kmike and julianpistorius) 185 * ``peekable``-wrapped iterables are now indexable and sliceable. 186 Iterating through ``peekable``-wrapped iterables is also faster. 187 * ``one`` and ``unique_to_each`` have been simplified. 188 (Thanks to coady) 189 190 191 2.3 192 ----- 193 194 * Added ``one`` from ``jaraco.util.itertools``. (Thanks, jaraco!) 195 * Added ``distinct_permutations`` and ``unique_to_each``. (Contributed by 196 bbayles) 197 * Added ``windowed``. (Contributed by bbayles, with thanks to buchanae, 198 jaraco, and abarnert) 199 * Simplified the implementation of ``chunked``. (Thanks, nvie!) 200 * Python 3.5 is now supported. Python 2.6 is no longer supported. 201 * Python 3 is now supported directly; there is no 2to3 step. 202 203 2.2 204 ----- 205 206 * Added ``iterate`` and ``with_iter``. (Thanks, abarnert!) 207 208 2.1 209 ----- 210 211 * Added (tested!) implementations of the recipes from the itertools 212 documentation. (Thanks, Chris Lonnen!) 213 * Added ``ilen``. (Thanks for the inspiration, Matt Basta!) 214 215 2.0 216 ----- 217 218 * ``chunked`` now returns lists rather than tuples. After all, they're 219 homogeneous. This slightly backward-incompatible change is the reason for 220 the major version bump. 221 * Added ``@consumer``. 222 * Improved test machinery. 223 224 1.1 225 ----- 226 227 * Added ``first`` function. 228 * Added Python 3 support. 229 * Added a default arg to ``peekable.peek()``. 230 * Noted how to easily test whether a peekable iterator is exhausted. 231 * Rewrote documentation. 232 233 1.0 234 ----- 235 236 * Initial release, with ``collate``, ``peekable``, and ``chunked``. Could 237 really use better docs.