qapi/introspect: Use @dataclass to simplify

A TODO comment in class Annotated reminds us to simplify it once we
can use @dataclass, new in Python 3.7.  We have that now, so do it.

There's a similar comment in scripts/qapi/source.py, but I can't
figure out how to use @dataclass there.  Left for another day.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20250227080757.3978333-4-armbru@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
Markus Armbruster 2025-02-27 09:07:57 +01:00
parent 5fbc8126ac
commit e6985cc440

View file

@ -11,6 +11,7 @@ This work is licensed under the terms of the GNU GPL, version 2.
See the COPYING file in the top-level directory. See the COPYING file in the top-level directory.
""" """
from dataclasses import dataclass
from typing import ( from typing import (
Any, Any,
Dict, Dict,
@ -79,19 +80,16 @@ SchemaInfoCommand = Dict[str, object]
_ValueT = TypeVar('_ValueT', bound=_Value) _ValueT = TypeVar('_ValueT', bound=_Value)
@dataclass
class Annotated(Generic[_ValueT]): class Annotated(Generic[_ValueT]):
""" """
Annotated generally contains a SchemaInfo-like type (as a dict), Annotated generally contains a SchemaInfo-like type (as a dict),
But it also used to wrap comments/ifconds around scalar leaf values, But it also used to wrap comments/ifconds around scalar leaf values,
for the benefit of features and enums. for the benefit of features and enums.
""" """
# TODO: Remove after Python 3.7 adds @dataclass: value: _ValueT
# pylint: disable=too-few-public-methods ifcond: QAPISchemaIfCond
def __init__(self, value: _ValueT, ifcond: QAPISchemaIfCond, comment: Optional[str] = None
comment: Optional[str] = None):
self.value = value
self.comment: Optional[str] = comment
self.ifcond = ifcond
def _tree_to_qlit(obj: JSONValue, def _tree_to_qlit(obj: JSONValue,