[PATCH 00/20] python/qemu: strictly typed mypy conversion, pt2

John Snow posted 20 patches 3 years, 7 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20201006235817.3280413-1-jsnow@redhat.com
Maintainers: Max Reitz <mreitz@redhat.com>, Kevin Wolf <kwolf@redhat.com>, Cleber Rosa <crosa@redhat.com>, Eduardo Habkost <ehabkost@redhat.com>
python/mypy.ini               |   4 +
python/qemu/.isort.cfg        |   7 +
python/qemu/accel.py          |   9 +-
python/qemu/console_socket.py |  54 +++---
python/qemu/machine.py        | 306 +++++++++++++++++++++-------------
python/qemu/qmp.py            | 114 ++++++++-----
python/qemu/qtest.py          |  55 +++---
tests/qemu-iotests/iotests.py |   2 +-
8 files changed, 331 insertions(+), 220 deletions(-)
create mode 100644 python/mypy.ini
create mode 100644 python/qemu/.isort.cfg
[PATCH 00/20] python/qemu: strictly typed mypy conversion, pt2
Posted by John Snow 3 years, 7 months ago
Continuing where I left off prior to the 5.1 release, this series
touches up a few odds and ends and introduces mypy hints.

What's new:

- Using isort to solidify import order
- Patches adding small corrections and typing for console_socket
- A few error class changes for qmp.py

Like my QAPI series, this requires:

- pylint >= 2.6.0
- flake8 >= 3.8.0
- mypy >= 0.770
- isort >= 4.3.0 (Presumably...)

What this series doesn't do:

- Create a proper python package
- Establish a CI test to prevent regressions
- Fix the docstring conventions in the library

Those are coming soon! (and in the order mentioned.)

Changes against the last version of this series that was sent prior to
5.1:

001/20:[down] 'python/qemu: use isort to lay out imports'
002/20:[0005] [FC] 'python/machine.py: Fix monitor address typing'
003/20:[0015] [FC] 'python/machine.py: reorder __init__'
004/20:[0009] [FC] 'python/machine.py: Don't modify state in _base_args()'
005/20:[0002] [FC] 'python/machine.py: Handle None events in events_wait'
006/20:[0006] [FC] 'python/machine.py: use qmp.command'
007/20:[----] [-C] 'python/machine.py: Add _qmp access shim'
008/20:[----] [-C] 'python/machine.py: fix _popen access'
009/20:[0006] [FC] 'python/qemu: make 'args' style arguments immutable'
010/20:[----] [--] 'iotests.py: Adjust HMP kwargs typing'
011/20:[0010] [FC] 'python/qemu: Add mypy type annotations'
012/20:[down] 'python/qemu/console_socket.py: Correct type of recv()'
013/20:[down] 'python/qemu/console_socket.py: fix typing of settimeout'
014/20:[down] 'python/qemu/console_socket.py: Clarify type of drain_thread'
015/20:[down] 'python/qemu/console_socket.py: Add type hint annotations'
016/20:[down] 'python/console_socket: avoid encoding to/from string'
017/20:[down] 'python/qemu/qmp.py: Preserve error context on re-raise'
018/20:[down] 'python/qemu/qmp.py: re-raise OSError when encountered'
019/20:[down] 'python/qemu/qmp.py: Straighten out exception hierarchy'
020/20:[down] 'python: add mypy config'

02: import order differences, context changes from console_socket.py
03: (minor) changes for console_socket, RB-s dropped just in case
04: import order differences
05: import order differences
06: import order differences
09: import order differences
11: import order differences, small changes for console_socket

John Snow (20):
  python/qemu: use isort to lay out imports
  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/console_socket.py: Correct type of recv()
  python/qemu/console_socket.py: fix typing of settimeout
  python/qemu/console_socket.py: Clarify type of drain_thread
  python/qemu/console_socket.py: Add type hint annotations
  python/console_socket: avoid encoding to/from string
  python/qemu/qmp.py: Preserve error context on re-raise
  python/qemu/qmp.py: re-raise OSError when encountered
  python/qemu/qmp.py: Straighten out exception hierarchy
  python: add mypy config

 python/mypy.ini               |   4 +
 python/qemu/.isort.cfg        |   7 +
 python/qemu/accel.py          |   9 +-
 python/qemu/console_socket.py |  54 +++---
 python/qemu/machine.py        | 306 +++++++++++++++++++++-------------
 python/qemu/qmp.py            | 114 ++++++++-----
 python/qemu/qtest.py          |  55 +++---
 tests/qemu-iotests/iotests.py |   2 +-
 8 files changed, 331 insertions(+), 220 deletions(-)
 create mode 100644 python/mypy.ini
 create mode 100644 python/qemu/.isort.cfg

