python-project/python-3.7.4-docs-html/library/2to3.html

762 lines
61 KiB
HTML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>2to3 - Automated Python 2 to 3 code translation &#8212; Python 3.7.4 documentation</title>
<link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/language_data.js"></script>
<script type="text/javascript" src="../_static/sidebar.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="Search within Python 3.7.4 documentation"
href="../_static/opensearch.xml"/>
<link rel="author" title="About these documents" href="../about.html" />
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="copyright" title="Copyright" href="../copyright.html" />
<link rel="next" title="test — Regression tests package for Python" href="test.html" />
<link rel="prev" title="unittest.mock — getting started" href="unittest.mock-examples.html" />
<link rel="shortcut icon" type="image/png" href="../_static/py.png" />
<link rel="canonical" href="https://docs.python.org/3/library/2to3.html" />
<script type="text/javascript" src="../_static/copybutton.js"></script>
<script type="text/javascript" src="../_static/switchers.js"></script>
<style>
@media only screen {
table.full-width-table {
width: 100%;
}
}
</style>
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="test.html" title="test — Regression tests package for Python"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="unittest.mock-examples.html" title="unittest.mock — getting started"
accesskey="P">previous</a> |</li>
<li><img src="../_static/py.png" alt=""
style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li>
<span class="language_switcher_placeholder">en</span>
<span class="version_switcher_placeholder">3.7.4</span>
<a href="../index.html">Documentation </a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="development.html" accesskey="U">Development Tools</a> &#187;</li>
<li class="right">
<div class="inline-search" style="display: none" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="Quick search" type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<script type="text/javascript">$('.inline-search').show(0);</script>
|
</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="to3-automated-python-2-to-3-code-translation">
<span id="to3-reference"></span><h1>2to3 - Automated Python 2 to 3 code translation<a class="headerlink" href="#to3-automated-python-2-to-3-code-translation" title="Permalink to this headline"></a></h1>
<p>2to3 is a Python program that reads Python 2.x source code and applies a series
of <em>fixers</em> to transform it into valid Python 3.x code. The standard library
contains a rich set of fixers that will handle almost all code. 2to3 supporting
library <a class="reference internal" href="#module-lib2to3" title="lib2to3: the 2to3 library"><code class="xref py py-mod docutils literal notranslate"><span class="pre">lib2to3</span></code></a> is, however, a flexible and generic library, so it is
possible to write your own fixers for 2to3. <a class="reference internal" href="#module-lib2to3" title="lib2to3: the 2to3 library"><code class="xref py py-mod docutils literal notranslate"><span class="pre">lib2to3</span></code></a> could also be
adapted to custom applications in which Python code needs to be edited
automatically.</p>
<div class="section" id="using-2to3">
<span id="to3-using"></span><h2>Using 2to3<a class="headerlink" href="#using-2to3" title="Permalink to this headline"></a></h2>
<p>2to3 will usually be installed with the Python interpreter as a script. It is
also located in the <code class="file docutils literal notranslate"><span class="pre">Tools/scripts</span></code> directory of the Python root.</p>
<p>2to3s basic arguments are a list of files or directories to transform. The
directories are recursively traversed for Python sources.</p>
<p>Here is a sample Python 2.x source file, <code class="file docutils literal notranslate"><span class="pre">example.py</span></code>:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">greet</span><span class="p">(</span><span class="n">name</span><span class="p">):</span>
<span class="nb">print</span> <span class="s2">&quot;Hello, </span><span class="si">{0}</span><span class="s2">!&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
<span class="nb">print</span> <span class="s2">&quot;What&#39;s your name?&quot;</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">raw_input</span><span class="p">()</span>
<span class="n">greet</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
</pre></div>
</div>
<p>It can be converted to Python 3.x code via 2to3 on the command line:</p>
<div class="highlight-shell-session notranslate"><div class="highlight"><pre><span></span><span class="gp">$</span> 2to3 example.py
</pre></div>
</div>
<p>A diff against the original source file is printed. 2to3 can also write the
needed modifications right back to the source file. (A backup of the original
file is made unless <code class="xref std std-option docutils literal notranslate"><span class="pre">-n</span></code> is also given.) Writing the changes back is
enabled with the <code class="xref std std-option docutils literal notranslate"><span class="pre">-w</span></code> flag:</p>
<div class="highlight-shell-session notranslate"><div class="highlight"><pre><span></span><span class="gp">$</span> 2to3 -w example.py
</pre></div>
</div>
<p>After transformation, <code class="file docutils literal notranslate"><span class="pre">example.py</span></code> looks like this:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">greet</span><span class="p">(</span><span class="n">name</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Hello, </span><span class="si">{0}</span><span class="s2">!&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">name</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;What&#39;s your name?&quot;</span><span class="p">)</span>
<span class="n">name</span> <span class="o">=</span> <span class="nb">input</span><span class="p">()</span>
<span class="n">greet</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
</pre></div>
</div>
<p>Comments and exact indentation are preserved throughout the translation process.</p>
<p>By default, 2to3 runs a set of <a class="reference internal" href="#to3-fixers"><span class="std std-ref">predefined fixers</span></a>. The
<code class="xref std std-option docutils literal notranslate"><span class="pre">-l</span></code> flag lists all available fixers. An explicit set of fixers to run
can be given with <code class="xref std std-option docutils literal notranslate"><span class="pre">-f</span></code>. Likewise the <code class="xref std std-option docutils literal notranslate"><span class="pre">-x</span></code> explicitly disables a
fixer. The following example runs only the <code class="docutils literal notranslate"><span class="pre">imports</span></code> and <code class="docutils literal notranslate"><span class="pre">has_key</span></code> fixers:</p>
<div class="highlight-shell-session notranslate"><div class="highlight"><pre><span></span><span class="gp">$</span> 2to3 -f imports -f has_key example.py
</pre></div>
</div>
<p>This command runs every fixer except the <code class="docutils literal notranslate"><span class="pre">apply</span></code> fixer:</p>
<div class="highlight-shell-session notranslate"><div class="highlight"><pre><span></span><span class="gp">$</span> 2to3 -x apply example.py
</pre></div>
</div>
<p>Some fixers are <em>explicit</em>, meaning they arent run by default and must be
listed on the command line to be run. Here, in addition to the default fixers,
the <code class="docutils literal notranslate"><span class="pre">idioms</span></code> fixer is run:</p>
<div class="highlight-shell-session notranslate"><div class="highlight"><pre><span></span><span class="gp">$</span> 2to3 -f all -f idioms example.py
</pre></div>
</div>
<p>Notice how passing <code class="docutils literal notranslate"><span class="pre">all</span></code> enables all default fixers.</p>
<p>Sometimes 2to3 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. You should address the warning in order to have
compliant 3.x code.</p>
<p>2to3 can also refactor doctests. To enable this mode, use the <code class="xref std std-option docutils literal notranslate"><span class="pre">-d</span></code>
flag. Note that <em>only</em> doctests will be refactored. This also doesnt require
the module to be valid Python. For example, doctest like examples in a reST
document could also be refactored with this option.</p>
<p>The <code class="xref std std-option docutils literal notranslate"><span class="pre">-v</span></code> option enables output of more information on the translation
process.</p>
<p>Since some print statements can be parsed as function calls or statements, 2to3
cannot always read files containing the print function. When 2to3 detects the
presence of the <code class="docutils literal notranslate"><span class="pre">from</span> <span class="pre">__future__</span> <span class="pre">import</span> <span class="pre">print_function</span></code> compiler directive, it
modifies its internal grammar to interpret <a class="reference internal" href="functions.html#print" title="print"><code class="xref py py-func docutils literal notranslate"><span class="pre">print()</span></code></a> as a function. This
change can also be enabled manually with the <code class="xref std std-option docutils literal notranslate"><span class="pre">-p</span></code> flag. Use
<code class="xref std std-option docutils literal notranslate"><span class="pre">-p</span></code> to run fixers on code that already has had its print statements
converted.</p>
<p>The <code class="xref std std-option docutils literal notranslate"><span class="pre">-o</span></code> or <code class="xref std std-option docutils literal notranslate"><span class="pre">--output-dir</span></code> option allows specification of an
alternate directory for processed output files to be written to. The
<code class="xref std std-option docutils literal notranslate"><span class="pre">-n</span></code> flag is required when using this as backup files do not make sense
when not overwriting the input files.</p>
<div class="versionadded">
<p><span class="versionmodified added">New in version 3.2.3: </span>The <code class="xref std std-option docutils literal notranslate"><span class="pre">-o</span></code> option was added.</p>
</div>
<p>The <code class="xref std std-option docutils literal notranslate"><span class="pre">-W</span></code> or <code class="xref std std-option docutils literal notranslate"><span class="pre">--write-unchanged-files</span></code> flag tells 2to3 to always
write output files even if no changes were required to the file. This is most
useful with <code class="xref std std-option docutils literal notranslate"><span class="pre">-o</span></code> so that an entire Python source tree is copied with
translation from one directory to another.
This option implies the <code class="xref std std-option docutils literal notranslate"><span class="pre">-w</span></code> flag as it would not make sense otherwise.</p>
<div class="versionadded">
<p><span class="versionmodified added">New in version 3.2.3: </span>The <code class="xref std std-option docutils literal notranslate"><span class="pre">-W</span></code> flag was added.</p>
</div>
<p>The <code class="xref std std-option docutils literal notranslate"><span class="pre">--add-suffix</span></code> option specifies a string to append to all output
filenames. The <code class="xref std std-option docutils literal notranslate"><span class="pre">-n</span></code> flag is required when specifying this as backups
are not necessary when writing to different filenames. Example:</p>
<div class="highlight-shell-session notranslate"><div class="highlight"><pre><span></span><span class="gp">$</span> 2to3 -n -W --add-suffix<span class="o">=</span><span class="m">3</span> example.py
</pre></div>
</div>
<p>Will cause a converted file named <code class="docutils literal notranslate"><span class="pre">example.py3</span></code> to be written.</p>
<div class="versionadded">
<p><span class="versionmodified added">New in version 3.2.3: </span>The <code class="xref std std-option docutils literal notranslate"><span class="pre">--add-suffix</span></code> option was added.</p>
</div>
<p>To translate an entire project from one directory tree to another use:</p>
<div class="highlight-shell-session notranslate"><div class="highlight"><pre><span></span><span class="gp">$</span> 2to3 --output-dir<span class="o">=</span>python3-version/mycode -W -n python2-version/mycode
</pre></div>
</div>
</div>
<div class="section" id="fixers">
<span id="to3-fixers"></span><h2>Fixers<a class="headerlink" href="#fixers" title="Permalink to this headline"></a></h2>
<p>Each step of transforming code is encapsulated in a fixer. The command <code class="docutils literal notranslate"><span class="pre">2to3</span>
<span class="pre">-l</span></code> lists them. As <a class="reference internal" href="#to3-using"><span class="std std-ref">documented above</span></a>, each can be turned on
and off individually. They are described here in more detail.</p>
<dl class="2to3fixer">
<dt id="2to3fixer-apply">
<code class="descname">apply</code><a class="headerlink" href="#2to3fixer-apply" title="Permalink to this definition"></a></dt>
<dd><p>Removes usage of <code class="xref py py-func docutils literal notranslate"><span class="pre">apply()</span></code>. For example <code class="docutils literal notranslate"><span class="pre">apply(function,</span> <span class="pre">*args,</span>
<span class="pre">**kwargs)</span></code> is converted to <code class="docutils literal notranslate"><span class="pre">function(*args,</span> <span class="pre">**kwargs)</span></code>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-asserts">
<code class="descname">asserts</code><a class="headerlink" href="#2to3fixer-asserts" title="Permalink to this definition"></a></dt>
<dd><p>Replaces deprecated <a class="reference internal" href="unittest.html#module-unittest" title="unittest: Unit testing framework for Python."><code class="xref py py-mod docutils literal notranslate"><span class="pre">unittest</span></code></a> method names with the correct ones.</p>
<table class="docutils align-center">
<colgroup>
<col style="width: 43%" />
<col style="width: 57%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>From</p></th>
<th class="head"><p>To</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">failUnlessEqual(a,</span> <span class="pre">b)</span></code></p></td>
<td><p><a class="reference internal" href="unittest.html#unittest.TestCase.assertEqual" title="unittest.TestCase.assertEqual"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertEqual(a,</span> <span class="pre">b)</span></code></a></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">assertEquals(a,</span> <span class="pre">b)</span></code></p></td>
<td><p><a class="reference internal" href="unittest.html#unittest.TestCase.assertEqual" title="unittest.TestCase.assertEqual"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertEqual(a,</span> <span class="pre">b)</span></code></a></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">failIfEqual(a,</span> <span class="pre">b)</span></code></p></td>
<td><p><a class="reference internal" href="unittest.html#unittest.TestCase.assertNotEqual" title="unittest.TestCase.assertNotEqual"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertNotEqual(a,</span> <span class="pre">b)</span></code></a></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">assertNotEquals(a,</span> <span class="pre">b)</span></code></p></td>
<td><p><a class="reference internal" href="unittest.html#unittest.TestCase.assertNotEqual" title="unittest.TestCase.assertNotEqual"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertNotEqual(a,</span> <span class="pre">b)</span></code></a></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">failUnless(a)</span></code></p></td>
<td><p><a class="reference internal" href="unittest.html#unittest.TestCase.assertTrue" title="unittest.TestCase.assertTrue"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertTrue(a)</span></code></a></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">assert_(a)</span></code></p></td>
<td><p><a class="reference internal" href="unittest.html#unittest.TestCase.assertTrue" title="unittest.TestCase.assertTrue"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertTrue(a)</span></code></a></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">failIf(a)</span></code></p></td>
<td><p><a class="reference internal" href="unittest.html#unittest.TestCase.assertFalse" title="unittest.TestCase.assertFalse"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertFalse(a)</span></code></a></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">failUnlessRaises(exc,</span> <span class="pre">cal)</span></code></p></td>
<td><p><a class="reference internal" href="unittest.html#unittest.TestCase.assertRaises" title="unittest.TestCase.assertRaises"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertRaises(exc,</span> <span class="pre">cal)</span></code></a></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">failUnlessAlmostEqual(a,</span> <span class="pre">b)</span></code></p></td>
<td><p><a class="reference internal" href="unittest.html#unittest.TestCase.assertAlmostEqual" title="unittest.TestCase.assertAlmostEqual"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertAlmostEqual(a,</span> <span class="pre">b)</span></code></a></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">assertAlmostEquals(a,</span> <span class="pre">b)</span></code></p></td>
<td><p><a class="reference internal" href="unittest.html#unittest.TestCase.assertAlmostEqual" title="unittest.TestCase.assertAlmostEqual"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertAlmostEqual(a,</span> <span class="pre">b)</span></code></a></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">failIfAlmostEqual(a,</span> <span class="pre">b)</span></code></p></td>
<td><p><a class="reference internal" href="unittest.html#unittest.TestCase.assertNotAlmostEqual" title="unittest.TestCase.assertNotAlmostEqual"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertNotAlmostEqual(a,</span> <span class="pre">b)</span></code></a></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">assertNotAlmostEquals(a,</span> <span class="pre">b)</span></code></p></td>
<td><p><a class="reference internal" href="unittest.html#unittest.TestCase.assertNotAlmostEqual" title="unittest.TestCase.assertNotAlmostEqual"><code class="xref py py-meth docutils literal notranslate"><span class="pre">assertNotAlmostEqual(a,</span> <span class="pre">b)</span></code></a></p></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-basestring">
<code class="descname">basestring</code><a class="headerlink" href="#2to3fixer-basestring" title="Permalink to this definition"></a></dt>
<dd><p>Converts <code class="xref py py-class docutils literal notranslate"><span class="pre">basestring</span></code> to <a class="reference internal" href="stdtypes.html#str" title="str"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-buffer">
<code class="descname">buffer</code><a class="headerlink" href="#2to3fixer-buffer" title="Permalink to this definition"></a></dt>
<dd><p>Converts <code class="xref py py-class docutils literal notranslate"><span class="pre">buffer</span></code> to <a class="reference internal" href="stdtypes.html#memoryview" title="memoryview"><code class="xref py py-class docutils literal notranslate"><span class="pre">memoryview</span></code></a>. This fixer is optional
because the <a class="reference internal" href="stdtypes.html#memoryview" title="memoryview"><code class="xref py py-class docutils literal notranslate"><span class="pre">memoryview</span></code></a> API is similar but not exactly the same as
that of <code class="xref py py-class docutils literal notranslate"><span class="pre">buffer</span></code>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-dict">
<code class="descname">dict</code><a class="headerlink" href="#2to3fixer-dict" title="Permalink to this definition"></a></dt>
<dd><p>Fixes dictionary iteration methods. <code class="xref py py-meth docutils literal notranslate"><span class="pre">dict.iteritems()</span></code> is converted to
<a class="reference internal" href="stdtypes.html#dict.items" title="dict.items"><code class="xref py py-meth docutils literal notranslate"><span class="pre">dict.items()</span></code></a>, <code class="xref py py-meth docutils literal notranslate"><span class="pre">dict.iterkeys()</span></code> to <a class="reference internal" href="stdtypes.html#dict.keys" title="dict.keys"><code class="xref py py-meth docutils literal notranslate"><span class="pre">dict.keys()</span></code></a>, and
<code class="xref py py-meth docutils literal notranslate"><span class="pre">dict.itervalues()</span></code> to <a class="reference internal" href="stdtypes.html#dict.values" title="dict.values"><code class="xref py py-meth docutils literal notranslate"><span class="pre">dict.values()</span></code></a>. Similarly,
<code class="xref py py-meth docutils literal notranslate"><span class="pre">dict.viewitems()</span></code>, <code class="xref py py-meth docutils literal notranslate"><span class="pre">dict.viewkeys()</span></code> and <code class="xref py py-meth docutils literal notranslate"><span class="pre">dict.viewvalues()</span></code> are
converted respectively to <a class="reference internal" href="stdtypes.html#dict.items" title="dict.items"><code class="xref py py-meth docutils literal notranslate"><span class="pre">dict.items()</span></code></a>, <a class="reference internal" href="stdtypes.html#dict.keys" title="dict.keys"><code class="xref py py-meth docutils literal notranslate"><span class="pre">dict.keys()</span></code></a> and
<a class="reference internal" href="stdtypes.html#dict.values" title="dict.values"><code class="xref py py-meth docutils literal notranslate"><span class="pre">dict.values()</span></code></a>. It also wraps existing usages of <a class="reference internal" href="stdtypes.html#dict.items" title="dict.items"><code class="xref py py-meth docutils literal notranslate"><span class="pre">dict.items()</span></code></a>,
<a class="reference internal" href="stdtypes.html#dict.keys" title="dict.keys"><code class="xref py py-meth docutils literal notranslate"><span class="pre">dict.keys()</span></code></a>, and <a class="reference internal" href="stdtypes.html#dict.values" title="dict.values"><code class="xref py py-meth docutils literal notranslate"><span class="pre">dict.values()</span></code></a> in a call to <a class="reference internal" href="stdtypes.html#list" title="list"><code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-except">
<code class="descname">except</code><a class="headerlink" href="#2to3fixer-except" title="Permalink to this definition"></a></dt>
<dd><p>Converts <code class="docutils literal notranslate"><span class="pre">except</span> <span class="pre">X,</span> <span class="pre">T</span></code> to <code class="docutils literal notranslate"><span class="pre">except</span> <span class="pre">X</span> <span class="pre">as</span> <span class="pre">T</span></code>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-exec">
<code class="descname">exec</code><a class="headerlink" href="#2to3fixer-exec" title="Permalink to this definition"></a></dt>
<dd><p>Converts the <code class="docutils literal notranslate"><span class="pre">exec</span></code> statement to the <a class="reference internal" href="functions.html#exec" title="exec"><code class="xref py py-func docutils literal notranslate"><span class="pre">exec()</span></code></a> function.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-execfile">
<code class="descname">execfile</code><a class="headerlink" href="#2to3fixer-execfile" title="Permalink to this definition"></a></dt>
<dd><p>Removes usage of <code class="xref py py-func docutils literal notranslate"><span class="pre">execfile()</span></code>. The argument to <code class="xref py py-func docutils literal notranslate"><span class="pre">execfile()</span></code> is
wrapped in calls to <a class="reference internal" href="functions.html#open" title="open"><code class="xref py py-func docutils literal notranslate"><span class="pre">open()</span></code></a>, <a class="reference internal" href="functions.html#compile" title="compile"><code class="xref py py-func docutils literal notranslate"><span class="pre">compile()</span></code></a>, and <a class="reference internal" href="functions.html#exec" title="exec"><code class="xref py py-func docutils literal notranslate"><span class="pre">exec()</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-exitfunc">
<code class="descname">exitfunc</code><a class="headerlink" href="#2to3fixer-exitfunc" title="Permalink to this definition"></a></dt>
<dd><p>Changes assignment of <code class="xref py py-attr docutils literal notranslate"><span class="pre">sys.exitfunc</span></code> to use of the <a class="reference internal" href="atexit.html#module-atexit" title="atexit: Register and execute cleanup functions."><code class="xref py py-mod docutils literal notranslate"><span class="pre">atexit</span></code></a>
module.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-filter">
<code class="descname">filter</code><a class="headerlink" href="#2to3fixer-filter" title="Permalink to this definition"></a></dt>
<dd><p>Wraps <a class="reference internal" href="functions.html#filter" title="filter"><code class="xref py py-func docutils literal notranslate"><span class="pre">filter()</span></code></a> usage in a <a class="reference internal" href="stdtypes.html#list" title="list"><code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></a> call.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-funcattrs">
<code class="descname">funcattrs</code><a class="headerlink" href="#2to3fixer-funcattrs" title="Permalink to this definition"></a></dt>
<dd><p>Fixes function attributes that have been renamed. For example,
<code class="docutils literal notranslate"><span class="pre">my_function.func_closure</span></code> is converted to <code class="docutils literal notranslate"><span class="pre">my_function.__closure__</span></code>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-future">
<code class="descname">future</code><a class="headerlink" href="#2to3fixer-future" title="Permalink to this definition"></a></dt>
<dd><p>Removes <code class="docutils literal notranslate"><span class="pre">from</span> <span class="pre">__future__</span> <span class="pre">import</span> <span class="pre">new_feature</span></code> statements.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-getcwdu">
<code class="descname">getcwdu</code><a class="headerlink" href="#2to3fixer-getcwdu" title="Permalink to this definition"></a></dt>
<dd><p>Renames <code class="xref py py-func docutils literal notranslate"><span class="pre">os.getcwdu()</span></code> to <a class="reference internal" href="os.html#os.getcwd" title="os.getcwd"><code class="xref py py-func docutils literal notranslate"><span class="pre">os.getcwd()</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-has_key">
<code class="descname">has_key</code><a class="headerlink" href="#2to3fixer-has_key" title="Permalink to this definition"></a></dt>
<dd><p>Changes <code class="docutils literal notranslate"><span class="pre">dict.has_key(key)</span></code> to <code class="docutils literal notranslate"><span class="pre">key</span> <span class="pre">in</span> <span class="pre">dict</span></code>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-idioms">
<code class="descname">idioms</code><a class="headerlink" href="#2to3fixer-idioms" title="Permalink to this definition"></a></dt>
<dd><p>This optional fixer performs several transformations that make Python code
more idiomatic. Type comparisons like <code class="docutils literal notranslate"><span class="pre">type(x)</span> <span class="pre">is</span> <span class="pre">SomeClass</span></code> and
<code class="docutils literal notranslate"><span class="pre">type(x)</span> <span class="pre">==</span> <span class="pre">SomeClass</span></code> are converted to <code class="docutils literal notranslate"><span class="pre">isinstance(x,</span> <span class="pre">SomeClass)</span></code>.
<code class="docutils literal notranslate"><span class="pre">while</span> <span class="pre">1</span></code> becomes <code class="docutils literal notranslate"><span class="pre">while</span> <span class="pre">True</span></code>. This fixer also tries to make use of
<a class="reference internal" href="functions.html#sorted" title="sorted"><code class="xref py py-func docutils literal notranslate"><span class="pre">sorted()</span></code></a> in appropriate places. For example, this block</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">L</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">some_iterable</span><span class="p">)</span>
<span class="n">L</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
</pre></div>
</div>
<p>is changed to</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">L</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">some_iterable</span><span class="p">)</span>
</pre></div>
</div>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-import">
<code class="descname">import</code><a class="headerlink" href="#2to3fixer-import" title="Permalink to this definition"></a></dt>
<dd><p>Detects sibling imports and converts them to relative imports.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-imports">
<code class="descname">imports</code><a class="headerlink" href="#2to3fixer-imports" title="Permalink to this definition"></a></dt>
<dd><p>Handles module renames in the standard library.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-imports2">
<code class="descname">imports2</code><a class="headerlink" href="#2to3fixer-imports2" title="Permalink to this definition"></a></dt>
<dd><p>Handles other modules renames in the standard library. It is separate from
the <a class="reference internal" href="#2to3fixer-imports"><code class="xref std std-2to3fixer docutils literal notranslate"><span class="pre">imports</span></code></a> fixer only because of technical limitations.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-input">
<code class="descname">input</code><a class="headerlink" href="#2to3fixer-input" title="Permalink to this definition"></a></dt>
<dd><p>Converts <code class="docutils literal notranslate"><span class="pre">input(prompt)</span></code> to <code class="docutils literal notranslate"><span class="pre">eval(input(prompt))</span></code>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-intern">
<code class="descname">intern</code><a class="headerlink" href="#2to3fixer-intern" title="Permalink to this definition"></a></dt>
<dd><p>Converts <code class="xref py py-func docutils literal notranslate"><span class="pre">intern()</span></code> to <a class="reference internal" href="sys.html#sys.intern" title="sys.intern"><code class="xref py py-func docutils literal notranslate"><span class="pre">sys.intern()</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-isinstance">
<code class="descname">isinstance</code><a class="headerlink" href="#2to3fixer-isinstance" title="Permalink to this definition"></a></dt>
<dd><p>Fixes duplicate types in the second argument of <a class="reference internal" href="functions.html#isinstance" title="isinstance"><code class="xref py py-func docutils literal notranslate"><span class="pre">isinstance()</span></code></a>. For
example, <code class="docutils literal notranslate"><span class="pre">isinstance(x,</span> <span class="pre">(int,</span> <span class="pre">int))</span></code> is converted to <code class="docutils literal notranslate"><span class="pre">isinstance(x,</span>
<span class="pre">int)</span></code> and <code class="docutils literal notranslate"><span class="pre">isinstance(x,</span> <span class="pre">(int,</span> <span class="pre">float,</span> <span class="pre">int))</span></code> is converted to
<code class="docutils literal notranslate"><span class="pre">isinstance(x,</span> <span class="pre">(int,</span> <span class="pre">float))</span></code>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-itertools_imports">
<code class="descname">itertools_imports</code><a class="headerlink" href="#2to3fixer-itertools_imports" title="Permalink to this definition"></a></dt>
<dd><p>Removes imports of <code class="xref py py-func docutils literal notranslate"><span class="pre">itertools.ifilter()</span></code>, <code class="xref py py-func docutils literal notranslate"><span class="pre">itertools.izip()</span></code>, and
<code class="xref py py-func docutils literal notranslate"><span class="pre">itertools.imap()</span></code>. Imports of <code class="xref py py-func docutils literal notranslate"><span class="pre">itertools.ifilterfalse()</span></code> are also
changed to <a class="reference internal" href="itertools.html#itertools.filterfalse" title="itertools.filterfalse"><code class="xref py py-func docutils literal notranslate"><span class="pre">itertools.filterfalse()</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-itertools">
<code class="descname">itertools</code><a class="headerlink" href="#2to3fixer-itertools" title="Permalink to this definition"></a></dt>
<dd><p>Changes usage of <code class="xref py py-func docutils literal notranslate"><span class="pre">itertools.ifilter()</span></code>, <code class="xref py py-func docutils literal notranslate"><span class="pre">itertools.izip()</span></code>, and
<code class="xref py py-func docutils literal notranslate"><span class="pre">itertools.imap()</span></code> to their built-in equivalents.
<code class="xref py py-func docutils literal notranslate"><span class="pre">itertools.ifilterfalse()</span></code> is changed to <a class="reference internal" href="itertools.html#itertools.filterfalse" title="itertools.filterfalse"><code class="xref py py-func docutils literal notranslate"><span class="pre">itertools.filterfalse()</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-long">
<code class="descname">long</code><a class="headerlink" href="#2to3fixer-long" title="Permalink to this definition"></a></dt>
<dd><p>Renames <code class="xref py py-class docutils literal notranslate"><span class="pre">long</span></code> to <a class="reference internal" href="functions.html#int" title="int"><code class="xref py py-class docutils literal notranslate"><span class="pre">int</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-map">
<code class="descname">map</code><a class="headerlink" href="#2to3fixer-map" title="Permalink to this definition"></a></dt>
<dd><p>Wraps <a class="reference internal" href="functions.html#map" title="map"><code class="xref py py-func docutils literal notranslate"><span class="pre">map()</span></code></a> in a <a class="reference internal" href="stdtypes.html#list" title="list"><code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></a> call. It also changes <code class="docutils literal notranslate"><span class="pre">map(None,</span> <span class="pre">x)</span></code>
to <code class="docutils literal notranslate"><span class="pre">list(x)</span></code>. Using <code class="docutils literal notranslate"><span class="pre">from</span> <span class="pre">future_builtins</span> <span class="pre">import</span> <span class="pre">map</span></code> disables this
fixer.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-metaclass">
<code class="descname">metaclass</code><a class="headerlink" href="#2to3fixer-metaclass" title="Permalink to this definition"></a></dt>
<dd><p>Converts the old metaclass syntax (<code class="docutils literal notranslate"><span class="pre">__metaclass__</span> <span class="pre">=</span> <span class="pre">Meta</span></code> in the class
body) to the new (<code class="docutils literal notranslate"><span class="pre">class</span> <span class="pre">X(metaclass=Meta)</span></code>).</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-methodattrs">
<code class="descname">methodattrs</code><a class="headerlink" href="#2to3fixer-methodattrs" title="Permalink to this definition"></a></dt>
<dd><p>Fixes old method attribute names. For example, <code class="docutils literal notranslate"><span class="pre">meth.im_func</span></code> is converted
to <code class="docutils literal notranslate"><span class="pre">meth.__func__</span></code>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-ne">
<code class="descname">ne</code><a class="headerlink" href="#2to3fixer-ne" title="Permalink to this definition"></a></dt>
<dd><p>Converts the old not-equal syntax, <code class="docutils literal notranslate"><span class="pre">&lt;&gt;</span></code>, to <code class="docutils literal notranslate"><span class="pre">!=</span></code>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-next">
<code class="descname">next</code><a class="headerlink" href="#2to3fixer-next" title="Permalink to this definition"></a></dt>
<dd><p>Converts the use of iterators <code class="xref py py-meth docutils literal notranslate"><span class="pre">next()</span></code> methods to the
<a class="reference internal" href="functions.html#next" title="next"><code class="xref py py-func docutils literal notranslate"><span class="pre">next()</span></code></a> function. It also renames <a class="reference internal" href="functions.html#next" title="next"><code class="xref py py-meth docutils literal notranslate"><span class="pre">next()</span></code></a> methods to
<a class="reference internal" href="stdtypes.html#iterator.__next__" title="iterator.__next__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__next__()</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-nonzero">
<code class="descname">nonzero</code><a class="headerlink" href="#2to3fixer-nonzero" title="Permalink to this definition"></a></dt>
<dd><p>Renames <code class="xref py py-meth docutils literal notranslate"><span class="pre">__nonzero__()</span></code> to <a class="reference internal" href="../reference/datamodel.html#object.__bool__" title="object.__bool__"><code class="xref py py-meth docutils literal notranslate"><span class="pre">__bool__()</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-numliterals">
<code class="descname">numliterals</code><a class="headerlink" href="#2to3fixer-numliterals" title="Permalink to this definition"></a></dt>
<dd><p>Converts octal literals into the new syntax.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-operator">
<code class="descname">operator</code><a class="headerlink" href="#2to3fixer-operator" title="Permalink to this definition"></a></dt>
<dd><p>Converts calls to various functions in the <a class="reference internal" href="operator.html#module-operator" title="operator: Functions corresponding to the standard operators."><code class="xref py py-mod docutils literal notranslate"><span class="pre">operator</span></code></a> module to other,
but equivalent, function calls. When needed, the appropriate <code class="docutils literal notranslate"><span class="pre">import</span></code>
statements are added, e.g. <code class="docutils literal notranslate"><span class="pre">import</span> <span class="pre">collections.abc</span></code>. The following mapping
are made:</p>
<table class="docutils align-center">
<colgroup>
<col style="width: 43%" />
<col style="width: 57%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>From</p></th>
<th class="head"><p>To</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">operator.isCallable(obj)</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">callable(obj)</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">operator.sequenceIncludes(obj)</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">operator.contains(obj)</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">operator.isSequenceType(obj)</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">isinstance(obj,</span> <span class="pre">collections.abc.Sequence)</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">operator.isMappingType(obj)</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">isinstance(obj,</span> <span class="pre">collections.abc.Mapping)</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">operator.isNumberType(obj)</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">isinstance(obj,</span> <span class="pre">numbers.Number)</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">operator.repeat(obj,</span> <span class="pre">n)</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">operator.mul(obj,</span> <span class="pre">n)</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">operator.irepeat(obj,</span> <span class="pre">n)</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">operator.imul(obj,</span> <span class="pre">n)</span></code></p></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-paren">
<code class="descname">paren</code><a class="headerlink" href="#2to3fixer-paren" title="Permalink to this definition"></a></dt>
<dd><p>Add extra parenthesis where they are required in list comprehensions. For
example, <code class="docutils literal notranslate"><span class="pre">[x</span> <span class="pre">for</span> <span class="pre">x</span> <span class="pre">in</span> <span class="pre">1,</span> <span class="pre">2]</span></code> becomes <code class="docutils literal notranslate"><span class="pre">[x</span> <span class="pre">for</span> <span class="pre">x</span> <span class="pre">in</span> <span class="pre">(1,</span> <span class="pre">2)]</span></code>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-print">
<code class="descname">print</code><a class="headerlink" href="#2to3fixer-print" title="Permalink to this definition"></a></dt>
<dd><p>Converts the <code class="docutils literal notranslate"><span class="pre">print</span></code> statement to the <a class="reference internal" href="functions.html#print" title="print"><code class="xref py py-func docutils literal notranslate"><span class="pre">print()</span></code></a> function.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-raise">
<code class="descname">raise</code><a class="headerlink" href="#2to3fixer-raise" title="Permalink to this definition"></a></dt>
<dd><p>Converts <code class="docutils literal notranslate"><span class="pre">raise</span> <span class="pre">E,</span> <span class="pre">V</span></code> to <code class="docutils literal notranslate"><span class="pre">raise</span> <span class="pre">E(V)</span></code>, and <code class="docutils literal notranslate"><span class="pre">raise</span> <span class="pre">E,</span> <span class="pre">V,</span> <span class="pre">T</span></code> to <code class="docutils literal notranslate"><span class="pre">raise</span>
<span class="pre">E(V).with_traceback(T)</span></code>. If <code class="docutils literal notranslate"><span class="pre">E</span></code> is a tuple, the translation will be
incorrect because substituting tuples for exceptions has been removed in 3.0.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-raw_input">
<code class="descname">raw_input</code><a class="headerlink" href="#2to3fixer-raw_input" title="Permalink to this definition"></a></dt>
<dd><p>Converts <code class="xref py py-func docutils literal notranslate"><span class="pre">raw_input()</span></code> to <a class="reference internal" href="functions.html#input" title="input"><code class="xref py py-func docutils literal notranslate"><span class="pre">input()</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-reduce">
<code class="descname">reduce</code><a class="headerlink" href="#2to3fixer-reduce" title="Permalink to this definition"></a></dt>
<dd><p>Handles the move of <code class="xref py py-func docutils literal notranslate"><span class="pre">reduce()</span></code> to <a class="reference internal" href="functools.html#functools.reduce" title="functools.reduce"><code class="xref py py-func docutils literal notranslate"><span class="pre">functools.reduce()</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-reload">
<code class="descname">reload</code><a class="headerlink" href="#2to3fixer-reload" title="Permalink to this definition"></a></dt>
<dd><p>Converts <code class="xref py py-func docutils literal notranslate"><span class="pre">reload()</span></code> to <a class="reference internal" href="importlib.html#importlib.reload" title="importlib.reload"><code class="xref py py-func docutils literal notranslate"><span class="pre">importlib.reload()</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-renames">
<code class="descname">renames</code><a class="headerlink" href="#2to3fixer-renames" title="Permalink to this definition"></a></dt>
<dd><p>Changes <code class="xref py py-data docutils literal notranslate"><span class="pre">sys.maxint</span></code> to <a class="reference internal" href="sys.html#sys.maxsize" title="sys.maxsize"><code class="xref py py-data docutils literal notranslate"><span class="pre">sys.maxsize</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-repr">
<code class="descname">repr</code><a class="headerlink" href="#2to3fixer-repr" title="Permalink to this definition"></a></dt>
<dd><p>Replaces backtick repr with the <a class="reference internal" href="functions.html#repr" title="repr"><code class="xref py py-func docutils literal notranslate"><span class="pre">repr()</span></code></a> function.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-set_literal">
<code class="descname">set_literal</code><a class="headerlink" href="#2to3fixer-set_literal" title="Permalink to this definition"></a></dt>
<dd><p>Replaces use of the <a class="reference internal" href="stdtypes.html#set" title="set"><code class="xref py py-class docutils literal notranslate"><span class="pre">set</span></code></a> constructor with set literals. This fixer
is optional.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-standarderror">
<code class="descname">standarderror</code><a class="headerlink" href="#2to3fixer-standarderror" title="Permalink to this definition"></a></dt>
<dd><p>Renames <code class="xref py py-exc docutils literal notranslate"><span class="pre">StandardError</span></code> to <a class="reference internal" href="exceptions.html#Exception" title="Exception"><code class="xref py py-exc docutils literal notranslate"><span class="pre">Exception</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-sys_exc">
<code class="descname">sys_exc</code><a class="headerlink" href="#2to3fixer-sys_exc" title="Permalink to this definition"></a></dt>
<dd><p>Changes the deprecated <code class="xref py py-data docutils literal notranslate"><span class="pre">sys.exc_value</span></code>, <code class="xref py py-data docutils literal notranslate"><span class="pre">sys.exc_type</span></code>,
<code class="xref py py-data docutils literal notranslate"><span class="pre">sys.exc_traceback</span></code> to use <a class="reference internal" href="sys.html#sys.exc_info" title="sys.exc_info"><code class="xref py py-func docutils literal notranslate"><span class="pre">sys.exc_info()</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-throw">
<code class="descname">throw</code><a class="headerlink" href="#2to3fixer-throw" title="Permalink to this definition"></a></dt>
<dd><p>Fixes the API change in generators <code class="xref py py-meth docutils literal notranslate"><span class="pre">throw()</span></code> method.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-tuple_params">
<code class="descname">tuple_params</code><a class="headerlink" href="#2to3fixer-tuple_params" title="Permalink to this definition"></a></dt>
<dd><p>Removes implicit tuple parameter unpacking. This fixer inserts temporary
variables.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-types">
<code class="descname">types</code><a class="headerlink" href="#2to3fixer-types" title="Permalink to this definition"></a></dt>
<dd><p>Fixes code broken from the removal of some members in the <a class="reference internal" href="types.html#module-types" title="types: Names for built-in types."><code class="xref py py-mod docutils literal notranslate"><span class="pre">types</span></code></a>
module.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-unicode">
<code class="descname">unicode</code><a class="headerlink" href="#2to3fixer-unicode" title="Permalink to this definition"></a></dt>
<dd><p>Renames <code class="xref py py-class docutils literal notranslate"><span class="pre">unicode</span></code> to <a class="reference internal" href="stdtypes.html#str" title="str"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-urllib">
<code class="descname">urllib</code><a class="headerlink" href="#2to3fixer-urllib" title="Permalink to this definition"></a></dt>
<dd><p>Handles the rename of <a class="reference internal" href="urllib.html#module-urllib" title="urllib"><code class="xref py py-mod docutils literal notranslate"><span class="pre">urllib</span></code></a> and <code class="xref py py-mod docutils literal notranslate"><span class="pre">urllib2</span></code> to the <a class="reference internal" href="urllib.html#module-urllib" title="urllib"><code class="xref py py-mod docutils literal notranslate"><span class="pre">urllib</span></code></a>
package.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-ws_comma">
<code class="descname">ws_comma</code><a class="headerlink" href="#2to3fixer-ws_comma" title="Permalink to this definition"></a></dt>
<dd><p>Removes excess whitespace from comma separated items. This fixer is
optional.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-xrange">
<code class="descname">xrange</code><a class="headerlink" href="#2to3fixer-xrange" title="Permalink to this definition"></a></dt>
<dd><p>Renames <code class="xref py py-func docutils literal notranslate"><span class="pre">xrange()</span></code> to <a class="reference internal" href="stdtypes.html#range" title="range"><code class="xref py py-func docutils literal notranslate"><span class="pre">range()</span></code></a> and wraps existing <a class="reference internal" href="stdtypes.html#range" title="range"><code class="xref py py-func docutils literal notranslate"><span class="pre">range()</span></code></a>
calls with <a class="reference internal" href="stdtypes.html#list" title="list"><code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></a>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-xreadlines">
<code class="descname">xreadlines</code><a class="headerlink" href="#2to3fixer-xreadlines" title="Permalink to this definition"></a></dt>
<dd><p>Changes <code class="docutils literal notranslate"><span class="pre">for</span> <span class="pre">x</span> <span class="pre">in</span> <span class="pre">file.xreadlines()</span></code> to <code class="docutils literal notranslate"><span class="pre">for</span> <span class="pre">x</span> <span class="pre">in</span> <span class="pre">file</span></code>.</p>
</dd></dl>
<dl class="2to3fixer">
<dt id="2to3fixer-zip">
<code class="descname">zip</code><a class="headerlink" href="#2to3fixer-zip" title="Permalink to this definition"></a></dt>
<dd><p>Wraps <a class="reference internal" href="functions.html#zip" title="zip"><code class="xref py py-func docutils literal notranslate"><span class="pre">zip()</span></code></a> usage in a <a class="reference internal" href="stdtypes.html#list" title="list"><code class="xref py py-class docutils literal notranslate"><span class="pre">list</span></code></a> call. This is disabled when
<code class="docutils literal notranslate"><span class="pre">from</span> <span class="pre">future_builtins</span> <span class="pre">import</span> <span class="pre">zip</span></code> appears.</p>
</dd></dl>
</div>
<div class="section" id="module-lib2to3">
<span id="lib2to3-2to3-s-library"></span><h2><a class="reference internal" href="#module-lib2to3" title="lib2to3: the 2to3 library"><code class="xref py py-mod docutils literal notranslate"><span class="pre">lib2to3</span></code></a> - 2to3s library<a class="headerlink" href="#module-lib2to3" title="Permalink to this headline"></a></h2>
<p><strong>Source code:</strong> <a class="reference external" href="https://github.com/python/cpython/tree/3.7/Lib/lib2to3/">Lib/lib2to3/</a></p>
<hr class="docutils" />
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The <a class="reference internal" href="#module-lib2to3" title="lib2to3: the 2to3 library"><code class="xref py py-mod docutils literal notranslate"><span class="pre">lib2to3</span></code></a> API should be considered unstable and may change
drastically in the future.</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="../contents.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">2to3 - Automated Python 2 to 3 code translation</a><ul>
<li><a class="reference internal" href="#using-2to3">Using 2to3</a></li>
<li><a class="reference internal" href="#fixers">Fixers</a></li>
<li><a class="reference internal" href="#module-lib2to3"><code class="xref py py-mod docutils literal notranslate"><span class="pre">lib2to3</span></code> - 2to3s library</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="unittest.mock-examples.html"
title="previous chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">unittest.mock</span></code> — getting started</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="test.html"
title="next chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">test</span></code> — Regression tests package for Python</a></p>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">Report a Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.7/Doc/library/2to3.rst"
rel="nofollow">Show Source
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="test.html" title="test — Regression tests package for Python"
>next</a> |</li>
<li class="right" >
<a href="unittest.mock-examples.html" title="unittest.mock — getting started"
>previous</a> |</li>
<li><img src="../_static/py.png" alt=""
style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li>
<span class="language_switcher_placeholder">en</span>
<span class="version_switcher_placeholder">3.7.4</span>
<a href="../index.html">Documentation </a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="development.html" >Development Tools</a> &#187;</li>
<li class="right">
<div class="inline-search" style="display: none" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="Quick search" type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<script type="text/javascript">$('.inline-search').show(0);</script>
|
</li>
</ul>
</div>
<div class="footer">
&copy; <a href="../copyright.html">Copyright</a> 2001-2019, Python Software Foundation.
<br />
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br />
Last updated on Jul 13, 2019.
<a href="../bugs.html">Found a bug</a>?
<br />
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 2.0.1.
</div>
</body>
</html>