X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/889a8d5dd27a73aa780e989a850bbdaaa9946a13..e1506769a428889bc66964edabf76476433c031a:/src/black/linegen.py?ds=inline diff --git a/src/black/linegen.py b/src/black/linegen.py index ac60ed1..b572ed0 100644 --- a/src/black/linegen.py +++ b/src/black/linegen.py @@ -197,6 +197,28 @@ class LineGenerator(Visitor[Line]): yield from self.line() yield from self.visit(child) + def visit_power(self, node: Node) -> Iterator[Line]: + for idx, leaf in enumerate(node.children[:-1]): + next_leaf = node.children[idx + 1] + + if not isinstance(leaf, Leaf): + continue + + value = leaf.value.lower() + if ( + leaf.type == token.NUMBER + and next_leaf.type == syms.trailer + # Ensure that we are in an attribute trailer + and next_leaf.children[0].type == token.DOT + # It shouldn't wrap hexadecimal, binary and octal literals + and not value.startswith(("0x", "0b", "0o")) + # It shouldn't wrap complex literals + and "j" not in value + ): + wrap_in_parentheses(node, leaf) + + yield from self.visit_default(node) + def visit_SEMI(self, leaf: Leaf) -> Iterator[Line]: """Remove a semicolon and put the other statement on a separate line.""" yield from self.line()