Fix parenthesizing of implicit strings (#6852)

This commit is contained in:
Micha Reiser 2023-08-24 14:31:02 +02:00 committed by GitHub
parent 1cd7790a8a
commit 8b46b71038
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 45 additions and 3 deletions

View file

@ -124,3 +124,9 @@ test_particular = [
'c' 'c'
) )
} }
# Regression test for https://github.com/astral-sh/ruff/issues/5893
x = ("""aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa""" """bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb""")
x = (f"""aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa""" f"""bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb""")
x = (b"""aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa""" b"""bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb""")

View file

@ -79,14 +79,14 @@ impl NeedsParentheses for ExprConstant {
_parent: AnyNodeRef, _parent: AnyNodeRef,
context: &PyFormatContext, context: &PyFormatContext,
) -> OptionalParentheses { ) -> OptionalParentheses {
if is_multiline_string(self, context.source()) if self.value.is_implicit_concatenated() {
OptionalParentheses::Multiline
} else if is_multiline_string(self, context.source())
|| self.value.is_none() || self.value.is_none()
|| self.value.is_bool() || self.value.is_bool()
|| self.value.is_ellipsis() || self.value.is_ellipsis()
{ {
OptionalParentheses::Never OptionalParentheses::Never
} else if self.value.is_implicit_concatenated() {
OptionalParentheses::Multiline
} else if should_use_best_fit(self, context) { } else if should_use_best_fit(self, context) {
OptionalParentheses::BestFit OptionalParentheses::BestFit
} else { } else {

View file

@ -130,6 +130,12 @@ test_particular = [
'c' 'c'
) )
} }
# Regression test for https://github.com/astral-sh/ruff/issues/5893
x = ("""aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa""" """bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb""")
x = (f"""aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa""" f"""bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb""")
x = (b"""aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa""" b"""bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb""")
``` ```
## Outputs ## Outputs
@ -284,6 +290,21 @@ test_particular = [
# Parenthesized string continuation with messed up indentation # Parenthesized string continuation with messed up indentation
{"key": ([], "a" "b" "c")} {"key": ([], "a" "b" "c")}
# Regression test for https://github.com/astral-sh/ruff/issues/5893
x = (
"""aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"""
"""bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"""
)
x = (
f"""aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"""
f"""bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"""
)
x = (
b"""aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"""
b"""bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"""
)
``` ```
@ -438,6 +459,21 @@ test_particular = [
# Parenthesized string continuation with messed up indentation # Parenthesized string continuation with messed up indentation
{'key': ([], 'a' 'b' 'c')} {'key': ([], 'a' 'b' 'c')}
# Regression test for https://github.com/astral-sh/ruff/issues/5893
x = (
'''aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'''
'''bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'''
)
x = (
f'''aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'''
f'''bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'''
)
x = (
b'''aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'''
b'''bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'''
)
``` ```