qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>,
	qemu-block@nongnu.org, "Cleber Rosa" <crosa@redhat.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Thomas Huth" <thuth@redhat.com>,
	"Michael Roth" <michael.roth@amd.com>,
	"Hanna Reitz" <hreitz@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Kevin Wolf" <kwolf@redhat.com>,
	"Markus Armbruster" <armbru@redhat.com>,
	"John Snow" <jsnow@redhat.com>
Subject: [PATCH 01/22] python/mkvenv: ensure HAVE_LIB variables are actually constants
Date: Mon, 17 Nov 2025 13:51:09 -0500	[thread overview]
Message-ID: <20251117185131.953681-2-jsnow@redhat.com> (raw)
In-Reply-To: <20251117185131.953681-1-jsnow@redhat.com>

Pylint 4.x has refined checking for variable names that behave as
constants vs ones that do not; unfortunately our tricky import machinery
is perceived as these variables being re-assigned.

Add a temporary variable with an underscore and assign to the global
constants precisely once to alleviate this new nag message. Add an
ignore for this name for older versions of pylint that developers may
have installed locally.

(In other words: there is no solution that will cater to both pre- and
post- 4.x versions, so we target 4.x here and silence older versions.)

Signed-off-by: John Snow <jsnow@redhat.com>
---
 python/scripts/mkvenv.py | 24 ++++++++++++++++--------
 python/setup.cfg         |  1 +
 2 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/python/scripts/mkvenv.py b/python/scripts/mkvenv.py
index 9aed266df1b..a064709e6ce 100644
--- a/python/scripts/mkvenv.py
+++ b/python/scripts/mkvenv.py
@@ -92,7 +92,7 @@
 # Try to load distlib, with a fallback to pip's vendored version.
 # HAVE_DISTLIB is checked below, just-in-time, so that mkvenv does not fail
 # outside the venv or before a potential call to ensurepip in checkpip().
-HAVE_DISTLIB = True
+_import_ok = True
 try:
     import distlib.scripts
 except ImportError:
@@ -102,11 +102,13 @@
         from pip._vendor import distlib
         import pip._vendor.distlib.scripts  # noqa, pylint: disable=unused-import
     except ImportError:
-        HAVE_DISTLIB = False
+        _import_ok = False
+
+HAVE_DISTLIB = _import_ok
 
 # pip 25.2 does not vendor distlib.version, but it uses vendored
 # packaging.version
-HAVE_DISTLIB_VERSION = True
+_import_ok = True
 try:
     import distlib.version  # pylint: disable=ungrouped-imports
 except ImportError:
@@ -114,9 +116,11 @@
         # pylint: disable=unused-import,ungrouped-imports
         import pip._vendor.distlib.version  # noqa
     except ImportError:
-        HAVE_DISTLIB_VERSION = False
+        _import_ok = False
 
-HAVE_PACKAGING_VERSION = True
+HAVE_DISTLIB_VERSION = _import_ok
+
+_import_ok = True
 try:
     # Do not bother importing non-vendored packaging, because it is not
     # in stdlib.
@@ -125,20 +129,24 @@
     import pip._vendor.packaging.requirements  # noqa
     import pip._vendor.packaging.version  # noqa
 except ImportError:
-    HAVE_PACKAGING_VERSION = False
+    _import_ok = False
+
+HAVE_PACKAGING_VERSION = _import_ok
 
 
 # Try to load tomllib, with a fallback to tomli.
 # HAVE_TOMLLIB is checked below, just-in-time, so that mkvenv does not fail
 # outside the venv or before a potential call to ensurepip in checkpip().
-HAVE_TOMLLIB = True
+_import_ok = True
 try:
     import tomllib
 except ImportError:
     try:
         import tomli as tomllib
     except ImportError:
-        HAVE_TOMLLIB = False
+        _import_ok = False
+
+HAVE_TOMLLIB = _import_ok
 
 # Do not add any mandatory dependencies from outside the stdlib:
 # This script *must* be usable standalone!
diff --git a/python/setup.cfg b/python/setup.cfg
index d7f5dc7bafe..f40f11396c9 100644
--- a/python/setup.cfg
+++ b/python/setup.cfg
@@ -159,6 +159,7 @@ good-names=i,
            c,   # for c in string: ...
            T,   # for TypeVars. See pylint#3401
            SocketAddrT,  # Not sure why this is invalid.
