John Snow <js...@redhat.com> writes: > Mypy cannot generally understand that these regex functions cannot > possibly fail. Add a _nofail helper that clarifies this for mypy.
Convention wants a blank line here. > Signed-off-by: John Snow <js...@redhat.com> > --- > scripts/qapi/common.py | 8 +++++++- > scripts/qapi/main.py | 6 ++---- > scripts/qapi/parser.py | 13 +++++++------ > 3 files changed, 16 insertions(+), 11 deletions(-) > > diff --git a/scripts/qapi/common.py b/scripts/qapi/common.py > index cbd3fd81d36..d38c1746767 100644 > --- a/scripts/qapi/common.py > +++ b/scripts/qapi/common.py > @@ -12,7 +12,7 @@ > # See the COPYING file in the top-level directory. > > import re > -from typing import Optional, Sequence > +from typing import Match, Optional, Sequence > > > #: Magic string that gets removed along with all space to its right. > @@ -210,3 +210,9 @@ def gen_endif(ifcond: Sequence[str]) -> str: > #endif /* %(cond)s */ > ''', cond=ifc) > return ret > + > + > +def match_nofail(pattern: str, string: str) -> Match[str]: > + match = re.match(pattern, string) > + assert match is not None > + return match Name it must_match()? You choose. I wish we could have more stating typing with less notational overhead, but no free lunch... [...]