Set target versions in Black tests (#9221)

This commit is contained in:
Micha Reiser 2023-12-21 13:20:17 +09:00 committed by GitHub
parent 8cb7950102
commit c6d8076034
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
55 changed files with 996 additions and 466 deletions

View file

@ -0,0 +1,2 @@
# split out from comments2 as it does not work with line-length=1, losing the comment
a = "type comment with trailing space" # type: str

View file

@ -0,0 +1,2 @@
# split out from comments2 as it does not work with line-length=1, losing the comment
a = "type comment with trailing space" # type: str

View file

@ -155,8 +155,6 @@ class Test:
pass pass
a = "type comment with trailing space" # type: str
####################### #######################
### SECTION COMMENT ### ### SECTION COMMENT ###
####################### #######################

View file

@ -162,8 +162,6 @@ class Test:
pass pass
a = "type comment with trailing space" # type: str
####################### #######################
### SECTION COMMENT ### ### SECTION COMMENT ###
####################### #######################

View file

@ -1,3 +1,4 @@
# l2 loses the comment with line-length=1 in preview mode
l1 = ["This list should be broken up", "into multiple lines", "because it is way too long"] l1 = ["This list should be broken up", "into multiple lines", "because it is way too long"]
l2 = ["But this list shouldn't", "even though it also has", "way too many characters in it"] # fmt: skip l2 = ["But this list shouldn't", "even though it also has", "way too many characters in it"] # fmt: skip
l3 = ["I have", "trailing comma", "so I should be braked",] l3 = ["I have", "trailing comma", "so I should be braked",]

View file

@ -1,3 +1,4 @@
# l2 loses the comment with line-length=1 in preview mode
l1 = [ l1 = [
"This list should be broken up", "This list should be broken up",
"into multiple lines", "into multiple lines",

View file

@ -1 +1 @@
{"preview": "enabled"} {"preview": "enabled", "target_version": "py310"}

View file

@ -0,0 +1 @@
{"target_version": "py310"}

View file

@ -0,0 +1 @@
{"target_version": "py310"}

View file

@ -0,0 +1 @@
{"target_version": "py310"}

View file

@ -0,0 +1 @@
{"target_version": "py310"}

View file

@ -0,0 +1 @@
{"target_version": "py310"}

View file

@ -0,0 +1 @@
{"target_version": "py310"}

View file

@ -1 +1 @@
{"preview": "enabled"} {"preview": "enabled", "target_version": "py310"}

View file

@ -0,0 +1 @@
{"target_version": "py38"}

View file

@ -0,0 +1 @@
{"target_version": "py38"}

View file

@ -0,0 +1 @@
{"target_version": "py310"}

View file

@ -0,0 +1 @@
{"target_version": "py39"}

View file

@ -0,0 +1 @@
{"target_version": "py38"}

View file

@ -0,0 +1 @@
{"target_version": "py311"}

View file

@ -0,0 +1 @@
{"target_version": "py311"}

View file

@ -0,0 +1 @@
{"target_version": "py311"}

View file

@ -0,0 +1 @@
{"preview": "enabled"}

View file

@ -0,0 +1,62 @@
def foo():
"""
Docstring
"""
# Here we go
if x:
# This is also now fine
a = 123
else:
# But not necessary
a = 123
if y:
while True:
"""
Long comment here
"""
a = 123
if z:
for _ in range(100):
a = 123
else:
try:
# this should be ok
a = 123
except:
"""also this"""
a = 123
def bar():
if x:
a = 123
def baz():
# OK
if x:
a = 123
def quux():
new_line = here
class Cls:
def method(self):
pass

View file

@ -0,0 +1,62 @@
def foo():
"""
Docstring
"""
# Here we go
if x:
# This is also now fine
a = 123
else:
# But not necessary
a = 123
if y:
while True:
"""
Long comment here
"""
a = 123
if z:
for _ in range(100):
a = 123
else:
try:
# this should be ok
a = 123
except:
"""also this"""
a = 123
def bar():
if x:
a = 123
def baz():
# OK
if x:
a = 123
def quux():
new_line = here
class Cls:
def method(self):
pass

View file

@ -1 +1 @@
{"preview": "enabled"} {"preview": "enabled", "target_version": "py38"}

View file

@ -1 +1 @@
{"preview": "enabled"} {"preview": "enabled", "target_version": "py39"}

View file

@ -1 +1 @@
{"preview": "enabled"} {"preview": "enabled", "target_version": "py310"}

View file

@ -1 +1 @@
{"preview": "enabled"} {"preview": "enabled", "target_version": "py311"}

View file

@ -1 +1 @@
{"preview": "enabled"} {"preview": "enabled", "target_version": "py39"}

View file

@ -1,8 +1,10 @@
from typing import NoReturn, Protocol, Union, overload from typing import NoReturn, Protocol, Union, overload
class Empty:
...
def dummy(a): ... def dummy(a): ...
def other(b): ... async def other(b): ...
@overload @overload
@ -46,3 +48,11 @@ def b(arg: Union[int, str, object]) -> Union[int, str]:
if not isinstance(arg, (int, str)): if not isinstance(arg, (int, str)):
raise TypeError raise TypeError
return arg return arg
def has_comment():
... # still a dummy
if some_condition:
...
if already_dummy: ...

View file

@ -1,8 +1,11 @@
from typing import NoReturn, Protocol, Union, overload from typing import NoReturn, Protocol, Union, overload
class Empty: ...
def dummy(a): ... def dummy(a): ...
def other(b): ... async def other(b): ...
@overload @overload
@ -46,3 +49,13 @@ def b(arg: Union[int, str, object]) -> Union[int, str]:
if not isinstance(arg, (int, str)): if not isinstance(arg, (int, str)):
raise TypeError raise TypeError
return arg return arg
def has_comment(): ... # still a dummy
if some_condition:
...
if already_dummy:
...

View file

@ -74,6 +74,7 @@ pass
# form feeds are prohibited inside blocks, or on a line with nonwhitespace # form feeds are prohibited inside blocks, or on a line with nonwhitespace
def bar(a=1, b: bool = False): def bar(a=1, b: bool = False):
pass pass

View file

@ -124,23 +124,6 @@ func([x for x in "short line"])
func([x for x in "long line long line long line long line long line long line long line"]) func([x for x in "long line long line long line long line long line long line long line"])
func([x for x in [x for x in "long line long line long line long line long line long line long line"]]) func([x for x in [x for x in "long line long line long line long line long line long line long line"]])
func({"short line"})
func({"long line", "long long line", "long long long line", "long long long long line", "long long long long long line"})
func({{"long line", "long long line", "long long long line", "long long long long line", "long long long long long line"}})
func(("long line", "long long line", "long long long line", "long long long long line", "long long long long long line"))
func((("long line", "long long line", "long long long line", "long long long long line", "long long long long long line")))
func([["long line", "long long line", "long long long line", "long long long long line", "long long long long long line"]])
# Do not hug if the argument fits on a single line.
func({"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"})
func(("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"))
func(["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"])
func(**{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit---"})
func(*("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit----"))
array = [{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}]
array = [("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line")]
array = [["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"]]
foooooooooooooooooooo( foooooooooooooooooooo(
[{c: n + 1 for c in range(256)} for n in range(100)] + [{}], {size} [{c: n + 1 for c in range(256)} for n in range(100)] + [{}], {size}
) )
@ -150,14 +133,11 @@ baaaaaaaaaaaaar(
) )
nested_mapping = {"key": [{"a very long key 1": "with a very long value", "a very long key 2": "with a very long value"}]} nested_mapping = {"key": [{"a very long key 1": "with a very long value", "a very long key 2": "with a very long value"}]}
nested_array = [[["long line", "long long line", "long long long line", "long long long long line", "long long long long long line"]]]
explicit_exploding = [[["short", "line",],],] explicit_exploding = [[["short", "line",],],]
single_item_do_not_explode = Context({ single_item_do_not_explode = Context({
"version": get_docs_version(), "version": get_docs_version(),
}) })
foo(*["long long long long long line", "long long long long long line", "long long long long long line"])
foo(*[str(i) for i in range(100000000000000000000000000000000000000000000000000000000000)]) foo(*[str(i) for i in range(100000000000000000000000000000000000000000000000000000000000)])
foo( foo(

View file

@ -122,69 +122,6 @@ func([
] ]
]) ])
func({"short line"})
func({
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
})
func({{
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
}})
func((
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
))
func(((
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
)))
func([[
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
]])
# Do not hug if the argument fits on a single line.
func(
{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}
)
func(
("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line")
)
func(
["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"]
)
func(
**{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit---"}
)
func(
*("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit----")
)
array = [
{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}
]
array = [
("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line")
]
array = [
["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"]
]
foooooooooooooooooooo( foooooooooooooooooooo(
[{c: n + 1 for c in range(256)} for n in range(100)] + [{}], {size} [{c: n + 1 for c in range(256)} for n in range(100)] + [{}], {size}
) )
@ -199,13 +136,6 @@ nested_mapping = {
"a very long key 2": "with a very long value", "a very long key 2": "with a very long value",
}] }]
} }
nested_array = [[[
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
]]]
explicit_exploding = [ explicit_exploding = [
[ [
[ [
@ -218,12 +148,6 @@ single_item_do_not_explode = Context({
"version": get_docs_version(), "version": get_docs_version(),
}) })
foo(*[
"long long long long long line",
"long long long long long line",
"long long long long long line",
])
foo(*[ foo(*[
str(i) for i in range(100000000000000000000000000000000000000000000000000000000000) str(i) for i in range(100000000000000000000000000000000000000000000000000000000000)
]) ])

View file

@ -0,0 +1,23 @@
# split out from preview_hug_parens_with_brackes_and_square_brackets, as it produces
# different code on the second pass with line-length 1 in many cases.
# Seems to be about whether the last string in a sequence gets wrapped in parens or not.
foo(*["long long long long long line", "long long long long long line", "long long long long long line"])
func({"short line"})
func({"long line", "long long line", "long long long line", "long long long long line", "long long long long long line"})
func({{"long line", "long long line", "long long long line", "long long long long line", "long long long long long line"}})
func(("long line", "long long line", "long long long line", "long long long long line", "long long long long long line"))
func((("long line", "long long line", "long long long line", "long long long long line", "long long long long long line")))
func([["long line", "long long line", "long long long line", "long long long long line", "long long long long long line"]])
# Do not hug if the argument fits on a single line.
func({"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"})
func(("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"))
func(["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"])
func(**{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit---"})
func(*("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit----"))
array = [{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}]
array = [("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line")]
array = [["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"]]
nested_array = [[["long line", "long long line", "long long long line", "long long long long line", "long long long long long line"]]]

View file

@ -0,0 +1,79 @@
# split out from preview_hug_parens_with_brackes_and_square_brackets, as it produces
# different code on the second pass with line-length 1 in many cases.
# Seems to be about whether the last string in a sequence gets wrapped in parens or not.
foo(*[
"long long long long long line",
"long long long long long line",
"long long long long long line",
])
func({"short line"})
func({
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
})
func({{
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
}})
func((
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
))
func(((
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
)))
func([[
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
]])
# Do not hug if the argument fits on a single line.
func(
{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}
)
func(
("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line")
)
func(
["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"]
)
func(
**{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit---"}
)
func(
*("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit----")
)
array = [
{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}
]
array = [
("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line")
]
array = [
["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"]
]
nested_array = [[[
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
]]]

View file

@ -1 +1 @@
{"preview": "enabled"} {"preview": "enabled", "target_version": "py310"}

View file

@ -1 +1 @@
{"preview": "enabled"} {"preview": "enabled", "target_version": "py310"}

View file

@ -1 +1 @@
{"preview": "enabled"} {"preview": "enabled", "target_version": "py310"}

View file

@ -0,0 +1 @@
{"target_version": "py37"}

View file

@ -0,0 +1 @@
{"target_version": "py38"}

View file

@ -0,0 +1 @@
{"target_version": "py39"}

View file

@ -0,0 +1 @@
{"target_version": "py310"}

View file

@ -0,0 +1 @@
{"target_version": "py39"}

View file

@ -0,0 +1 @@
{"target_version": "py310"}

View file

@ -0,0 +1 @@
{"target_version": "py312"}

View file

@ -51,6 +51,11 @@ def import_fixture(fixture: Path, fixture_set: str):
length = int(length) length = int(length)
options["line_width"] = 1 if length == 0 else length options["line_width"] = 1 if length == 0 else length
if "--minimum-version=" in flags:
[_, version] = flags.split("--minimum-version=", 1)
# Convert 3.10 to py310
options["target_version"] = f"py{version.strip().replace('.', '')}"
if "--skip-magic-trailing-comma" in flags: if "--skip-magic-trailing-comma" in flags:
options["magic_trailing_comma"] = "ignore" options["magic_trailing_comma"] = "ignore"

View file

@ -162,8 +162,6 @@ class Test:
pass pass
a = "type comment with trailing space" # type: str
####################### #######################
### SECTION COMMENT ### ### SECTION COMMENT ###
####################### #######################
@ -427,8 +425,6 @@ class Test:
pass pass
a = "type comment with trailing space" # type: str
####################### #######################
### SECTION COMMENT ### ### SECTION COMMENT ###
####################### #######################
@ -607,8 +603,6 @@ class Test:
pass pass
a = "type comment with trailing space" # type: str
####################### #######################
### SECTION COMMENT ### ### SECTION COMMENT ###
####################### #######################

View file

@ -0,0 +1,260 @@
---
source: crates/ruff_python_formatter/tests/fixtures.rs
input_file: crates/ruff_python_formatter/resources/test/fixtures/black/cases/preview_allow_empty_first_line.py
---
## Input
```python
def foo():
"""
Docstring
"""
# Here we go
if x:
# This is also now fine
a = 123
else:
# But not necessary
a = 123
if y:
while True:
"""
Long comment here
"""
a = 123
if z:
for _ in range(100):
a = 123
else:
try:
# this should be ok
a = 123
except:
"""also this"""
a = 123
def bar():
if x:
a = 123
def baz():
# OK
if x:
a = 123
def quux():
new_line = here
class Cls:
def method(self):
pass
```
## Black Differences
```diff
--- Black
+++ Ruff
@@ -5,7 +5,6 @@
# Here we go
if x:
-
# This is also now fine
a = 123
@@ -14,49 +13,39 @@
a = 123
if y:
-
while True:
-
"""
Long comment here
"""
a = 123
if z:
-
for _ in range(100):
a = 123
else:
-
try:
-
# this should be ok
a = 123
except:
-
"""also this"""
a = 123
def bar():
-
if x:
a = 123
def baz():
-
# OK
if x:
a = 123
def quux():
-
new_line = here
class Cls:
def method(self):
-
pass
```
## Ruff Output
```python
def foo():
"""
Docstring
"""
# Here we go
if x:
# This is also now fine
a = 123
else:
# But not necessary
a = 123
if y:
while True:
"""
Long comment here
"""
a = 123
if z:
for _ in range(100):
a = 123
else:
try:
# this should be ok
a = 123
except:
"""also this"""
a = 123
def bar():
if x:
a = 123
def baz():
# OK
if x:
a = 123
def quux():
new_line = here
class Cls:
def method(self):
pass
```
## Black Output
```python
def foo():
"""
Docstring
"""
# Here we go
if x:
# This is also now fine
a = 123
else:
# But not necessary
a = 123
if y:
while True:
"""
Long comment here
"""
a = 123
if z:
for _ in range(100):
a = 123
else:
try:
# this should be ok
a = 123
except:
"""also this"""
a = 123
def bar():
if x:
a = 123
def baz():
# OK
if x:
a = 123
def quux():
new_line = here
class Cls:
def method(self):
pass
```

View file

@ -7,9 +7,11 @@ input_file: crates/ruff_python_formatter/resources/test/fixtures/black/cases/pre
```python ```python
from typing import NoReturn, Protocol, Union, overload from typing import NoReturn, Protocol, Union, overload
class Empty:
...
def dummy(a): ... def dummy(a): ...
def other(b): ... async def other(b): ...
@overload @overload
@ -53,6 +55,14 @@ def b(arg: Union[int, str, object]) -> Union[int, str]:
if not isinstance(arg, (int, str)): if not isinstance(arg, (int, str)):
raise TypeError raise TypeError
return arg return arg
def has_comment():
... # still a dummy
if some_condition:
...
if already_dummy: ...
``` ```
## Black Differences ## Black Differences
@ -60,13 +70,13 @@ def b(arg: Union[int, str, object]) -> Union[int, str]:
```diff ```diff
--- Black --- Black
+++ Ruff +++ Ruff
@@ -2,15 +2,23 @@ @@ -5,15 +5,23 @@
def dummy(a): ... def dummy(a): ...
+ +
+ +
def other(b): ... async def other(b): ...
@overload @overload
@ -84,7 +94,7 @@ def b(arg: Union[int, str, object]) -> Union[int, str]:
def a(arg: Union[int, str, object]) -> Union[int, str]: def a(arg: Union[int, str, object]) -> Union[int, str]:
if not isinstance(arg, (int, str)): if not isinstance(arg, (int, str)):
raise TypeError raise TypeError
@@ -21,10 +29,13 @@ @@ -24,10 +32,13 @@
def foo(self, a: int) -> int: ... def foo(self, a: int) -> int: ...
def bar(self, b: str) -> str: ... def bar(self, b: str) -> str: ...
@ -98,7 +108,7 @@ def b(arg: Union[int, str, object]) -> Union[int, str]:
@dummy @dummy
def dummy_three(): ... def dummy_three(): ...
@@ -38,6 +49,8 @@ @@ -41,6 +52,8 @@
@overload @overload
def b(arg: str) -> str: ... def b(arg: str) -> str: ...
@ -107,6 +117,17 @@ def b(arg: Union[int, str, object]) -> Union[int, str]:
@overload @overload
def b(arg: object) -> NoReturn: ... def b(arg: object) -> NoReturn: ...
@@ -54,8 +67,6 @@
def has_comment(): ... # still a dummy
-if some_condition:
- ...
+if some_condition: ...
-if already_dummy:
- ...
+if already_dummy: ...
``` ```
## Ruff Output ## Ruff Output
@ -115,10 +136,13 @@ def b(arg: Union[int, str, object]) -> Union[int, str]:
from typing import NoReturn, Protocol, Union, overload from typing import NoReturn, Protocol, Union, overload
class Empty: ...
def dummy(a): ... def dummy(a): ...
def other(b): ... async def other(b): ...
@overload @overload
@ -173,6 +197,14 @@ def b(arg: Union[int, str, object]) -> Union[int, str]:
if not isinstance(arg, (int, str)): if not isinstance(arg, (int, str)):
raise TypeError raise TypeError
return arg return arg
def has_comment(): ... # still a dummy
if some_condition: ...
if already_dummy: ...
``` ```
## Black Output ## Black Output
@ -181,8 +213,11 @@ def b(arg: Union[int, str, object]) -> Union[int, str]:
from typing import NoReturn, Protocol, Union, overload from typing import NoReturn, Protocol, Union, overload
class Empty: ...
def dummy(a): ... def dummy(a): ...
def other(b): ... async def other(b): ...
@overload @overload
@ -226,6 +261,16 @@ def b(arg: Union[int, str, object]) -> Union[int, str]:
if not isinstance(arg, (int, str)): if not isinstance(arg, (int, str)):
raise TypeError raise TypeError
return arg return arg
def has_comment(): ... # still a dummy
if some_condition:
...
if already_dummy:
...
``` ```

View file

@ -211,7 +211,7 @@ a = [
pass pass
@@ -68,7 +68,7 @@ @@ -68,13 +68,12 @@
def foo(): def foo():
pass pass
@ -220,7 +220,13 @@ a = [
pass pass
@@ -84,7 +84,7 @@ # form feeds are prohibited inside blocks, or on a line with nonwhitespace
def bar(a=1, b: bool = False):
-
pass
@@ -85,7 +84,7 @@
def something(self): def something(self):
pass pass
@ -416,6 +422,7 @@ pass
# form feeds are prohibited inside blocks, or on a line with nonwhitespace # form feeds are prohibited inside blocks, or on a line with nonwhitespace
def bar(a=1, b: bool = False): def bar(a=1, b: bool = False):
pass pass

View file

@ -131,23 +131,6 @@ func([x for x in "short line"])
func([x for x in "long line long line long line long line long line long line long line"]) func([x for x in "long line long line long line long line long line long line long line"])
func([x for x in [x for x in "long line long line long line long line long line long line long line"]]) func([x for x in [x for x in "long line long line long line long line long line long line long line"]])
func({"short line"})
func({"long line", "long long line", "long long long line", "long long long long line", "long long long long long line"})
func({{"long line", "long long line", "long long long line", "long long long long line", "long long long long long line"}})
func(("long line", "long long line", "long long long line", "long long long long line", "long long long long long line"))
func((("long line", "long long line", "long long long line", "long long long long line", "long long long long long line")))
func([["long line", "long long line", "long long long line", "long long long long line", "long long long long long line"]])
# Do not hug if the argument fits on a single line.
func({"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"})
func(("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"))
func(["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"])
func(**{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit---"})
func(*("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit----"))
array = [{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}]
array = [("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line")]
array = [["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"]]
foooooooooooooooooooo( foooooooooooooooooooo(
[{c: n + 1 for c in range(256)} for n in range(100)] + [{}], {size} [{c: n + 1 for c in range(256)} for n in range(100)] + [{}], {size}
) )
@ -157,14 +140,11 @@ baaaaaaaaaaaaar(
) )
nested_mapping = {"key": [{"a very long key 1": "with a very long value", "a very long key 2": "with a very long value"}]} nested_mapping = {"key": [{"a very long key 1": "with a very long value", "a very long key 2": "with a very long value"}]}
nested_array = [[["long line", "long long line", "long long long line", "long long long long line", "long long long long long line"]]]
explicit_exploding = [[["short", "line",],],] explicit_exploding = [[["short", "line",],],]
single_item_do_not_explode = Context({ single_item_do_not_explode = Context({
"version": get_docs_version(), "version": get_docs_version(),
}) })
foo(*["long long long long long line", "long long long long long line", "long long long long long line"])
foo(*[str(i) for i in range(100000000000000000000000000000000000000000000000000000000000)]) foo(*[str(i) for i in range(100000000000000000000000000000000000000000000000000000000000)])
foo( foo(
@ -262,115 +242,7 @@ for foo in ["a", "b"]:
x x
for x in [ for x in [
x x
@@ -130,13 +136,15 @@ @@ -131,10 +137,12 @@
"long long long long line",
"long long long long long line",
})
-func({{
- "long line",
- "long long line",
- "long long long line",
- "long long long long line",
- "long long long long long line",
-}})
+func({
+ {
+ "long line",
+ "long long line",
+ "long long long line",
+ "long long long long line",
+ "long long long long long line",
+ }
+})
func((
"long line",
"long long line",
@@ -151,30 +159,62 @@
"long long long long line",
"long long long long long line",
)))
-func([[
- "long line",
- "long long line",
- "long long long line",
- "long long long long line",
- "long long long long long line",
-]])
+func([
+ [
+ "long line",
+ "long long line",
+ "long long long line",
+ "long long long long line",
+ "long long long long long line",
+ ]
+])
# Do not hug if the argument fits on a single line.
-func(
- {"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}
-)
-func(
- ("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line")
-)
-func(
- ["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"]
-)
-func(
- **{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit---"}
-)
-func(
- *("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit----")
-)
+func({
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+})
+func((
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+))
+func([
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+])
+func(**{
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit---",
+})
+func(*(
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit----",
+))
array = [
{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}
]
@@ -194,18 +234,24 @@
) )
nested_mapping = { nested_mapping = {
@ -385,28 +257,9 @@ for foo in ["a", "b"]:
+ } + }
+ ] + ]
} }
-nested_array = [[[
- "long line",
- "long long line",
- "long long long line",
- "long long long long line",
- "long long long long long line",
-]]]
+nested_array = [
+ [
+ [
+ "long line",
+ "long long line",
+ "long long long line",
+ "long long long long line",
+ "long long long long long line",
+ ]
+ ]
+]
explicit_exploding = [ explicit_exploding = [
[ [
[ @@ -164,9 +172,9 @@
@@ -240,9 +286,9 @@
}) })
# Edge case when deciding whether to hug the brackets without inner content. # Edge case when deciding whether to hug the brackets without inner content.
@ -554,103 +407,6 @@ func([
] ]
]) ])
func({"short line"})
func({
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
})
func({
{
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
}
})
func((
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
))
func(((
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
)))
func([
[
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
]
])
# Do not hug if the argument fits on a single line.
func({
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
})
func((
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
))
func([
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
])
func(**{
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit---",
})
func(*(
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit----",
))
array = [
{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}
]
array = [
("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line")
]
array = [
["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"]
]
foooooooooooooooooooo( foooooooooooooooooooo(
[{c: n + 1 for c in range(256)} for n in range(100)] + [{}], {size} [{c: n + 1 for c in range(256)} for n in range(100)] + [{}], {size}
) )
@ -667,17 +423,6 @@ nested_mapping = {
} }
] ]
} }
nested_array = [
[
[
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
]
]
]
explicit_exploding = [ explicit_exploding = [
[ [
[ [
@ -690,12 +435,6 @@ single_item_do_not_explode = Context({
"version": get_docs_version(), "version": get_docs_version(),
}) })
foo(*[
"long long long long long line",
"long long long long long line",
"long long long long long line",
])
foo(*[ foo(*[
str(i) for i in range(100000000000000000000000000000000000000000000000000000000000) str(i) for i in range(100000000000000000000000000000000000000000000000000000000000)
]) ])
@ -854,69 +593,6 @@ func([
] ]
]) ])
func({"short line"})
func({
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
})
func({{
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
}})
func((
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
))
func(((
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
)))
func([[
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
]])
# Do not hug if the argument fits on a single line.
func(
{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}
)
func(
("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line")
)
func(
["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"]
)
func(
**{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit---"}
)
func(
*("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit----")
)
array = [
{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}
]
array = [
("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line")
]
array = [
["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"]
]
foooooooooooooooooooo( foooooooooooooooooooo(
[{c: n + 1 for c in range(256)} for n in range(100)] + [{}], {size} [{c: n + 1 for c in range(256)} for n in range(100)] + [{}], {size}
) )
@ -931,13 +607,6 @@ nested_mapping = {
"a very long key 2": "with a very long value", "a very long key 2": "with a very long value",
}] }]
} }
nested_array = [[[
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
]]]
explicit_exploding = [ explicit_exploding = [
[ [
[ [
@ -950,12 +619,6 @@ single_item_do_not_explode = Context({
"version": get_docs_version(), "version": get_docs_version(),
}) })
foo(*[
"long long long long long line",
"long long long long long line",
"long long long long long line",
])
foo(*[ foo(*[
str(i) for i in range(100000000000000000000000000000000000000000000000000000000000) str(i) for i in range(100000000000000000000000000000000000000000000000000000000000)
]) ])

View file

@ -0,0 +1,377 @@
---
source: crates/ruff_python_formatter/tests/fixtures.rs
input_file: crates/ruff_python_formatter/resources/test/fixtures/black/cases/preview_hug_parens_with_braces_and_square_brackets_no_ll1.py
---
## Input
```python
# split out from preview_hug_parens_with_brackes_and_square_brackets, as it produces
# different code on the second pass with line-length 1 in many cases.
# Seems to be about whether the last string in a sequence gets wrapped in parens or not.
foo(*["long long long long long line", "long long long long long line", "long long long long long line"])
func({"short line"})
func({"long line", "long long line", "long long long line", "long long long long line", "long long long long long line"})
func({{"long line", "long long line", "long long long line", "long long long long line", "long long long long long line"}})
func(("long line", "long long line", "long long long line", "long long long long line", "long long long long long line"))
func((("long line", "long long line", "long long long line", "long long long long line", "long long long long long line")))
func([["long line", "long long line", "long long long line", "long long long long line", "long long long long long line"]])
# Do not hug if the argument fits on a single line.
func({"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"})
func(("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"))
func(["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"])
func(**{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit---"})
func(*("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit----"))
array = [{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}]
array = [("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line")]
array = [["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"]]
nested_array = [[["long line", "long long line", "long long long line", "long long long long line", "long long long long long line"]]]
```
## Black Differences
```diff
--- Black
+++ Ruff
@@ -14,13 +14,15 @@
"long long long long line",
"long long long long long line",
})
-func({{
- "long line",
- "long long line",
- "long long long line",
- "long long long long line",
- "long long long long long line",
-}})
+func({
+ {
+ "long line",
+ "long long line",
+ "long long long line",
+ "long long long long line",
+ "long long long long long line",
+ }
+})
func((
"long line",
"long long line",
@@ -35,31 +37,63 @@
"long long long long line",
"long long long long long line",
)))
-func([[
- "long line",
- "long long line",
- "long long long line",
- "long long long long line",
- "long long long long long line",
-]])
+func([
+ [
+ "long line",
+ "long long line",
+ "long long long line",
+ "long long long long line",
+ "long long long long long line",
+ ]
+])
# Do not hug if the argument fits on a single line.
-func(
- {"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}
-)
-func(
- ("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line")
-)
-func(
- ["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"]
-)
-func(
- **{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit---"}
-)
-func(
- *("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit----")
-)
+func({
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+})
+func((
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+))
+func([
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+])
+func(**{
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit---",
+})
+func(*(
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit line",
+ "fit----",
+))
array = [
{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}
]
@@ -70,10 +104,14 @@
["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"]
]
-nested_array = [[[
- "long line",
- "long long line",
- "long long long line",
- "long long long long line",
- "long long long long long line",
-]]]
+nested_array = [
+ [
+ [
+ "long line",
+ "long long line",
+ "long long long line",
+ "long long long long line",
+ "long long long long long line",
+ ]
+ ]
+]
```
## Ruff Output
```python
# split out from preview_hug_parens_with_brackes_and_square_brackets, as it produces
# different code on the second pass with line-length 1 in many cases.
# Seems to be about whether the last string in a sequence gets wrapped in parens or not.
foo(*[
"long long long long long line",
"long long long long long line",
"long long long long long line",
])
func({"short line"})
func({
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
})
func({
{
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
}
})
func((
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
))
func(((
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
)))
func([
[
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
]
])
# Do not hug if the argument fits on a single line.
func({
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
})
func((
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
))
func([
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
])
func(**{
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit---",
})
func(*(
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit line",
"fit----",
))
array = [
{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}
]
array = [
("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line")
]
array = [
["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"]
]
nested_array = [
[
[
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
]
]
]
```
## Black Output
```python
# split out from preview_hug_parens_with_brackes_and_square_brackets, as it produces
# different code on the second pass with line-length 1 in many cases.
# Seems to be about whether the last string in a sequence gets wrapped in parens or not.
foo(*[
"long long long long long line",
"long long long long long line",
"long long long long long line",
])
func({"short line"})
func({
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
})
func({{
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
}})
func((
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
))
func(((
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
)))
func([[
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
]])
# Do not hug if the argument fits on a single line.
func(
{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}
)
func(
("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line")
)
func(
["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"]
)
func(
**{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit---"}
)
func(
*("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit----")
)
array = [
{"fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"}
]
array = [
("fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line")
]
array = [
["fit line", "fit line", "fit line", "fit line", "fit line", "fit line", "fit line"]
]
nested_array = [[[
"long line",
"long long line",
"long long long line",
"long long long long line",
"long long long long long line",
]]]
```