mirror of https://github.com/python/cpython
add some documentation for 2to3
This commit is contained in:
parent
8e234c6e30
commit
4020221838
|
@ -22,7 +22,8 @@ Glossary
|
||||||
source and traversing the parse tree.
|
source and traversing the parse tree.
|
||||||
|
|
||||||
2to3 is available in the standard library as :mod:`lib2to3`; a standalone
|
2to3 is available in the standard library as :mod:`lib2to3`; a standalone
|
||||||
entry point is provided as :file:`Tools/scripts/2to3`.
|
entry point is provided as :file:`Tools/scripts/2to3`. See
|
||||||
|
:ref:`2to3-reference`.
|
||||||
|
|
||||||
abstract base class
|
abstract base class
|
||||||
Abstract Base Classes (abbreviated ABCs) complement :term:`duck-typing` by
|
Abstract Base Classes (abbreviated ABCs) complement :term:`duck-typing` by
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
|
||||||
|
.. _2to3-reference:
|
||||||
|
|
||||||
|
2to3 - Automated Python 2 to 3 code translation
|
||||||
|
===============================================
|
||||||
|
|
||||||
|
.. sectionauthor:: Benjamin Peterson
|
||||||
|
|
||||||
|
2to3 is a Python program that reads your Python 2.x source code and applies a
|
||||||
|
series of *fixers* to transform it into valid Python 3.x code.
|
||||||
|
|
||||||
|
|
||||||
|
Using 2to3
|
||||||
|
----------
|
||||||
|
|
||||||
|
2to3 can be run with a list of files to transform or a directory to recursively
|
||||||
|
traverse looking for files with the ``.py`` extension.
|
||||||
|
|
||||||
|
Here is a sample Python 2.x source file, :file:`example.py`::
|
||||||
|
|
||||||
|
def greet(name):
|
||||||
|
print "Hello, {0}!".format(name)
|
||||||
|
print "What's your name?"
|
||||||
|
name = raw_input()
|
||||||
|
greet(name)
|
||||||
|
|
||||||
|
It can be converted to Python 3.x code via 2to3 on the command line::
|
||||||
|
|
||||||
|
$ 2to3 example.py
|
||||||
|
|
||||||
|
A diff against the original source file will be printed. 2to3 can also write
|
||||||
|
the needed modifications right back to the source file. (A backup of the
|
||||||
|
original file will also be made.) This is done with the :option:`-w` flag::
|
||||||
|
|
||||||
|
$ 2to3 -w example.py
|
||||||
|
|
||||||
|
:file:`example.py` will now look like this::
|
||||||
|
|
||||||
|
def greet(name):
|
||||||
|
print("Hello, {0}!".format(name))
|
||||||
|
print("What's your name?")
|
||||||
|
name = input()
|
||||||
|
greet(name)
|
||||||
|
|
||||||
|
Comments and and exact indentation will be preserved throughout the translation
|
||||||
|
process.
|
||||||
|
|
||||||
|
By default, 2to3 will run a set of predefined fixers. The :option:`-l` flag
|
||||||
|
lists all avaible fixers. An explicit set of fixers to run can be given by use
|
||||||
|
of the :option:`-f` flag. The following example runs only the ``imports`` and
|
||||||
|
``has_key`` fixers::
|
||||||
|
|
||||||
|
$ 2to3 -f imports -f has_key example.py
|
||||||
|
|
||||||
|
Some fixers are *explicit*, meaning they aren't run be default and must be
|
||||||
|
listed on the command line. Here, in addition to the default fixers, the
|
||||||
|
``idioms`` fixer is run::
|
||||||
|
|
||||||
|
$ 2to3 -f all -f idioms example.py
|
||||||
|
|
||||||
|
Notice how ``all`` enables all default fixers.
|
||||||
|
|
||||||
|
Sometimes 2to3 will find will find a place in your source code that needs to be
|
||||||
|
changed, but 2to3 cannot fix automatically. In this case, 2to3 will print a
|
||||||
|
warning beneath the diff for a file.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
:mod:`lib2to3` - 2to3's library
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
.. module:: lib2to3
|
||||||
|
:synopsis: the 2to3 library
|
||||||
|
.. moduleauthor:: Guido van Rossum
|
||||||
|
.. moduleauthor:: Collin Winter
|
||||||
|
|
||||||
|
.. XXX What is the public interface anyway?
|
|
@ -9,7 +9,8 @@ The modules described in this chapter help you write software. For example, the
|
||||||
:mod:`pydoc` module takes a module and generates documentation based on the
|
:mod:`pydoc` module takes a module and generates documentation based on the
|
||||||
module's contents. The :mod:`doctest` and :mod:`unittest` modules contains
|
module's contents. The :mod:`doctest` and :mod:`unittest` modules contains
|
||||||
frameworks for writing unit tests that automatically exercise code and verify
|
frameworks for writing unit tests that automatically exercise code and verify
|
||||||
that the expected output is produced.
|
that the expected output is produced. :program:`2to3` can translate Python 2.x
|
||||||
|
source code into valid Python 3.x code.
|
||||||
|
|
||||||
The list of modules described in this chapter is:
|
The list of modules described in this chapter is:
|
||||||
|
|
||||||
|
@ -19,4 +20,5 @@ The list of modules described in this chapter is:
|
||||||
pydoc.rst
|
pydoc.rst
|
||||||
doctest.rst
|
doctest.rst
|
||||||
unittest.rst
|
unittest.rst
|
||||||
|
2to3.rst
|
||||||
test.rst
|
test.rst
|
||||||
|
|
Loading…
Reference in New Issue