From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: John Snow <jsnow@redhat.com>, Michael Roth <michael.roth@amd.com>,
Markus Armbruster <armbru@redhat.com>,
Cleber Rosa <crosa@redhat.com>, Thomas Huth <thuth@redhat.com>
Subject: [PATCH 1/3] python/mkvenv: ensure HAVE_LIB variables are actually constants
Date: Tue, 18 Nov 2025 15:06:55 -0500 [thread overview]
Message-ID: <20251118200657.1043688-2-jsnow@redhat.com> (raw)
In-Reply-To: <20251118200657.1043688-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>
Reviewed-by: Thomas Huth <thuth@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
next prev parent reply other threads:[~2025-11-18 20:07 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-18 20:06 [PATCH 0/3] Python: fix tests John Snow
2025-11-18 20:06 ` John Snow [this message]
2025-11-18 20:06 ` [PATCH 2/3] python/qapi: add an ignore for Pylint 4.x John Snow
2025-11-18 20:06 ` [PATCH 3/3] python/qapi: delint import statements John Snow
2025-11-18 20:24 ` Philippe Mathieu-Daudé
2025-11-19 11:30 ` [PATCH 0/3] Python: fix tests Philippe Mathieu-Daudé
2025-11-19 11:47 ` Richard Henderson
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=20251118200657.1043688-2-jsnow@redhat.com \
--to=jsnow@redhat.com \
--cc=armbru@redhat.com \
--cc=crosa@redhat.com \
--cc=michael.roth@amd.com \
--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).