Based-on: 20200710050649.32434-1-jsnow@redhat.com
This series modifies the python/qemu library to comply with mypy --strict,
pylint, and flake8.
This requires my "refactor shutdown" patch as a pre-requisite.
v5: (Things unchanged omitted)
003/16:[----] [-C] 'python/qmp.py: re-absorb MonitorResponseError'
009/16:[----] [-C] 'python/machine.py: Don't modify state in _base_args()'
012/16:[0004] [FC] 'python/machine.py: Add _qmp access shim'
013/16:[0002] [FC] 'python/machine.py: fix _popen access'
016/16:[0004] [FC] 'python/qemu: Add mypy type annotations'
-- Rebased on "refactor shutdown" v5
12: Dependent changes from more extensive shutdown() refactoring
13: Dependent changes; one less ._popen access.
16: Dependent changes; _post_shutdown return annotation fell down here.
wait annotation got bumped up to the previous series.
v4:
- Rebased on "refactor shutdown" v4
- Fixed _qmp access for scripts that disable QMP
v3:
005: Removed a cast, per Kevin Wolf's tip
010: Renamed with correct function name;
Rewrote docstring and added comments
016: Use SocketAddrT instead of Union[Tuple[str,str],str]
"v2":
- This version supports iotests 297
- Many patches merged by Phil are removed
- Replaces iotests.py type aliases with centralized ones
(See patch 2)
- Imports etc are reworked to use the non-installable
package layout instead. (Mostly important for patch 3)
Testing this out:
- You'll need Python3.6+
- I encourage you to use a virtual environment!
- You don't necessarily need these exact versions, but I didn't test the
lower bounds, use older versions at your peril:
- pylint==2.5.0
- mypy=0.770
- flake8=3.7.8
> cd ~/src/qemu/python/
> flake8 qemu
> mypy --strict qemu
> cd qemu
> pylint *.py
These should all 100% pass.
John Snow (16):
python/qmp.py: Define common types
iotests.py: use qemu.qmp type aliases
python/qmp.py: re-absorb MonitorResponseError
python/qmp.py: Do not return None from cmd_obj
python/qmp.py: add casts to JSON deserialization
python/qmp.py: add QMPProtocolError
python/machine.py: Fix monitor address typing
python/machine.py: reorder __init__
python/machine.py: Don't modify state in _base_args()
python/machine.py: Handle None events in events_wait
python/machine.py: use qmp.command
python/machine.py: Add _qmp access shim
python/machine.py: fix _popen access
python/qemu: make 'args' style arguments immutable
iotests.py: Adjust HMP kwargs typing
python/qemu: Add mypy type annotations
python/qemu/accel.py | 8 +-
python/qemu/machine.py | 296 ++++++++++++++++++++--------------
python/qemu/qmp.py | 111 +++++++++----
python/qemu/qtest.py | 53 +++---
scripts/render_block_graph.py | 7 +-
tests/qemu-iotests/iotests.py | 11 +-
6 files changed, 301 insertions(+), 185 deletions(-)
--
2.21.3