After the Django 3 upgrade, we want to make sure that we remove old environment setup from CI and tox files and identify and utilize any new Django features that we should be using.
Remove any versions of Python earlier than 3.7 from
tox.ini and GitHub Actions workflows (there are scripts in https://github.com/edx/repo-tools/tree/master/edx_repo_tools/codemods/django3 that can do this automatically in most cases)
Upgrade any packages that were being held back only because of missing support for one of the removed Python versions
Remove test configurations for Django 3.0, 3.1 from both
tox.ini and the GitHub Actions CI workflow.
Update the Trove classifiers in any
pyproject.toml files to reflect the Python and Django versions currently being tested
Install pyupgrade-directories package and run
pyup-dirs --py37-plus --recursive . in the repo root folder to clean up code that was only present to support older Python versions.
Install Django-Codemod and run
djcodemod run --removed-in 3.0 --removed-in 3.1 --removed-in 4.0 . to fix deprecations related to Django 3.1, Django 3.2
Fix any remaining warnings related to
Removed in Django4.0 that occur while running tests on Django3.2
For packages already on PyPI, go ahead and make a new release so the Trove classifiers are updated there also. This should be a major version bump if support for older Python releases was dropped.