-- 
2.26.2



Re: [PATCH 00/20] python/qemu: strictly typed mypy conversion, pt2
Posted by John Snow 3 years, 6 months ago
On 10/6/20 7:57 PM, John Snow wrote:
> Continuing where I left off prior to the 5.1 release, this series
> touches up a few odds and ends and introduces mypy hints.
> 
> What's new:
> 
> - Using isort to solidify import order
> - Patches adding small corrections and typing for console_socket
> - A few error class changes for qmp.py
> 
> Like my QAPI series, this requires:
> 
> - pylint >= 2.6.0
> - flake8 >= 3.8.0
> - mypy >= 0.770
> - isort >= 4.3.0 (Presumably...)
> 
> What this series doesn't do:
> 
> - Create a proper python package
> - Establish a CI test to prevent regressions
> - Fix the docstring conventions in the library
> 
> Those are coming soon! (and in the order mentioned.)
> 
> Changes against the last version of this series that was sent prior to
> 5.1:
> 
> 001/20:[down] 'python/qemu: use isort to lay out imports'
> 002/20:[0005] [FC] 'python/machine.py: Fix monitor address typing'
> 003/20:[0015] [FC] 'python/machine.py: reorder __init__'
> 004/20:[0009] [FC] 'python/machine.py: Don't modify state in _base_args()'
> 005/20:[0002] [FC] 'python/machine.py: Handle None events in events_wait'
> 006/20:[0006] [FC] 'python/machine.py: use qmp.command'
> 007/20:[----] [-C] 'python/machine.py: Add _qmp access shim'
> 008/20:[----] [-C] 'python/machine.py: fix _popen access'
> 009/20:[0006] [FC] 'python/qemu: make 'args' style arguments immutable'
> 010/20:[----] [--] 'iotests.py: Adjust HMP kwargs typing'
> 011/20:[0010] [FC] 'python/qemu: Add mypy type annotations'
> 012/20:[down] 'python/qemu/console_socket.py: Correct type of recv()'
> 013/20:[down] 'python/qemu/console_socket.py: fix typing of settimeout'
> 014/20:[down] 'python/qemu/console_socket.py: Clarify type of drain_thread'
> 015/20:[down] 'python/qemu/console_socket.py: Add type hint annotations'
> 016/20:[down] 'python/console_socket: avoid encoding to/from string'
> 017/20:[down] 'python/qemu/qmp.py: Preserve error context on re-raise'
> 018/20:[down] 'python/qemu/qmp.py: re-raise OSError when encountered'
> 019/20:[down] 'python/qemu/qmp.py: Straighten out exception hierarchy'
> 020/20:[down] 'python: add mypy config'
> 
> 02: import order differences, context changes from console_socket.py
> 03: (minor) changes for console_socket, RB-s dropped just in case
> 04: import order differences
> 05: import order differences
> 06: import order differences
> 09: import order differences
> 11: import order differences, small changes for console_socket
> 
> John Snow (20):
>    python/qemu: use isort to lay out imports
>    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/console_socket.py: Correct type of recv()
>    python/qemu/console_socket.py: fix typing of settimeout
>    python/qemu/console_socket.py: Clarify type of drain_thread
>    python/qemu/console_socket.py: Add type hint annotations
>    python/console_socket: avoid encoding to/from string
>    python/qemu/qmp.py: Preserve error context on re-raise
>    python/qemu/qmp.py: re-raise OSError when encountered
>    python/qemu/qmp.py: Straighten out exception hierarchy
>    python: add mypy config
> 
>   python/mypy.ini               |   4 +
>   python/qemu/.isort.cfg        |   7 +
>   python/qemu/accel.py          |   9 +-
>   python/qemu/console_socket.py |  54 +++---
>   python/qemu/machine.py        | 306 +++++++++++++++++++++-------------
>   python/qemu/qmp.py            | 114 ++++++++-----
>   python/qemu/qtest.py          |  55 +++---
>   tests/qemu-iotests/iotests.py |   2 +-
>   8 files changed, 331 insertions(+), 220 deletions(-)
>   create mode 100644 python/mypy.ini
>   create mode 100644 python/qemu/.isort.cfg
> 

Thanks, I am staging patches 1-17 -- alongside the Python maintainers 
patch I have been kicking around -- to my python branch.

Cleaning up the error classes in 18-19 is looking more fiddly, so I'm 
spinning it out into a new small series for better review.

https://gitlab.com/jsnow/qemu.git python
https://gitlab.com/jsnow/qemu/-/tree/python

--js