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 the Google Summer of Code (TM)
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 (exact same as 2to3)
==========================

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 at least Python 2.7.

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 the
Python trunk causes errors with this program, the Lib/lib2to3 folder must be
replaced with the most recent version of 2to3 from
http://svn.python.org/sandbox/trunk/2to3/ (check out via svn), as a change to
2to3 will not 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.
