Message ID | 20201005195158.2348217-19-jsnow@redhat.com |
---|---|
State | Superseded |
Headers | show |
Series | qapi: static typing conversion, pt1 | expand |
John Snow <jsnow@redhat.com> writes: > Fix two very minor issues, What are the two issues? I'm asking because I can see only one. > and then establish a mypy type-checking > baseline. Any particular reason this can't go before PATCH 15 "qapi/common.py: add type hint annotations". > Like pylint, this should be run from the folder above: > > > mypy --config-file=qapi/mypy.ini qapi/ > > This is designed and tested for mypy 0.770 or greater. > > Signed-off-by: John Snow <jsnow@redhat.com> > Tested-by: Eduardo Habkost <ehabkost@redhat.com> > Reviewed-by: Cleber Rosa <crosa@redhat.com> > Tested-by: Cleber Rosa <crosa@redhat.com> > --- > scripts/qapi/mypy.ini | 60 ++++++++++++++++++++++++++++++++++++++++++ > scripts/qapi/schema.py | 3 ++- > 2 files changed, 62 insertions(+), 1 deletion(-) > create mode 100644 scripts/qapi/mypy.ini > > diff --git a/scripts/qapi/mypy.ini b/scripts/qapi/mypy.ini > new file mode 100644 > index 00000000000..00fac15dc6e > --- /dev/null > +++ b/scripts/qapi/mypy.ini > @@ -0,0 +1,60 @@ > +[mypy] > +strict = True > +strict_optional = False > +disallow_untyped_calls = False > +python_version = 3.6 > + > +[mypy-qapi.commands] > +disallow_untyped_defs = False > +disallow_incomplete_defs = False > +check_untyped_defs = False > + > +[mypy-qapi.error] > +disallow_untyped_defs = False > +disallow_incomplete_defs = False > +check_untyped_defs = False > + > +[mypy-qapi.events] > +disallow_untyped_defs = False > +disallow_incomplete_defs = False > +check_untyped_defs = False > + > +[mypy-qapi.expr] > +disallow_untyped_defs = False > +disallow_incomplete_defs = False > +check_untyped_defs = False > + > +[mypy-qapi.gen] > +disallow_untyped_defs = False > +disallow_incomplete_defs = False > +check_untyped_defs = False > + > +[mypy-qapi.introspect] > +disallow_untyped_defs = False > +disallow_incomplete_defs = False > +check_untyped_defs = False > + > +[mypy-qapi.parser] > +disallow_untyped_defs = False > +disallow_incomplete_defs = False > +check_untyped_defs = False > + > +[mypy-qapi.schema] > +disallow_untyped_defs = False > +disallow_incomplete_defs = False > +check_untyped_defs = False > + > +[mypy-qapi.source] > +disallow_untyped_defs = False > +disallow_incomplete_defs = False > +check_untyped_defs = False > + > +[mypy-qapi.types] > +disallow_untyped_defs = False > +disallow_incomplete_defs = False > +check_untyped_defs = False > + > +[mypy-qapi.visit] > +disallow_untyped_defs = False > +disallow_incomplete_defs = False > +check_untyped_defs = False > diff --git a/scripts/qapi/schema.py b/scripts/qapi/schema.py > index 74c6b96d391..483b4b68dff 100644 > --- a/scripts/qapi/schema.py > +++ b/scripts/qapi/schema.py > @@ -17,6 +17,7 @@ > from collections import OrderedDict > import os > import re > +from typing import Optional > > from .common import POINTER_SUFFIX, c_name > from .error import QAPIError, QAPISemError > @@ -25,7 +26,7 @@ > > > class QAPISchemaEntity: > - meta = None > + meta: Optional[str] = None > > def __init__(self, name, info, doc, ifcond=None, features=None): > assert name is None or isinstance(name, str)
On 10/7/20 5:25 AM, Markus Armbruster wrote: > John Snow <jsnow@redhat.com> writes: > >> Fix two very minor issues, > > What are the two issues? I'm asking because I can see only one. > Bitrot! The other one got fixed elsewhere and rebase didn't conflict, so I didn't update the commit message. >> and then establish a mypy type-checking >> baseline. > > Any particular reason this can't go before PATCH 15 "qapi/common.py: add > type hint annotations". > Just the way the chips fell. common.py does not check until this very commit. Adding a mypy config can be shuffled up earlier and earlier by determining which checks to ignore and adding them, but I'm not sure who that benefits. >> Like pylint, this should be run from the folder above: >> >> > mypy --config-file=qapi/mypy.ini qapi/ >> >> This is designed and tested for mypy 0.770 or greater. >> >> Signed-off-by: John Snow <jsnow@redhat.com> >> Tested-by: Eduardo Habkost <ehabkost@redhat.com> >> Reviewed-by: Cleber Rosa <crosa@redhat.com> >> Tested-by: Cleber Rosa <crosa@redhat.com> >> --- >> scripts/qapi/mypy.ini | 60 ++++++++++++++++++++++++++++++++++++++++++ >> scripts/qapi/schema.py | 3 ++- >> 2 files changed, 62 insertions(+), 1 deletion(-) >> create mode 100644 scripts/qapi/mypy.ini >> >> diff --git a/scripts/qapi/mypy.ini b/scripts/qapi/mypy.ini >> new file mode 100644 >> index 00000000000..00fac15dc6e >> --- /dev/null >> +++ b/scripts/qapi/mypy.ini >> @@ -0,0 +1,60 @@ >> +[mypy] >> +strict = True >> +strict_optional = False >> +disallow_untyped_calls = False >> +python_version = 3.6 >> + >> +[mypy-qapi.commands] >> +disallow_untyped_defs = False >> +disallow_incomplete_defs = False >> +check_untyped_defs = False >> + >> +[mypy-qapi.error] >> +disallow_untyped_defs = False >> +disallow_incomplete_defs = False >> +check_untyped_defs = False >> + >> +[mypy-qapi.events] >> +disallow_untyped_defs = False >> +disallow_incomplete_defs = False >> +check_untyped_defs = False >> + >> +[mypy-qapi.expr] >> +disallow_untyped_defs = False >> +disallow_incomplete_defs = False >> +check_untyped_defs = False >> + >> +[mypy-qapi.gen] >> +disallow_untyped_defs = False >> +disallow_incomplete_defs = False >> +check_untyped_defs = False >> + >> +[mypy-qapi.introspect] >> +disallow_untyped_defs = False >> +disallow_incomplete_defs = False >> +check_untyped_defs = False >> + >> +[mypy-qapi.parser] >> +disallow_untyped_defs = False >> +disallow_incomplete_defs = False >> +check_untyped_defs = False >> + >> +[mypy-qapi.schema] >> +disallow_untyped_defs = False >> +disallow_incomplete_defs = False >> +check_untyped_defs = False >> + >> +[mypy-qapi.source] >> +disallow_untyped_defs = False >> +disallow_incomplete_defs = False >> +check_untyped_defs = False >> + >> +[mypy-qapi.types] >> +disallow_untyped_defs = False >> +disallow_incomplete_defs = False >> +check_untyped_defs = False >> + >> +[mypy-qapi.visit] >> +disallow_untyped_defs = False >> +disallow_incomplete_defs = False >> +check_untyped_defs = False >> diff --git a/scripts/qapi/schema.py b/scripts/qapi/schema.py >> index 74c6b96d391..483b4b68dff 100644 >> --- a/scripts/qapi/schema.py >> +++ b/scripts/qapi/schema.py >> @@ -17,6 +17,7 @@ >> from collections import OrderedDict >> import os >> import re >> +from typing import Optional >> >> from .common import POINTER_SUFFIX, c_name >> from .error import QAPIError, QAPISemError >> @@ -25,7 +26,7 @@ >> >> >> class QAPISchemaEntity: >> - meta = None >> + meta: Optional[str] = None >> >> def __init__(self, name, info, doc, ifcond=None, features=None): >> assert name is None or isinstance(name, str)
John Snow <jsnow@redhat.com> writes: > On 10/7/20 5:25 AM, Markus Armbruster wrote: >> John Snow <jsnow@redhat.com> writes: >> >>> Fix two very minor issues, >> What are the two issues? I'm asking because I can see only one. >> > > Bitrot! The other one got fixed elsewhere and rebase didn't conflict, > so I didn't update the commit message. > >>> and then establish a mypy type-checking >>> baseline. >> Any particular reason this can't go before PATCH 15 "qapi/common.py: add >> type hint annotations". >> > > Just the way the chips fell. common.py does not check until this very > commit. > > Adding a mypy config can be shuffled up earlier and earlier by > determining which checks to ignore and adding them, but I'm not sure > who that benefits. I like symmetry, but it's okay as is. I asked to make sure I'm not missing something more subtle. [...]
diff --git a/scripts/qapi/mypy.ini b/scripts/qapi/mypy.ini new file mode 100644 index 00000000000..00fac15dc6e --- /dev/null +++ b/scripts/qapi/mypy.ini @@ -0,0 +1,60 @@ +[mypy] +strict = True +strict_optional = False +disallow_untyped_calls = False +python_version = 3.6 + +[mypy-qapi.commands] +disallow_untyped_defs = False +disallow_incomplete_defs = False +check_untyped_defs = False + +[mypy-qapi.error] +disallow_untyped_defs = False +disallow_incomplete_defs = False +check_untyped_defs = False + +[mypy-qapi.events] +disallow_untyped_defs = False +disallow_incomplete_defs = False +check_untyped_defs = False + +[mypy-qapi.expr] +disallow_untyped_defs = False +disallow_incomplete_defs = False +check_untyped_defs = False + +[mypy-qapi.gen] +disallow_untyped_defs = False +disallow_incomplete_defs = False +check_untyped_defs = False + +[mypy-qapi.introspect] +disallow_untyped_defs = False +disallow_incomplete_defs = False +check_untyped_defs = False + +[mypy-qapi.parser] +disallow_untyped_defs = False +disallow_incomplete_defs = False +check_untyped_defs = False + +[mypy-qapi.schema] +disallow_untyped_defs = False +disallow_incomplete_defs = False +check_untyped_defs = False + +[mypy-qapi.source] +disallow_untyped_defs = False +disallow_incomplete_defs = False +check_untyped_defs = False + +[mypy-qapi.types] +disallow_untyped_defs = False +disallow_incomplete_defs = False +check_untyped_defs = False + +[mypy-qapi.visit] +disallow_untyped_defs = False +disallow_incomplete_defs = False +check_untyped_defs = False diff --git a/scripts/qapi/schema.py b/scripts/qapi/schema.py index 74c6b96d391..483b4b68dff 100644 --- a/scripts/qapi/schema.py +++ b/scripts/qapi/schema.py @@ -17,6 +17,7 @@ from collections import OrderedDict import os import re +from typing import Optional from .common import POINTER_SUFFIX, c_name from .error import QAPIError, QAPISemError @@ -25,7 +26,7 @@ class QAPISchemaEntity: - meta = None + meta: Optional[str] = None def __init__(self, name, info, doc, ifcond=None, features=None): assert name is None or isinstance(name, str)