qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] Python: fix tests
@ 2025-11-18 20:06 John Snow
  2025-11-18 20:06 ` [PATCH 1/3] python/mkvenv: ensure HAVE_LIB variables are actually constants John Snow
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: John Snow @ 2025-11-18 20:06 UTC (permalink / raw)
  To: qemu-devel; +Cc: John Snow, Michael Roth, Markus Armbruster, Cleber Rosa

Whack some minor annoyances down to make the tests green again. Fixes
both minreqs and the optional check-tox.

John Snow (3):
  python/mkvenv: ensure HAVE_LIB variables are actually constants
  python/qapi: add an ignore for Pylint 4.x
  python/qapi: delint import statements

 python/scripts/mkvenv.py   | 24 ++++++++++++++++--------
 python/setup.cfg           |  1 +
 scripts/qapi/commands.py   |  5 +----
 scripts/qapi/introspect.py |  2 +-
 4 files changed, 19 insertions(+), 13 deletions(-)

-- 
2.51.1




^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/3] python/mkvenv: ensure HAVE_LIB variables are actually constants
  2025-11-18 20:06 [PATCH 0/3] Python: fix tests John Snow
@ 2025-11-18 20:06 ` John Snow
  2025-11-18 20:06 ` [PATCH 2/3] python/qapi: add an ignore for Pylint 4.x John Snow
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: John Snow @ 2025-11-18 20:06 UTC (permalink / raw)
  To: qemu-devel
  Cc: John Snow, Michael Roth, Markus Armbruster, Cleber Rosa,
	Thomas Huth

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



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/3] python/qapi: add an ignore for Pylint 4.x
  2025-11-18 20:06 [PATCH 0/3] Python: fix tests John Snow
  2025-11-18 20:06 ` [PATCH 1/3] python/mkvenv: ensure HAVE_LIB variables are actually constants John Snow
@ 2025-11-18 20:06 ` John Snow
  2025-11-18 20:06 ` [PATCH 3/3] python/qapi: delint import statements John Snow
  2025-11-19 11:30 ` [PATCH 0/3] Python: fix tests Philippe Mathieu-Daudé
  3 siblings, 0 replies; 7+ messages in thread
From: John Snow @ 2025-11-18 20:06 UTC (permalink / raw)
  To: qemu-devel
  Cc: John Snow, Michael Roth, Markus Armbruster, Cleber Rosa,
	Thomas Huth

Pylint 4.x wants to use a different regex for _Stub for some reason;
just silence this.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 scripts/qapi/introspect.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/qapi/introspect.py b/scripts/qapi/introspect.py
index 89ee5d5f176..7e28de2279a 100644
--- a/scripts/qapi/introspect.py
+++ b/scripts/qapi/introspect.py
@@ -59,7 +59,7 @@
 #
 # Sadly, mypy does not support recursive types; so the _Stub alias is used to
 # mark the imprecision in the type model where we'd otherwise use JSONValue.
-_Stub = Any
+_Stub = Any  # pylint: disable=invalid-name
 _Scalar = Union[str, bool, None]
 _NonScalar = Union[Dict[str, _Stub], List[_Stub]]
 _Value = Union[_Scalar, _NonScalar]
-- 
2.51.1



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/3] python/qapi: delint import statements
  2025-11-18 20:06 [PATCH 0/3] Python: fix tests John Snow
  2025-11-18 20:06 ` [PATCH 1/3] python/mkvenv: ensure HAVE_LIB variables are actually constants John Snow
  2025-11-18 20:06 ` [PATCH 2/3] python/qapi: add an ignore for Pylint 4.x John Snow
@ 2025-11-18 20:06 ` John Snow
  2025-11-18 20:24   ` Philippe Mathieu-Daudé
  2025-11-19 11:30 ` [PATCH 0/3] Python: fix tests Philippe Mathieu-Daudé
  3 siblings, 1 reply; 7+ messages in thread
From: John Snow @ 2025-11-18 20:06 UTC (permalink / raw)
  To: qemu-devel
  Cc: John Snow, Michael Roth, Markus Armbruster, Cleber Rosa,
	Thomas Huth

Missed a spot with isort, which now causes the python-minreqs test on
GitLab to fail. Fix it.

(Hint: the commands in python/tests/qapi-isort.sh can be run without the
"-c" parameter to automatically adjust import statements according to
our style rules. Maybe I should make a pre-submit hook that makes this
adjustment automatically. What do you think?)

