On Tue, Sep 22, 2020 at 05:00:48PM -0400, John Snow wrote: > Annotations do not change runtime behavior. > This commit *only* adds annotations. > > Signed-off-by: John Snow <js...@redhat.com> > --- > scripts/qapi/gen.py | 102 +++++++++++++++++++++++--------------------- > 1 file changed, 53 insertions(+), 49 deletions(-) > > diff --git a/scripts/qapi/gen.py b/scripts/qapi/gen.py > index cb2b2655c3..df8cf8271c 100644 > --- a/scripts/qapi/gen.py > +++ b/scripts/qapi/gen.py > @@ -17,7 +17,7 @@ > import errno > import os > import re > -from typing import Optional > +from typing import Dict, Generator, List, Optional, Tuple > > from .common import ( > c_fname, > @@ -32,31 +32,31 @@ > QAPISchemaObjectType, > QAPISchemaVisitor, > ) > +from .source import QAPISourceInfo > > > class QAPIGen: > - > - def __init__(self, fname): > + def __init__(self, fname: Optional[str]): > self.fname = fname > self._preamble = '' > self._body = '' > > - def preamble_add(self, text): > + def preamble_add(self, text: str) -> None: > self._preamble += text > > - def add(self, text): > + def add(self, text: str) -> None: > self._body += text > > - def get_content(self): > + def get_content(self) -> str: > return self._top() + self._preamble + self._body + self._bottom() > > - def _top(self): > + def _top(self) -> str: > return '' > > - def _bottom(self): > + def _bottom(self) -> str: > return '' > > - def write(self, output_dir): > + def write(self, output_dir: str) -> None: > # Include paths starting with ../ are used to reuse modules of the > main > # schema in specialised schemas. Don't overwrite the files that are > # already generated for the main schema. > @@ -81,7 +81,7 @@ def write(self, output_dir): > f.close() > > > -def _wrap_ifcond(ifcond, before, after): > +def _wrap_ifcond(ifcond: List[str], before: str, after: str) -> str: > if before == after: > return after # suppress empty #if ... #endif > > @@ -121,40 +121,38 @@ def build_params(arg_type: > Optional[QAPISchemaObjectType], > > > class QAPIGenCCode(QAPIGen): > - > - def __init__(self, fname): > + def __init__(self, fname: Optional[str]): > super().__init__(fname) > - self._start_if = None > + self._start_if: Optional[Tuple[List[str], str, str]] = None > > - def start_if(self, ifcond): > + def start_if(self, ifcond: List[str]) -> None: > assert self._start_if is None > self._start_if = (ifcond, self._body, self._preamble) > > - def end_if(self): > + def end_if(self) -> None: > assert self._start_if > self._wrap_ifcond() > self._start_if = None > > - def _wrap_ifcond(self): > + def _wrap_ifcond(self) -> None: > self._body = _wrap_ifcond(self._start_if[0], > self._start_if[1], self._body) > self._preamble = _wrap_ifcond(self._start_if[0], > self._start_if[2], self._preamble) > > - def get_content(self): > + def get_content(self) -> str: > assert self._start_if is None > return super().get_content() > > > class QAPIGenC(QAPIGenCCode): > - > - def __init__(self, fname, blurb, pydoc): > + def __init__(self, fname: str, blurb: str, pydoc: str): > super().__init__(fname) > self._blurb = blurb > self._copyright = '\n * '.join(re.findall(r'^Copyright .*', pydoc, > re.MULTILINE)) > > - def _top(self): > + def _top(self) -> str: > return mcgen(''' > /* AUTOMATICALLY GENERATED, DO NOT MODIFY */ > > @@ -170,7 +168,7 @@ def _top(self): > ''', > blurb=self._blurb, copyright=self._copyright) > > - def _bottom(self): > + def _bottom(self) -> str: > return mcgen(''' > > /* Dummy declaration to prevent empty .o file */ > @@ -180,16 +178,16 @@ def _bottom(self): > > > class QAPIGenH(QAPIGenC): > - > - def _top(self): > + def _top(self) -> str: > return super()._top() + guardstart(self.fname) > > - def _bottom(self): > + def _bottom(self) -> str: > return guardend(self.fname) > > > @contextmanager > -def ifcontext(ifcond, *args): > +def ifcontext(ifcond: List[str], > + *args: QAPIGenCCode) -> Generator[None, None, None]:
IIUC, this could simply be "Iterator[None]" instead of "Generator[None, None, None]". Anyway, Reviewed-by: Cleber Rosa <cr...@redhat.com>
signature.asc
Description: PGP signature