Indent statements in suppressed ranges (#6507)

This commit is contained in:
Micha Reiser 2023-08-15 08:00:35 +02:00 committed by GitHub
parent e1e213decf
commit 232b44a8ca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 852 additions and 59 deletions

View file

@ -16,8 +16,13 @@ a + b # a trailing comment
def test():
pass
# trailing comment that falls into the verbatim range
# under indent
def nested():
...
# trailing comment that falls into the verbatim range
# trailing outer comment
# fmt: on
a + b
@ -43,8 +48,13 @@ a + b # a trailing comment
def test():
pass
# trailing comment that falls into the verbatim range
# under indent
def nested():
...
# trailing comment that falls into the verbatim range
# trailing outer comment
# fmt: on
a + b

View file

@ -25,7 +25,15 @@ def test():
and_this + gets + formatted + too
```
## Output
## Outputs
### Output 1
```
indent-style = Spaces, size: 4
line-width = 88
quote-style = Double
magic-trailing-comma = Respect
```
```py
def test():
# fmt: off
@ -49,4 +57,35 @@ def test():
```
### Output 2
```
indent-style = Spaces, size: 2
line-width = 88
quote-style = Double
magic-trailing-comma = Respect
```
```py
def test():
# fmt: off
""" This docstring does not
get formatted
"""
# fmt: on
but + this + does
def test():
# fmt: off
# just for fun
# fmt: on
# leading comment
"""This docstring gets formatted""" # trailing comment
and_this + gets + formatted + too
```

View file

@ -0,0 +1,272 @@
---
source: crates/ruff_python_formatter/tests/fixtures.rs
input_file: crates/ruff_python_formatter/resources/test/fixtures/ruff/fmt_on_off/indent.py
---
## Input
```py
def test():
# fmt: off
a_very_small_indent
(
not_fixed
)
if True:
pass
more
# fmt: on
formatted
def test():
a_small_indent
# fmt: off
# fix under-indented comments
(or_the_inner_expression +
expressions
)
if True:
pass
# fmt: on
# fmt: off
def test():
pass
# It is necessary to indent comments because the following fmt: on comment because it otherwise becomes a trailing comment
# of the `test` function if the "proper" indentation is larger than 2 spaces.
# fmt: on
disabled + formatting;
# fmt: on
formatted;
def test():
pass
# fmt: off
"""A multiline strings
that should not get formatted"""
"A single quoted multiline \
string"
disabled + formatting;
# fmt: on
formatted;
```
## Outputs
### Output 1
```
indent-style = Spaces, size: 4
line-width = 88
quote-style = Double
magic-trailing-comma = Respect
```
```py
def test():
# fmt: off
a_very_small_indent
(
not_fixed
)
if True:
pass
more
# fmt: on
formatted
def test():
a_small_indent
# fmt: off
# fix under-indented comments
(or_the_inner_expression +
expressions
)
if True:
pass
# fmt: on
# fmt: off
def test():
pass
# It is necessary to indent comments because the following fmt: on comment because it otherwise becomes a trailing comment
# of the `test` function if the "proper" indentation is larger than 2 spaces.
# fmt: on
disabled + formatting;
# fmt: on
formatted
def test():
pass
# fmt: off
"""A multiline strings
that should not get formatted"""
"A single quoted multiline \
string"
disabled + formatting
# fmt: on
formatted
```
### Output 2
```
indent-style = Spaces, size: 1
line-width = 88
quote-style = Double
magic-trailing-comma = Respect
```
```py
def test():
# fmt: off
a_very_small_indent
(
not_fixed
)
if True:
pass
more
# fmt: on
formatted
def test():
a_small_indent
# fmt: off
# fix under-indented comments
(or_the_inner_expression +
expressions
)
if True:
pass
# fmt: on
# fmt: off
def test():
pass
# It is necessary to indent comments because the following fmt: on comment because it otherwise becomes a trailing comment
# of the `test` function if the "proper" indentation is larger than 2 spaces.
# fmt: on
disabled + formatting;
# fmt: on
formatted
def test():
pass
# fmt: off
"""A multiline strings
that should not get formatted"""
"A single quoted multiline \
string"
disabled + formatting
# fmt: on
formatted
```
### Output 3
```
indent-style = Tab
line-width = 88
quote-style = Double
magic-trailing-comma = Respect
```
```py
def test():
# fmt: off
a_very_small_indent
(
not_fixed
)
if True:
pass
more
# fmt: on
formatted
def test():
a_small_indent
# fmt: off
# fix under-indented comments
(or_the_inner_expression +
expressions
)
if True:
pass
# fmt: on
# fmt: off
def test():
pass
# It is necessary to indent comments because the following fmt: on comment because it otherwise becomes a trailing comment
# of the `test` function if the "proper" indentation is larger than 2 spaces.
# fmt: on
disabled + formatting;
# fmt: on
formatted
def test():
pass
# fmt: off
"""A multiline strings
that should not get formatted"""
"A single quoted multiline \
string"
disabled + formatting
# fmt: on
formatted
```

View file

@ -0,0 +1,103 @@
---
source: crates/ruff_python_formatter/tests/fixtures.rs
input_file: crates/ruff_python_formatter/resources/test/fixtures/ruff/fmt_on_off/mixed_space_and_tab.py
---
## Input
```py
def test():
# fmt: off
a_very_small_indent
(
not_fixed
)
if True:
# Fun tab, space, tab, space. Followed by space, tab, tab, space
pass
more
else:
other
# fmt: on
```
## Outputs
### Output 1
```
indent-style = Spaces, size: 4
line-width = 88
quote-style = Double
magic-trailing-comma = Respect
```
```py
def test():
# fmt: off
a_very_small_indent
(
not_fixed
)
if True:
# Fun tab, space, tab, space. Followed by space, tab, tab, space
pass
more
else:
other
# fmt: on
```
### Output 2
```
indent-style = Spaces, size: 2
line-width = 88
quote-style = Double
magic-trailing-comma = Respect
```
```py
def test():
# fmt: off
a_very_small_indent
(
not_fixed
)
if True:
# Fun tab, space, tab, space. Followed by space, tab, tab, space
pass
more
else:
other
# fmt: on
```
### Output 3
```
indent-style = Tab
line-width = 88
quote-style = Double
magic-trailing-comma = Respect
```
```py
def test():
# fmt: off
a_very_small_indent
(
not_fixed
)
if True:
# Fun tab, space, tab, space. Followed by space, tab, tab, space
pass
more
else:
other
# fmt: on
```