From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>,
"John Snow" <jsnow@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>,
"Eduardo Habkost" <ehabkost@redhat.com>,
"Cleber Rosa" <crosa@redhat.com>
Subject: [PATCH v3 00/17] qapi: static typing conversion, pt1.5
Date: Tue, 19 Jan 2021 13:02:25 -0500 [thread overview]
Message-ID: <20210119180242.1570753-1-jsnow@redhat.com> (raw)
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
next reply other threads:[~2021-01-19 19:14 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-19 18:02 John Snow [this message]
2021-01-19 18:02 ` [PATCH v3 01/17] qapi/commands: assert arg_type is not None John Snow
2021-01-19 18:02 ` [PATCH v3 02/17] qapi/events: fix visit_event typing John Snow
2021-01-19 18:02 ` [PATCH v3 03/17] qapi/main: handle theoretical None-return from re.match() John Snow
2021-01-19 18:02 ` [PATCH v3 04/17] qapi/gen: inline _wrap_ifcond into end_if() John Snow
2021-01-19 18:02 ` [PATCH v3 05/17] qapi: pass QAPISchemaModule to visit_module instead of str John Snow
2021-01-20 12:07 ` Markus Armbruster
2021-01-20 15:51 ` John Snow
2021-01-21 7:22 ` Markus Armbruster
2021-01-20 16:02 ` Eric Blake
2021-01-20 16:16 ` John Snow
2021-01-21 7:23 ` Markus Armbruster
2021-01-19 18:02 ` [PATCH v3 06/17] qapi: centralize is_[user|system|builtin]_module methods John Snow
2021-01-20 13:56 ` Markus Armbruster
2021-01-19 18:02 ` [PATCH v3 07/17] qapi/gen: Replace ._begin_system_module() John Snow
2021-01-19 18:02 ` [PATCH v3 08/17] qapi: use explicitly internal module names John Snow
2021-01-19 18:02 ` [PATCH v3 09/17] qapi: use './builtin' as the built-in module name John Snow
2021-01-20 14:14 ` Markus Armbruster
2021-01-19 18:02 ` [PATCH v3 10/17] qapi/gen: Combine ._add_[user|system]_module John Snow
2021-01-20 14:20 ` Markus Armbruster
2021-01-20 16:10 ` John Snow
2021-01-21 7:40 ` Markus Armbruster
2021-01-19 18:02 ` [PATCH v3 11/17] qapi: centralize the built-in module name definition John Snow
2021-01-19 18:02 ` [PATCH v3 12/17] qapi/gen: write _genc/_genh access shims John Snow
2021-01-19 18:02 ` [PATCH v3 13/17] qapi/gen: Support for switching to another module temporarily John Snow
2021-01-19 18:02 ` [PATCH v3 14/17] qapi/commands: Simplify command registry generation John Snow
2021-01-19 18:02 ` [PATCH v3 15/17] qapi/gen: Drop support for QAPIGen without a file name John Snow
2021-01-19 18:02 ` [PATCH v3 16/17] qapi: type 'info' as Optional[QAPISourceInfo] John Snow
2021-01-19 18:02 ` [PATCH v3 17/17] qapi: enable strict-optional checks John Snow
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210119180242.1570753-1-jsnow@redhat.com \
--to=jsnow@redhat.com \
--cc=armbru@redhat.com \
--cc=crosa@redhat.com \
--cc=ehabkost@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).