wrap atoms in invisible parens to split adjacent strings (#463)

This commit is contained in:
Jelle Zijlstra 2018-08-21 21:10:59 -07:00 committed by GitHub
parent d4f0521754
commit 8b340e2102
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 20 additions and 4 deletions

View File

@ -849,6 +849,8 @@ More details can be found in [CONTRIBUTING](CONTRIBUTING.md).
### 18.8b0
* adjacent string literals are now correctly split into multiple lines (#463)
* code with `_` in numeric literals is recognized as Python 3.6+ (#461)
* numeric literals are now normalized to include `_` separators on Python 3.6+ code

View File

@ -2587,7 +2587,11 @@ def normalize_invisible_parens(node: Node, parens_after: Set[str]) -> None:
for index, child in enumerate(list(node.children)):
if check_lpar:
if child.type == syms.atom:
maybe_make_parens_invisible_in_atom(child)
if maybe_make_parens_invisible_in_atom(child):
lpar = Leaf(token.LPAR, "")
rpar = Leaf(token.RPAR, "")
index = child.remove() or 0
node.insert_child(index, Node(syms.atom, [lpar, child, rpar]))
elif is_one_tuple(child):
# wrap child in visible parentheses
lpar = Leaf(token.LPAR, "(")
@ -2695,7 +2699,11 @@ def generate_ignored_nodes(leaf: Leaf) -> Iterator[LN]:
def maybe_make_parens_invisible_in_atom(node: LN) -> bool:
"""If it's safe, make the parens in the atom `node` invisible, recursively."""
"""If it's safe, make the parens in the atom `node` invisible, recursively.
Returns whether the node should itself be wrapped in invisible parentheses.
"""
if (
node.type != syms.atom
or is_empty_tuple(node)
@ -2713,9 +2721,9 @@ def maybe_make_parens_invisible_in_atom(node: LN) -> bool:
last.value = "" # type: ignore
if len(node.children) > 1:
maybe_make_parens_invisible_in_atom(node.children[1])
return True
return False
return False
return True
def is_empty_tuple(node: LN) -> bool:

View File

@ -35,6 +35,7 @@
""".split():
if key in self.connect_kwargs:
raise ValueError(err.format(key))
concatenated_strings = "some strings that are" "concatenated implicitly, so if you put them on separate" "lines it will fit"
# output
@ -85,3 +86,8 @@
""".split():
if key in self.connect_kwargs:
raise ValueError(err.format(key))
concatenated_strings = (
"some strings that are"
"concatenated implicitly, so if you put them on separate"
"lines it will fit"
)