Based-on: 20200710050649.32434-1-js...@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