From ced2d656794568517ba9aa28f781f9151d89de54 Mon Sep 17 00:00:00 2001 From: Marco Edward Gorelli Date: Sat, 25 Dec 2021 02:25:03 +0000 Subject: [PATCH 1/1] remove all type: ignores in src/black (GH-2720) Excet ;t --- src/black/linegen.py | 3 ++- src/black/parsing.py | 24 +++++++++++++++--------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/black/linegen.py b/src/black/linegen.py index c1cd6fa..dc238c3 100644 --- a/src/black/linegen.py +++ b/src/black/linegen.py @@ -815,9 +815,10 @@ def normalize_invisible_parens(node: Node, parens_after: Set[str]) -> None: # "import from" nodes store parentheses directly as part of # the statement if is_lpar_token(child): + assert is_rpar_token(node.children[-1]) # make parentheses invisible child.value = "" - node.children[-1].value = "" # type: ignore + node.children[-1].value = "" elif child.type != token.STAR: # insert invisible parentheses node.insert_child(index, Leaf(token.LPAR, "")) diff --git a/src/black/parsing.py b/src/black/parsing.py index c101643..76e9de0 100644 --- a/src/black/parsing.py +++ b/src/black/parsing.py @@ -4,7 +4,7 @@ Parse Python code and perform AST validation. import ast import platform import sys -from typing import Any, Iterable, Iterator, List, Set, Tuple, Type, Union +from typing import Any, AnyStr, Iterable, Iterator, List, Set, Tuple, Type, Union if sys.version_info < (3, 8): from typing_extensions import Final @@ -191,6 +191,16 @@ ast3_AST: Final[Type[ast3.AST]] = ast3.AST ast27_AST: Final[Type[ast27.AST]] = ast27.AST +def _normalize(lineend: AnyStr, value: AnyStr) -> AnyStr: + # To normalize, we strip any leading and trailing space from + # each line... + stripped: List[AnyStr] = [i.strip() for i in value.splitlines()] + normalized = lineend.join(stripped) + # ...and remove any blank lines at the beginning and end of + # the whole string + return normalized.strip() + + def stringify_ast( node: Union[ast.AST, ast3.AST, ast27.AST], depth: int = 0 ) -> Iterator[str]: @@ -254,14 +264,10 @@ def stringify_ast( and field == "value" and isinstance(value, (str, bytes)) ): - lineend = "\n" if isinstance(value, str) else b"\n" - # To normalize, we strip any leading and trailing space from - # each line... - stripped = [line.strip() for line in value.splitlines()] - normalized = lineend.join(stripped) # type: ignore[attr-defined] - # ...and remove any blank lines at the beginning and end of - # the whole string - normalized = normalized.strip() + if isinstance(value, str): + normalized: Union[str, bytes] = _normalize("\n", value) + else: + normalized = _normalize(b"\n", value) else: normalized = value yield f"{' ' * (depth+2)}{normalized!r}, # {value.__class__.__name__}" -- 2.39.5