Fixes: 5bd89761
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 scripts/qapi/commands.py | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/scripts/qapi/commands.py b/scripts/qapi/commands.py
index a82b5a2a5e6..9dede747205 100644
--- a/scripts/qapi/commands.py
+++ b/scripts/qapi/commands.py
@@ -13,10 +13,7 @@
 See the COPYING file in the top-level directory.
 """
 
-from typing import (
-    List,
-    Optional,
-)
+from typing import List, Optional
 
 from .common import c_name, mcgen
 from .gen import (
-- 
2.51.1



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 3/3] python/qapi: delint import statements
  2025-11-18 20:06 ` [PATCH 3/3] python/qapi: delint import statements John Snow
@ 2025-11-18 20:24   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 7+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-11-18 20:24 UTC (permalink / raw)
  To: John Snow, qemu-devel
  Cc: Michael Roth, Markus Armbruster, Cleber Rosa, Thomas Huth

On 18/11/25 21:06, John Snow wrote:
> Missed a spot with isort, which now causes the python-minreqs test on
> GitLab to fail. Fix it.
> 
> (Hint: the commands in python/tests/qapi-isort.sh can be run without the
> "-c" parameter to automatically adjust import statements according to
> our style rules. Maybe I should make a pre-submit hook that makes this
> adjustment automatically. What do you think?)
> 
> Fixes: 5bd89761

Fixes: 5bd89761a4b ("qapi/command: Avoid generating unused 
qmp_marshal_output_T")

See Laurent's tips:
https://lore.kernel.org/qemu-devel/6c69b3b6-f1f0-da38-d47a-dba01e33bd6a@redhat.com/

> Signed-off-by: John Snow <jsnow@redhat.com>
> Reviewed-by: Thomas Huth <thuth@redhat.com>
> ---
>   scripts/qapi/commands.py | 5 +----
>   1 file changed, 1 insertion(+), 4 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/3] Python: fix tests
  2025-11-18 20:06 [PATCH 0/3] Python: fix tests John Snow
                   ` (2 preceding siblings ...)
  2025-11-18 20:06 ` [PATCH 3/3] python/qapi: delint import statements John Snow
@ 2025-11-19 11:30 ` Philippe Mathieu-Daudé
  2025-11-19 11:47   ` Richard Henderson
  3 siblings, 1 reply; 7+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-11-19 11:30 UTC (permalink / raw)
  To: John Snow, qemu-devel; +Cc: Michael Roth, Markus Armbruster, Cleber Rosa

On 18/11/25 21:06, John Snow wrote:
> Whack some minor annoyances down to make the tests green again. Fixes
> both minreqs and the optional check-tox.
> 
> John Snow (3):
>    python/mkvenv: ensure HAVE_LIB variables are actually constants
>    python/qapi: add an ignore for Pylint 4.x
>    python/qapi: delint import statements
> 
>   python/scripts/mkvenv.py   | 24 ++++++++++++++++--------
>   python/setup.cfg           |  1 +
>   scripts/qapi/commands.py   |  5 +----
>   scripts/qapi/introspect.py |  2 +-
>   4 files changed, 19 insertions(+), 13 deletions(-)
> 

FTR, per 
https://lore.kernel.org/qemu-devel/20251117185131.953681-1-jsnow@redhat.com/ 
reviews:
Reviewed-by: Thomas Huth <thuth@redhat.com>



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 0/3] Python: fix tests
  2025-11-19 11:30 ` [PATCH 0/3] Python: fix tests Philippe Mathieu-Daudé
@ 2025-11-19 11:47   ` Richard Henderson
  0 siblings, 0 replies; 7+ messages in thread
From: Richard Henderson @ 2025-11-19 11:47 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé, John Snow, qemu-devel
  Cc: Michael Roth, Markus Armbruster, Cleber Rosa

On 11/19/25 12:30, Philippe Mathieu-Daudé wrote:
> On 18/11/25 21:06, John Snow wrote:
>> Whack some minor annoyances down to make the tests green again. Fixes
>> both minreqs and the optional check-tox.
>>
>> John Snow (3):
>>    python/mkvenv: ensure HAVE_LIB variables are actually constants
>>    python/qapi: add an ignore for Pylint 4.x
>>    python/qapi: delint import statements
>>
>>   python/scripts/mkvenv.py   | 24 ++++++++++++++++--------
>>   python/setup.cfg           |  1 +
>>   scripts/qapi/commands.py   |  5 +----
>>   scripts/qapi/introspect.py |  2 +-
>>   4 files changed, 19 insertions(+), 13 deletions(-)

Thanks, John.  I am applying this series to master as a build fix, being the last 
non-flaky failure we have right now.

> FTR, per https://lore.kernel.org/qemu-devel/20251117185131.953681-1-jsnow@redhat.com/ 
> reviews:
> Reviewed-by: Thomas Huth <thuth@redhat.com>

Also, kudos to b4 shazam, which picked up Thomas' r-b automatically.  :-)


r~


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-11-19 11:48 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-18 20:06 [PATCH 0/3] Python: fix tests John Snow
2025-11-18 20:06 ` [PATCH 1/3] python/mkvenv: ensure HAVE_LIB variables are actually constants John Snow
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

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).