+           _import_ok,  # For mkvenv import trickery and compatibility pre-4.x
 
 [pylint.similarities]
 # Ignore imports when computing similarities.
-- 
2.51.1



  reply	other threads:[~2025-11-17 18:52 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-17 18:51 [PATCH 00/22] python: drop qemu.qmp from qemu.git tree John Snow
2025-11-17 18:51 ` John Snow [this message]
2025-11-18  7:19   ` [PATCH 01/22] python/mkvenv: ensure HAVE_LIB variables are actually constants Thomas Huth
2025-11-17 18:51 ` [PATCH 02/22] python/qapi: add an ignore for Pylint 4.x John Snow
2025-11-18  7:28   ` Thomas Huth
2025-11-17 18:51 ` [PATCH 03/22] python/qapi: delint import statements John Snow
2025-11-18  7:28   ` Thomas Huth
2025-11-17 18:51 ` [PATCH 04/22] python/mkvenv: create timestamp file for each group "ensured" John Snow
2025-11-17 18:51 ` [PATCH 05/22] python/mkvenv: bump 'qemu.qmp' dependency for testdeps John Snow
2025-11-19  9:19   ` Thomas Huth
2025-11-19 21:10     ` John Snow
2025-11-17 18:51 ` [PATCH 06/22] python/mkvenv: rename 'testdeps' to 'functests' John Snow
2025-11-18 10:01   ` Thomas Huth
2025-11-18 18:22     ` John Snow
2025-11-17 18:51 ` [PATCH 07/22] python/mkvenv: add "checktests" dependency group John Snow
2025-11-18 10:01   ` Thomas Huth
2025-11-17 18:51 ` [PATCH 08/22] meson, mkvenv: add checktests and functests custom targets John Snow
2025-11-17 18:51 ` [PATCH 09/22] tests/iotests: Use configured python to run GitLab iotests John Snow
2025-11-18  7:17   ` Thomas Huth
2025-11-18 18:10   ` John Snow
2025-11-17 18:51 ` [PATCH 10/22] tests/iotests: use "make check-venv" to prepare for running iotests John Snow
2025-11-18  9:58   ` Thomas Huth
2025-11-17 18:51 ` [PATCH 11/22] python: add vendored qemu.qmp package John Snow
2025-11-19  9:29   ` Thomas Huth
2025-11-19 21:16     ` John Snow
2025-11-17 18:51 ` [PATCH 12/22] meson, mkvenv: make iotests depend on checktests group John Snow
2025-11-17 18:51 ` [PATCH 13/22] mtest2make: cleanup mtest-suites variables John Snow
2025-11-21 10:24   ` Paolo Bonzini
2025-11-17 18:51 ` [PATCH 14/22] mtest2make: add dependencies to the "speed-qualified" suite John Snow
2025-11-17 18:51 ` [PATCH 15/22] mtest2make: do not repeat the same speed over and over John Snow
2025-11-17 18:51 ` [PATCH 16/22] meson, mkvenv: make functional tests depend on functests group John Snow
2025-11-17 18:51 ` [PATCH 17/22] tests: forcibly run 'make check-venv' for crash tests John Snow
2025-11-17 19:06   ` Daniel P. Berrangé
2025-11-17 20:47     ` Paolo Bonzini
2025-11-18 21:50       ` John Snow
2025-11-19  8:05         ` Paolo Bonzini
2025-11-19 14:15           ` Thomas Huth
2025-11-19 23:03             ` John Snow
2025-11-17 18:51 ` [PATCH 18/22] python/mkvenv: add mechanism to install local package(s) John Snow
2025-11-17 18:51 ` [PATCH 19/22] mkvenv: add --no-build-isolation flag John Snow
2025-11-17 18:51 ` [PATCH 20/22] meson, mkvenv: add qemu.git/python/qemu package to pythondeps.toml John Snow
2025-11-17 18:51 ` [PATCH 21/22] tests/Makefile: replace old "check-venv" target with meson target John Snow
2025-11-17 18:51 ` [PATCH 22/22] python: delete qemu.qmp John Snow
2025-11-19  9:27   ` Thomas Huth
2025-11-19 21:14     ` John Snow

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251117185131.953681-2-jsnow@redhat.com \
    --to=jsnow@redhat.com \
    --cc=alex.bennee@linaro.org \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=crosa@redhat.com \
    --cc=hreitz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=michael.roth@amd.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).