[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 09/20] qapi/schema: assert resolve_type has 'info' and 'wh
From: |
Markus Armbruster |
Subject: |
Re: [PATCH v3 09/20] qapi/schema: assert resolve_type has 'info' and 'what' args on error |
Date: |
Tue, 20 Feb 2024 11:48:01 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
John Snow <jsnow@redhat.com> writes:
> resolve_type() is generally used to resolve configuration-provided type
> names into type objects, and generally requires valid 'info' and 'what'
> parameters.
>
> In some cases, such as with QAPISchemaArrayType.check(), resolve_type
> may be used to resolve built-in types and as such will not have an
> 'info' argument, but also must not fail in this scenario.
>
> Use an assertion to sate mypy that we will indeed have 'info' and 'what'
> parameters for the error pathway in resolve_type.
>
> Note: there are only three callsites to resolve_type at present where
> "info" is perceived to be possibly None:
Who is the perceiver? mypy?
>
> 1) QAPISchemaArrayType.check()
> 2) QAPISchemaObjectTypeMember.check()
> 3) QAPISchemaEvent.check()
>
> Of those three, only the first actually ever passes None; the other two
> are limited by their base class initializers which accept info=None, but
> neither subclass actually use a None value in practice, currently.
>
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
> scripts/qapi/schema.py | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/scripts/qapi/schema.py b/scripts/qapi/schema.py
> index e617abb03af..573be7275a6 100644
> --- a/scripts/qapi/schema.py
> +++ b/scripts/qapi/schema.py
> @@ -1004,6 +1004,7 @@ def lookup_type(self, name):
> def resolve_type(self, name, info, what):
> typ = self.lookup_type(name)
> if not typ:
> + assert info and what # built-in types must not fail lookup
> if callable(what):
> what = what(info)
> raise QAPISemError(
<
- [PATCH v3 00/20] qapi: statically type schema.py, John Snow, 2024/02/01
- [PATCH v3 09/20] qapi/schema: assert resolve_type has 'info' and 'what' args on error, John Snow, 2024/02/01
- Re: [PATCH v3 09/20] qapi/schema: assert resolve_type has 'info' and 'what' args on error,
Markus Armbruster <=
- [PATCH v3 04/20] qapi/schema: declare type for QAPISchemaObjectTypeMember.type, John Snow, 2024/02/01
- [PATCH v3 07/20] qapi/schema: adjust type narrowing for mypy's benefit, John Snow, 2024/02/01
- [PATCH v3 06/20] qapi/schema: make c_type() and json_type() abstract methods, John Snow, 2024/02/01
- [PATCH v3 12/20] qapi/schema: assert info is present when necessary, John Snow, 2024/02/01
- [PATCH v3 13/20] qapi/schema: split "checked" field into "checking" and "checked", John Snow, 2024/02/01
- [PATCH v3 01/20] qapi: sort pylint suppressions, John Snow, 2024/02/01
- [PATCH v3 14/20] qapi/schema: Don't initialize "members" with `None`, John Snow, 2024/02/01
- [PATCH v3 02/20] qapi/schema: add pylint suppressions, John Snow, 2024/02/01