pydoc > past

🏷️ NAME

past

🚀 Quick Reference

Use CaseCommandDescription
Legacy byte string typefrom past.builtins import str as oldstrProvides Python 2‑like byte string with indexing returning 1‑char strings
Legacy list‑producing rangefrom past.builtins import rangeReturns a list instead of an iterator
Execute a filefrom past.builtins import execfileexecfile() resurrected from Python 2
Read from stdinfrom past.builtins import raw_inputraw_input() resurrected from Python 2
Reload a modulefrom past.builtins import reloadEquivalent to imp.reload()
Python 2 xrangefrom past.builtins import xrangeEmulates Python 2 xrange
Auto‑translate Py2 modulefrom past.translation import autotranslate
authotranslate('mymodule')
import mymodule
Import and run Python 2 code in Python 3

📖 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:

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

📊 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

past
🏷️ NAME 🚀 Quick Reference 📖 DESCRIPTION
✨ Credits 📜 Licensing
📦 PACKAGE CONTENTS 📊 DATA 🔢 VERSION 👤 AUTHOR 📁 FILE

Generated by phpman v4.9.27 · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-07-18 12:16 @216.73.216.114
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0 Transitional!Valid CSS!
Enhanced by LLM: deepseek-v4-flash / taotoken.net / www.chedong.com - original format

^_top_^