Based-on: [email protected]
This series modifies the python/qemu library to comply with mypy --strict.
This requires my "refactor shutdown" patch as a pre-requisite.
v4:
001/16:[----] [--] 'python/qmp.py: Define common types'
002/16:[----] [--] 'iotests.py: use qemu.qmp type aliases'
003/16:[----] [--] 'python/qmp.py: re-absorb MonitorResponseError'
004/16:[----] [--] 'python/qmp.py: Do not return None from cmd_obj'
005/16:[----] [--] 'python/qmp.py: add casts to JSON deserialization'
006/16:[----] [--] 'python/qmp.py: add QMPProtocolError'
007/16:[----] [--] 'python/machine.py: Fix monitor address typing'
008/16:[----] [--] 'python/machine.py: reorder __init__'
009/16:[----] [--] 'python/machine.py: Don't modify state in _base_args()'
010/16:[----] [--] 'python/machine.py: Handle None events in events_wait'
011/16:[----] [--] 'python/machine.py: use qmp.command'
012/16:[0010] [FC] 'python/machine.py: Add _qmp access shim'
013/16:[----] [-C] 'python/machine.py: fix _popen access'
014/16:[----] [--] 'python/qemu: make 'args' style arguments immutable'
015/16:[----] [--] 'iotests.py: Adjust HMP kwargs typing'
016/16:[----] [-C] 'python/qemu: Add mypy type annotations'
- 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.
---
Open RFC: What's the right way to hook this into make check to prevent
regressions?
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 | 294 ++++++++++++++++++++--------------
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, 300 insertions(+), 184 deletions(-)
--
2.21.3