From nobody Thu Apr 16 20:56:39 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1772053514; cv=none; d=zohomail.com; s=zohoarc; b=mJwb0APQHAHE72i3vtMuaNMnX0Zr9JzwF9q9PZAOt6KfGbzJOq0pDh+x8qB45Kf9DibvbM/ftVjE1BIOq3ETSvWmZmKMjbxJ44dHVEfvEB4EMOU3Q+JqSXOFlYUDr+kZydEtUbYgvOZuFXPE2o+ivq9irXSTKO8Xsfhck2fy8LM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772053514; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3piZw7mx8H8ZRPxcaYjHBw/SvUX6/of2m3+OJq3TxyM=; b=YRz8NMp86pe30+xiEROZC3YIUdnrPmJYKdoUVlBqRdI7mS+F3I8+LiRV6Tso5AoMMjfExnvuBYEQrs1mmfiBi5Z6my2QqpTmGjrZu2jRszOV/jka8R79F9LRLnhX+I2XHKDdVSgEF/FbEZs1xX+B2ALoQqUzQlfwC9+0gTOiudE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772053514181270.29866844532273; Wed, 25 Feb 2026 13:05:14 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvM3d-0006CM-30; Wed, 25 Feb 2026 16:04:33 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vvM3Z-0006Br-Ti for qemu-devel@nongnu.org; Wed, 25 Feb 2026 16:04:29 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vvM3Y-0006oU-KY for qemu-devel@nongnu.org; Wed, 25 Feb 2026 16:04:29 -0500 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-438-0soz0L66NKi33mLMXhOO3A-1; Wed, 25 Feb 2026 16:04:24 -0500 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 1F83F1956096; Wed, 25 Feb 2026 21:04:23 +0000 (UTC) Received: from jsnow-thinkpadp16vgen1.westford.csb (unknown [10.22.89.212]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 77E2B1800666; Wed, 25 Feb 2026 21:04:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1772053467; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=3piZw7mx8H8ZRPxcaYjHBw/SvUX6/of2m3+OJq3TxyM=; b=hpBYjPR9nYLpMwoVtAQVLIxJ2ItKBxiwnD0Y+L63ZRujkLS/7bINM2FQVvt3EU6JNWMr+X h2HyxRioGguh6dQl0Z0w7eHpynj/1F5m8fjLsJpNnzS0fuOGLNDqtaWp/hIJ885JX00IH8 wLWCNlBtSP2ce6s9bCCzplwRnaDKEXA= X-MC-Unique: 0soz0L66NKi33mLMXhOO3A-1 X-Mimecast-MFC-AGG-ID: 0soz0L66NKi33mLMXhOO3A_1772053463 From: John Snow To: qemu-devel@nongnu.org Cc: John Snow , Thomas Huth , Paolo Bonzini , Cleber Rosa , =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [PATCH v3 1/4] python: pin 'wheel' version in minreqs test Date: Wed, 25 Feb 2026 16:04:12 -0500 Message-ID: <20260225210415.972192-2-jsnow@redhat.com> In-Reply-To: <20260225210415.972192-1-jsnow@redhat.com> References: <20260225210415.972192-1-jsnow@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 27 X-Spam_score: 2.7 X-Spam_bar: ++ X-Spam_report: (2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.734, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.78, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1772053516208158500 Content-Type: text/plain; charset="utf-8" With recent python packaging ecosystem updates, the latest 'wheel' is no longer compatible with older packages - and was somehow still compatible with our Python 3.9 environment. Pin wheel to an older version (Version based on Debian 11's available wheel package) to remove warnings during the minreqs test. Signed-off-by: John Snow --- python/Makefile | 2 -- python/tests/minreqs.txt | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/python/Makefile b/python/Makefile index 32aedce4137..b6c9cd1bce2 100644 --- a/python/Makefile +++ b/python/Makefile @@ -63,8 +63,6 @@ $(QEMU_MINVENV_DIR) $(QEMU_MINVENV_DIR)/bin/activate: set= up.cfg tests/minreqs.tx @( \ echo "ACTIVATE $(QEMU_MINVENV_DIR)"; \ . $(QEMU_MINVENV_DIR)/bin/activate; \ - echo "INSTALL wheel $(QEMU_MINVENV_DIR)"; \ - $(PIP_INSTALL) wheel 1>/dev/null; \ echo "INSTALL -r tests/minreqs.txt $(QEMU_MINVENV_DIR)";\ $(PIP_INSTALL) -r tests/minreqs.txt 1>/dev/null; \ echo "INSTALL -e qemu $(QEMU_MINVENV_DIR)"; \ diff --git a/python/tests/minreqs.txt b/python/tests/minreqs.txt index 855b5129c94..38b17d17e14 100644 --- a/python/tests/minreqs.txt +++ b/python/tests/minreqs.txt @@ -16,6 +16,7 @@ # installation of the QEMU package itself fails, failing to find # setuptools. setuptools<=3D70 +wheel=3D=3D0.34.2 =20 # Dependencies for qapidoc/qapi_domain et al sphinx=3D=3D3.4.3 --=20 2.53.0 From nobody Thu Apr 16 20:56:39 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1772053502; cv=none; d=zohomail.com; s=zohoarc; b=LX9nK5ShL15Ehfo6Vk9dOmxqQnBK2NtvFu5d5GPpEK0DTb1YqPpXgc+zR4yQu94iV6QfVhuJ8kDt/+PPl/JvCi530InMQMvByVDhD6zNBNl++UoyweDkNndscRxXvyHKpdZStsKGOrkVaKpi43wI7mUkUJVpFssU3GlBDxQqm8g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772053502; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=IuGfykvuaPWnW+5hdWJzME16NjhM0NzpRBIzZgi4ek4=; b=BICvc11q9hrwJXbvV0EURasL2BPQZec72pxRMnsDuXGFefg1zNNL8IHEZCv0QVTGkAxh1baJ2sDbaRFnhH52al3QW42mrU32Xz1Xvk3yWgWEZkhVdF2buU5XZvpF5rUB5/d/Nti7d9a9ZrE+mIGZV3MgiqjKap/bsfS3gj+Tyg4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772053502098568.5608894576472; Wed, 25 Feb 2026 13:05:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvM3g-0006DF-OX; Wed, 25 Feb 2026 16:04:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vvM3c-0006CD-0g for qemu-devel@nongnu.org; Wed, 25 Feb 2026 16:04:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vvM3a-0006og-C2 for qemu-devel@nongnu.org; Wed, 25 Feb 2026 16:04:31 -0500 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-150-C6_J9pBhNS2tBIPCXvfKZQ-1; Wed, 25 Feb 2026 16:04:25 -0500 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 00A1A1956059; Wed, 25 Feb 2026 21:04:25 +0000 (UTC) Received: from jsnow-thinkpadp16vgen1.westford.csb (unknown [10.22.89.212]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 9908D1800348; Wed, 25 Feb 2026 21:04:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1772053469; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IuGfykvuaPWnW+5hdWJzME16NjhM0NzpRBIzZgi4ek4=; b=gDvaHafnR7Kyn9DhH2Iteo+KaFiWwfaNsrlLfn3qTkbUpoxIM5/dYo2GR9wSNIp/XZ2w9J kwmgFGbRxbjK7zrG8ujIWZubC9onaFg+syVLOY9oQ/21RO5GDuOamIO4UgyqkIbHGA4mYQ yt273Yh3nZuEBjFMVvWB72gMe9FEkGI= X-MC-Unique: C6_J9pBhNS2tBIPCXvfKZQ-1 X-Mimecast-MFC-AGG-ID: C6_J9pBhNS2tBIPCXvfKZQ_1772053465 From: John Snow To: qemu-devel@nongnu.org Cc: John Snow , Thomas Huth , Paolo Bonzini , Cleber Rosa , =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [PATCH v3 2/4] python: replace avocado tests with pytest Date: Wed, 25 Feb 2026 16:04:13 -0500 Message-ID: <20260225210415.972192-3-jsnow@redhat.com> In-Reply-To: <20260225210415.972192-1-jsnow@redhat.com> References: <20260225210415.972192-1-jsnow@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 27 X-Spam_score: 2.7 X-Spam_bar: ++ X-Spam_report: (2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.734, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.78, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1772053504151158500 Content-Type: text/plain; charset="utf-8" Following suit with the rest of this repository, drop avocado and replace it with the Python standard "pytest" package. In this case, we do not truly need pytest as all we are using it for is running other python processes formerly launched by shell scripts, but this matches how the standalone python-qemu-qmp package does things, which keeps things simple on my end. (pytest version chosen based off of Debian 11's package version as queried = by repology; under the assumption that this is the likely the oldest version we currently leverage in testing.) Signed-off-by: John Snow --- python/Makefile | 4 +- python/setup.cfg | 1 + python/tests/linters.py | 89 ++++++++++++++++++++++++++++++++++++++++ python/tests/minreqs.txt | 1 + 4 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 python/tests/linters.py diff --git a/python/Makefile b/python/Makefile index b6c9cd1bce2..42994d39618 100644 --- a/python/Makefile +++ b/python/Makefile @@ -105,7 +105,7 @@ develop: =20 .PHONY: check check: - @avocado --config avocado.cfg run tests/ + @pytest -v tests/*.py =20 .PHONY: check-tox check-tox: @@ -113,7 +113,7 @@ check-tox: =20 .PHONY: check-coverage check-coverage: - @coverage run -m avocado --config avocado.cfg run tests/*.py + @coverage run -m pytest -v tests/*.py @coverage combine @coverage html @coverage report diff --git a/python/setup.cfg b/python/setup.cfg index c46a95f8d41..03344526730 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -43,6 +43,7 @@ devel =3D mypy >=3D 1.4.0 pylint >=3D 2.17.3 pylint !=3D 3.2.4; python_version<"3.9" + pytest >=3D 6.0.2 tox >=3D 3.18.0 sphinx >=3D 3.4.3 =20 diff --git a/python/tests/linters.py b/python/tests/linters.py new file mode 100644 index 00000000000..28556c09910 --- /dev/null +++ b/python/tests/linters.py @@ -0,0 +1,89 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + +import os +import subprocess +import sys + + +def pyrun(*args): + subprocess.run((sys.executable, *args), check=3DTrue) + + +class TestLinters: + + def test_flake8_pkg(self): + pyrun("-m", "flake8", "qemu/") + + def test_flake8_scripts(self): + pyrun("-m", "flake8", "scripts/") + + def test_flake8_qapi(self): + pyrun("-m", "flake8", + "../scripts/qapi/", + "../docs/sphinx/qapidoc.py", + "../docs/sphinx/qapi_domain.py") + + def test_isort_pkg(self): + pyrun("-m", "isort", "-c", "qemu/") + + def test_isort_scripts(self): + pyrun("-m", "isort", "-c", "scripts/") + + def test_isort_qapi(self): + pyrun("-m", "isort", "--sp", ".", "-c", "../scripts/qapi/") + + def test_isort_qapi_sphinx(self): + # Force isort to recognize 'compat' as a local module and not + # third-party + pyrun("-m", "isort", "--sp", ".", "-c", "-p", "compat", + "../docs/sphinx/qapi_domain.py", + "../docs/sphinx/qapidoc.py") + + def test_mypy_pkg(self): + pyrun("-m", "mypy", "-p", "qemu") + + def test_mypy_scripts(self): + pyrun("-m", "mypy", "scripts/") + + def test_mypy_qapi(self): + pyrun("-m", "mypy", "../scripts/qapi") + + def test_mypy_iotests(self): + cwd =3D os.getcwd() + try: + os.chdir("../tests/qemu-iotests/") + pyrun("-m", "linters", "--mypy") + finally: + os.chdir(cwd) + + # Setuptools v60 introduced the SETUPTOOLS_USE_DISTUTILS=3Dstdlib + # workaround; stdlib distutils was fully removed in Python + # 3.12+. Once we are on >=3D3.12+ exclusively, this workaround can be + # dropped safely. Until then, it is needed for some versions on + # Fedora/Debian distributions which relied upon distro-patched + # setuptools present in CPython, but not within setuptools itself. + + def test_pylint_pkg(self): + os.environ['SETUPTOOLS_USE_DISTUTILS'] =3D 'stdlib' + pyrun("-m", "pylint", "qemu/") + + def test_pylint_scripts(self): + os.environ['SETUPTOOLS_USE_DISTUTILS'] =3D 'stdlib' + pyrun("-m", "pylint", "qemu/") + + def test_pylint_qapi(self): + os.environ['SETUPTOOLS_USE_DISTUTILS'] =3D 'stdlib' + pyrun("-m", "pylint", + "--rcfile=3D../scripts/qapi/pylintrc", + "../scripts/qapi/", + "../docs/sphinx/qapidoc.py", + "../docs/sphinx/qapi_domain.py") + + def test_pylint_iotests(self): + os.environ['SETUPTOOLS_USE_DISTUTILS'] =3D 'stdlib' + cwd =3D os.getcwd() + try: + os.chdir("../tests/qemu-iotests/") + pyrun("-m", "linters", "--pylint") + finally: + os.chdir(cwd) diff --git a/python/tests/minreqs.txt b/python/tests/minreqs.txt index 38b17d17e14..19912027076 100644 --- a/python/tests/minreqs.txt +++ b/python/tests/minreqs.txt @@ -32,6 +32,7 @@ fusepy=3D=3D2.0.4 =20 # Test-runners, utilities, etc. avocado-framework=3D=3D90.0 +pytest=3D=3D6.0.2 =20 # Linters flake8=3D=3D5.0.4 --=20 2.53.0 From nobody Thu Apr 16 20:56:39 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1772053494; cv=none; d=zohomail.com; s=zohoarc; b=UnI8BL7bjbMjWrFIa8ydy+tHcpt0GgJ+7JgtILd/8vCgPh9XKgVVelum00DvfsnGhwUZIYfz6hcchbNgddIPHpUGvh63lU3aGQ1VALgSCCSTqNPpTEJvdw8SvzVcISYFJ5nH2IwL7GBasEmEHRjz8jcPZJzU2S5csBJYA+JqVvw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772053494; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HWRUA8tj40Tz3RR9F8yelmtXUdPZZ2umwgoMnemQSdQ=; b=DphNvYMIVQPQGtI+1h3OZmsd7PKYd+BIQ+qtUv62AHk2174aPIUBgwGfBrfDr5YzcPZJz55YyCJ6Vc5EUl6JRgCh/57vr3UYC+yaV0i2nbhAXdOKKe60+Uxm87fol4OXgHcsKow4oTdJBMHeA1quNsTTFCmFEOc9kgUZKJ0J5wk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17720534947711011.4044319950864; Wed, 25 Feb 2026 13:04:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvM3i-0006F6-MF; Wed, 25 Feb 2026 16:04:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vvM3e-0006Cw-KP for qemu-devel@nongnu.org; Wed, 25 Feb 2026 16:04:34 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vvM3a-0006ot-Lm for qemu-devel@nongnu.org; Wed, 25 Feb 2026 16:04:34 -0500 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-218-p0Ar6X4AOk-NCcB0xmXWXA-1; Wed, 25 Feb 2026 16:04:27 -0500 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 821B61956050; Wed, 25 Feb 2026 21:04:26 +0000 (UTC) Received: from jsnow-thinkpadp16vgen1.westford.csb (unknown [10.22.89.212]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 71C411800671; Wed, 25 Feb 2026 21:04:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1772053470; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=HWRUA8tj40Tz3RR9F8yelmtXUdPZZ2umwgoMnemQSdQ=; b=c8FjGhltUqwrldHg+gjUBdoH5vuxWV7nmaNryOMxYgb8yKBJF9J1n63kKLne+sfCJ/vGow T17tbH8cgmdR7ZAYV6o+uNrhpZtnbH/xFmTMcel+6pviH8KeOHUaYG6TLeOAPp+nnwJn/G O8kgzrXJKsY+B6hYu5T8ZCJa3KXUr/k= X-MC-Unique: p0Ar6X4AOk-NCcB0xmXWXA-1 X-Mimecast-MFC-AGG-ID: p0Ar6X4AOk-NCcB0xmXWXA_1772053466 From: John Snow To: qemu-devel@nongnu.org Cc: John Snow , Thomas Huth , Paolo Bonzini , Cleber Rosa , =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [PATCH v3 3/4] python: drop avocado Date: Wed, 25 Feb 2026 16:04:14 -0500 Message-ID: <20260225210415.972192-4-jsnow@redhat.com> In-Reply-To: <20260225210415.972192-1-jsnow@redhat.com> References: <20260225210415.972192-1-jsnow@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 27 X-Spam_score: 2.7 X-Spam_bar: ++ X-Spam_report: (2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.734, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.78, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1772053496476158500 Content-Type: text/plain; charset="utf-8" Avocado-framework is no longer used for anything, so it can be removed. Signed-off-by: John Snow Reviewed-by: Thomas Huth --- python/README.rst | 2 -- python/avocado.cfg | 13 ------------- python/setup.cfg | 1 - python/tests/flake8.sh | 3 --- python/tests/iotests-mypy.sh | 4 ---- python/tests/iotests-pylint.sh | 5 ----- python/tests/isort.sh | 3 --- python/tests/minreqs.txt | 1 - python/tests/mypy.sh | 3 --- python/tests/pylint.sh | 4 ---- python/tests/qapi-flake8.sh | 6 ------ python/tests/qapi-isort.sh | 8 -------- python/tests/qapi-mypy.sh | 4 ---- python/tests/qapi-pylint.sh | 8 -------- 14 files changed, 65 deletions(-) delete mode 100644 python/avocado.cfg delete mode 100755 python/tests/flake8.sh delete mode 100755 python/tests/iotests-mypy.sh delete mode 100755 python/tests/iotests-pylint.sh delete mode 100755 python/tests/isort.sh delete mode 100755 python/tests/mypy.sh delete mode 100755 python/tests/pylint.sh delete mode 100755 python/tests/qapi-flake8.sh delete mode 100755 python/tests/qapi-isort.sh delete mode 100755 python/tests/qapi-mypy.sh delete mode 100755 python/tests/qapi-pylint.sh diff --git a/python/README.rst b/python/README.rst index ec5cb5e971b..e34d1a1c7b1 100644 --- a/python/README.rst +++ b/python/README.rst @@ -108,8 +108,6 @@ Files in this directory =20 - ``qemu/`` Python 'qemu' namespace package source directory. - ``tests/`` Python package tests directory. -- ``avocado.cfg`` Configuration for the Avocado test-runner. - Used by ``make check`` et al. - ``Makefile`` provides some common testing/installation invocations. Try ``make help`` to see available targets. - ``MANIFEST.in`` is read by python setuptools, it specifies additional fi= les diff --git a/python/avocado.cfg b/python/avocado.cfg deleted file mode 100644 index a4604200594..00000000000 --- a/python/avocado.cfg +++ /dev/null @@ -1,13 +0,0 @@ -[run] -test_runner =3D nrunner - -[simpletests] -# Don't show stdout/stderr in the test *summary* -status.failure_fields =3D ['status'] - -[job] -# Don't show the full debug.log output; only select stdout/stderr. -output.testlogs.logfiles =3D ['stdout', 'stderr'] - -# Show full stdout/stderr only on tests that FAIL -output.testlogs.statuses =3D ['FAIL'] diff --git a/python/setup.cfg b/python/setup.cfg index 03344526730..e5bf498f0e1 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -35,7 +35,6 @@ install_requires =3D [options.extras_require] # Remember to update tests/minreqs.txt if changing anything below: devel =3D - avocado-framework >=3D 90.0 distlib >=3D 0.3.6 flake8 >=3D 5.0.4 fusepy >=3D 2.0.4 diff --git a/python/tests/flake8.sh b/python/tests/flake8.sh deleted file mode 100755 index e0136996453..00000000000 --- a/python/tests/flake8.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -e -python3 -m flake8 qemu/ -python3 -m flake8 scripts/ diff --git a/python/tests/iotests-mypy.sh b/python/tests/iotests-mypy.sh deleted file mode 100755 index ee764708199..00000000000 --- a/python/tests/iotests-mypy.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -e - -cd ../tests/qemu-iotests/ -python3 -m linters --mypy diff --git a/python/tests/iotests-pylint.sh b/python/tests/iotests-pylint.sh deleted file mode 100755 index 33c5ae900a5..00000000000 --- a/python/tests/iotests-pylint.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -e - -cd ../tests/qemu-iotests/ -# See commit message for environment variable explainer. -SETUPTOOLS_USE_DISTUTILS=3Dstdlib python3 -m linters --pylint diff --git a/python/tests/isort.sh b/python/tests/isort.sh deleted file mode 100755 index 66c2f7df0fd..00000000000 --- a/python/tests/isort.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -e -python3 -m isort -c qemu/ -python3 -m isort -c scripts/ diff --git a/python/tests/minreqs.txt b/python/tests/minreqs.txt index 19912027076..05c3bdb89f8 100644 --- a/python/tests/minreqs.txt +++ b/python/tests/minreqs.txt @@ -31,7 +31,6 @@ distlib=3D=3D0.3.6 fusepy=3D=3D2.0.4 =20 # Test-runners, utilities, etc. -avocado-framework=3D=3D90.0 pytest=3D=3D6.0.2 =20 # Linters diff --git a/python/tests/mypy.sh b/python/tests/mypy.sh deleted file mode 100755 index a33a3f58ab3..00000000000 --- a/python/tests/mypy.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -e -python3 -m mypy -p qemu -python3 -m mypy scripts/ diff --git a/python/tests/pylint.sh b/python/tests/pylint.sh deleted file mode 100755 index 2b68da90df7..00000000000 --- a/python/tests/pylint.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -e -# See commit message for environment variable explainer. -SETUPTOOLS_USE_DISTUTILS=3Dstdlib python3 -m pylint qemu/ -SETUPTOOLS_USE_DISTUTILS=3Dstdlib python3 -m pylint scripts/ diff --git a/python/tests/qapi-flake8.sh b/python/tests/qapi-flake8.sh deleted file mode 100755 index c69f9ea2e00..00000000000 --- a/python/tests/qapi-flake8.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -e -# SPDX-License-Identifier: GPL-2.0-or-later - -python3 -m flake8 ../scripts/qapi/ \ - ../docs/sphinx/qapidoc.py \ - ../docs/sphinx/qapi_domain.py diff --git a/python/tests/qapi-isort.sh b/python/tests/qapi-isort.sh deleted file mode 100755 index 067c16d5d94..00000000000 --- a/python/tests/qapi-isort.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -e -# SPDX-License-Identifier: GPL-2.0-or-later - -python3 -m isort --sp . -c ../scripts/qapi/ -# Force isort to recognize "compat" as a local module and not third-party -python3 -m isort --sp . -c -p compat \ - ../docs/sphinx/qapi_domain.py \ - ../docs/sphinx/qapidoc.py diff --git a/python/tests/qapi-mypy.sh b/python/tests/qapi-mypy.sh deleted file mode 100755 index 363dbaf8c06..00000000000 --- a/python/tests/qapi-mypy.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -e -# SPDX-License-Identifier: GPL-2.0-or-later - -python3 -m mypy ../scripts/qapi diff --git a/python/tests/qapi-pylint.sh b/python/tests/qapi-pylint.sh deleted file mode 100755 index 8767d9d2a2d..00000000000 --- a/python/tests/qapi-pylint.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -e -# SPDX-License-Identifier: GPL-2.0-or-later - -SETUPTOOLS_USE_DISTUTILS=3Dstdlib python3 -m pylint \ - --rcfile=3D../scripts/qapi/pylintrc \ - ../scripts/qapi/ \ - ../docs/sphinx/qapidoc.py \ - ../docs/sphinx/qapi_domain.py --=20 2.53.0 From nobody Thu Apr 16 20:56:39 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1772053518; cv=none; d=zohomail.com; s=zohoarc; b=MFAOLx6mtW3KIN/qlOZTqq9NQ8DXc4ZQeZazNPWy8i8RS7bzwImJgJDgss0DXkB5HhqWpfC8HffjrGyr2yFHalPsL4jx0WXAgmsODsodLM8zbUAsMOENYn1CvIJdi+TDfIuEhr8ApVcwdzcVDiRo/uJDSns9Ek2pPKDlzE8dAuY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772053518; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Y3e/pOQjbAcyPrSH7LkACdvDung2V+mH/sGj9ChXuX8=; b=e5puHHZjg4FOqccTEkJmYp+OOsy5FBEGp1tAedU4D94c0+mgEH9+r3UktdLnsLikgrPGiloFU6Ts+F/98fe6Q7D5dRDezu2if7gQh05UI6ttxSayj//JL2PbrY2jUwJ5rpOB8gRWSc4uJWSnv0PbamDHBvU6TbrsGxFdENETjeY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 177205351887282.79044237015898; Wed, 25 Feb 2026 13:05:18 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vvM3o-0006LT-6l; Wed, 25 Feb 2026 16:04:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vvM3m-0006JZ-CR for qemu-devel@nongnu.org; Wed, 25 Feb 2026 16:04:42 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vvM3l-0006pR-29 for qemu-devel@nongnu.org; Wed, 25 Feb 2026 16:04:42 -0500 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-563-atQV9V-kM8OOS__zm7gVxg-1; Wed, 25 Feb 2026 16:04:28 -0500 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D358319560A5; Wed, 25 Feb 2026 21:04:27 +0000 (UTC) Received: from jsnow-thinkpadp16vgen1.westford.csb (unknown [10.22.89.212]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id BF844180066F; Wed, 25 Feb 2026 21:04:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1772053480; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Y3e/pOQjbAcyPrSH7LkACdvDung2V+mH/sGj9ChXuX8=; b=OaMJAQLJzBr3NzbGa3axEgvhqkHjyfR0BiNHfygQ/f73JBsCehR7SZbdFgCR+zl0NTjzfO u60CAOhlL0cb4Clj6mYhaHgpzRS1Gl7jnSeCjGbefPz+aTH6561QyIkHas05weuAyGR2hA 96vEE8sK9PldbF38i0NDLc0437MagVI= X-MC-Unique: atQV9V-kM8OOS__zm7gVxg-1 X-Mimecast-MFC-AGG-ID: atQV9V-kM8OOS__zm7gVxg_1772053467 From: John Snow To: qemu-devel@nongnu.org Cc: John Snow , Thomas Huth , Paolo Bonzini , Cleber Rosa , =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [PATCH v3 4/4] python: add formal python3.14 support and testing Date: Wed, 25 Feb 2026 16:04:15 -0500 Message-ID: <20260225210415.972192-5-jsnow@redhat.com> In-Reply-To: <20260225210415.972192-1-jsnow@redhat.com> References: <20260225210415.972192-1-jsnow@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=jsnow@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: 27 X-Spam_score: 2.7 X-Spam_bar: ++ X-Spam_report: (2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_SBL_CSS=3.335, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.734, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.78, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1772053520240158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: John Snow Reviewed-by: Thomas Huth --- configure | 4 ++-- python/setup.cfg | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/configure b/configure index c4837eba2b1..ec591a89a1f 100755 --- a/configure +++ b/configure @@ -527,8 +527,8 @@ first_python=3D if test -z "${PYTHON}"; then # 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 python3 python python3.13 python3.12 python3.11 \ - python3.10 python3.9 ; do + for binary in python3 python python3.14 python3.13 python3.12 \ + python3.11 python3.10 python3.9 ; do if has "$binary"; then python=3D$(command -v "$binary") if check_py_version "$python"; then diff --git a/python/setup.cfg b/python/setup.cfg index e5bf498f0e1..80975933971 100644 --- a/python/setup.cfg +++ b/python/setup.cfg @@ -19,6 +19,7 @@ classifiers =3D Programming Language :: Python :: 3.11 Programming Language :: Python :: 3.12 Programming Language :: Python :: 3.13 + Programming Language :: Python :: 3.14 Typing :: Typed =20 [options] @@ -162,7 +163,7 @@ multi_line_output=3D3 # of python available on your system to run this test. =20 [tox:tox] -envlist =3D py39, py310, py311, py312, py313 +envlist =3D py39, py310, py311, py312, py313, py314 skip_missing_interpreters =3D true =20 [testenv] --=20 2.53.0