From eb05cd4cb250fc22657ee47d0ed1c3ae2fa714d2 Mon Sep 17 00:00:00 2001 From: Tushar Sadhwani Date: Mon, 22 Apr 2024 16:51:45 +0530 Subject: [PATCH] Revert "Remove node-specific logic from visit_default (#4321)" This reverts commit 7134754ef45078b032039ad858bdaaef146233b2. --- src/black/linegen.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/black/linegen.py b/src/black/linegen.py index 64db7b6208c..2f2ae431818 100644 --- a/src/black/linegen.py +++ b/src/black/linegen.py @@ -152,6 +152,11 @@ def visit_default(self, node: LN) -> Iterator[Line]: if any_open_brackets: node.prefix = "" + if self.mode.string_normalization and node.type == token.STRING: + node.value = normalize_string_prefix(node.value) + node.value = normalize_string_quotes(node.value) + if node.type == token.NUMBER: + normalize_numeric_literal(node) if node.type not in WHITESPACE: self.current_line.append(node) yield from super().visit_default(node) @@ -415,11 +420,12 @@ def visit_STRING(self, leaf: Leaf) -> Iterator[Line]: # indentation of those changes the AST representation of the code. if self.mode.string_normalization: docstring = normalize_string_prefix(leaf.value) - # We handle string normalization at the end of this method, but since - # what we do right now acts differently depending on quote style (ex. + # visit_default() does handle string normalization for us, but + # since this method acts differently depending on quote style (ex. # see padding logic below), there's a possibility for unstable - # formatting. To avoid a situation where this function formats a - # docstring differently on the second pass, normalize it early. + # formatting as visit_default() is called *after*. To avoid a + # situation where this function formats a docstring differently on + # the second pass, normalize it early. docstring = normalize_string_quotes(docstring) else: docstring = leaf.value @@ -493,13 +499,6 @@ def visit_STRING(self, leaf: Leaf) -> Iterator[Line]: else: leaf.value = prefix + quote + docstring + quote - if self.mode.string_normalization and leaf.type == token.STRING: - leaf.value = normalize_string_prefix(leaf.value) - leaf.value = normalize_string_quotes(leaf.value) - yield from self.visit_default(leaf) - - def visit_NUMBER(self, leaf: Leaf) -> Iterator[Line]: - normalize_numeric_literal(leaf) yield from self.visit_default(leaf) def visit_fstring(self, node: Node) -> Iterator[Line]: