* [PATCH v2] python: bump minimum requirements so they are compatible with 3.12
@ 2023-07-05 11:57 Paolo Bonzini
0 siblings, 0 replies; only message in thread
From: Paolo Bonzini @ 2023-07-05 11:57 UTC (permalink / raw)
To: qemu-devel; +Cc: jsnow
There are several Python 3.12 issues in QEMU's python/ directory, but
a particularly problematic one when debugging them is that one cannot
even use minreqs.txt in a Python 3.12 virtual environment to test with
locked package versions.
Bump the mypy and wrapt versions to fix this, while remaining
within the realm of versions compatible with Python 3.7.
This requires a workaround for a mypy false positive
qemu/qmp/qmp_tui.py:350: error: Non-overlapping equality check (left operand type: "Literal[Runstate.DISCONNECTING]", right operand type: "Literal[Runstate.IDLE]") [comparison-overlap]
where mypy does not realize that self.disconnect() could change
the value of self.runstate.
The remaining issues are due to missing support for Python 3.12
in released versions of flake8 and pylint, which should be
related to https://github.com/PyCQA/pycodestyle/issues/1145 and
https://github.com/pylint-dev/astroid/issues/2201 respectively.
Supersedes: <20230705112536.54025-1-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
v1->v2: switch to the python-qemu-qmp fix for the mypy issue,
which however requires merging the two patches into
one for bisectability
python/qemu/qmp/qmp_tui.py | 5 ++++-
python/setup.cfg | 2 +-
python/tests/minreqs.txt | 9 ++++-----
3 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/python/qemu/qmp/qmp_tui.py b/python/qemu/qmp/qmp_tui.py
index 83691447231..2d9ebbd20bc 100644
--- a/python/qemu/qmp/qmp_tui.py
+++ b/python/qemu/qmp/qmp_tui.py
@@ -346,7 +346,10 @@ async def manage_connection(self) -> None:
self._set_status('[Disconnected]')
await self.disconnect()
# check if a retry is needed
- if self.runstate == Runstate.IDLE:
+ # mypy 1.4.0 doesn't believe runstate can change after
+ # disconnect(), hence the cast.
+ state = cast(Runstate, self.runstate)
+ if state == Runstate.IDLE:
continue
await self.runstate_changed()
diff --git a/python/setup.cfg b/python/setup.cfg
index 42f0b0be07d..5d7e95f5d24 100644
--- a/python/setup.cfg
+++ b/python/setup.cfg
@@ -39,7 +39,7 @@ devel =
flake8 >= 5.0.4
fusepy >= 2.0.4
isort >= 5.1.2
- mypy >= 0.780
+ mypy >= 1.4.0
pylint >= 2.17.3
tox >= 3.18.0
urwid >= 2.1.2
diff --git a/python/tests/minreqs.txt b/python/tests/minreqs.txt
index 1ce72cef6d8..979461be6bb 100644
--- a/python/tests/minreqs.txt
+++ b/python/tests/minreqs.txt
@@ -28,7 +28,7 @@ avocado-framework==90.0
# Linters
flake8==5.0.4
isort==5.1.2
-mypy==0.780
+mypy==1.4.0
pylint==2.17.3
# Transitive flake8 dependencies
@@ -37,12 +37,11 @@ pycodestyle==2.9.1
pyflakes==2.5.0
# Transitive mypy dependencies
-mypy-extensions==0.4.3
-typed-ast==1.4.0
-typing-extensions==4.5.0
+mypy-extensions==1.0.0
+typing-extensions==4.7.1
# Transitive pylint dependencies
astroid==2.15.4
lazy-object-proxy==1.4.0
toml==0.10.0
-wrapt==1.12.1
+wrapt==1.14.0
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2023-07-05 11:58 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-05 11:57 [PATCH v2] python: bump minimum requirements so they are compatible with 3.12 Paolo Bonzini
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).