Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


Run python-modernize on the Python files matching the INCR ticket you're working on, to make the code more compatible with Python 3.x without breaking Python 2.7 support:

  • Comment on the ticket to indicate that you are about to start working on it.

  • Launch a development shell in a Docker container via either "make shell" or devstack's "make lms-shell". Alternatively, you can create a new virtualenv or conda environment and install modernize and isort into it (this is a better choice on Windows).

  • python-modernize -w <directory you want to modernize>

  • isort -rc <directory you want to modernize>

  • Make sure the changes look reasonable and submit them as a pull request; mention this ticket in the description and include INCR-<Ticket Number> in the name.

  • Ask for tests to be triggered if they don't start automatically.

  • Diagnose any test failures caused by the changes, and either fix them or ask for help.

  • If you run into unexpected errors, see this document for common problems:


The python-modernize utility from the modernize package is very useful for quickly updating Python 2 code to also support Python 3, but the changes it makes aren't always ideal (or even correct).  Here are some tips on how to improve its output.