This is *v4*, for some definitions of "version" and "four".
v4: - Rebased on top of latest QAPIDoc patches. - A couple of hotfixes on top of the QAPIDoc patches. - Adjusted commit message phrasing - Changed the "split checked into checked and checking" patch and follow-up. v3: - 01: fixed alphabetization (... sigh) - 03: updated docstring, added super calls, renamed argument to @defn, reflowed long lines - 04: updated commit message - 05: updated commit message - 06: pushed type hints into later commit - 09: removed default argument and stuffed into next patch - 10: Added the parts Markus doesn't like (Sorry) - 11: updated commit message - 12: updated commit message - 13: Split into two patches. Kept stuff Markus doesn't like (Sorry) - 14: New, split from 13. v2: - dropped the resolve_type refactoring patch - added QAPISchemaDefinition - misc bits and pieces. 001/19:[down] 'qapi: sort pylint suppressions' New, Markus's suggestion. 002/19:[0001] [FC] 'qapi/schema: add pylint suppressions' Added newline, Markus's RB 003/19:[down] 'qapi: create QAPISchemaDefinition' New, Markus's suggestion. 004/19:[0002] [FC] 'qapi/schema: declare type for QAPISchemaObjectTypeMember.type' Adjusted commit message and comment. 005/19:[down] 'qapi/schema: declare type for QAPISchemaArrayType.element_type' Patch renamed; removed @property trick in favor of static type declaration 006/19:[0009] [FC] 'qapi/schema: make c_type() and json_type() abstract methods' Use abc.ABC and @abstractmethod 007/19:[0001] [FC] 'qapi/schema: adjust type narrowing for mypy's benefit' Adjusted commit message; left in an assertion that is removed later instead. 008/19:[down] 'qapi/schema: add type narrowing to lookup_type()' Renamed removed type hints which get added later in the series instead simplified logic. 009/19:[down] 'qapi/schema: allow resolve_type to be used for built-in types' New patch. (Types are added later.) 010/19:[down] 'qapi: use schema.resolve_type instead of schema.lookup_type' New patch, replaces old 07/19 "assert schema.lookup_type did not fail" 011/19:[0011] [FC] 'qapi/schema: fix QAPISchemaArrayType.check's call to resolve_type' Dramatically simplified. 012/19:[----] [--] 'qapi/schema: assert info is present when necessary' 013/19:[----] [--] 'qapi/schema: split "checked" field into "checking" and "checked"' Changed the commit message, but actually struggled finding anything simpler than what I already had, owing to the fact that q_empty is a valid construct and I can't seem to avoid adding a new state variable here. 014/19:[----] [-C] 'qapi/schema: fix typing for QAPISchemaVariants.tag_member' Also unchanged from review, I think this is simplest still... 015/19:[down] 'qapi/schema: assert inner type of QAPISchemaVariants in check_clash()' Renamed, changed commit message and comment. 016/19:[----] [--] 'qapi/parser: demote QAPIExpression to Dict[str, Any]' 017/19:[0042] [FC] 'qapi/schema: add type hints' Mostly contextual changes. 018/19:[----] [--] 'qapi/schema: turn on mypy strictness' 019/19:[0006] [FC] 'qapi/schema: remove unnecessary asserts' Zapped a few more. John Snow (23): qapi/parser: fix typo - self.returns.info => self.errors.info qapi/parser: shush up pylint qapi: sort pylint suppressions qapi/schema: add pylint suppressions qapi: create QAPISchemaDefinition qapi/schema: declare type for QAPISchemaObjectTypeMember.type qapi/schema: declare type for QAPISchemaArrayType.element_type qapi/schema: make c_type() and json_type() abstract methods qapi/schema: adjust type narrowing for mypy's benefit qapi/schema: add type narrowing to lookup_type() qapi/schema: assert resolve_type has 'info' and 'what' args on error qapi: use schema.resolve_type instead of schema.lookup_type qapi/schema: fix QAPISchemaArrayType.check's call to resolve_type qapi/schema: assert info is present when necessary qapi/schema: add _check_complete flag qapi/schema: Don't initialize "members" with `None` qapi/schema: fix typing for QAPISchemaVariants.tag_member qapi/schema: assert inner type of QAPISchemaVariants in check_clash() qapi/parser: demote QAPIExpression to Dict[str, Any] qapi/parser.py: assert member.info is present in connect_member qapi/schema: add type hints qapi/schema: turn on mypy strictness qapi/schema: remove unnecessary asserts scripts/qapi/introspect.py | 4 +- scripts/qapi/mypy.ini | 5 - scripts/qapi/parser.py | 7 +- scripts/qapi/pylintrc | 11 +- scripts/qapi/schema.py | 792 ++++++++++++++++++++++++------------- 5 files changed, 534 insertions(+), 285 deletions(-) -- 2.44.0