mirror of
https://github.com/astral-sh/ruff.git
synced 2025-07-23 13:05:58 +00:00
Fix fstring formatting removing overlong implicit concatenated string in expression part (#14811)
## Summary Fixes https://github.com/astral-sh/ruff/issues/14778 The formatter incorrectly removed the inner implicitly concatenated string for following single-line f-string: ```py f"{'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 'a' if True else ""}" # formatted f"{ if True else ''}" ``` This happened because I changed the `RemoveSoftlinesBuffer` in https://github.com/astral-sh/ruff/pull/14489 to remove any content wrapped in `if_group_breaks`. After all, it emulates an *all flat* layout. This works fine when `if_group_breaks` is only used to **add** content if the gorup breaks. It doesn't work if the same content is rendered differently depending on if the group fits using `if_group_breaks` and `if_groups_fits` because the enclosing `group` might still *break* if the entire content exceeds the line-length limit. This PR fixes this by unwrapping any `if_group_fits` content by removing the `if_group_fits` start and end tags. ## Test Plan added test
This commit is contained in:
parent
39623f8d40
commit
1559c73fcd
3 changed files with 47 additions and 15 deletions
|
@ -665,6 +665,10 @@ _ = (
|
|||
# Regression test for https://github.com/astral-sh/ruff/issues/14487
|
||||
f"aaaaaaaaaaaaaaaaaaaaaaaaaa {10**27} bbbbbbbbbbbbbbbbbbbbbbbbbb ccccccccccccccccccccccccc"
|
||||
|
||||
# Regression test for https://github.com/astral-sh/ruff/issues/14778
|
||||
f"{'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 'a' if True else ""}"
|
||||
f"{'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 'a' if True else ""}"
|
||||
|
||||
# Quotes reuse
|
||||
f"{'a'}"
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
source: crates/ruff_python_formatter/tests/fixtures.rs
|
||||
input_file: crates/ruff_python_formatter/resources/test/fixtures/ruff/expression/fstring.py
|
||||
snapshot_kind: text
|
||||
---
|
||||
## Input
|
||||
```python
|
||||
|
@ -671,6 +672,10 @@ _ = (
|
|||
# Regression test for https://github.com/astral-sh/ruff/issues/14487
|
||||
f"aaaaaaaaaaaaaaaaaaaaaaaaaa {10**27} bbbbbbbbbbbbbbbbbbbbbbbbbb ccccccccccccccccccccccccc"
|
||||
|
||||
# Regression test for https://github.com/astral-sh/ruff/issues/14778
|
||||
f"{'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 'a' if True else ""}"
|
||||
f"{'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 'a' if True else ""}"
|
||||
|
||||
# Quotes reuse
|
||||
f"{'a'}"
|
||||
|
||||
|
@ -1441,6 +1446,10 @@ _ = (
|
|||
# Regression test for https://github.com/astral-sh/ruff/issues/14487
|
||||
f"aaaaaaaaaaaaaaaaaaaaaaaaaa {10**27} bbbbbbbbbbbbbbbbbbbbbbbbbb ccccccccccccccccccccccccc"
|
||||
|
||||
# Regression test for https://github.com/astral-sh/ruff/issues/14778
|
||||
f"{'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' if True else ''}"
|
||||
f"{'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' if True else ''}"
|
||||
|
||||
# Quotes reuse
|
||||
f"{'a'}"
|
||||
|
||||
|
@ -2163,6 +2172,10 @@ _ = (
|
|||
# Regression test for https://github.com/astral-sh/ruff/issues/14487
|
||||
f"aaaaaaaaaaaaaaaaaaaaaaaaaa {10**27} bbbbbbbbbbbbbbbbbbbbbbbbbb ccccccccccccccccccccccccc"
|
||||
|
||||
# Regression test for https://github.com/astral-sh/ruff/issues/14778
|
||||
f"{'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 'a' if True else ""}"
|
||||
f"{'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 'a' if True else ""}"
|
||||
|
||||
# Quotes reuse
|
||||
f"{'a'}"
|
||||
|
||||
|
@ -2993,7 +3006,7 @@ f'{1=: {'ab"cd"'}}' # It's okay if the quotes are in an expression part.
|
|||
)
|
||||
|
||||
# Indentation
|
||||
@@ -632,29 +680,29 @@
|
||||
@@ -632,37 +680,37 @@
|
||||
if indent2:
|
||||
foo = f"""hello world
|
||||
hello {
|
||||
|
@ -3041,7 +3054,17 @@ f'{1=: {'ab"cd"'}}' # It's okay if the quotes are in an expression part.
|
|||
)
|
||||
|
||||
# Regression test for https://github.com/astral-sh/ruff/issues/14487
|
||||
@@ -678,18 +726,18 @@
|
||||
f"aaaaaaaaaaaaaaaaaaaaaaaaaa {10**27} bbbbbbbbbbbbbbbbbbbbbbbbbb ccccccccccccccccccccccccc"
|
||||
|
||||
# Regression test for https://github.com/astral-sh/ruff/issues/14778
|
||||
-f"{'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 'a' if True else ""}"
|
||||
-f"{'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' 'a' if True else ""}"
|
||||
+f"{'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' if True else ''}"
|
||||
+f"{'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' if True else ''}"
|
||||
|
||||
# Quotes reuse
|
||||
f"{'a'}"
|
||||
@@ -682,18 +730,18 @@
|
||||
f'{1: hy "user"}'
|
||||
f'{1:hy "user"}'
|
||||
f'{1: abcd "{1}" }'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue