From 4ee5b94584e4226e84eb84a834d5aeb4ef570fe1 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 15 Feb 2024 13:40:11 +0530 Subject: [PATCH] Improve typing info for lex_scanner --- kitty/search_query_parser.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/kitty/search_query_parser.py b/kitty/search_query_parser.py index 436a866de..54b1b289a 100644 --- a/kitty/search_query_parser.py +++ b/kitty/search_query_parser.py @@ -6,6 +6,8 @@ from functools import lru_cache from gettext import gettext as _ from typing import Callable, Iterator, List, NamedTuple, Optional, Sequence, Set, Tuple, TypeVar, Union +from .types import run_once + class ParseException(Exception): @@ -115,13 +117,15 @@ class Token(NamedTuple): val: str -lex_scanner = getattr(re, 'Scanner')([ - (r'[()]', lambda x, t: Token(TokenType.OPCODE, t)), - (r'@.+?:[^")\s]+', lambda x, t: Token(TokenType.WORD, str(t))), - (r'[^"()\s]+', lambda x, t: Token(TokenType.WORD, str(t))), - (r'".*?((? Callable[[str], Tuple[List[Token], str]]: + return getattr(re, 'Scanner')([ # type: ignore + (r'[()]', lambda x, t: Token(TokenType.OPCODE, t)), + (r'@.+?:[^")\s]+', lambda x, t: Token(TokenType.WORD, str(t))), + (r'[^"()\s]+', lambda x, t: Token(TokenType.WORD, str(t))), + (r'".*?((? str: for k, v in REPLACEMENTS: