Message ID | 20201026213637.47087-1-jsnow@redhat.com |
---|---|
Headers | show |
Series | qapi: static typing conversion, pt3 | expand |
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(-) >
Hi On Wed, Nov 4, 2020 at 5:16 AM John Snow <jsnow@redhat.com> wrote: > 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