From f61bef829a16cd93e6621e562c82a40eb4f4e4f8 Mon Sep 17 00:00:00 2001 From: hauntsaninja Date: Sun, 25 Sep 2022 14:10:16 -0700 Subject: [PATCH 1/3] Use --no-implicit-optional for type checking --- parso/grammar.py | 12 ++++++------ parso/python/tokenize.py | 6 +++--- parso/utils.py | 4 ++-- test/normalizer_issue_files/python.py | 6 +++--- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/parso/grammar.py b/parso/grammar.py index 43b7be94..4dd06bde 100644 --- a/parso/grammar.py +++ b/parso/grammar.py @@ -47,15 +47,15 @@ def __init__(self, text: str, *, tokenizer, parser=BaseParser, diff_parser=None) self._hashed = hashlib.sha256(text.encode("utf-8")).hexdigest() def parse(self, - code: Union[str, bytes] = None, + code: Optional[Union[str, bytes]] = None, *, error_recovery=True, - path: Union[os.PathLike, str] = None, - start_symbol: str = None, + path: Optional[Union[os.PathLike, str]] = None, + start_symbol: Optional[str] = None, cache=False, diff_cache=False, - cache_path: Union[os.PathLike, str] = None, - file_io: FileIO = None) -> _NodeT: + cache_path: Optional[Union[os.PathLike, str]] = None, + file_io: Optional[FileIO] = None) -> _NodeT: """ If you want to parse a Python file you want to start here, most likely. @@ -231,7 +231,7 @@ def _tokenize(self, code): return tokenize(code, version_info=self.version_info) -def load_grammar(*, version: str = None, path: str = None): +def load_grammar(*, version: Optional[str] = None, path: Optional[str] = None): """ Loads a :py:class:`parso.Grammar`. The default version is the current Python version. diff --git a/parso/python/tokenize.py b/parso/python/tokenize.py index e3ffe440..6788b276 100644 --- a/parso/python/tokenize.py +++ b/parso/python/tokenize.py @@ -15,8 +15,8 @@ import re import itertools as _itertools from codecs import BOM_UTF8 -from typing import NamedTuple, Tuple, Iterator, Iterable, List, Dict, \ - Pattern, Set +from typing import NamedTuple, Tuple, Iterator, Iterable, List, Dict \ + Pattern, Set, Optional from parso.python.token import PythonTokenTypes from parso.utils import split_lines, PythonVersionInfo, parse_version_string @@ -364,7 +364,7 @@ def tokenize_lines( lines: Iterable[str], *, version_info: PythonVersionInfo, - indents: List[int] = None, + indents: Optional[List[int]] = None, start_pos: Tuple[int, int] = (1, 0), is_first_token=True, ) -> Iterator[PythonToken]: diff --git a/parso/utils.py b/parso/utils.py index 6ad1ea26..8511689f 100644 --- a/parso/utils.py +++ b/parso/utils.py @@ -2,7 +2,7 @@ import sys from ast import literal_eval from functools import total_ordering -from typing import NamedTuple, Sequence, Union +from typing import Optional, NamedTuple, Sequence, Union # The following is a list in Python that are line breaks in str.splitlines, but # not in Python. In Python only \r (Carriage Return, 0xD) and \n (Line Feed, @@ -180,7 +180,7 @@ def _parse_version(version) -> PythonVersionInfo: return PythonVersionInfo(major, minor) -def parse_version_string(version: str = None) -> PythonVersionInfo: +def parse_version_string(version: Optional[str] = None) -> PythonVersionInfo: """ Checks for a valid version number (e.g. `3.8` or `3.10.1` or `3`) and returns a corresponding version info that is always two characters long in diff --git a/test/normalizer_issue_files/python.py b/test/normalizer_issue_files/python.py index 566e9036..9286af2c 100644 --- a/test/normalizer_issue_files/python.py +++ b/test/normalizer_issue_files/python.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -from typing import ClassVar, List +from typing import Optional, ClassVar, List print(1, 2) @@ -62,8 +62,8 @@ async def f(x): return 2 # Annotated Function Definitions # Okay -def munge(input: AnyStr, sep: AnyStr = None, limit=1000, - extra: Union[str, dict] = None) -> AnyStr: +def munge(input: AnyStr, sep: Optional[AnyStr] = None, limit=1000, + extra: Optional[Union[str, dict]] = None) -> AnyStr: pass From 676b3606d877969a62843a291186673e0bbcced3 Mon Sep 17 00:00:00 2001 From: hauntsaninja Date: Sun, 25 Sep 2022 14:12:47 -0700 Subject: [PATCH 2/3] mypy config --- setup.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.cfg b/setup.cfg index 433824a3..ddc0903f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -23,3 +23,4 @@ warn_unused_configs = True warn_unreachable = True strict_equality = True +no_implicit_optional = True From aa74b512082ea22225c9d6cb13d173993ee18827 Mon Sep 17 00:00:00 2001 From: hauntsaninja Date: Sun, 25 Sep 2022 14:14:01 -0700 Subject: [PATCH 3/3] fixup --- parso/python/tokenize.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parso/python/tokenize.py b/parso/python/tokenize.py index 6788b276..998b8cbc 100644 --- a/parso/python/tokenize.py +++ b/parso/python/tokenize.py @@ -15,7 +15,7 @@ import re import itertools as _itertools from codecs import BOM_UTF8 -from typing import NamedTuple, Tuple, Iterator, Iterable, List, Dict \ +from typing import NamedTuple, Tuple, Iterator, Iterable, List, Dict, \ Pattern, Set, Optional from parso.python.token import PythonTokenTypes