Upgrading To Python 3.9
Date: 2021/09/29
Context
As time moves on, new Python versions are released, and old ones become obsolete. While the use of containers lets us upgrade with very little fuss, there are some secondary considerations.
We have to download or build wheels for AMD64, ARM32, and ARM64. If no pre-built wheels are available, this may significantly increase build times.
We use piwheels for pre-built ARM32 packages. This means we prefer to use Python versions supported by piwheels. Until now, this meant Python 3.7 (the system version for Debian Buster). With the release of Debian Bullseye, piwheels added support for Python 3.9.
Process
To upgrade a Brewblox service based on the boilerplate configuration, these changes should be made:
- Install the new Python version for use in pyenv:
pyenv install 3.9.7
- Remove the
.venv
directory in your directory:rm -rf .venv
- Update the project python version:
echo '3.9.7' > .python-version
- Edit
pyproject.toml
, and set the python dependency topython = ">=3.9,<4"
- Edit
azure-pipelines.yml
, and change theUsePythonVersion@0
task to useversionSpec: '3.9'
- Reinstall packages:
poetry install
- Update packages:
poetry update
Python 3.8 and 3.9 introduced some useful new features and syntax. You can find changelogs at: