@@ -14,6 +14,8 @@ adapted to custom applications in which Python code needs to be edited
1414automatically.
1515
1616
17+ .. _2to3-using :
18+
1719Using 2to3
1820----------
1921
@@ -52,10 +54,10 @@ After transformation, :file:`example.py` looks like this::
5254
5355Comments and exact indentation are preserved throughout the translation process.
5456
55- By default, 2to3 runs a set of predefined fixers. The :option: ` -l ` flag lists
56- all available fixers. An explicit set of fixers to run can be given with
57- :option: `-f `. Likewise the :option: `-x ` explicitly disables a fixer. The
58- following example runs only the ``imports `` and ``has_key `` fixers::
57+ By default, 2to3 runs a set of :ref: ` predefined fixers < 2to3-fixers >`. The
58+ :option: ` -l ` flag lists all available fixers. An explicit set of fixers to run
59+ can be given with :option: `-f `. Likewise the :option: `-x ` explicitly disables a
60+ fixer. The following example runs only the ``imports `` and ``has_key `` fixers::
5961
6062 $ 2to3 -f imports -f has_key example.py
6163
@@ -84,12 +86,258 @@ document could also be refactored with this option.
8486The :option: `-v ` option enables output of more information on the translation
8587process.
8688
87- When the :option: `-p ` is passed, 2to3 treats ``print `` as a function instead of
88- a statement. This is useful when ``from __future__ import print_function `` is
89- being used. If this option is not given, the print fixer will surround print
90- calls in an extra set of parentheses because it cannot differentiate between the
91- print statement with parentheses (such as ``print ("a" + "b" + "c") ``) and a
92- true function call.
89+ When the :option: `-p ` is passed, the :2to3fixer: `print ` fixer ``print `` as a
90+ function instead of a statement. This is useful when ``from __future__ import
91+ print_function `` is being used. If this option is not given, the print fixer
92+ will surround print calls in an extra set of parentheses because it cannot
93+ differentiate between the print statement with parentheses (such as ``print
94+ ("a" + "b" + "c") ``) and a true function call.
95+
96+
97+ .. _2to3-fixers :
98+
99+ Fixers
100+ ------
101+
102+ Each step of tranforming code is encapsulated in a fixer. The command ``2to3
103+ -l `` lists them. As :ref: `documented above <2to3-using >`, each can be turned on
104+ and off individually. They are described here in more detail.
105+
106+
107+ .. 2to3fixer:: apply
108+
109+ Removes usage of :func:`apply`. For example ``apply(function, *args,
110+ **kwargs)`` is converted to ``function(*args, **kwargs)``.
111+
112+ .. 2to3fixer:: basestring
113+
114+ Converts :class:`basestring` to :class:`str`.
115+
116+ .. 2to3fixer:: buffer
117+
118+ Converts :class:`buffer` to :class:`memoryview`. This fixer is optional
119+ because the :class:`memoryview` API is similar but not exactly the same as
120+ that of :class:`buffer`.
121+
122+ .. 2to3fixer:: callable
123+
124+ Converts ``callable(x)`` to ``hasattr(x, "__call_")``.
125+
126+ .. 2to3fixer:: dict
127+
128+ Fixes dictionary iteration methods. :meth:`dict.iteritems` is converted to
129+ :meth:`dict.items`, :meth:`dict.iterkeys` to :meth:`dict.keys`, and
130+ :meth:`dict.itervalues` to :meth:`dict.values`. It also wraps existing
131+ usages of :meth:`dict.items`, :meth:`dict.keys`, and :meth:`dict.values` in a
132+ call to :class:`list`.
133+
134+ .. 2to3fixer:: except
135+
136+ Converts ``except X, T`` to ``except X as T``.
137+
138+ .. 2to3fixer:: exec
139+
140+ Converts the :keyword:`exec` statement to the :func:`exec` function.
141+
142+ .. 2to3fixer:: execfile
143+
144+ Removes usage of :func:`execfile`. The argument to :func:`execfile` is
145+ wrapped in calls to :func:`open`, :func:`compile`, and :func:`exec`.
146+
147+ .. 2to3fixer:: filter
148+
149+ Wraps :func:`filter` in a :class:`list` call.
150+
151+ .. 2to3fixer:: funcattrs
152+
153+ Fixes function attributes that have been renamed. For example,
154+ ``my_function.func_closure`` is converted to ``my_function.__closure__``.
155+
156+ .. 2to3fixer:: future
157+
158+ Removes ``from __future__ import new_feature`` statements.
159+
160+ .. 2to3fixer:: getcwdu
161+
162+ Renames :func:`os.getcwdu` to :func:`os.getcwd`.
163+
164+ .. 2to3fixer:: has_key
165+
166+ Changes ``dict.has_key(key)`` to ``key in dict``.
167+
168+ .. 2to3fixer:: idioms
169+
170+ This optional fixer preforms several transformations that make Python code
171+ more idiomatic. Type comparisions like ``type(x) is SomeClass`` and
172+ ``type(x) == SomeClass`` are converted to ``isinstance(x, SomeClass)``.
173+ ``while 1`` becomes ``while True``. This fixer also tries to make use of
174+ :func:`sorted` in appropiate places. For example, this block ::
175+
176+ L = list(some_iterable)
177+ L.sort()
178+
179+ is changed to ::
180+
181+ L = sorted(some_iterable)
182+
183+ .. 2to3fixer:: import
184+
185+ Detects sibling imports and converts them to relative imports.
186+
187+ .. 2to3fixer:: imports
188+
189+ Handles module renames in the standard library.
190+
191+ .. 2to3fixer:: imports2
192+
193+ Handles other modules reanmes in the standard library. It is separate from
194+ :2to3fixer:`imports` only because of technical limitations.
195+
196+ .. 2to3fixer:: input
197+
198+ Converts ``input(prompt)`` to ``eval(input(prompt))``
199+
200+ .. 2to3fixer:: intern
201+
202+ Converts :func:`intern` to :func:`sys.itern`.
203+
204+ .. 2to3fixer:: isinstance
205+
206+ Fixes duplicate types in the second argument of :func:`isinstance`. For
207+ example, ``isinstance(x, (int, int))`` is converted to ``isinstance(x,
208+ (int))``.
209+
210+ .. 2to3fixer:: itertools_imports
211+
212+ Removes imports of :func:`itertools.ifilter`, :func:`itertools.izip`, and
213+ :func:`itertools.imap`. Imports of :func:`itertools.ifilterfalse` are also
214+ changed to :func:`itertools.filterfalse`.
215+
216+ .. 2to3fixer:: itertools
217+
218+ Changes usage of :func:`itertools.ifilter`, :func:`itertools.izip`, and
219+ :func:`itertools.imap` to their builtin equivalents.
220+ :func:`itertools.ifilterfalse` is changed to :func:`itertools.filterfalse`.
221+
222+ .. 2to3fixer:: long
223+
224+ Strips the ``L`` prefix on numbers and renamed :class:`long` to :class:`int`.
225+
226+ .. 2to3fixer:: map
227+
228+ Wraps :func:`map` in a :class:`list` call. It also changes ``map(none, x)``
229+ to ``list(x)``. Using ``from future_builtins import map`` disables this
230+ fixer.
231+
232+ .. 2to3fixer:: metaclass
233+
234+ Converts the old metaclass syntax (``__metaclass__ = Meta`` in the class
235+ body) to the new (``class X(metaclass=Meta)``).
236+
237+ .. 2to3fixer:: methodattrs
238+
239+ Fixes old method attribute names. For example, ``meth.im_func`` is converted
240+ to ``meth.__func__``.
241+
242+ .. 2to3fixer:: ne
243+
244+ Converts the old not-equal syntax, ``<>``, to ``!=``.
245+
246+ .. 2to3fixer:: next
247+
248+ Converts the use of iterator's :meth:`next` methods to the :func:`next`
249+ function. It also renames :meth:`next` methods to :meth:`~object.__next__`.
250+
251+ .. 2to3fixer:: nonzero
252+
253+ Renames :meth:`~object.__nonzero__` to :meth:`~object.__bool__`.
254+
255+ .. 2to3fixer:: paren
256+
257+ Add extra parenthesis where they are required in list comprehensions. For
258+ example, ``[x for x in 1, 2]`` to ``[x for x in (1, 2)]``.
259+
260+ .. 2to3fixer:: print
261+
262+ Converts the :keyword:`print` statement to the :func:`print` function.
263+
264+ .. 2to3fixer:: raises
265+
266+ Converts ``raise E, V`` to ``raise E(V)``, and ``raise E, V, T`` as ``raise
267+ E(V).with_traceback(T)``. If ``E`` is a tuple, the translation will be
268+ incorrect because substituting tuples for exceptions has been removed in 3.0.
269+
270+ .. 2to3fixer:: raw_input
271+
272+ Converts :func:`raw_input` to :func:`input`.
273+
274+ .. 2to3fixer:: reduce
275+
276+ Handles the move of :func:`reduce` to :func:`functools.reduce`.
277+
278+ .. 2to3fixer:: renames
279+
280+ Changes :data:`sys.maxint` to :data:`sys.maxsize`.
281+
282+ .. 2to3fixer:: repr
283+
284+ Replaces backtick repr with the :func:`repr` function.
285+
286+ .. 2to3fixer:: set_literal
287+
288+ Replaces use of the :class:`set` constructor with set literals. This fixer
289+ is optional.
290+
291+ .. 2to3fixer:: standard_error
292+
293+ Renames :exc:`StandardError` to :exc:`Exception`.
294+
295+ .. 2to3fixer:: sys_exc
296+
297+ Changes the deprecated :data:`sys.exc_value`, :data:`sys.exc_type`,
298+ :data:`sys.exc_traceback` to use :func:`sys.exc_info`.
299+
300+ .. 2to3fixer:: throw
301+
302+ Fixes the API change in generators :meth:`throw` method.
303+
304+ .. 2to3fixer:: tuple_params
305+
306+ Removes implicit tuple parameter unpacking. This fixer inserts temporary
307+ variables.
308+
309+ .. 2to3fixer:: types
310+
311+ Fixes code broken from the removal of some members in the :mod:`types`
312+ module.
313+
314+ .. 2to3fixer:: unicode
315+
316+ Renames :class:`unicode` to :class:`str`.
317+
318+ .. 2to3fixer:: urllib
319+
320+ Handles the rename of :mod:`urllib` and :mod:`urllib2` to the :mod:`urllib`
321+ package.
322+
323+ .. 2to3fixer:: ws_comma
324+
325+ Removes excess whitespace from comma separated items. This fixer is
326+ optional.
327+
328+ .. 2to3fixer:: xrange
329+
330+ Renames :func:`xrange` to :func:`range` and wraps existing :func:`range`
331+ calls with :class:`list`.
332+
333+ .. 2to3fixer:: xreadlines
334+
335+ Change ``for x in file.xreadlines()`` to ``for x in file``.
336+
337+ .. 2to3fixer:: zip
338+
339+ Wraps :func:`zip` usage in a :class:`list` call. This is disabled when
340+ ``from future_builtins import zip`` appears.
93341
94342
95343:mod: `lib2to3 ` - 2to3's library
0 commit comments