This documents the current supported Python versions, and tries to provide guidance for when we decide to drop support for older versions.
Projects that use repo hooks run on independent schedules. Since it's not possible to detect what version of Python the hooks were written or tested against, we always import & exec them with the active Python version.
If the user's Python is too new for the repo hooks, then it is up to the hooks maintainer to update.
The repo launcher is an independent script that can support older versions of Python without holding back the rest of the codebase. If it detects the current version of Python is too old, it will try to reexec via a newer version of Python via standard pythonX.Y
interpreter names.
However, this is provided as a nicety when it is not onerous, and there is no official support for older versions of Python than the rest of the codebase.
If your default python interpreters are too old to run the launcher even though you have newer versions installed, your choices are:
So far, Python 3.6 has provided most of the interesting features that we want (e.g. typing & f-strings), and there haven't been features in newer versions that are critical to us.
That said, let‘s assume we need functionality that only exists in Python 3.7. How do we decide when it’s acceptable to drop Python 3.6?
There is no support for these versions. Do not file bugs if you are using old Python versions. Any such reports will be marked invalid and ignored. Upgrade your distro and/or runtime instead.
Fetch an old version of the repo launcher:
$ curl https://storage.googleapis.com/git-repo-downloads/repo-2.32 > ~/.bin/repo-2.32 $ chmod a+rx ~/.bin/repo-2.32
Then initialize an old version of repo:
$ repo-2.32 init --repo-rev=repo-1 ...