John Snow <js...@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 <js...@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 <js...@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']

[...]


Reply via email to