typing.Match was removed in Python 3.13, so we need to use re.Match instead. However, Python 3.8 doesn't support using re.Match as a type hint directly, so we need a conditional for now.
The import is written oddly so that "Match" is explicitly re-exported for re-use by other modules. mypy will complain otherwise. Signed-off-by: John Snow <js...@redhat.com> --- scripts/qapi/common.py | 10 +++++++++- scripts/qapi/parser.py | 3 +-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/scripts/qapi/common.py b/scripts/qapi/common.py index 737b059e629..444b3acf53a 100644 --- a/scripts/qapi/common.py +++ b/scripts/qapi/common.py @@ -12,16 +12,24 @@ # See the COPYING file in the top-level directory. import re +import sys from typing import ( Any, Dict, - Match, Optional, Sequence, Union, ) +if sys.version_info < (3, 9): + # typing.Match was removed in 3.13, + # but it's still a necessity in 3.8. + from typing import \ + Match as Match # pylint: disable=useless-import-alias +else: + Match = re.Match + #: Magic string that gets removed along with all space to its right. EATSPACE = '\033EATSPACE.' POINTER_SUFFIX = ' *' + EATSPACE diff --git a/scripts/qapi/parser.py b/scripts/qapi/parser.py index adc85b5b394..9a42b119131 100644 --- a/scripts/qapi/parser.py +++ b/scripts/qapi/parser.py @@ -23,13 +23,12 @@ Dict, List, Mapping, - Match, Optional, Set, Union, ) -from .common import must_match +from .common import Match, must_match from .error import QAPISemError, QAPISourceError from .source import QAPISourceInfo -- 2.45.0