Hi
On 10/26/20 5:36 PM, John Snow wrote:
> based-on: <20201026194251.11075-1-jsnow@redhat.com>
> [PATCH v2 00/11] qapi: static typing conversion, pt2
Ping,
This series can be reviewed independently of pt2, so I encourage you to
try if you have the time.
>
> Hi, this series adds static type hints to the QAPI module.
> This is part three, and it focuses on expr.py.
>
> Part 3: https://gitlab.com/jsnow/qemu/-/tree/python-qapi-cleanup-pt3
> Everything: https://gitlab.com/jsnow/qemu/-/tree/python-qapi-cleanup-pt6
>
> - Requires Python 3.6+
> - Requires mypy 0.770 or newer (for type analysis only)
> - Requires pylint 2.6.0 or newer (for lint checking only)
>
> Type hints are added in patches that add *only* type hints and change no
> other behavior. Any necessary changes to behavior to accommodate typing
> are split out into their own tiny patches.
>
> Every commit should pass with:
> - flake8 qapi/
> - pylint --rcfile=qapi/pylintrc qapi/
> - mypy --config-file=qapi/mypy.ini qapi/
>
> V2:
> - Rebased on the latest V2
> 002/16:[0001] [FC] 'qapi/expr.py: Check for dict instead of OrderedDict'
> - Import order differences
> 007/16:[0006] [FC] 'qapi/expr.py: Add casts in a few select cases'
> - Import order differences
> 008/16:[0006] [FC] 'qapi/expr.py: add type hint annotations'
> - Import order differents
> 012/16:[0066] [FC] 'qapi/expr.py: Add docstrings'
> - Various docstring changes for Sphinx
> 014/16:[0004] [FC] 'qapi/expr.py: Use tuples instead of lists for static data'
> - Change to accommodate new 'coroutine' key
> 015/16:[0006] [FC] 'qapi/expr.py: move related checks inside check_xxx functions'
> - Fix check order (ehabkost)
>
> John Snow (16):
> qapi/expr.py: Remove 'info' argument from nested check_if_str
> qapi/expr.py: Check for dict instead of OrderedDict
> qapi/expr.py: constrain incoming _expression_ types
> qapi/expr.py: Add assertion for union type 'check_dict'
> qapi/expr.py: move string check upwards in check_type
> qapi/expr.py: Check type of 'data' member
> qapi/expr.py: Add casts in a few select cases
> qapi/expr.py: add type hint annotations
> qapi/expr.py: rewrite check_if
> qapi/expr.py: Remove single-letter variable
> qapi/expr.py: enable pylint checks
> qapi/expr.py: Add docstrings
> qapi/expr.py: Modify check_keys to accept any Iterable
> qapi/expr.py: Use tuples instead of lists for static data
> qapi/expr.py: move related checks inside check_xxx functions
> qapi/expr.py: Use an _expression_ checker dispatch table
>
> scripts/qapi/expr.py | 447 +++++++++++++++++++++++++++++++-----------
> scripts/qapi/mypy.ini | 5 -
> scripts/qapi/pylintrc | 1 -
> 3 files changed, 334 insertions(+), 119 deletions(-)
>
Looks all good to me. And you have already reviewed-by on all patches. Given that it's hardening the current code, I would suggest to merge it during the freeze. Unless Markus can maintain a qapi-next branch where we can base our work on?
thanks
--
Marc-André Lureau