Simplify some code flow

Put empty lines after control flow changes.
This commit is contained in:
Łukasz Langa 2019-10-28 17:44:30 +01:00
parent 0cf0d68cf2
commit c1fe3aa4f8
No known key found for this signature in database
GPG Key ID: B26995E310250568

View File

@ -1250,6 +1250,7 @@ def is_collection_with_optional_trailing_comma(self) -> bool:
"""
if not self.leaves or len(self.leaves) < 4:
return False
# Look for and address a trailing colon.
if self.leaves[-1].type == token.COLON:
closer = self.leaves[-2]
@ -1259,6 +1260,7 @@ def is_collection_with_optional_trailing_comma(self) -> bool:
close_index = -1
if closer.type not in CLOSING_BRACKETS or self.inside_brackets:
return False
if closer.type == token.RPAR:
# Tuples require an extra check, because if there's only
# one element in the tuple removing the comma unmakes the
@ -1273,9 +1275,11 @@ def is_collection_with_optional_trailing_comma(self) -> bool:
for _open_index, leaf in enumerate(self.leaves):
if leaf is opener:
break
else:
# Couldn't find the matching opening paren, play it safe.
return False
commas = 0
comma_depth = self.leaves[close_index - 1].bracket_depth
for leaf in self.leaves[_open_index + 1 : close_index]:
@ -1285,16 +1289,20 @@ def is_collection_with_optional_trailing_comma(self) -> bool:
# We haven't looked yet for the trailing comma because
# we might also have caught noop parens.
return self.leaves[close_index - 1].type == token.COMMA
elif commas == 1:
return False # it's either a one-tuple or didn't have a trailing comma
if self.leaves[close_index - 1].type in CLOSING_BRACKETS:
close_index -= 1
closer = self.leaves[close_index]
if closer.type == token.RPAR:
# TODO: this is a gut feeling. Will we ever see this?
return False
if self.leaves[close_index - 1].type != token.COMMA:
return False
return True
@property
@ -1344,9 +1352,9 @@ def is_triple_quoted_string(self) -> bool:
def contains_standalone_comments(self, depth_limit: int = sys.maxsize) -> bool:
"""If so, needs to be split before emitting."""
for leaf in self.leaves:
if leaf.type == STANDALONE_COMMENT:
if leaf.bracket_depth <= depth_limit:
return True
if leaf.type == STANDALONE_COMMENT and leaf.bracket_depth <= depth_limit:
return True
return False
def contains_uncollapsable_type_comments(self) -> bool:
@ -1424,6 +1432,7 @@ def maybe_remove_trailing_comma(self, closing: Leaf) -> bool:
"""Remove trailing comma if there is one and it's safe."""
if not (self.leaves and self.leaves[-1].type == token.COMMA):
return False
# We remove trailing commas only in the case of importing a
# single name from a module.
if not (
@ -1488,6 +1497,7 @@ def append_comment(self, comment: Leaf) -> bool:
comment.type = STANDALONE_COMMENT
comment.prefix = ""
return False
last_leaf = self.leaves[-2]
self.comments.setdefault(id(last_leaf), []).append(comment)
return True
@ -2619,11 +2629,11 @@ def bracket_split_build_line(
for i in range(len(leaves) - 1, -1, -1):
if leaves[i].type == STANDALONE_COMMENT:
continue
elif leaves[i].type == token.COMMA:
break
else:
if leaves[i].type != token.COMMA:
leaves.insert(i + 1, Leaf(token.COMMA, ","))
break
break
# Populate the line
for leaf in leaves:
result.append(leaf, preformatted=True)
@ -2867,6 +2877,7 @@ def normalize_string_quotes(leaf: Leaf) -> None:
if "\\" in str(m):
# Do not introduce backslashes in interpolated expressions
return
if new_quote == '"""' and new_body[-1:] == '"':
# edge case:
new_body = new_body[:-1] + '\\"'
@ -2953,6 +2964,7 @@ def normalize_invisible_parens(node: Node, parens_after: Set[str]) -> None:
if check_lpar:
if is_walrus_assignment(child):
continue
if child.type == syms.atom:
# Determines if the underlying atom should be surrounded with
# invisible params - also makes parens invisible recursively
@ -3147,6 +3159,7 @@ def unwrap_singleton_parenthesis(node: LN) -> Optional[LN]:
Parenthesis can be optional. Returns None otherwise"""
if len(node.children) != 3:
return None
lpar, wrapped, rpar = node.children
if not (lpar.type == token.LPAR and rpar.type == token.RPAR):
return None
@ -3431,19 +3444,23 @@ def get_imports_from_children(children: List[LN]) -> Generator[str, None, None]:
if isinstance(child, Leaf):
if child.type == token.NAME:
yield child.value
elif child.type == syms.import_as_name:
orig_name = child.children[0]
assert isinstance(orig_name, Leaf), "Invalid syntax parsing imports"
assert orig_name.type == token.NAME, "Invalid syntax parsing imports"
yield orig_name.value
elif child.type == syms.import_as_names:
yield from get_imports_from_children(child.children)
else:
raise AssertionError("Invalid syntax parsing imports")
for child in node.children:
if child.type != syms.simple_stmt:
break
first_child = child.children[0]
if isinstance(first_child, Leaf):
# Continue looking if we see a docstring; otherwise stop.
@ -3453,15 +3470,18 @@ def get_imports_from_children(children: List[LN]) -> Generator[str, None, None]:
and child.children[1].type == token.NEWLINE
):
continue
else:
break
break
elif first_child.type == syms.import_from:
module_name = first_child.children[1]
if not isinstance(module_name, Leaf) or module_name.value != "__future__":
break
imports |= set(get_imports_from_children(first_child.children[3:]))
else:
break
return imports
@ -3504,6 +3524,7 @@ def gen_python_files_in_dir(
except OSError as e:
report.path_ignored(child, f"cannot be read because {e}")
continue
except ValueError:
if child.is_symlink():
report.path_ignored(
@ -3672,10 +3693,13 @@ def _fixup_ast_constants(
"""Map ast nodes deprecated in 3.8 to Constant."""
if isinstance(node, (ast.Str, ast3.Str, ast27.Str, ast.Bytes, ast3.Bytes)):
return ast.Constant(value=node.s)
if isinstance(node, (ast.Num, ast3.Num, ast27.Num)):
return ast.Constant(value=node.n)
if isinstance(node, (ast.NameConstant, ast3.NameConstant)):
return ast.Constant(value=node.value)
return node
@ -3715,6 +3739,7 @@ def _v(node: Union[ast.AST, ast3.AST, ast27.AST], depth: int = 0) -> Iterator[st
):
for item in item.elts:
yield from _v(item, depth + 2)
elif isinstance(item, (ast.AST, ast3.AST, ast27.AST)):
yield from _v(item, depth + 2)