past - pydoc - phpman

Look up a command

 

Markdown Format | JSON API | MCP Server Tool


past
NAME DESCRIPTION PACKAGE CONTENTS DATA VERSION AUTHOR FILE
Help on package past:

NAME
    past

DESCRIPTION
    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'孔子'.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]
        'å'
        >>> 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.translation 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, Jordan M. Adler, et al
    :Sponsor: Python Charmers Pty Ltd, Australia: http://pythoncharmers.com


    Licensing
    ---------
    Copyright 2013-2019 Python Charmers Pty Ltd, Australia.
    The software is distributed under an MIT licence. See LICENSE.txt.

PACKAGE CONTENTS
    builtins (package)
    translation (package)
    types (package)
    utils (package)

DATA
    __copyright__ = 'Copyright 2013-2019 Python Charmers Pty Ltd'
    __license__ = 'MIT'
    __title__ = 'past'

VERSION
    0.18.2

AUTHOR
    Ed Schofield

FILE
    /usr/lib/python3/dist-packages/past/__init__.py



Generated by phpMan Author: Che Dong Under GNU General Public License
2026-06-02 05:14 @216.73.216.198 CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0 TransitionalValid CSS!

^_back to top