qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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




             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).