Clean single-source support for Python 3 and 2
Project description
future is the missing compatibility layer between Python 2 and Python 3. It allows you to use a single, clean Python 3.x-compatible codebase to support both Python 2 and Python 3 with minimal overhead.
Notable projects that use future for Python 2/3 compatibility are Mezzanine and xlwt-future.
It is designed to be used as follows:
from __future__ import (absolute_import, division, print_function, unicode_literals) from future import standard_library from future.builtins import * # or explicit imports: str, int, bytes, # open, super, range, zip, input, etc.
followed by predominantly standard, idiomatic Python 3 code that then runs similarly on Python 2.6/2.7 and Python 3.3+.
On Python 3, the import lines have zero effect (and zero namespace pollution).
On Python 2, from future import standard_library installs import hooks to allow renamed and moved standard library modules to be imported from their new Py3 locations. On Python 2, the from future.builtins import * line shadows all builtins with different behaviour in Python 3 versus 2 to provide their Python 3 semantics.
Automatic conversion
An included script called futurize aids in converting code (from either Python 2 or Python 3) to code compatible with both platforms. It is similar to python-modernize but goes further in providing Python 3 compatibility through the use of the backported types and builtin functions in future.
Documentation
Also see the docstrings for each of these modules for more info:
- future.standard_library - future.builtins - future.utils
Credits
- Author:
Ed Schofield
- Sponsor:
Python Charmers Pty Ltd, Australia, and Python Charmers Pte Ltd, Singapore. http://pythoncharmers.com
- Others:
See docs/credits.rst or http://python-future.org/credits.html
Licensing
Copyright 2013-2014 Python Charmers Pty Ltd, Australia. The software is distributed under an MIT licence. See LICENSE.txt.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.