[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 1/7] qapi/expr: Split check_expr out from check_exprs
From: |
Markus Armbruster |
Subject: |
Re: [PATCH v2 1/7] qapi/expr: Split check_expr out from check_exprs |
Date: |
Wed, 08 Feb 2023 17:08:50 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) |
John Snow <jsnow@redhat.com> writes:
> Primarily, this reduces a nesting level of a particularly long
> block. It's mostly code movement, but a new docstring is created.
>
> It also has the effect of creating a fairly convenient "catch point" in
> check_exprs for exception handling without making the nesting level even
> worse.
>
> Signed-off-by: John Snow <jsnow@redhat.com>
>
> ---
>
> This patch was originally written as part of my effort to factor out
> QAPISourceInfo from this file by having expr.py raise a simple
> exception, then catch and wrap it at the higher level.
>
> This series doesn't do that anymore, but reducing the nesting level
> still seemed subjectively nice. It's not crucial.
Drawback: git-blame can't see through the move, and blames *you* for
that.
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
> scripts/qapi/expr.py | 179 +++++++++++++++++++++++--------------------
> 1 file changed, 95 insertions(+), 84 deletions(-)
>
> diff --git a/scripts/qapi/expr.py b/scripts/qapi/expr.py
> index 5a1782b57ea..d01543006d8 100644
> --- a/scripts/qapi/expr.py
> +++ b/scripts/qapi/expr.py
> @@ -595,6 +595,99 @@ def check_event(expr: _JSONObject, info: QAPISourceInfo)
> -> None:
> check_type(args, info, "'data'", allow_dict=not boxed)
>
>
> +def check_expr(expr_elem: _JSONObject) -> None:
> + """
> + Validate and normalize a parsed QAPI schema expression.
> +
> + :param expr_elem: The parsed expression to normalize and validate.
> +
> + :raise QAPISemError: When this expression fails validation.
> + :return: None, ``expr`` is normalized in-place as needed.
``expr`` is not defined here. Suggest ", the expression is normalized".
> + """
> + # Expression
> + assert isinstance(expr_elem['expr'], dict)
> + for key in expr_elem['expr'].keys():
> + assert isinstance(key, str)
> + expr: _JSONObject = expr_elem['expr']
[...]
- [PATCH v2 0/7] qapi: static typing conversion, pt5c, John Snow, 2023/02/07
- [PATCH v2 2/7] qapi/parser.py: add ParsedExpression type, John Snow, 2023/02/07
- [PATCH v2 6/7] qapi: remove _JSONObject, John Snow, 2023/02/07
- [PATCH v2 3/7] qapi/expr: Use TopLevelExpr where appropriate, John Snow, 2023/02/07
- [PATCH v2 1/7] qapi/expr: Split check_expr out from check_exprs, John Snow, 2023/02/07
- Re: [PATCH v2 1/7] qapi/expr: Split check_expr out from check_exprs,
Markus Armbruster <=
- [PATCH v2 5/7] qapi/parser: [RFC] add QAPIExpression, John Snow, 2023/02/07
- [PATCH v2 7/7] qapi: remove JSON value FIXME, John Snow, 2023/02/07
- [PATCH v2 4/7] qapi/expr: add typing workaround for AbstractSet, John Snow, 2023/02/07
- Re: [PATCH v2 0/7] qapi: static typing conversion, pt5c, Markus Armbruster, 2023/02/08