Python _ _ _ __ ___ __| |___ _ _ _ _ (_)______ | ' \/ _ \/ _` / -_) '_| ' \| |_ / -_) |_|_|_\___/\__,_\___|_| |_||_|_/__\___|
This library is a very thin wrapper around lib2to3
to utilize it
to make Python 2 code more modern with the intention of eventually
porting it over to Python 3.
The python-modernize
command works like 2to3. Here's how you'd rewrite a
single file:
python-modernize -w example.py
It does not guarantee, but it attempts to spit out a codebase compatible
with Python 2.6+ or Python 3. The code that it generates has a runtime
dependency on six, unless the
--no-six
option is used. Version 1.8.0 or later of six
is
recommended. Some of the fixers output code that is not compatible with
Python 2.5 or lower.
See the LICENSE
file for the license of python-modernize
.
Using this tool does not affect licensing of the modernized code.
- By default modernize does not change Unicode literals at all, which means that you can take advantage of PEP 414. This is the simplest option if you only want to support Python 3.3 and above along with Python 2.
- Alternatively, there is the
--six-unicode
flag which will wrap Unicode literals with the six helper functionsix.u()
. This is useful if you want to support Python 3.1 and Python 3.2 without bigger changes. - The last alternative is the
--future-unicode
flag which imports theunicode_literals
from the__future__
module. This requires Python 2.6 and later, and will require that you mark bytestrings withb''
and native strings instr('')
or something similar that survives the transformation.