| """ | |
| This module is designed to be used as follows:: | |
| from future.builtins.iterators import * | |
| And then, for example:: | |
| for i in range(10**15): | |
| pass | |
| for (a, b) in zip(range(10**15), range(-10**15, 0)): | |
| pass | |
| Note that this is standard Python 3 code, plus some imports that do | |
| nothing on Python 3. | |
| The iterators this brings in are:: | |
| - ``range`` | |
| - ``filter`` | |
| - ``map`` | |
| - ``zip`` | |
| On Python 2, ``range`` is a pure-Python backport of Python 3's ``range`` | |
| iterator with slicing support. The other iterators (``filter``, ``map``, | |
| ``zip``) are from the ``itertools`` module on Python 2. On Python 3 these | |
| are available in the module namespace but not exported for * imports via | |
| __all__ (zero no namespace pollution). | |
| Note that these are also available in the standard library | |
| ``future_builtins`` module on Python 2 -- but not Python 3, so using | |
| the standard library version is not portable, nor anywhere near complete. | |
| """ | |
| from __future__ import division, absolute_import, print_function | |
| import itertools | |
| from future import utils | |
| if not utils.PY3: | |
| filter = itertools.ifilter | |
| map = itertools.imap | |
| from future.types import newrange as range | |
| zip = itertools.izip | |
| __all__ = ['filter', 'map', 'range', 'zip'] | |
| else: | |
| import builtins | |
| filter = builtins.filter | |
| map = builtins.map | |
| range = builtins.range | |
| zip = builtins.zip | |
| __all__ = [] | |