golden hour
/opt/saltstack/salt/lib/python3.10/site-packages/more_itertools-5.0.0.dist-info
⬆️ Go Up
Upload
File/Folder
Size
Actions
INSTALLER
4 B
Del
OK
LICENSE
1.03 KB
Del
OK
METADATA
33.03 KB
Del
OK
RECORD
1.45 KB
Del
OK
REQUESTED
0 B
Del
OK
WHEEL
92 B
Del
OK
top_level.txt
15 B
Del
OK
Edit: METADATA
Metadata-Version: 2.1 Name: more-itertools Version: 5.0.0 Summary: More routines for operating on iterables, beyond itertools Home-page: https://github.com/erikrose/more-itertools Author: Erik Rose Author-email: erikrose@grinchcentral.com License: MIT Keywords: itertools,iterator,iteration,filter,peek,peekable,collate,chunk,chunked Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: Natural Language :: English Classifier: License :: OSI Approved :: MIT License Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Topic :: Software Development :: Libraries License-File: LICENSE Requires-Dist: six <2.0.0,>=1.0.0 ============== More Itertools ============== .. image:: https://coveralls.io/repos/github/erikrose/more-itertools/badge.svg?branch=master :target: https://coveralls.io/github/erikrose/more-itertools?branch=master Python's ``itertools`` library is a gem - you can compose elegant solutions for a variety of problems with the functions it provides. In ``more-itertools`` we collect additional building blocks, recipes, and routines for working with Python iterables. ---- +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Grouping | `chunked <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.chunked>`_, | | | `sliced <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.sliced>`_, | | | `distribute <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.distribute>`_, | | | `divide <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.divide>`_, | | | `split_at <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.split_at>`_, | | | `split_before <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.split_before>`_, | | | `split_after <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.split_after>`_, | | | `bucket <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.bucket>`_, | | | `grouper <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.grouper>`_, | | | `partition <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.partition>`_ | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Lookahead and lookback | `spy <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.spy>`_, | | | `peekable <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.peekable>`_, | | | `seekable <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.seekable>`_ | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Windowing | `windowed <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.windowed>`_, | | | `stagger <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.stagger>`_, | | | `pairwise <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.pairwise>`_ | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Augmenting | `count_cycle <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.count_cycle>`_, | | | `intersperse <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.intersperse>`_, | | | `padded <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.padded>`_, | | | `adjacent <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.adjacent>`_, | | | `groupby_transform <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.groupby_transform>`_, | | | `padnone <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.padnone>`_, | | | `ncycles <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.ncycles>`_ | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Combining | `collapse <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.collapse>`_, | | | `sort_together <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.sort_together>`_, | | | `interleave <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.interleave>`_, | | | `interleave_longest <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.interleave_longest>`_, | | | `collate <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.collate>`_, | | | `zip_offset <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.zip_offset>`_, | | | `dotproduct <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.dotproduct>`_, | | | `flatten <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.flatten>`_, | | | `roundrobin <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.roundrobin>`_, | | | `prepend <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.prepend>`_ | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Summarizing | `ilen <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.ilen>`_, | | | `first <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.first>`_, | | | `last <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.last>`_, | | | `one <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.one>`_, | | | `unique_to_each <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.unique_to_each>`_, | | | `locate <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.locate>`_, | | | `rlocate <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.rlocate>`_, | | | `consecutive_groups <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.consecutive_groups>`_, | | | `exactly_n <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.exactly_n>`_, | | | `run_length <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.run_length>`_, | | | `map_reduce <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.map_reduce>`_, | | | `all_equal <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.all_equal>`_, | | | `first_true <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.first_true>`_, | | | `nth <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.nth>`_, | | | `quantify <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.quantify>`_ | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Selecting | `islice_extended <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.islice_extended>`_, | | | `strip <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.strip>`_, | | | `lstrip <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.lstrip>`_, | | | `rstrip <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.rstrip>`_, | | | `take <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.take>`_, | | | `tail <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.tail>`_, | | | `unique_everseen <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertoo ls.unique_everseen>`_, | | | `unique_justseen <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.unique_justseen>`_ | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Combinatorics | `distinct_permutations <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.distinct_permutations>`_, | | | `circular_shifts <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.circular_shifts>`_, | | | `powerset <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.powerset>`_, | | | `random_product <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.random_product>`_, | | | `random_permutation <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.random_permutation>`_, | | | `random_combination <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.random_combination>`_, | | | `random_combination_with_replacement <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.random_combination_with_replacement>`_, | | | `nth_combination <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.nth_combination>`_ | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Wrapping | `always_iterable <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.always_iterable>`_, | | | `consumer <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.consumer>`_, | | | `with_iter <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.with_iter>`_, | | | `iter_except <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.iter_except>`_ | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Others | `replace <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.replace>`_, | | | `numeric_range <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.numeric_range>`_, | | | `always_reversible <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.always_reversible>`_, | | | `side_effect <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.side_effect>`_, | | | `iterate <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.iterate>`_, | | | `difference <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.difference>`_, | | | `make_decorator <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.make_decorator>`_, | | | `SequenceView <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.SequenceView>`_, | | | `consume <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.consume>`_, | | | `accumulate <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.accumulate>`_, | | | `tabulate <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.tabulate>`_, | | | `repeatfunc <https://more-itertools.readthedocs.io/en/stable/api.html#more_itertools.repeatfunc>`_ | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ Getting started =============== To get started, install the library with `pip <https://pip.pypa.io/en/stable/>`_: .. code-block:: shell pip install more-itertools The recipes from the `itertools docs <https://docs.python.org/3/library/itertools.html#itertools-recipes>`_ are included in the top-level package: .. code-block:: python >>> from more_itertools import flatten >>> iterable = [(0, 1), (2, 3)] >>> list(flatten(iterable)) [0, 1, 2, 3] Several new recipes are available as well: .. code-block:: python >>> from more_itertools import chunked >>> iterable = [0, 1, 2, 3, 4, 5, 6, 7, 8] >>> list(chunked(iterable, 3)) [[0, 1, 2], [3, 4, 5], [6, 7, 8]] >>> from more_itertools import spy >>> iterable = (x * x for x in range(1, 6)) >>> head, iterable = spy(iterable, n=3) >>> list(head) [1, 4, 9] >>> list(iterable) [1, 4, 9, 16, 25] For the full listing of functions, see the `API documentation <https://more-itertools.readthedocs.io/en/latest/api.html>`_. Development =========== ``more-itertools`` is maintained by `@erikrose <https://github.com/erikrose>`_ and `@bbayles <https://github.com/bbayles>`_, with help from `many others <https://github.com/erikrose/more-itertools/graphs/contributors>`_. If you have a problem or suggestion, please file a bug or pull request in this repository. Thanks for contributing! Version History =============== 5.0.0 ----- * New itertools: * split_into (thanks to rovyko) * unzip (thanks to bmintz) * substrings (thanks to pylang) * Changes to existing itertools: * ilen was optimized a bit (thanks to MSeifert04, achampion, and bmintz) * first_true now returns ``None`` by default. This is the reason for the major version bump - see below. (thanks to sk and OJFord) * Other changes: * Some code for old Python versions was removed (thanks to hugovk) * Some documentation mistakes were corrected (thanks to belm0 and hugovk) * Tests now run properly on 32-bit versions of Python (thanks to Millak) * Newer versions of CPython and PyPy are now tested against The major version update is due to the change in the default return value of first_true. It's now ``None``. .. code-block:: python >>> from more_itertools import first_true >>> iterable = [0, '', False, [], ()] # All these are False >>> answer = first_true(iterable) >>> print(answer) None 4.3.0 ----- * New itertools: * last (thanks to tmshn) * replace (thanks to pylang) * rlocate (thanks to jferard and pylang) * Improvements to existing itertools: * locate can now search for multiple items * Other changes: * The docs now include a nice table of tools (thanks MSeifert04) 4.2.0 ----- * New itertools: * map_reduce (thanks to pylang) * prepend (from the `Python 3.7 docs <https://docs.python.org/3.7/library/itertools.html#itertools-recipes>`_) * Improvements to existing itertools: * bucket now complies with PEP 479 (thanks to irmen) * Other changes: * Python 3.7 is now supported (thanks to irmen) * Python 3.3 is no longer supported * The test suite no longer requires third-party modules to run * The API docs now include links to source code 4.1.0 ----- * New itertools: * split_at (thanks to michael-celani) * circular_shifts (thanks to hiqua) * make_decorator - see the blog post `Yo, I heard you like decorators <https://sites.google.com/site/bbayles/index/decorator_factory>`_ for a tour (thanks to pylang) * always_reversible (thanks to michael-celani) * nth_combination (from the `Python 3.7 docs <https://docs.python.org/3.7/library/itertools.html#itertools-recipes>`_) * Improvements to existing itertools: * seekable now has an ``elements`` method to return cached items. * The performance tradeoffs between roundrobin and interleave_longest are now documented (thanks michael-celani, pylang, and MSeifert04) 4.0.1 ----- * No code changes - this release fixes how the docs display on PyPI. 4.0.0 ----- * New itertools: * consecutive_groups (Based on the example in the `Python 2.4 docs <https://docs.python.org/release/2.4.4/lib/itertools-example.html>`_) * seekable (If you're looking for how to "reset" an iterator, you're in luck!) * exactly_n (thanks to michael-celani) * run_length.encode and run_length.decode * difference * Improvements to existing itertools: * The number of items between filler elements in intersperse can now be specified (thanks to pylang) * distinct_permutations and peekable got some minor adjustments (thanks to MSeifert04) * always_iterable now returns an iterator object. It also now allows different types to be considered iterable (thanks to jaraco) * bucket can now limit the keys it stores in memory * one now allows for custom exceptions (thanks to kalekundert) * Other changes: * A few typos were fixed (thanks to EdwardBetts) * All tests can now be run with ``python setup.py test`` The major version update is due to the change in the return value of always_iterable. It now always returns iterator objects: .. code-block:: python >>> from more_itertools import always_iterable # Non-iterable objects are wrapped with iter(tuple(obj)) >>> always_iterable(12345) <tuple_iterator object at 0x7fb24c9488d0> >>> list(always_iterable(12345)) [12345] # Iterable objects are wrapped with iter() >>> always_iterable([1, 2, 3, 4, 5]) <list_iterator object at 0x7fb24c948c50> 3.2.0 ----- * New itertools: * lstrip, rstrip, and strip (thanks to MSeifert04 and pylang) * islice_extended * Improvements to existing itertools: * Some bugs with slicing peekable-wrapped iterables were fixed 3.1.0 ----- * New itertools: * numeric_range (Thanks to BebeSparkelSparkel and MSeifert04) * count_cycle (Thanks to BebeSparkelSparkel) * locate (Thanks to pylang and MSeifert04) * Improvements to existing itertools: * A few itertools are now slightly faster due to some function optimizations. (Thanks to MSeifert04) * The docs have been substantially revised with installation notes, categories for library functions, links, and more. (Thanks to pylang) 3.0.0 ----- * Removed itertools: * ``context`` has been removed due to a design flaw - see below for replacement options. (thanks to NeilGirdhar) * Improvements to existing itertools: * ``side_effect`` now supports ``before`` and ``after`` keyword arguments. (Thanks to yardsale8) * PyPy and PyPy3 are now supported. The major version change is due to the removal of the ``context`` function. Replace it with standard ``with`` statement context management: .. code-block:: python # Don't use context() anymore file_obj = StringIO() consume(print(x, file=f) for f in context(file_obj) for x in u'123') # Use a with statement instead file_obj = StringIO() with file_obj as f: consume(print(x, file=f) for x in u'123') 2.6.0 ----- * New itertools: * ``adjacent`` and ``groupby_transform`` (Thanks to diazona) * ``always_iterable`` (Thanks to jaraco) * (Removed in 3.0.0) ``context`` (Thanks to yardsale8) * ``divide`` (Thanks to mozbhearsum) * Improvements to existing itertools: * ``ilen`` is now slightly faster. (Thanks to wbolster) * ``peekable`` can now prepend items to an iterable. (Thanks to diazona) 2.5.0 ----- * New itertools: * ``distribute`` (Thanks to mozbhearsum and coady) * ``sort_together`` (Thanks to clintval) * ``stagger`` and ``zip_offset`` (Thanks to joshbode) * ``padded`` * Improvements to existing itertools: * ``peekable`` now handles negative indexes and slices with negative components properly. * ``intersperse`` is now slightly faster. (Thanks to pylang) * ``windowed`` now accepts a ``step`` keyword argument. (Thanks to pylang) * Python 3.6 is now supported. 2.4.1 ----- * Move docs 100% to readthedocs.io. 2.4 ----- * New itertools: * ``accumulate``, ``all_equal``, ``first_true``, ``partition``, and ``tail`` from the itertools documentation. * ``bucket`` (Thanks to Rosuav and cvrebert) * ``collapse`` (Thanks to abarnet) * ``interleave`` and ``interleave_longest`` (Thanks to abarnet) * ``side_effect`` (Thanks to nvie) * ``sliced`` (Thanks to j4mie and coady) * ``split_before`` and ``split_after`` (Thanks to astronouth7303) * ``spy`` (Thanks to themiurgo and mathieulongtin) * Improvements to existing itertools: * ``chunked`` is now simpler and more friendly to garbage collection. (Contributed by coady, with thanks to piskvorky) * ``collate`` now delegates to ``heapq.merge`` when possible. (Thanks to kmike and julianpistorius) * ``peekable``-wrapped iterables are now indexable and sliceable. Iterating through ``peekable``-wrapped iterables is also faster. * ``one`` and ``unique_to_each`` have been simplified. (Thanks to coady) 2.3 ----- * Added ``one`` from ``jaraco.util.itertools``. (Thanks, jaraco!) * Added ``distinct_permutations`` and ``unique_to_each``. (Contributed by bbayles) * Added ``windowed``. (Contributed by bbayles, with thanks to buchanae, jaraco, and abarnert) * Simplified the implementation of ``chunked``. (Thanks, nvie!) * Python 3.5 is now supported. Python 2.6 is no longer supported. * Python 3 is now supported directly; there is no 2to3 step. 2.2 ----- * Added ``iterate`` and ``with_iter``. (Thanks, abarnert!) 2.1 ----- * Added (tested!) implementations of the recipes from the itertools documentation. (Thanks, Chris Lonnen!) * Added ``ilen``. (Thanks for the inspiration, Matt Basta!) 2.0 ----- * ``chunked`` now returns lists rather than tuples. After all, they're homogeneous. This slightly backward-incompatible change is the reason for the major version bump. * Added ``@consumer``. * Improved test machinery. 1.1 ----- * Added ``first`` function. * Added Python 3 support. * Added a default arg to ``peekable.peek()``. * Noted how to easily test whether a peekable iterator is exhausted. * Rewrote documentation. 1.0 ----- * Initial release, with ``collate``, ``peekable``, and ``chunked``. Could really use better docs.
Save