[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 00/17] qapi: static typing conversion, pt1.5
From: |
John Snow |
Subject: |
[PATCH v3 00/17] qapi: static typing conversion, pt1.5 |
Date: |
Tue, 19 Jan 2021 13:02:25 -0500 |
Hi, this patchset enables strict optional checking in mypy for
everything we have typed so far.
In general, this patchset seeks to clarify Optional[T] vs T and lift the
no-strict-optional restriction in mypy.
Ironing out these issues allows us to be even stricter with our type
checking, which improves consistency in subclass interface types and
should make review a little nicer.
This series is based on (but does not require) the 'qapi: sphinx-autodoc
for qapi module' series.
V3:
Heavily reshuffled. QAPISourceInfo patches are removed in favor of patch
implications for later series, but none here in this series.
001/17:[----] [--] 'qapi/commands: assert arg_type is not None'
002/17:[----] [--] 'qapi/events: fix visit_event typing'
003/17:[----] [--] 'qapi/main: handle theoretical None-return from re.match()'
004/17:[down] 'qapi/gen: inline _wrap_ifcond into end_if()'
Module naming patches begin here. Their ordering is a little troubled,
but I've rebased and re-ordered them too many times and I'm spinning my wheels.
Suggestions welcome.
005/17:[down] 'qapi: pass QAPISchemaModule to visit_module instead of str'
006/17:[down] 'qapi: centralize is_[user|system|builtin]_module methods'
007/17:[down] 'qapi/gen: Replace ._begin_system_module()'
008/17:[down] 'qapi: use explicitly internal module names'
009/17:[down] 'qapi: use './builtin' as the built-in module name'
010/17:[down] 'qapi/gen: Combine ._add_[user|system]_module'
011/17:[down] 'qapi: centralize the built-in module name definition'
This segment of patches focuses on tightening the types in gen.py. #15
is the payoff for 13-14 and several patches in the last segment.
012/17:[----] [-C] 'qapi/gen: write _genc/_genh access shims'
013/17:[down] 'qapi/gen: Support for switching to another module temporarily'
014/17:[down] 'qapi/commands: Simplify command registry generation'
015/17:[down] 'qapi/gen: Drop support for QAPIGen without a file name'
This segment wraps up removing the last non-strict option in mypy.
016/17:[down] 'qapi: type 'info' as Optional[QAPISourceInfo]'
017/17:[----] [--] 'qapi: enable strict-optional checks'
John Snow (12):
qapi/commands: assert arg_type is not None
qapi/events: fix visit_event typing
qapi/main: handle theoretical None-return from re.match()
qapi/gen: inline _wrap_ifcond into end_if()
qapi: pass QAPISchemaModule to visit_module instead of str
qapi: centralize is_[user|system|builtin]_module methods
qapi: use explicitly internal module names
qapi: use './builtin' as the built-in module name
qapi: centralize the built-in module name definition
qapi/gen: write _genc/_genh access shims
qapi: type 'info' as Optional[QAPISourceInfo]
qapi: enable strict-optional checks
Markus Armbruster (5):
qapi/gen: Replace ._begin_system_module()
qapi/gen: Combine ._add_[user|system]_module
qapi/gen: Support for switching to another module temporarily
qapi/commands: Simplify command registry generation
qapi/gen: Drop support for QAPIGen without a file name
docs/sphinx/qapidoc.py | 8 +-
scripts/qapi/commands.py | 62 ++++++++-------
scripts/qapi/events.py | 16 ++--
scripts/qapi/gen.py | 96 ++++++++++++------------
scripts/qapi/main.py | 2 +
scripts/qapi/mypy.ini | 1 -
scripts/qapi/schema.py | 43 +++++++++--
scripts/qapi/types.py | 4 +-
scripts/qapi/visit.py | 6 +-
tests/qapi-schema/comments.out | 2 +-
tests/qapi-schema/doc-good.out | 2 +-
tests/qapi-schema/empty.out | 2 +-
tests/qapi-schema/event-case.out | 2 +-
tests/qapi-schema/include-repetition.out | 2 +-
tests/qapi-schema/include-simple.out | 2 +-
tests/qapi-schema/indented-expr.out | 2 +-
tests/qapi-schema/qapi-schema-test.out | 2 +-
tests/qapi-schema/test-qapi.py | 4 +-
18 files changed, 145 insertions(+), 113 deletions(-)
--
2.26.2
- [PATCH v3 00/17] qapi: static typing conversion, pt1.5,
John Snow <=
- [PATCH v3 03/17] qapi/main: handle theoretical None-return from re.match(), John Snow, 2021/01/19
- [PATCH v3 01/17] qapi/commands: assert arg_type is not None, John Snow, 2021/01/19
- [PATCH v3 06/17] qapi: centralize is_[user|system|builtin]_module methods, John Snow, 2021/01/19
- [PATCH v3 08/17] qapi: use explicitly internal module names, John Snow, 2021/01/19
- [PATCH v3 05/17] qapi: pass QAPISchemaModule to visit_module instead of str, John Snow, 2021/01/19