| Index: third_party/google-endpoints/past/__init__.py
|
| diff --git a/third_party/google-endpoints/past/__init__.py b/third_party/google-endpoints/past/__init__.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..08eeb58d6d8483f3fbf732bd1bf12ebb0e14dddb
|
| --- /dev/null
|
| +++ b/third_party/google-endpoints/past/__init__.py
|
| @@ -0,0 +1,93 @@
|
| +# coding=utf-8
|
| +"""
|
| +past: compatibility with Python 2 from Python 3
|
| +===============================================
|
| +
|
| +``past`` is a package to aid with Python 2/3 compatibility. Whereas ``future``
|
| +contains backports of Python 3 constructs to Python 2, ``past`` provides
|
| +implementations of some Python 2 constructs in Python 3 and tools to import and
|
| +run Python 2 code in Python 3. It is intended to be used sparingly, as a way of
|
| +running old Python 2 code from Python 3 until the code is ported properly.
|
| +
|
| +Potential uses for libraries:
|
| +
|
| +- as a step in porting a Python 2 codebase to Python 3 (e.g. with the ``futurize`` script)
|
| +- to provide Python 3 support for previously Python 2-only libraries with the
|
| + same APIs as on Python 2 -- particularly with regard to 8-bit strings (the
|
| + ``past.builtins.str`` type).
|
| +- to aid in providing minimal-effort Python 3 support for applications using
|
| + libraries that do not yet wish to upgrade their code properly to Python 3, or
|
| + wish to upgrade it gradually to Python 3 style.
|
| +
|
| +
|
| +Here are some code examples that run identically on Python 3 and 2::
|
| +
|
| + >>> from past.builtins import str as oldstr
|
| +
|
| + >>> philosopher = oldstr(u'\u5b54\u5b50'.encode('utf-8'))
|
| + >>> # This now behaves like a Py2 byte-string on both Py2 and Py3.
|
| + >>> # For example, indexing returns a Python 2-like string object, not
|
| + >>> # an integer:
|
| + >>> philosopher[0]
|
| + '\xe5'
|
| + >>> type(philosopher[0])
|
| + <past.builtins.oldstr>
|
| +
|
| + >>> # List-producing versions of range, reduce, map, filter
|
| + >>> from past.builtins import range, reduce
|
| + >>> range(10)
|
| + [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
| + >>> reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])
|
| + 15
|
| +
|
| + >>> # Other functions removed in Python 3 are resurrected ...
|
| + >>> from past.builtins import execfile
|
| + >>> execfile('myfile.py')
|
| +
|
| + >>> from past.builtins import raw_input
|
| + >>> name = raw_input('What is your name? ')
|
| + What is your name? [cursor]
|
| +
|
| + >>> from past.builtins import reload
|
| + >>> reload(mymodule) # equivalent to imp.reload(mymodule) in Python 3
|
| +
|
| + >>> from past.builtins import xrange
|
| + >>> for i in xrange(10):
|
| + ... pass
|
| +
|
| +
|
| +It also provides import hooks so you can import and use Python 2 modules like
|
| +this::
|
| +
|
| + $ python3
|
| +
|
| + >>> from past import autotranslate
|
| + >>> authotranslate('mypy2module')
|
| + >>> import mypy2module
|
| +
|
| +until the authors of the Python 2 modules have upgraded their code. Then, for
|
| +example::
|
| +
|
| + >>> mypy2module.func_taking_py2_string(oldstr(b'abcd'))
|
| +
|
| +
|
| +Credits
|
| +-------
|
| +
|
| +:Author: Ed Schofield
|
| +:Sponsor: Python Charmers Pty Ltd, Australia: http://pythoncharmers.com
|
| +
|
| +
|
| +Licensing
|
| +---------
|
| +Copyright 2013-2016 Python Charmers Pty Ltd, Australia.
|
| +The software is distributed under an MIT licence. See LICENSE.txt.
|
| +"""
|
| +
|
| +
|
| +from past.translation import install_hooks as autotranslate
|
| +from future import __version__, __copyright__, __license__
|
| +
|
| +__title__ = 'past'
|
| +__author__ = 'Ed Schofield'
|
| +
|
|
|