Message ID | 20230209154034.983044-8-jsnow@redhat.com |
---|---|
State | New |
Headers | show |
Series | Python: Drop support for Python 3.6 | expand |
On Thu, Feb 09, 2023 at 10:40:34AM -0500, John Snow wrote: > Python 3.6 was EOL 2021-12-31. Newer versions of upstream libraries have > begun dropping support for this version and it is becoming more > cumbersome to support. Avocado-framework and qemu.qmp each have their > own reasons for wanting to drop Python 3.6. > > Since it is safe to under our supported platform policy, do so. Upstream EOL dates are essentially irrelevant from our platform support policy for deciding min versions QEMU aims to target released OS distributions, and their vendors may choose to support software for arbitrarily longer periods of time than upstream. This extended support is one of the key value adds of OS distributions. To justify dropping python 3.6, the commit message needs to illustrate that all our targetted distros are capable of supporting the new proposed new min version. > > Signed-off-by: John Snow <jsnow@redhat.com> > --- > docs/conf.py | 4 ++-- > configure | 8 ++++---- > python/Makefile | 10 +++++----- > python/setup.cfg | 7 +++---- > python/tests/minreqs.txt | 2 +- > scripts/qapi/mypy.ini | 2 +- > 6 files changed, 16 insertions(+), 17 deletions(-) With regards, Daniel
On Thu, Feb 9, 2023 at 11:27 AM Daniel P. Berrangé <berrange@redhat.com> wrote: > > On Thu, Feb 09, 2023 at 10:40:34AM -0500, John Snow wrote: > > Python 3.6 was EOL 2021-12-31. Newer versions of upstream libraries have > > begun dropping support for this version and it is becoming more > > cumbersome to support. Avocado-framework and qemu.qmp each have their > > own reasons for wanting to drop Python 3.6. > > > > Since it is safe to under our supported platform policy, do so. > > Upstream EOL dates are essentially irrelevant from our platform > support policy for deciding min versions > It's relevant because as other Python packages drop support, the burden of support is pushed onto Cleber and I, as explained in the cover letter. It is not a justification in and of itself, but it summarizes the ecosystem conditions that prompt the desire for the change. > QEMU aims to target released OS distributions, and their vendors > may choose to support software for arbitrarily longer periods of > time than upstream. This extended support is one of the key > value adds of OS distributions. > > To justify dropping python 3.6, the commit message needs to > illustrate that all our targetted distros are capable of > supporting the new proposed new min version. That is the point of this series: illustrating that it is indeed safe to drop Python 3.6. I am not clear on what you are actually requesting as a change. > > > > Signed-off-by: John Snow <jsnow@redhat.com> > > --- > > docs/conf.py | 4 ++-- > > configure | 8 ++++---- > > python/Makefile | 10 +++++----- > > python/setup.cfg | 7 +++---- > > python/tests/minreqs.txt | 2 +- > > scripts/qapi/mypy.ini | 2 +- > > 6 files changed, 16 insertions(+), 17 deletions(-) > > > With regards, > Daniel > -- > |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| > |: https://libvirt.org -o- https://fstop138.berrange.com :| > |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| >
On Thu, Feb 09, 2023 at 11:40:57AM -0500, John Snow wrote: > On Thu, Feb 9, 2023 at 11:27 AM Daniel P. Berrangé <berrange@redhat.com> wrote: > > > > On Thu, Feb 09, 2023 at 10:40:34AM -0500, John Snow wrote: > > > Python 3.6 was EOL 2021-12-31. Newer versions of upstream libraries have > > > begun dropping support for this version and it is becoming more > > > cumbersome to support. Avocado-framework and qemu.qmp each have their > > > own reasons for wanting to drop Python 3.6. > > > > > > Since it is safe to under our supported platform policy, do so. > > > > Upstream EOL dates are essentially irrelevant from our platform > > support policy for deciding min versions > > > > It's relevant because as other Python packages drop support, the > burden of support is pushed onto Cleber and I, as explained in the > cover letter. It is not a justification in and of itself, but it > summarizes the ecosystem conditions that prompt the desire for the > change. > > QEMU aims to target released OS distributions, and their vendors > > may choose to support software for arbitrarily longer periods of > > time than upstream. This extended support is one of the key > > value adds of OS distributions. > > > > To justify dropping python 3.6, the commit message needs to > > illustrate that all our targetted distros are capable of > > supporting the new proposed new min version. > > That is the point of this series: illustrating that it is indeed safe > to drop Python 3.6. I am not clear on what you are actually requesting > as a change. Essentially it should explain what versions are available in each distro. See for example commit 5890258aeeba303704ec1adca415e46067800777. With regards, Daniel
On Thu, Feb 9, 2023 at 1:03 PM Daniel P. Berrangé <berrange@redhat.com> wrote: > > On Thu, Feb 09, 2023 at 11:40:57AM -0500, John Snow wrote: > > On Thu, Feb 9, 2023 at 11:27 AM Daniel P. Berrangé <berrange@redhat.com> wrote: > > > > > > On Thu, Feb 09, 2023 at 10:40:34AM -0500, John Snow wrote: > > > > Python 3.6 was EOL 2021-12-31. Newer versions of upstream libraries have > > > > begun dropping support for this version and it is becoming more > > > > cumbersome to support. Avocado-framework and qemu.qmp each have their > > > > own reasons for wanting to drop Python 3.6. > > > > > > > > Since it is safe to under our supported platform policy, do so. > > > > > > Upstream EOL dates are essentially irrelevant from our platform > > > support policy for deciding min versions > > > > > > > It's relevant because as other Python packages drop support, the > > burden of support is pushed onto Cleber and I, as explained in the > > cover letter. It is not a justification in and of itself, but it > > summarizes the ecosystem conditions that prompt the desire for the > > change. > > > QEMU aims to target released OS distributions, and their vendors > > > may choose to support software for arbitrarily longer periods of > > > time than upstream. This extended support is one of the key > > > value adds of OS distributions. > > > > > > To justify dropping python 3.6, the commit message needs to > > > illustrate that all our targetted distros are capable of > > > supporting the new proposed new min version. > > > > That is the point of this series: illustrating that it is indeed safe > > to drop Python 3.6. I am not clear on what you are actually requesting > > as a change. > > Essentially it should explain what versions are available in each > distro. See for example commit 5890258aeeba303704ec1adca415e46067800777. Ah, OK. Fedora 36: 3.10.5 Ubuntu 20.04: 3.8.10 Debian 11: 3.9.2 OpenSUSE Leap 15.4 uses 3.6.15, but 3.9 and 3.10 are available with a simple zypper invocation. CentOS Stream 8 uses 3.6.8, but 3.8 and 3.9 are available. CentOS Stream 9 uses 3.9.13. Alpine: Not sure, but tests pass. FreeBSD 12: 3.7 (tests/vm/freebsd already uses this version.) OpenBSD: ? NetBSD: ? I can update the commit message, but I do have questions for you in patch 5 concerning the docker configurations and our test matrix that I want to work out before a respin. > > > > With regards, > Daniel > -- > |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| > |: https://libvirt.org -o- https://fstop138.berrange.com :| > |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| >
diff --git a/docs/conf.py b/docs/conf.py index 73a287a4f27..d40448f35d9 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -37,9 +37,9 @@ # In newer versions of Sphinx this will display nicely; in older versions # Sphinx will also produce a Python backtrace but at least the information # gets printed... -if sys.version_info < (3,6): +if sys.version_info < (3,7): raise ConfigError( - "QEMU requires a Sphinx that uses Python 3.6 or better\n") + "QEMU requires a Sphinx that uses Python 3.7 or better\n") # The per-manual conf.py will set qemu_docdir for a single-manual build; # otherwise set it here if this is an entire-manual-set build. diff --git a/configure b/configure index bf512273f44..de27994ddc8 100755 --- a/configure +++ b/configure @@ -594,9 +594,9 @@ esac check_py_version() { - # We require python >= 3.6. + # We require python >= 3.7. # NB: a True python conditional creates a non-zero return code (Failure) - "$1" -c 'import sys; sys.exit(sys.version_info < (3,6))' + "$1" -c 'import sys; sys.exit(sys.version_info < (3,7))' } python= @@ -604,7 +604,7 @@ first_python= explicit_python=no # A bare 'python' is traditionally python 2.x, but some distros # have it as python 3.x, so check in both places. -for binary in "${PYTHON-python3}" python python3.{11..6} +for binary in "${PYTHON-python3}" python python3.{11..7} do if has "$binary" then @@ -1057,7 +1057,7 @@ then fi if ! check_py_version "$python"; then - error_exit "Cannot use '$python', Python >= 3.6 is required." \ + error_exit "Cannot use '$python', Python >= 3.7 is required." \ "Use --python=/path/to/python to specify a supported Python." \ "Maybe try:" \ " openSUSE Leap 15.3+: zypper install python39" \ diff --git a/python/Makefile b/python/Makefile index c5bd6ff83ac..f660d999143 100644 --- a/python/Makefile +++ b/python/Makefile @@ -9,14 +9,14 @@ help: @echo "make check-minreqs:" @echo " Run tests in the minreqs virtual environment." @echo " These tests use the oldest dependencies." - @echo " Requires: Python 3.6" - @echo " Hint (Fedora): 'sudo dnf install python3.6'" + @echo " Requires: Python 3.7" + @echo " Hint (Fedora): 'sudo dnf install python3.7'" @echo "" @echo "make check-tox:" @echo " Run tests against multiple python versions." @echo " These tests use the newest dependencies." - @echo " Requires: Python 3.6 - 3.10, and tox." - @echo " Hint (Fedora): 'sudo dnf install python3-tox python3.10'" + @echo " Requires: Python 3.7 - 3.11, and tox." + @echo " Hint (Fedora): 'sudo dnf install python3-tox python3.11'" @echo " The variable QEMU_TOX_EXTRA_ARGS can be use to pass extra" @echo " arguments to tox". @echo "" @@ -58,7 +58,7 @@ pipenv check-pipenv: min-venv: $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate: setup.cfg tests/minreqs.txt @echo "VENV $(QEMU_MINVENV_DIR)" - @python3.6 -m venv $(QEMU_MINVENV_DIR) + @python3.7 -m venv $(QEMU_MINVENV_DIR) @( \ echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \ . $(QEMU_MINVENV_DIR)/bin/activate; \ diff --git a/python/setup.cfg b/python/setup.cfg index 9e923d97628..1e8392a045c 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -14,7 +14,6 @@ classifiers = Natural Language :: English Operating System :: OS Independent Programming Language :: Python :: 3 :: Only - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 @@ -23,7 +22,7 @@ classifiers = Typing :: Typed [options] -python_requires = >= 3.6 +python_requires = >= 3.7 packages = qemu.qmp qemu.machine @@ -76,7 +75,7 @@ exclude = __pycache__, [mypy] strict = True -python_version = 3.6 +python_version = 3.7 warn_unused_configs = True namespace_packages = True warn_unused_ignores = False @@ -158,7 +157,7 @@ multi_line_output=3 # of python available on your system to run this test. [tox:tox] -envlist = py36, py37, py38, py39, py310, py311 +envlist = py37, py38, py39, py310, py311 skip_missing_interpreters = true [testenv] diff --git a/python/tests/minreqs.txt b/python/tests/minreqs.txt index dfb8abb155f..55cc6b41d85 100644 --- a/python/tests/minreqs.txt +++ b/python/tests/minreqs.txt @@ -1,5 +1,5 @@ # This file lists the ***oldest possible dependencies*** needed to run -# "make check" successfully under ***Python 3.6***. It is used primarily +# "make check" successfully under ***Python 3.7***. It is used primarily # by GitLab CI to ensure that our stated minimum versions in setup.cfg # are truthful and regularly validated. # diff --git a/scripts/qapi/mypy.ini b/scripts/qapi/mypy.ini index 66253564297..3463307ddc7 100644 --- a/scripts/qapi/mypy.ini +++ b/scripts/qapi/mypy.ini @@ -1,7 +1,7 @@ [mypy] strict = True disallow_untyped_calls = False -python_version = 3.6 +python_version = 3.7 [mypy-qapi.schema] disallow_untyped_defs = False
Python 3.6 was EOL 2021-12-31. Newer versions of upstream libraries have begun dropping support for this version and it is becoming more cumbersome to support. Avocado-framework and qemu.qmp each have their own reasons for wanting to drop Python 3.6. Since it is safe to under our supported platform policy, do so. Signed-off-by: John Snow <jsnow@redhat.com> --- docs/conf.py | 4 ++-- configure | 8 ++++---- python/Makefile | 10 +++++----- python/setup.cfg | 7 +++---- python/tests/minreqs.txt | 2 +- scripts/qapi/mypy.ini | 2 +- 6 files changed, 16 insertions(+), 17 deletions(-)