This is part five, and focuses on QAPISchemaParser in parser.py. It does not touch QAPIDoc yet, which will be covered next.
gitlab: https://gitlab.com/jsnow/qemu/-/commits/python-qapi-cleanup-pt5a merge-request (and CI): https://gitlab.com/jsnow/qemu/-/merge_requests/3 I encourage you to leave comments on the gitlab MR request link! Let's try an experiment. (Of course, I will still response to critique on the list, as usual.) The patches that belong to just part five start here: https://gitlab.com/jsnow/qemu/-/merge_requests/3/diffs?commit_id=7cc329b57bbc5504cba7552be6c0502081aca5f0 At the top near "Viewing commit 7cc329b5", you can click "Next" to move on to the next patch after you're done leaving comments on a single commit. Give it a whirl! Requirements: - Python 3.6+ - mypy >= 0.770 - pylint >= 2.6.0 (2.7.0+ when using Python 3.9+) Every commit should pass with: - `isort -c qapi/` - `flake8 qapi/` - `pylint --rcfile=qapi/pylintrc qapi/` - `mypy --config-file=qapi/mypy.ini qapi/` John Snow (22): qapi/parser: Don't try to handle file errors qapi/source: [RFC] add "with_column" contextmanager qapi/source: Remove line number from QAPISourceInfo initializer qapi/parser: factor parsing routine into method qapi/parser: Assert lexer value is a string qapi/parser: assert get_expr returns object in outer loop qapi/parser: assert object keys are strings qapi/parser: Use @staticmethod where appropriate qapi: add match_nofail helper qapi/parser: Fix typing of token membership tests qapi/parser: Rework _check_pragma_list_of_str as a TypeGuard qapi/parser: add type hint annotations qapi/parser: [RFC] overload the return type of get_expr qapi/parser: Remove superfluous list constructor qapi/parser: allow 'ch' variable name qapi/parser: add docstrings CHECKPOINT qapi: [WIP] Rip QAPIDoc out of parser.py qapi: [WIP] Add type ignores for qapidoc.py qapi: [WIP] Import QAPIDoc from qapidoc Signed-off-by: John Snow <js...@redhat.com> qapi: [WIP] Add QAPIDocError qapi: [WIP] Enable linters on parser.py scripts/qapi/common.py | 8 +- scripts/qapi/error.py | 8 +- scripts/qapi/expr.py | 2 +- scripts/qapi/main.py | 14 +- scripts/qapi/mypy.ini | 2 +- scripts/qapi/parser.py | 566 +++++++++++++--------------------------- scripts/qapi/pylintrc | 3 +- scripts/qapi/qapidoc.py | 360 +++++++++++++++++++++++++ scripts/qapi/source.py | 32 ++- 9 files changed, 581 insertions(+), 414 deletions(-) create mode 100644 scripts/qapi/qapidoc.py -- 2.30.2