From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: Michael Roth <michael.roth@amd.com>,
Markus Armbruster <armbru@redhat.com>,
John Snow <jsnow@redhat.com>
Subject: [PATCH v2 3/7] qapi/expr: Use TopLevelExpr where appropriate
Date: Tue, 7 Feb 2023 21:13:02 -0500 [thread overview]
Message-ID: <20230208021306.870657-4-jsnow@redhat.com> (raw)
In-Reply-To: <20230208021306.870657-1-jsnow@redhat.com>
Remove most usages of _JSONObject with a more semantically meaningful
alias. Note that this is only a semantic alias; the distinction is not
enforced by the type system. This is merely a benefit for the human:
instead of check_xyz functions operating on a representation of some
"JSON Object", we can document them as operating on QAPI's Top Level
Expressions directly; it's more semantically meaningful.
Signed-off-by: John Snow <jsnow@redhat.com>
---
scripts/qapi/expr.py | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/scripts/qapi/expr.py b/scripts/qapi/expr.py
index 293f830fe9d..338c9ea4131 100644
--- a/scripts/qapi/expr.py
+++ b/scripts/qapi/expr.py
@@ -44,7 +44,7 @@
from .common import c_name
from .error import QAPISemError
-from .parser import ParsedExpression
+from .parser import ParsedExpression, TopLevelExpr
from .source import QAPISourceInfo
@@ -229,11 +229,11 @@ def pprint(elems: Iterable[str]) -> str:
pprint(unknown), pprint(allowed)))
-def check_flags(expr: _JSONObject, info: QAPISourceInfo) -> None:
+def check_flags(expr: TopLevelExpr, info: QAPISourceInfo) -> None:
"""
Ensure flag members (if present) have valid values.
- :param expr: The expression to validate.
+ :param expr: The `TopLevelExpr` to validate.
:param info: QAPI schema source file information.
:raise QAPISemError:
@@ -447,9 +447,9 @@ def check_features(features: Optional[object],
check_if(feat, info, source)
-def check_enum(expr: _JSONObject, info: QAPISourceInfo) -> None:
+def check_enum(expr: TopLevelExpr, info: QAPISourceInfo) -> None:
"""
- Normalize and validate this expression as an ``enum`` definition.
+ Normalize and validate this `TopLevelExpr` as an ``enum`` definition.
:param expr: The expression to validate.
:param info: QAPI schema source file information.
@@ -486,9 +486,9 @@ def check_enum(expr: _JSONObject, info: QAPISourceInfo) -> None:
check_features(member.get('features'), info)
-def check_struct(expr: _JSONObject, info: QAPISourceInfo) -> None:
+def check_struct(expr: TopLevelExpr, info: QAPISourceInfo) -> None:
"""
- Normalize and validate this expression as a ``struct`` definition.
+ Normalize and validate this `TopLevelExpr` as a ``struct`` definition.
:param expr: The expression to validate.
:param info: QAPI schema source file information.
@@ -503,9 +503,9 @@ def check_struct(expr: _JSONObject, info: QAPISourceInfo) -> None:
check_type(expr.get('base'), info, "'base'")
-def check_union(expr: _JSONObject, info: QAPISourceInfo) -> None:
+def check_union(expr: TopLevelExpr, info: QAPISourceInfo) -> None:
"""
- Normalize and validate this expression as a ``union`` definition.
+ Normalize and validate this `TopLevelExpr` as a ``union`` definition.
:param expr: The expression to validate.
:param info: QAPI schema source file information.
@@ -531,9 +531,9 @@ def check_union(expr: _JSONObject, info: QAPISourceInfo) -> None:
check_type(value['type'], info, source, allow_array=not base)
-def check_alternate(expr: _JSONObject, info: QAPISourceInfo) -> None:
+def check_alternate(expr: TopLevelExpr, info: QAPISourceInfo) -> None:
"""
- Normalize and validate this expression as an ``alternate`` definition.
+ Normalize and validate this `TopLevelExpr` as an ``alternate`` definition.
:param expr: The expression to validate.
:param info: QAPI schema source file information.
@@ -557,9 +557,9 @@ def check_alternate(expr: _JSONObject, info: QAPISourceInfo) -> None:
check_type(value['type'], info, source, allow_array=True)
-def check_command(expr: _JSONObject, info: QAPISourceInfo) -> None:
+def check_command(expr: TopLevelExpr, info: QAPISourceInfo) -> None:
"""
- Normalize and validate this expression as a ``command`` definition.
+ Normalize and validate this `TopLevelExpr` as a ``command`` definition.
:param expr: The expression to validate.
:param info: QAPI schema source file information.
@@ -577,9 +577,9 @@ def check_command(expr: _JSONObject, info: QAPISourceInfo) -> None:
check_type(rets, info, "'returns'", allow_array=True)
-def check_event(expr: _JSONObject, info: QAPISourceInfo) -> None:
+def check_event(expr: TopLevelExpr, info: QAPISourceInfo) -> None:
"""
- Normalize and validate this expression as an ``event`` definition.
+ Normalize and validate this `TopLevelExpr` as an ``event`` definition.
:param expr: The expression to validate.
:param info: QAPI schema source file information.
--
2.39.0
next prev parent reply other threads:[~2023-02-08 2:14 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-08 2:12 [PATCH v2 0/7] qapi: static typing conversion, pt5c John Snow
2023-02-08 2:13 ` [PATCH v2 1/7] qapi/expr: Split check_expr out from check_exprs John Snow
2023-02-08 16:08 ` Markus Armbruster
2023-02-08 2:13 ` [PATCH v2 2/7] qapi/parser.py: add ParsedExpression type John Snow
2023-02-08 16:17 ` Markus Armbruster
2023-02-08 18:01 ` John Snow
2023-02-08 2:13 ` John Snow [this message]
2023-02-08 16:22 ` [PATCH v2 3/7] qapi/expr: Use TopLevelExpr where appropriate Markus Armbruster
2023-02-08 2:13 ` [PATCH v2 4/7] qapi/expr: add typing workaround for AbstractSet John Snow
2023-02-08 2:13 ` [PATCH v2 5/7] qapi/parser: [RFC] add QAPIExpression John Snow
2023-02-08 16:28 ` Markus Armbruster
2023-02-08 17:17 ` John Snow
2023-02-08 21:05 ` Markus Armbruster
2023-02-09 6:57 ` Markus Armbruster
2023-02-08 2:13 ` [PATCH v2 6/7] qapi: remove _JSONObject John Snow
2023-02-08 2:13 ` [PATCH v2 7/7] qapi: remove JSON value FIXME John Snow
2023-02-08 16:31 ` [PATCH v2 0/7] qapi: static typing conversion, pt5c Markus Armbruster
2023-02-08 17:02 ` John Snow
2023-02-09 7:08 ` Markus Armbruster
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=20230208021306.870657-4-jsnow@redhat.com \
--to=jsnow@redhat.com \
--cc=armbru@redhat.com \
--cc=michael.roth@amd.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).