/modernize

Modernizes Python code for eventual Python 3 migration. Built on top of fissix (a fork of lib2to3)

Primary LanguagePythonOtherNOASSERTION

Python           _              _
   _ __  ___  __| |___ _ _ _ _ (_)______
  | '  \/ _ \/ _` / -_) '_| ' \| |_ / -_)
  |_|_|_\___/\__,_\___|_| |_||_|_/__\___|
Coveralls Read the Docs GitHub Actions PyPI

Modernize is a Python program that reads Python 2 source code and applies a series of fixers to transform it into source code that is valid on both Python 3 and Python 2.7.

This allows you to run your test suite on Python 2.7 and Python 3 so you can gradually port your code to being fully Python 3 compatible without slowing down development of your Python 2 project.

The python -m modernize command works like python -m fissix, see fissix. Here's how you'd rewrite a single file:

python -m 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.9.0 or later of six is recommended. Some of the fixers output code that is not compatible with Python 2.5 or lower.

Once your project is ready to run in production on Python 3 it's recommended to drop Python 2.7 support using pyupgrade

Documentation: modernize.readthedocs.io.

See the LICENSE file for the license of modernize. Using this tool does not affect licensing of the modernized code.

This library is a very thin wrapper around fissix, a fork of lib2to3.