John Snow <js...@redhat.com> writes: > Annotations do not change runtime behavior. > This commit *only* adds annotations. > > Signed-off-by: John Snow <js...@redhat.com> > Reviewed-by: Eduardo Habkost <ehabk...@redhat.com> > Reviewed-by: Cleber Rosa <cr...@redhat.com> > --- > scripts/qapi/events.py | 46 ++++++++++++++++++++++++++++++++---------- > scripts/qapi/mypy.ini | 5 ----- > 2 files changed, 35 insertions(+), 16 deletions(-) > > diff --git a/scripts/qapi/events.py b/scripts/qapi/events.py > index f840a62ed92..57e0939e963 100644 > --- a/scripts/qapi/events.py > +++ b/scripts/qapi/events.py > @@ -12,19 +12,31 @@ > See the COPYING file in the top-level directory. > """ > > +from typing import List > + > from .common import c_enum_const, c_name, mcgen > from .gen import QAPISchemaModularCVisitor, build_params, ifcontext > -from .schema import QAPISchemaEnumMember > +from .schema import ( > + QAPISchema, > + QAPISchemaEnumMember, > + QAPISchemaFeature, > + QAPISchemaObjectType, > +) > +from .source import QAPISourceInfo > from .types import gen_enum, gen_enum_lookup > > > -def build_event_send_proto(name, arg_type, boxed): > +def build_event_send_proto(name: str, > + arg_type: QAPISchemaObjectType, > + boxed: bool) -> str: > return 'void qapi_event_send_%(c_name)s(%(param)s)' % { > 'c_name': c_name(name.lower()), > 'param': build_params(arg_type, boxed)} > > > -def gen_event_send_decl(name, arg_type, boxed): > +def gen_event_send_decl(name: str, > + arg_type: QAPISchemaObjectType, > + boxed: bool) -> str: > return mcgen(''' > > %(proto)s; > @@ -33,7 +45,7 @@ def gen_event_send_decl(name, arg_type, boxed): > > > # Declare and initialize an object 'qapi' using parameters from > build_params() > -def gen_param_var(typ): > +def gen_param_var(typ: QAPISchemaObjectType) -> str: > assert not typ.variants > ret = mcgen(''' > %(c_name)s param = { > @@ -61,7 +73,11 @@ def gen_param_var(typ): > return ret > > > -def gen_event_send(name, arg_type, boxed, event_enum_name, event_emit): > +def gen_event_send(name: str, > + arg_type: QAPISchemaObjectType, > + boxed: bool, > + event_enum_name: str, > + event_emit: str) -> str: > # FIXME: Our declaration of local variables (and of 'errp' in the > # parameter list) can collide with exploded members of the event's > # data type passed in as parameters. If this collision ever hits in > @@ -137,15 +153,15 @@ def gen_event_send(name, arg_type, boxed, > event_enum_name, event_emit): > > class QAPISchemaGenEventVisitor(QAPISchemaModularCVisitor): > > - def __init__(self, prefix): > + def __init__(self, prefix: str): > super().__init__( > prefix, 'qapi-events', > ' * Schema-defined QAPI/QMP events', None, __doc__) > self._event_enum_name = c_name(prefix + 'QAPIEvent', protect=False) > - self._event_enum_members = [] > + self._event_enum_members: List[QAPISchemaEnumMember] = [] > self._event_emit_name = c_name(prefix + 'qapi_event_emit') > > - def _begin_user_module(self, name): > + def _begin_user_module(self, name: str) -> None: > events = self._module_basename('qapi-events', name) > types = self._module_basename('qapi-types', name) > visit = self._module_basename('qapi-visit', name) > @@ -168,7 +184,7 @@ def _begin_user_module(self, name): > ''', > types=types)) > > - def visit_end(self): > + def visit_end(self) -> None:
Ignorant question: what's the difference between -> None (like here) and nothing (like __init__() above? > self._add_system_module('emit', ' * QAPI Events emission') > self._genc.preamble_add(mcgen(''' > #include "qemu/osdep.h" [...]