style: use `@overload` to get rid of mypy only assertions
This commit is contained in:
parent
15c33fbaa3
commit
04f457c4f4
|
@ -25,8 +25,10 @@ import keyword
|
||||||
import re
|
import re
|
||||||
import types
|
import types
|
||||||
from typing import Iterator
|
from typing import Iterator
|
||||||
|
from typing import Literal
|
||||||
from typing import Mapping
|
from typing import Mapping
|
||||||
from typing import NoReturn
|
from typing import NoReturn
|
||||||
|
from typing import overload
|
||||||
from typing import Protocol
|
from typing import Protocol
|
||||||
from typing import Sequence
|
from typing import Sequence
|
||||||
|
|
||||||
|
@ -132,6 +134,14 @@ class Scanner:
|
||||||
)
|
)
|
||||||
yield Token(TokenType.EOF, "", pos)
|
yield Token(TokenType.EOF, "", pos)
|
||||||
|
|
||||||
|
@overload
|
||||||
|
def accept(self, type: TokenType, *, reject: Literal[True]) -> Token: ...
|
||||||
|
|
||||||
|
@overload
|
||||||
|
def accept(
|
||||||
|
self, type: TokenType, *, reject: Literal[False] = False
|
||||||
|
) -> Token | None: ...
|
||||||
|
|
||||||
def accept(self, type: TokenType, *, reject: bool = False) -> Token | None:
|
def accept(self, type: TokenType, *, reject: bool = False) -> Token | None:
|
||||||
if self.current.type is type:
|
if self.current.type is type:
|
||||||
token = self.current
|
token = self.current
|
||||||
|
@ -208,7 +218,6 @@ BUILTIN_MATCHERS = {"True": True, "False": False, "None": None}
|
||||||
|
|
||||||
def single_kwarg(s: Scanner) -> ast.keyword:
|
def single_kwarg(s: Scanner) -> ast.keyword:
|
||||||
keyword_name = s.accept(TokenType.IDENT, reject=True)
|
keyword_name = s.accept(TokenType.IDENT, reject=True)
|
||||||
assert keyword_name is not None # for mypy
|
|
||||||
if not keyword_name.value.isidentifier() or keyword.iskeyword(keyword_name.value):
|
if not keyword_name.value.isidentifier() or keyword.iskeyword(keyword_name.value):
|
||||||
raise ParseError(
|
raise ParseError(
|
||||||
keyword_name.pos + 1,
|
keyword_name.pos + 1,
|
||||||
|
@ -220,7 +229,6 @@ def single_kwarg(s: Scanner) -> ast.keyword:
|
||||||
value: str | int | bool | None = value_token.value[1:-1] # strip quotes
|
value: str | int | bool | None = value_token.value[1:-1] # strip quotes
|
||||||
else:
|
else:
|
||||||
value_token = s.accept(TokenType.IDENT, reject=True)
|
value_token = s.accept(TokenType.IDENT, reject=True)
|
||||||
assert value_token is not None # for mypy
|
|
||||||
if (
|
if (
|
||||||
(number := value_token.value).isdigit()
|
(number := value_token.value).isdigit()
|
||||||
or number.startswith("-")
|
or number.startswith("-")
|
||||||
|
|
Loading…
Reference in New Issue