| Index: third_party/google-endpoints/future/builtins/iterators.py
|
| diff --git a/third_party/google-endpoints/future/builtins/iterators.py b/third_party/google-endpoints/future/builtins/iterators.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b82f29f2a011b8d59edd3202fd9e05c2f6f2ea33
|
| --- /dev/null
|
| +++ b/third_party/google-endpoints/future/builtins/iterators.py
|
| @@ -0,0 +1,53 @@
|
| +"""
|
| +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__ = []
|
| +
|
|
|