Abstract
========

lib3to2 is a set of fixers that are intended to backport code written for
Python version 3.x into Python version 2.x.  The final target 2.x version is
the latest version of the 2.5 branch, though for now, a later branch will be
necessary for some of the more difficult fixers (or some of the new features
with no syntactical equivalent in Python 2.5) that have been backported to the
2.x branches.

This project came about as a Google Summer of Code (TM) project in 2009.

Usage
=====

Run "./3to2" to convert stdin ("-"), files or directories given as
arguments.  By default, the tool outputs a unified diff-formatted patch on
standard output and a "what was changed" summary on standard error, but the
"-w" option can be given to write back converted files, creating
".bak"-named backup files.

If you are root, you can also install with "./setup.py build" and
"./setup.py install" ("make install" does this for you).

This branch of 3to2 must be run with Python 3.  Scripts assume that you have
the Python 3 executable installed as "python3".  If this does not exist, then
you should either symlink "python3" to your preferred Python 3 executable, or
modify the lines that start with "#!" in scripts.

To install locally (used for running tests as a non-privileged user), the
scripts assume you are using python3.1.  Modify accordingly if you are not.

Relationship with 2to3
======================

Many of the fixers for lib3to2 are directly copy-pasted from their 2to3
equivalent, with the element of PATTERN and the corresponding transformation
switched places.  Most fixers written for this program with a corresponding
2to3 fixer started from a clone of the 2to3 fixer, then modifying that fixer to
work in reverse.  I do not claim original authorship of these fixers, but I do
claim that they will work for 3to2, independent of how they work for 2to3.
In addition, this program depends on lib2to3 to implement fixers, test cases,
refactoring, and grammar.  Some portions of 2to3 were modified to be more
generic to support lib3to2's calls.  If the version of 2to3 included with your
Python version causes problems with this program, the Lib/lib2to3 folder must
be replaced.  The most recent version of 2to3 can be found at
http://svn.python.org/sandbox/trunk/2to3/ (check out via svn).  Changes to
2to3 may not necessarily propagate immediately to the Python trunk.

Status
======

3to2 is still under development, so check your output manually.  3to2 does the
bulk of the work, but there may be little tweaks that need to be done.
