This list is currently in draft, if you find any change causing issues and that isn’t listed here so kindly add to the list.
Potential Steps to perform on a repo:
Run both
python312_tox_modernizer
andpython312_gh_actions_modernizer
scripts from theedx-repo-tools
package if not done already.You can also manually remove toxenv related to
django32
and adddjango42
Add
python312
in thepython-version
matrix value in CI
Run
make upgrade
withPython 3.12
virtualenv to update dependencies forPython 3.12
If needed, include
setuptools
inbase.in
and runmake upgrade
again to include it in all requirement files.You may need to add
--allow-unsafe
parameter to override the default behavior ofpip-compile
command.
List all those major changes that can impact us while upgrading our services and packages.
[Python 3.12]
setuptools
isn't now pre-installed in Python 3.12 virtual environments, instead it should now be installed throughpip
explicitly.Include
setuptools
in tox config sections wherever neededYou may need to add
wheel
in tox config fordocs
checks to work as well ifpython setup.py sdist bdist_wheel
command fails withPython 3.12
.Add--allow-unsafe
parameter inpip-compile
command to make it possible to includesetuptools
in requirements filesRunmake upgrade
to includesetuptools
in all requirements for Python 3.12 support
[Python 3.12]
pact-python
Python 3.12 update needs
pact-python>2.1.1
which will have the support of Python 3.12. The package owner has planned to release new version within the current week which will unblock this PR. For details, see the package author's comment pact-foundation/pact-python#422 (comment).
[Python 3.12]
pyresttest
pyresttest
doesn’t havePython 3.12
support and it has not been updated in last 8 years.Need to find any fork or alternative of this package to upgrade
api-manager
.
[Python 3.12 + Django 4.2]
backports.zoneinfo
We haven’t migrated from
pytz
tozoneinfo
yet so the repos, where Django 4.2 by default importbackports.zoneinfo
as a dependency fail tests setup withPython 3.12
.To fix this issue, we need to add following pin in
requirements/base.in
and runmake upgrade
again.backports.zoneinfo;python_version<"3.9" # Can be removed once we upgrade to use zoneinfo