mirror of https://github.com/astral-sh/ruff
test: update formatting of multi-line annotations
It's hard to grok the change from the snapshot diffs alone, so here's
one example. Before:
PYI021.pyi:15:5: PYI021 [*] Docstrings should not be included in stubs
|
14 | class Baz:
15 | """Multiline docstring
| _____^
16 | |
17 | | Lorem ipsum dolor sit amet
18 | | """
| |_______^ PYI021
19 |
20 | def __init__(self) -> None: ...
|
= help: Remove docstring
And now after:
PYI021.pyi:15:5: PYI021 [*] Docstrings should not be included in stubs
|
14 | class Baz:
15 | / """Multiline docstring
16 | |
17 | | Lorem ipsum dolor sit amet
18 | | """
| |_______^ PYI021
19 |
20 | def __init__(self) -> None: ...
|
= help: Remove docstring
I personally think both of these are fine. If we felt strongly, I could
investigate reverting to the old style, but the new style seems okay to
me.
In other words, these updates I believe are just cosmetic and not a bug
fix.
This commit is contained in:
parent
3fa4479c85
commit
f29f58105b
|
|
@ -1,12 +1,10 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_async/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_async/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
ASYNC100.py:8:5: ASYNC100 A `with trio.fail_after(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
ASYNC100.py:8:5: ASYNC100 A `with trio.fail_after(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
||||||
|
|
|
|
||||||
7 | async def func():
|
7 | async def func():
|
||||||
8 | with trio.fail_after():
|
8 | / with trio.fail_after():
|
||||||
| _____^
|
|
||||||
9 | | ...
|
9 | | ...
|
||||||
| |___________^ ASYNC100
|
| |___________^ ASYNC100
|
||||||
|
|
|
|
||||||
|
|
@ -14,8 +12,7 @@ ASYNC100.py:8:5: ASYNC100 A `with trio.fail_after(...):` context does not contai
|
||||||
ASYNC100.py:18:5: ASYNC100 A `with trio.move_on_after(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
ASYNC100.py:18:5: ASYNC100 A `with trio.move_on_after(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
||||||
|
|
|
|
||||||
17 | async def func():
|
17 | async def func():
|
||||||
18 | with trio.move_on_after():
|
18 | / with trio.move_on_after():
|
||||||
| _____^
|
|
||||||
19 | | ...
|
19 | | ...
|
||||||
| |___________^ ASYNC100
|
| |___________^ ASYNC100
|
||||||
|
|
|
|
||||||
|
|
@ -23,8 +20,7 @@ ASYNC100.py:18:5: ASYNC100 A `with trio.move_on_after(...):` context does not co
|
||||||
ASYNC100.py:45:5: ASYNC100 A `with anyio.move_on_after(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
ASYNC100.py:45:5: ASYNC100 A `with anyio.move_on_after(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
||||||
|
|
|
|
||||||
44 | async def func():
|
44 | async def func():
|
||||||
45 | with anyio.move_on_after(delay=0.2):
|
45 | / with anyio.move_on_after(delay=0.2):
|
||||||
| _____^
|
|
||||||
46 | | ...
|
46 | | ...
|
||||||
| |___________^ ASYNC100
|
| |___________^ ASYNC100
|
||||||
|
|
|
|
||||||
|
|
@ -32,8 +28,7 @@ ASYNC100.py:45:5: ASYNC100 A `with anyio.move_on_after(...):` context does not c
|
||||||
ASYNC100.py:50:5: ASYNC100 A `with anyio.fail_after(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
ASYNC100.py:50:5: ASYNC100 A `with anyio.fail_after(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
||||||
|
|
|
|
||||||
49 | async def func():
|
49 | async def func():
|
||||||
50 | with anyio.fail_after():
|
50 | / with anyio.fail_after():
|
||||||
| _____^
|
|
||||||
51 | | ...
|
51 | | ...
|
||||||
| |___________^ ASYNC100
|
| |___________^ ASYNC100
|
||||||
|
|
|
|
||||||
|
|
@ -41,8 +36,7 @@ ASYNC100.py:50:5: ASYNC100 A `with anyio.fail_after(...):` context does not cont
|
||||||
ASYNC100.py:55:5: ASYNC100 A `with anyio.CancelScope(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
ASYNC100.py:55:5: ASYNC100 A `with anyio.CancelScope(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
||||||
|
|
|
|
||||||
54 | async def func():
|
54 | async def func():
|
||||||
55 | with anyio.CancelScope():
|
55 | / with anyio.CancelScope():
|
||||||
| _____^
|
|
||||||
56 | | ...
|
56 | | ...
|
||||||
| |___________^ ASYNC100
|
| |___________^ ASYNC100
|
||||||
|
|
|
|
||||||
|
|
@ -50,8 +44,7 @@ ASYNC100.py:55:5: ASYNC100 A `with anyio.CancelScope(...):` context does not con
|
||||||
ASYNC100.py:60:5: ASYNC100 A `with anyio.CancelScope(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
ASYNC100.py:60:5: ASYNC100 A `with anyio.CancelScope(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
||||||
|
|
|
|
||||||
59 | async def func():
|
59 | async def func():
|
||||||
60 | with anyio.CancelScope(), nullcontext():
|
60 | / with anyio.CancelScope(), nullcontext():
|
||||||
| _____^
|
|
||||||
61 | | ...
|
61 | | ...
|
||||||
| |___________^ ASYNC100
|
| |___________^ ASYNC100
|
||||||
|
|
|
|
||||||
|
|
@ -59,8 +52,7 @@ ASYNC100.py:60:5: ASYNC100 A `with anyio.CancelScope(...):` context does not con
|
||||||
ASYNC100.py:65:5: ASYNC100 A `with anyio.CancelScope(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
ASYNC100.py:65:5: ASYNC100 A `with anyio.CancelScope(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
||||||
|
|
|
|
||||||
64 | async def func():
|
64 | async def func():
|
||||||
65 | with nullcontext(), anyio.CancelScope():
|
65 | / with nullcontext(), anyio.CancelScope():
|
||||||
| _____^
|
|
||||||
66 | | ...
|
66 | | ...
|
||||||
| |___________^ ASYNC100
|
| |___________^ ASYNC100
|
||||||
|
|
|
|
||||||
|
|
@ -68,8 +60,7 @@ ASYNC100.py:65:5: ASYNC100 A `with anyio.CancelScope(...):` context does not con
|
||||||
ASYNC100.py:70:5: ASYNC100 A `with asyncio.timeout(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
ASYNC100.py:70:5: ASYNC100 A `with asyncio.timeout(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
||||||
|
|
|
|
||||||
69 | async def func():
|
69 | async def func():
|
||||||
70 | async with asyncio.timeout(delay=0.2):
|
70 | / async with asyncio.timeout(delay=0.2):
|
||||||
| _____^
|
|
||||||
71 | | ...
|
71 | | ...
|
||||||
| |___________^ ASYNC100
|
| |___________^ ASYNC100
|
||||||
|
|
|
|
||||||
|
|
@ -77,8 +68,7 @@ ASYNC100.py:70:5: ASYNC100 A `with asyncio.timeout(...):` context does not conta
|
||||||
ASYNC100.py:75:5: ASYNC100 A `with asyncio.timeout_at(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
ASYNC100.py:75:5: ASYNC100 A `with asyncio.timeout_at(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
||||||
|
|
|
|
||||||
74 | async def func():
|
74 | async def func():
|
||||||
75 | async with asyncio.timeout_at(when=0.2):
|
75 | / async with asyncio.timeout_at(when=0.2):
|
||||||
| _____^
|
|
||||||
76 | | ...
|
76 | | ...
|
||||||
| |___________^ ASYNC100
|
| |___________^ ASYNC100
|
||||||
|
|
|
|
||||||
|
|
@ -86,8 +76,7 @@ ASYNC100.py:75:5: ASYNC100 A `with asyncio.timeout_at(...):` context does not co
|
||||||
ASYNC100.py:85:5: ASYNC100 A `with asyncio.timeout(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
ASYNC100.py:85:5: ASYNC100 A `with asyncio.timeout(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
||||||
|
|
|
|
||||||
84 | async def func():
|
84 | async def func():
|
||||||
85 | async with asyncio.timeout(delay=0.2), asyncio.TaskGroup(), asyncio.timeout(delay=0.2):
|
85 | / async with asyncio.timeout(delay=0.2), asyncio.TaskGroup(), asyncio.timeout(delay=0.2):
|
||||||
| _____^
|
|
||||||
86 | | ...
|
86 | | ...
|
||||||
| |___________^ ASYNC100
|
| |___________^ ASYNC100
|
||||||
|
|
|
|
||||||
|
|
@ -95,8 +84,7 @@ ASYNC100.py:85:5: ASYNC100 A `with asyncio.timeout(...):` context does not conta
|
||||||
ASYNC100.py:95:5: ASYNC100 A `with asyncio.timeout(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
ASYNC100.py:95:5: ASYNC100 A `with asyncio.timeout(...):` context does not contain any `await` statements. This makes it pointless, as the timeout can only be triggered by a checkpoint.
|
||||||
|
|
|
|
||||||
94 | async def func():
|
94 | async def func():
|
||||||
95 | async with asyncio.timeout(delay=0.2), asyncio.timeout(delay=0.2):
|
95 | / async with asyncio.timeout(delay=0.2), asyncio.timeout(delay=0.2):
|
||||||
| _____^
|
|
||||||
96 | | ...
|
96 | | ...
|
||||||
| |___________^ ASYNC100
|
| |___________^ ASYNC100
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_async/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_async/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
ASYNC110.py:7:5: ASYNC110 Use `trio.Event` instead of awaiting `trio.sleep` in a `while` loop
|
ASYNC110.py:7:5: ASYNC110 Use `trio.Event` instead of awaiting `trio.sleep` in a `while` loop
|
||||||
|
|
|
|
||||||
6 | async def func():
|
6 | async def func():
|
||||||
7 | while True:
|
7 | / while True:
|
||||||
| _____^
|
|
||||||
8 | | await trio.sleep(10)
|
8 | | await trio.sleep(10)
|
||||||
| |____________________________^ ASYNC110
|
| |____________________________^ ASYNC110
|
||||||
|
|
|
|
||||||
|
|
@ -14,8 +12,7 @@ ASYNC110.py:7:5: ASYNC110 Use `trio.Event` instead of awaiting `trio.sleep` in a
|
||||||
ASYNC110.py:12:5: ASYNC110 Use `trio.Event` instead of awaiting `trio.sleep` in a `while` loop
|
ASYNC110.py:12:5: ASYNC110 Use `trio.Event` instead of awaiting `trio.sleep` in a `while` loop
|
||||||
|
|
|
|
||||||
11 | async def func():
|
11 | async def func():
|
||||||
12 | while True:
|
12 | / while True:
|
||||||
| _____^
|
|
||||||
13 | | await trio.sleep_until(10)
|
13 | | await trio.sleep_until(10)
|
||||||
| |__________________________________^ ASYNC110
|
| |__________________________________^ ASYNC110
|
||||||
|
|
|
|
||||||
|
|
@ -23,8 +20,7 @@ ASYNC110.py:12:5: ASYNC110 Use `trio.Event` instead of awaiting `trio.sleep` in
|
||||||
ASYNC110.py:22:5: ASYNC110 Use `asyncio.Event` instead of awaiting `asyncio.sleep` in a `while` loop
|
ASYNC110.py:22:5: ASYNC110 Use `asyncio.Event` instead of awaiting `asyncio.sleep` in a `while` loop
|
||||||
|
|
|
|
||||||
21 | async def func():
|
21 | async def func():
|
||||||
22 | while True:
|
22 | / while True:
|
||||||
| _____^
|
|
||||||
23 | | await anyio.sleep(10)
|
23 | | await anyio.sleep(10)
|
||||||
| |_____________________________^ ASYNC110
|
| |_____________________________^ ASYNC110
|
||||||
|
|
|
|
||||||
|
|
@ -32,8 +28,7 @@ ASYNC110.py:22:5: ASYNC110 Use `asyncio.Event` instead of awaiting `asyncio.slee
|
||||||
ASYNC110.py:27:5: ASYNC110 Use `asyncio.Event` instead of awaiting `asyncio.sleep` in a `while` loop
|
ASYNC110.py:27:5: ASYNC110 Use `asyncio.Event` instead of awaiting `asyncio.sleep` in a `while` loop
|
||||||
|
|
|
|
||||||
26 | async def func():
|
26 | async def func():
|
||||||
27 | while True:
|
27 | / while True:
|
||||||
| _____^
|
|
||||||
28 | | await anyio.sleep_until(10)
|
28 | | await anyio.sleep_until(10)
|
||||||
| |___________________________________^ ASYNC110
|
| |___________________________________^ ASYNC110
|
||||||
|
|
|
|
||||||
|
|
@ -41,8 +36,7 @@ ASYNC110.py:27:5: ASYNC110 Use `asyncio.Event` instead of awaiting `asyncio.slee
|
||||||
ASYNC110.py:37:5: ASYNC110 Use `anyio.Event` instead of awaiting `anyio.sleep` in a `while` loop
|
ASYNC110.py:37:5: ASYNC110 Use `anyio.Event` instead of awaiting `anyio.sleep` in a `while` loop
|
||||||
|
|
|
|
||||||
36 | async def func():
|
36 | async def func():
|
||||||
37 | while True:
|
37 | / while True:
|
||||||
| _____^
|
|
||||||
38 | | await asyncio.sleep(10)
|
38 | | await asyncio.sleep(10)
|
||||||
| |_______________________________^ ASYNC110
|
| |_______________________________^ ASYNC110
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_bandit/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_bandit/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
S608.py:2:10: S608 Possible SQL injection vector through string-based query construction
|
S608.py:2:10: S608 Possible SQL injection vector through string-based query construction
|
||||||
|
|
|
|
||||||
|
|
@ -46,14 +45,14 @@ S608.py:6:10: S608 Possible SQL injection vector through string-based query cons
|
||||||
5 | query4 = "SELECT {} FROM table;".format(var)
|
5 | query4 = "SELECT {} FROM table;".format(var)
|
||||||
6 | query5 = f"SELECT * FROM table WHERE var = {var}"
|
6 | query5 = f"SELECT * FROM table WHERE var = {var}"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
7 |
|
7 |
|
||||||
8 | query6 = "DELETE FROM table WHERE var = %s" % (var,)
|
8 | query6 = "DELETE FROM table WHERE var = %s" % (var,)
|
||||||
|
|
|
|
||||||
|
|
||||||
S608.py:8:10: S608 Possible SQL injection vector through string-based query construction
|
S608.py:8:10: S608 Possible SQL injection vector through string-based query construction
|
||||||
|
|
|
|
||||||
6 | query5 = f"SELECT * FROM table WHERE var = {var}"
|
6 | query5 = f"SELECT * FROM table WHERE var = {var}"
|
||||||
7 |
|
7 |
|
||||||
8 | query6 = "DELETE FROM table WHERE var = %s" % (var,)
|
8 | query6 = "DELETE FROM table WHERE var = %s" % (var,)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
9 | query7 = "DELETE FROM table WHERE VAR = " + var
|
9 | query7 = "DELETE FROM table WHERE VAR = " + var
|
||||||
|
|
@ -94,14 +93,14 @@ S608.py:12:11: S608 Possible SQL injection vector through string-based query con
|
||||||
11 | query9 = "DELETE FROM table WHERE var = {}".format(var)
|
11 | query9 = "DELETE FROM table WHERE var = {}".format(var)
|
||||||
12 | query10 = f"DELETE FROM table WHERE var = {var}"
|
12 | query10 = f"DELETE FROM table WHERE var = {var}"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
13 |
|
13 |
|
||||||
14 | query11 = "INSERT INTO table VALUES (%s)" % (var,)
|
14 | query11 = "INSERT INTO table VALUES (%s)" % (var,)
|
||||||
|
|
|
|
||||||
|
|
||||||
S608.py:14:11: S608 Possible SQL injection vector through string-based query construction
|
S608.py:14:11: S608 Possible SQL injection vector through string-based query construction
|
||||||
|
|
|
|
||||||
12 | query10 = f"DELETE FROM table WHERE var = {var}"
|
12 | query10 = f"DELETE FROM table WHERE var = {var}"
|
||||||
13 |
|
13 |
|
||||||
14 | query11 = "INSERT INTO table VALUES (%s)" % (var,)
|
14 | query11 = "INSERT INTO table VALUES (%s)" % (var,)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
15 | query12 = "INSERT INTO TABLE VALUES (" + var + ")"
|
15 | query12 = "INSERT INTO TABLE VALUES (" + var + ")"
|
||||||
|
|
@ -132,14 +131,14 @@ S608.py:17:11: S608 Possible SQL injection vector through string-based query con
|
||||||
16 | query13 = "INSERT INTO {} VALUES ({})".format(table, var)
|
16 | query13 = "INSERT INTO {} VALUES ({})".format(table, var)
|
||||||
17 | query14 = f"INSERT INTO {table} VALUES var = {var}"
|
17 | query14 = f"INSERT INTO {table} VALUES var = {var}"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
18 |
|
18 |
|
||||||
19 | query15 = "UPDATE %s SET var = %s" % (table, var)
|
19 | query15 = "UPDATE %s SET var = %s" % (table, var)
|
||||||
|
|
|
|
||||||
|
|
||||||
S608.py:19:11: S608 Possible SQL injection vector through string-based query construction
|
S608.py:19:11: S608 Possible SQL injection vector through string-based query construction
|
||||||
|
|
|
|
||||||
17 | query14 = f"INSERT INTO {table} VALUES var = {var}"
|
17 | query14 = f"INSERT INTO {table} VALUES var = {var}"
|
||||||
18 |
|
18 |
|
||||||
19 | query15 = "UPDATE %s SET var = %s" % (table, var)
|
19 | query15 = "UPDATE %s SET var = %s" % (table, var)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
20 | query16 = "UPDATE " + table + " SET var = " + var
|
20 | query16 = "UPDATE " + table + " SET var = " + var
|
||||||
|
|
@ -170,14 +169,14 @@ S608.py:22:11: S608 Possible SQL injection vector through string-based query con
|
||||||
21 | query17 = "UPDATE {} SET var = {}".format(table, var)
|
21 | query17 = "UPDATE {} SET var = {}".format(table, var)
|
||||||
22 | query18 = f"UPDATE {table} SET var = {var}"
|
22 | query18 = f"UPDATE {table} SET var = {var}"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
23 |
|
23 |
|
||||||
24 | query19 = "select %s from table" % (var,)
|
24 | query19 = "select %s from table" % (var,)
|
||||||
|
|
|
|
||||||
|
|
||||||
S608.py:24:11: S608 Possible SQL injection vector through string-based query construction
|
S608.py:24:11: S608 Possible SQL injection vector through string-based query construction
|
||||||
|
|
|
|
||||||
22 | query18 = f"UPDATE {table} SET var = {var}"
|
22 | query18 = f"UPDATE {table} SET var = {var}"
|
||||||
23 |
|
23 |
|
||||||
24 | query19 = "select %s from table" % (var,)
|
24 | query19 = "select %s from table" % (var,)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
25 | query20 = "select var from " + table
|
25 | query20 = "select var from " + table
|
||||||
|
|
@ -218,14 +217,14 @@ S608.py:28:11: S608 Possible SQL injection vector through string-based query con
|
||||||
27 | query22 = "select {} from table;".format(var)
|
27 | query22 = "select {} from table;".format(var)
|
||||||
28 | query23 = f"select * from table where var = {var}"
|
28 | query23 = f"select * from table where var = {var}"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
29 |
|
29 |
|
||||||
30 | query24 = "delete from table where var = %s" % (var,)
|
30 | query24 = "delete from table where var = %s" % (var,)
|
||||||
|
|
|
|
||||||
|
|
||||||
S608.py:30:11: S608 Possible SQL injection vector through string-based query construction
|
S608.py:30:11: S608 Possible SQL injection vector through string-based query construction
|
||||||
|
|
|
|
||||||
28 | query23 = f"select * from table where var = {var}"
|
28 | query23 = f"select * from table where var = {var}"
|
||||||
29 |
|
29 |
|
||||||
30 | query24 = "delete from table where var = %s" % (var,)
|
30 | query24 = "delete from table where var = %s" % (var,)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
31 | query25 = "delete from table where var = " + var
|
31 | query25 = "delete from table where var = " + var
|
||||||
|
|
@ -266,14 +265,14 @@ S608.py:34:11: S608 Possible SQL injection vector through string-based query con
|
||||||
33 | query27 = "delete from table where var = {}".format(var)
|
33 | query27 = "delete from table where var = {}".format(var)
|
||||||
34 | query28 = f"delete from table where var = {var}"
|
34 | query28 = f"delete from table where var = {var}"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
35 |
|
35 |
|
||||||
36 | query29 = "insert into table values (%s)" % (var,)
|
36 | query29 = "insert into table values (%s)" % (var,)
|
||||||
|
|
|
|
||||||
|
|
||||||
S608.py:36:11: S608 Possible SQL injection vector through string-based query construction
|
S608.py:36:11: S608 Possible SQL injection vector through string-based query construction
|
||||||
|
|
|
|
||||||
34 | query28 = f"delete from table where var = {var}"
|
34 | query28 = f"delete from table where var = {var}"
|
||||||
35 |
|
35 |
|
||||||
36 | query29 = "insert into table values (%s)" % (var,)
|
36 | query29 = "insert into table values (%s)" % (var,)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
37 | query30 = "insert into table values (" + var + ")"
|
37 | query30 = "insert into table values (" + var + ")"
|
||||||
|
|
@ -304,14 +303,14 @@ S608.py:39:11: S608 Possible SQL injection vector through string-based query con
|
||||||
38 | query31 = "insert into {} values ({})".format(table, var)
|
38 | query31 = "insert into {} values ({})".format(table, var)
|
||||||
39 | query32 = f"insert into {table} values var = {var}"
|
39 | query32 = f"insert into {table} values var = {var}"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
40 |
|
40 |
|
||||||
41 | query33 = "update %s set var = %s" % (table, var)
|
41 | query33 = "update %s set var = %s" % (table, var)
|
||||||
|
|
|
|
||||||
|
|
||||||
S608.py:41:11: S608 Possible SQL injection vector through string-based query construction
|
S608.py:41:11: S608 Possible SQL injection vector through string-based query construction
|
||||||
|
|
|
|
||||||
39 | query32 = f"insert into {table} values var = {var}"
|
39 | query32 = f"insert into {table} values var = {var}"
|
||||||
40 |
|
40 |
|
||||||
41 | query33 = "update %s set var = %s" % (table, var)
|
41 | query33 = "update %s set var = %s" % (table, var)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
42 | query34 = "update " + table + " set var = " + var
|
42 | query34 = "update " + table + " set var = " + var
|
||||||
|
|
@ -342,7 +341,7 @@ S608.py:44:11: S608 Possible SQL injection vector through string-based query con
|
||||||
43 | query35 = "update {} set var = {}".format(table, var)
|
43 | query35 = "update {} set var = {}".format(table, var)
|
||||||
44 | query36 = f"update {table} set var = {var}"
|
44 | query36 = f"update {table} set var = {var}"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
45 |
|
45 |
|
||||||
46 | # multi-line failures
|
46 | # multi-line failures
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -357,7 +356,7 @@ S608.py:48:12: S608 Possible SQL injection vector through string-based query con
|
||||||
51 | | WHERE var = %s
|
51 | | WHERE var = %s
|
||||||
52 | | """ % var
|
52 | | """ % var
|
||||||
| |_____________^ S608
|
| |_____________^ S608
|
||||||
53 |
|
53 |
|
||||||
54 | def query38():
|
54 | def query38():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -371,7 +370,7 @@ S608.py:55:12: S608 Possible SQL injection vector through string-based query con
|
||||||
58 | | WHERE var =
|
58 | | WHERE var =
|
||||||
59 | | """ + var
|
59 | | """ + var
|
||||||
| |_____________^ S608
|
| |_____________^ S608
|
||||||
60 |
|
60 |
|
||||||
61 | def query39():
|
61 | def query39():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -385,7 +384,7 @@ S608.py:62:12: S608 Possible SQL injection vector through string-based query con
|
||||||
65 | | WHERE var = {}
|
65 | | WHERE var = {}
|
||||||
66 | | """.format(var)
|
66 | | """.format(var)
|
||||||
| |___________________^ S608
|
| |___________________^ S608
|
||||||
67 |
|
67 |
|
||||||
68 | def query40():
|
68 | def query40():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -399,7 +398,7 @@ S608.py:69:12: S608 Possible SQL injection vector through string-based query con
|
||||||
72 | | WHERE var = {var}
|
72 | | WHERE var = {var}
|
||||||
73 | | """
|
73 | | """
|
||||||
| |_______^ S608
|
| |_______^ S608
|
||||||
74 |
|
74 |
|
||||||
75 | def query41():
|
75 | def query41():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -407,8 +406,7 @@ S608.py:77:9: S608 Possible SQL injection vector through string-based query cons
|
||||||
|
|
|
|
||||||
75 | def query41():
|
75 | def query41():
|
||||||
76 | return (
|
76 | return (
|
||||||
77 | "SELECT * "
|
77 | / "SELECT * "
|
||||||
| _________^
|
|
||||||
78 | | "FROM table "
|
78 | | "FROM table "
|
||||||
79 | | f"WHERE var = {var}"
|
79 | | f"WHERE var = {var}"
|
||||||
| |____________________________^ S608
|
| |____________________________^ S608
|
||||||
|
|
@ -449,7 +447,7 @@ S608.py:86:30: S608 Possible SQL injection vector through string-based query con
|
||||||
85 | query44 = cursor.execute("SELECT * FROM table WHERE var = {}".format(var))
|
85 | query44 = cursor.execute("SELECT * FROM table WHERE var = {}".format(var))
|
||||||
86 | query45 = cursor.executemany("SELECT * FROM table WHERE var = %s" % var, [])
|
86 | query45 = cursor.executemany("SELECT * FROM table WHERE var = %s" % var, [])
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
87 |
|
87 |
|
||||||
88 | # # pass
|
88 | # # pass
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -458,7 +456,7 @@ S608.py:98:11: S608 Possible SQL injection vector through string-based query con
|
||||||
97 | # # INSERT without INTO (e.g. MySQL and derivatives)
|
97 | # # INSERT without INTO (e.g. MySQL and derivatives)
|
||||||
98 | query46 = "INSERT table VALUES (%s)" % (var,)
|
98 | query46 = "INSERT table VALUES (%s)" % (var,)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
99 |
|
99 |
|
||||||
100 | # # REPLACE (e.g. MySQL and derivatives, SQLite)
|
100 | # # REPLACE (e.g. MySQL and derivatives, SQLite)
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -476,7 +474,7 @@ S608.py:102:11: S608 Possible SQL injection vector through string-based query co
|
||||||
101 | query47 = "REPLACE INTO table VALUES (%s)" % (var,)
|
101 | query47 = "REPLACE INTO table VALUES (%s)" % (var,)
|
||||||
102 | query48 = "REPLACE table VALUES (%s)" % (var,)
|
102 | query48 = "REPLACE table VALUES (%s)" % (var,)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
103 |
|
103 |
|
||||||
104 | query49 = "Deselect something that is not SQL even though it has a ' from ' somewhere in %s." % "there"
|
104 | query49 = "Deselect something that is not SQL even though it has a ' from ' somewhere in %s." % "there"
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -494,7 +492,7 @@ S608.py:112:1: S608 Possible SQL injection vector through string-based query con
|
||||||
111 | "SELECT * FROM " + ("table1" if x > 0 else "table2") # query50
|
111 | "SELECT * FROM " + ("table1" if x > 0 else "table2") # query50
|
||||||
112 | "SELECT * FROM " + ("table1" if x > 0 else ["table2"]) # query51
|
112 | "SELECT * FROM " + ("table1" if x > 0 else ["table2"]) # query51
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ S608
|
||||||
113 |
|
113 |
|
||||||
114 | # test cases from #12044
|
114 | # test cases from #12044
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -507,7 +505,7 @@ S608.py:117:12: S608 Possible SQL injection vector through string-based query co
|
||||||
119 | | FROM bar
|
119 | | FROM bar
|
||||||
120 | | """
|
120 | | """
|
||||||
| |_______^ S608
|
| |_______^ S608
|
||||||
121 |
|
121 |
|
||||||
122 | def query53():
|
122 | def query53():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -521,7 +519,7 @@ S608.py:123:12: S608 Possible SQL injection vector through string-based query co
|
||||||
126 | | FROM bar
|
126 | | FROM bar
|
||||||
127 | | """
|
127 | | """
|
||||||
| |_______^ S608
|
| |_______^ S608
|
||||||
128 |
|
128 |
|
||||||
129 | def query54():
|
129 | def query54():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -535,46 +533,46 @@ S608.py:130:12: S608 Possible SQL injection vector through string-based query co
|
||||||
133 | | bar
|
133 | | bar
|
||||||
134 | | """
|
134 | | """
|
||||||
| |_______^ S608
|
| |_______^ S608
|
||||||
135 |
|
135 |
|
||||||
136 | query55 = f"""SELECT * FROM
|
136 | query55 = f"""SELECT * FROM
|
||||||
|
|
|
|
||||||
|
|
||||||
S608.py:136:11: S608 Possible SQL injection vector through string-based query construction
|
S608.py:136:11: S608 Possible SQL injection vector through string-based query construction
|
||||||
|
|
|
|
||||||
134 | """
|
134 | """
|
||||||
135 |
|
135 |
|
||||||
136 | query55 = f"""SELECT * FROM
|
136 | query55 = f"""SELECT * FROM
|
||||||
| ___________^
|
| ___________^
|
||||||
137 | | {var}.table
|
137 | | {var}.table
|
||||||
138 | | """
|
138 | | """
|
||||||
| |___^ S608
|
| |___^ S608
|
||||||
139 |
|
139 |
|
||||||
140 | query56 = f"""SELECT *
|
140 | query56 = f"""SELECT *
|
||||||
|
|
|
|
||||||
|
|
||||||
S608.py:140:11: S608 Possible SQL injection vector through string-based query construction
|
S608.py:140:11: S608 Possible SQL injection vector through string-based query construction
|
||||||
|
|
|
|
||||||
138 | """
|
138 | """
|
||||||
139 |
|
139 |
|
||||||
140 | query56 = f"""SELECT *
|
140 | query56 = f"""SELECT *
|
||||||
| ___________^
|
| ___________^
|
||||||
141 | | FROM {var}.table
|
141 | | FROM {var}.table
|
||||||
142 | | """
|
142 | | """
|
||||||
| |___^ S608
|
| |___^ S608
|
||||||
143 |
|
143 |
|
||||||
144 | query57 = f"""
|
144 | query57 = f"""
|
||||||
|
|
|
|
||||||
|
|
||||||
S608.py:144:11: S608 Possible SQL injection vector through string-based query construction
|
S608.py:144:11: S608 Possible SQL injection vector through string-based query construction
|
||||||
|
|
|
|
||||||
142 | """
|
142 | """
|
||||||
143 |
|
143 |
|
||||||
144 | query57 = f"""
|
144 | query57 = f"""
|
||||||
| ___________^
|
| ___________^
|
||||||
145 | | SELECT *
|
145 | | SELECT *
|
||||||
146 | | FROM {var}.table
|
146 | | FROM {var}.table
|
||||||
147 | | """
|
147 | | """
|
||||||
| |___^ S608
|
| |___^ S608
|
||||||
148 |
|
148 |
|
||||||
149 | query57 = f"""
|
149 | query57 = f"""
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,55 +1,50 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_bugbear/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_bugbear/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
B027.py:18:5: B027 `AbstractClass.empty_1` is an empty method in an abstract base class, but has no abstract decorator
|
B027.py:18:5: B027 `AbstractClass.empty_1` is an empty method in an abstract base class, but has no abstract decorator
|
||||||
|
|
|
|
||||||
17 | class AbstractClass(ABC):
|
17 | class AbstractClass(ABC):
|
||||||
18 | def empty_1(self): # error
|
18 | / def empty_1(self): # error
|
||||||
| _____^
|
|
||||||
19 | | ...
|
19 | | ...
|
||||||
| |___________^ B027
|
| |___________^ B027
|
||||||
20 |
|
20 |
|
||||||
21 | def empty_2(self): # error
|
21 | def empty_2(self): # error
|
||||||
|
|
|
|
||||||
|
|
||||||
B027.py:21:5: B027 `AbstractClass.empty_2` is an empty method in an abstract base class, but has no abstract decorator
|
B027.py:21:5: B027 `AbstractClass.empty_2` is an empty method in an abstract base class, but has no abstract decorator
|
||||||
|
|
|
|
||||||
19 | ...
|
19 | ...
|
||||||
20 |
|
20 |
|
||||||
21 | def empty_2(self): # error
|
21 | / def empty_2(self): # error
|
||||||
| _____^
|
|
||||||
22 | | pass
|
22 | | pass
|
||||||
| |____________^ B027
|
| |____________^ B027
|
||||||
23 |
|
23 |
|
||||||
24 | def empty_3(self): # error
|
24 | def empty_3(self): # error
|
||||||
|
|
|
|
||||||
|
|
||||||
B027.py:24:5: B027 `AbstractClass.empty_3` is an empty method in an abstract base class, but has no abstract decorator
|
B027.py:24:5: B027 `AbstractClass.empty_3` is an empty method in an abstract base class, but has no abstract decorator
|
||||||
|
|
|
|
||||||
22 | pass
|
22 | pass
|
||||||
23 |
|
23 |
|
||||||
24 | def empty_3(self): # error
|
24 | / def empty_3(self): # error
|
||||||
| _____^
|
|
||||||
25 | | """docstring"""
|
25 | | """docstring"""
|
||||||
26 | | ...
|
26 | | ...
|
||||||
| |___________^ B027
|
| |___________^ B027
|
||||||
27 |
|
27 |
|
||||||
28 | def empty_4(self): # error
|
28 | def empty_4(self): # error
|
||||||
|
|
|
|
||||||
|
|
||||||
B027.py:28:5: B027 `AbstractClass.empty_4` is an empty method in an abstract base class, but has no abstract decorator
|
B027.py:28:5: B027 `AbstractClass.empty_4` is an empty method in an abstract base class, but has no abstract decorator
|
||||||
|
|
|
|
||||||
26 | ...
|
26 | ...
|
||||||
27 |
|
27 |
|
||||||
28 | def empty_4(self): # error
|
28 | / def empty_4(self): # error
|
||||||
| _____^
|
|
||||||
29 | | """multiple ellipsis/pass"""
|
29 | | """multiple ellipsis/pass"""
|
||||||
30 | | ...
|
30 | | ...
|
||||||
31 | | pass
|
31 | | pass
|
||||||
32 | | ...
|
32 | | ...
|
||||||
33 | | pass
|
33 | | pass
|
||||||
| |____________^ B027
|
| |____________^ B027
|
||||||
34 |
|
34 |
|
||||||
35 | @notabstract
|
35 | @notabstract
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_comprehensions/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_comprehensions/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
C419.py:1:5: C419 [*] Unnecessary list comprehension
|
C419.py:1:5: C419 [*] Unnecessary list comprehension
|
||||||
|
|
|
|
||||||
|
|
@ -84,7 +83,7 @@ C419.py:9:5: C419 [*] Unnecessary set comprehension
|
||||||
8 | ) # third comment
|
8 | ) # third comment
|
||||||
9 | any({x.id for x in bar})
|
9 | any({x.id for x in bar})
|
||||||
| ^^^^^^^^^^^^^^^^^^^ C419
|
| ^^^^^^^^^^^^^^^^^^^ C419
|
||||||
10 |
|
10 |
|
||||||
11 | # OK
|
11 | # OK
|
||||||
|
|
|
|
||||||
= help: Remove unnecessary comprehension
|
= help: Remove unnecessary comprehension
|
||||||
|
|
@ -103,8 +102,7 @@ C419.py:28:5: C419 [*] Unnecessary list comprehension
|
||||||
|
|
|
|
||||||
26 | # Special comment handling
|
26 | # Special comment handling
|
||||||
27 | any(
|
27 | any(
|
||||||
28 | [ # lbracket comment
|
28 | / [ # lbracket comment
|
||||||
| _____^
|
|
||||||
29 | | # second line comment
|
29 | | # second line comment
|
||||||
30 | | i.bit_count()
|
30 | | i.bit_count()
|
||||||
31 | | # random middle comment
|
31 | | # random middle comment
|
||||||
|
|
@ -189,7 +187,7 @@ C419.py:50:5: C419 [*] Unnecessary set comprehension
|
||||||
49 | any({x.id for x in bar})
|
49 | any({x.id for x in bar})
|
||||||
50 | all({x.id for x in bar})
|
50 | all({x.id for x in bar})
|
||||||
| ^^^^^^^^^^^^^^^^^^^ C419
|
| ^^^^^^^^^^^^^^^^^^^ C419
|
||||||
51 |
|
51 |
|
||||||
52 | # should be linted in preview...
|
52 | # should be linted in preview...
|
||||||
|
|
|
|
||||||
= help: Remove unnecessary comprehension
|
= help: Remove unnecessary comprehension
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_comprehensions/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_comprehensions/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
C419_1.py:1:5: C419 [*] Unnecessary list comprehension
|
C419_1.py:1:5: C419 [*] Unnecessary list comprehension
|
||||||
|
|
|
|
||||||
|
|
@ -61,7 +60,7 @@ C419_1.py:4:5: C419 [*] Unnecessary list comprehension
|
||||||
3 | max([x.val for x in bar])
|
3 | max([x.val for x in bar])
|
||||||
4 | sum([x.val for x in bar], 0)
|
4 | sum([x.val for x in bar], 0)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ C419
|
| ^^^^^^^^^^^^^^^^^^^^ C419
|
||||||
5 |
|
5 |
|
||||||
6 | # OK
|
6 | # OK
|
||||||
|
|
|
|
||||||
= help: Remove unnecessary comprehension
|
= help: Remove unnecessary comprehension
|
||||||
|
|
@ -80,8 +79,7 @@ C419_1.py:14:5: C419 [*] Unnecessary list comprehension
|
||||||
|
|
|
|
||||||
12 | # Multi-line
|
12 | # Multi-line
|
||||||
13 | sum(
|
13 | sum(
|
||||||
14 | [
|
14 | / [
|
||||||
| _____^
|
|
||||||
15 | | delta
|
15 | | delta
|
||||||
16 | | for delta in timedelta_list
|
16 | | for delta in timedelta_list
|
||||||
17 | | if delta
|
17 | | if delta
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,10 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_django/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_django/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
DJ012.py:28:5: DJ012 Order of model's inner classes, methods, and fields does not follow the Django Style Guide: field declaration should come before `Meta` class
|
DJ012.py:28:5: DJ012 Order of model's inner classes, methods, and fields does not follow the Django Style Guide: field declaration should come before `Meta` class
|
||||||
|
|
|
|
||||||
26 | return "foobar"
|
26 | return "foobar"
|
||||||
27 |
|
27 |
|
||||||
28 | first_name = models.CharField(max_length=32)
|
28 | first_name = models.CharField(max_length=32)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ DJ012
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ DJ012
|
||||||
|
|
|
|
||||||
|
|
@ -13,7 +12,7 @@ DJ012.py:28:5: DJ012 Order of model's inner classes, methods, and fields does no
|
||||||
DJ012.py:43:5: DJ012 Order of model's inner classes, methods, and fields does not follow the Django Style Guide: field declaration should come before manager declaration
|
DJ012.py:43:5: DJ012 Order of model's inner classes, methods, and fields does not follow the Django Style Guide: field declaration should come before manager declaration
|
||||||
|
|
|
|
||||||
41 | return "foobar"
|
41 | return "foobar"
|
||||||
42 |
|
42 |
|
||||||
43 | first_name = models.CharField(max_length=32)
|
43 | first_name = models.CharField(max_length=32)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ DJ012
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ DJ012
|
||||||
|
|
|
|
||||||
|
|
@ -21,9 +20,8 @@ DJ012.py:43:5: DJ012 Order of model's inner classes, methods, and fields does no
|
||||||
DJ012.py:56:5: DJ012 Order of model's inner classes, methods, and fields does not follow the Django Style Guide: Magic method should come before custom method
|
DJ012.py:56:5: DJ012 Order of model's inner classes, methods, and fields does not follow the Django Style Guide: Magic method should come before custom method
|
||||||
|
|
|
|
||||||
54 | pass
|
54 | pass
|
||||||
55 |
|
55 |
|
||||||
56 | def __str__(self):
|
56 | / def __str__(self):
|
||||||
| _____^
|
|
||||||
57 | | return "foobar"
|
57 | | return "foobar"
|
||||||
| |_______________________^ DJ012
|
| |_______________________^ DJ012
|
||||||
|
|
|
|
||||||
|
|
@ -31,9 +29,8 @@ DJ012.py:56:5: DJ012 Order of model's inner classes, methods, and fields does no
|
||||||
DJ012.py:69:5: DJ012 Order of model's inner classes, methods, and fields does not follow the Django Style Guide: `save` method should come before `get_absolute_url` method
|
DJ012.py:69:5: DJ012 Order of model's inner classes, methods, and fields does not follow the Django Style Guide: `save` method should come before `get_absolute_url` method
|
||||||
|
|
|
|
||||||
67 | pass
|
67 | pass
|
||||||
68 |
|
68 |
|
||||||
69 | def save(self):
|
69 | / def save(self):
|
||||||
| _____^
|
|
||||||
70 | | pass
|
70 | | pass
|
||||||
| |____________^ DJ012
|
| |____________^ DJ012
|
||||||
|
|
|
|
||||||
|
|
@ -41,7 +38,7 @@ DJ012.py:69:5: DJ012 Order of model's inner classes, methods, and fields does no
|
||||||
DJ012.py:123:5: DJ012 Order of model's inner classes, methods, and fields does not follow the Django Style Guide: field declaration should come before `Meta` class
|
DJ012.py:123:5: DJ012 Order of model's inner classes, methods, and fields does not follow the Django Style Guide: field declaration should come before `Meta` class
|
||||||
|
|
|
|
||||||
121 | verbose_name = "test"
|
121 | verbose_name = "test"
|
||||||
122 |
|
122 |
|
||||||
123 | first_name = models.CharField(max_length=32)
|
123 | first_name = models.CharField(max_length=32)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ DJ012
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ DJ012
|
||||||
124 | last_name = models.CharField(max_length=32)
|
124 | last_name = models.CharField(max_length=32)
|
||||||
|
|
@ -50,7 +47,7 @@ DJ012.py:123:5: DJ012 Order of model's inner classes, methods, and fields does n
|
||||||
DJ012.py:129:5: DJ012 Order of model's inner classes, methods, and fields does not follow the Django Style Guide: field declaration should come before `Meta` class
|
DJ012.py:129:5: DJ012 Order of model's inner classes, methods, and fields does not follow the Django Style Guide: field declaration should come before `Meta` class
|
||||||
|
|
|
|
||||||
127 | pass
|
127 | pass
|
||||||
128 |
|
128 |
|
||||||
129 | middle_name = models.CharField(max_length=32)
|
129 | middle_name = models.CharField(max_length=32)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ DJ012
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ DJ012
|
||||||
|
|
|
|
||||||
|
|
@ -58,7 +55,7 @@ DJ012.py:129:5: DJ012 Order of model's inner classes, methods, and fields does n
|
||||||
DJ012.py:146:5: DJ012 Order of model's inner classes, methods, and fields does not follow the Django Style Guide: field declaration should come before `Meta` class
|
DJ012.py:146:5: DJ012 Order of model's inner classes, methods, and fields does not follow the Django Style Guide: field declaration should come before `Meta` class
|
||||||
|
|
|
|
||||||
144 | return "foobar"
|
144 | return "foobar"
|
||||||
145 |
|
145 |
|
||||||
146 | first_name = models.CharField(max_length=32)
|
146 | first_name = models.CharField(max_length=32)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ DJ012
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ DJ012
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_errmsg/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_errmsg/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
EM.py:5:24: EM101 [*] Exception must not use a string literal, assign to variable first
|
EM.py:5:24: EM101 [*] Exception must not use a string literal, assign to variable first
|
||||||
|
|
|
|
||||||
|
|
@ -83,7 +82,7 @@ EM.py:32:24: EM101 [*] Exception must not use a string literal, assign to variab
|
||||||
EM.py:39:24: EM101 [*] Exception must not use a string literal, assign to variable first
|
EM.py:39:24: EM101 [*] Exception must not use a string literal, assign to variable first
|
||||||
|
|
|
|
||||||
37 | msg = "hello"
|
37 | msg = "hello"
|
||||||
38 |
|
38 |
|
||||||
39 | raise RuntimeError("This is an example exception")
|
39 | raise RuntimeError("This is an example exception")
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ EM101
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ EM101
|
||||||
|
|
|
|
||||||
|
|
@ -223,8 +222,7 @@ EM.py:76:9: EM103 [*] Exception must not use a `.format()` string directly, assi
|
||||||
|
|
|
|
||||||
74 | def f_multi_line_string2():
|
74 | def f_multi_line_string2():
|
||||||
75 | raise RuntimeError(
|
75 | raise RuntimeError(
|
||||||
76 | "This is an {example} exception".format(
|
76 | / "This is an {example} exception".format(
|
||||||
| _________^
|
|
||||||
77 | | example="example"
|
77 | | example="example"
|
||||||
78 | | )
|
78 | | )
|
||||||
| |_________^ EM103
|
| |_________^ EM103
|
||||||
|
|
@ -253,8 +251,7 @@ EM.py:84:9: EM103 [*] Exception must not use a `.format()` string directly, assi
|
||||||
|
|
|
|
||||||
82 | def f_multi_line_string2():
|
82 | def f_multi_line_string2():
|
||||||
83 | raise RuntimeError(
|
83 | raise RuntimeError(
|
||||||
84 | (
|
84 | / (
|
||||||
| _________^
|
|
||||||
85 | | "This is an "
|
85 | | "This is an "
|
||||||
86 | | "{example} exception"
|
86 | | "{example} exception"
|
||||||
87 | | ).format(
|
87 | | ).format(
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_errmsg/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_errmsg/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
EM.py:5:24: EM101 [*] Exception must not use a string literal, assign to variable first
|
EM.py:5:24: EM101 [*] Exception must not use a string literal, assign to variable first
|
||||||
|
|
|
|
||||||
|
|
@ -121,7 +120,7 @@ EM.py:32:24: EM101 [*] Exception must not use a string literal, assign to variab
|
||||||
EM.py:39:24: EM101 [*] Exception must not use a string literal, assign to variable first
|
EM.py:39:24: EM101 [*] Exception must not use a string literal, assign to variable first
|
||||||
|
|
|
|
||||||
37 | msg = "hello"
|
37 | msg = "hello"
|
||||||
38 |
|
38 |
|
||||||
39 | raise RuntimeError("This is an example exception")
|
39 | raise RuntimeError("This is an example exception")
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ EM101
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ EM101
|
||||||
|
|
|
|
||||||
|
|
@ -261,8 +260,7 @@ EM.py:69:9: EM101 [*] Exception must not use a string literal, assign to variabl
|
||||||
|
|
|
|
||||||
67 | def f_multi_line_string():
|
67 | def f_multi_line_string():
|
||||||
68 | raise RuntimeError(
|
68 | raise RuntimeError(
|
||||||
69 | "first"
|
69 | / "first"
|
||||||
| _________^
|
|
||||||
70 | | "second"
|
70 | | "second"
|
||||||
| |________________^ EM101
|
| |________________^ EM101
|
||||||
71 | )
|
71 | )
|
||||||
|
|
@ -289,8 +287,7 @@ EM.py:76:9: EM103 [*] Exception must not use a `.format()` string directly, assi
|
||||||
|
|
|
|
||||||
74 | def f_multi_line_string2():
|
74 | def f_multi_line_string2():
|
||||||
75 | raise RuntimeError(
|
75 | raise RuntimeError(
|
||||||
76 | "This is an {example} exception".format(
|
76 | / "This is an {example} exception".format(
|
||||||
| _________^
|
|
||||||
77 | | example="example"
|
77 | | example="example"
|
||||||
78 | | )
|
78 | | )
|
||||||
| |_________^ EM103
|
| |_________^ EM103
|
||||||
|
|
@ -319,8 +316,7 @@ EM.py:84:9: EM103 [*] Exception must not use a `.format()` string directly, assi
|
||||||
|
|
|
|
||||||
82 | def f_multi_line_string2():
|
82 | def f_multi_line_string2():
|
||||||
83 | raise RuntimeError(
|
83 | raise RuntimeError(
|
||||||
84 | (
|
84 | / (
|
||||||
| _________^
|
|
||||||
85 | | "This is an "
|
85 | | "This is an "
|
||||||
86 | | "{example} exception"
|
86 | | "{example} exception"
|
||||||
87 | | ).format(
|
87 | | ).format(
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_implicit_str_concat/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_implicit_str_concat/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
ISC.py:9:3: ISC003 Explicitly concatenated string should be implicitly concatenated
|
ISC.py:9:3: ISC003 Explicitly concatenated string should be implicitly concatenated
|
||||||
|
|
|
|
||||||
8 | _ = (
|
8 | _ = (
|
||||||
9 | "abc" +
|
9 | / "abc" +
|
||||||
| ___^
|
|
||||||
10 | | "def"
|
10 | | "def"
|
||||||
| |_______^ ISC003
|
| |_______^ ISC003
|
||||||
11 | )
|
11 | )
|
||||||
|
|
@ -15,8 +13,7 @@ ISC.py:9:3: ISC003 Explicitly concatenated string should be implicitly concatena
|
||||||
ISC.py:14:3: ISC003 Explicitly concatenated string should be implicitly concatenated
|
ISC.py:14:3: ISC003 Explicitly concatenated string should be implicitly concatenated
|
||||||
|
|
|
|
||||||
13 | _ = (
|
13 | _ = (
|
||||||
14 | f"abc" +
|
14 | / f"abc" +
|
||||||
| ___^
|
|
||||||
15 | | "def"
|
15 | | "def"
|
||||||
| |_______^ ISC003
|
| |_______^ ISC003
|
||||||
16 | )
|
16 | )
|
||||||
|
|
@ -25,8 +22,7 @@ ISC.py:14:3: ISC003 Explicitly concatenated string should be implicitly concaten
|
||||||
ISC.py:19:3: ISC003 Explicitly concatenated string should be implicitly concatenated
|
ISC.py:19:3: ISC003 Explicitly concatenated string should be implicitly concatenated
|
||||||
|
|
|
|
||||||
18 | _ = (
|
18 | _ = (
|
||||||
19 | b"abc" +
|
19 | / b"abc" +
|
||||||
| ___^
|
|
||||||
20 | | b"def"
|
20 | | b"def"
|
||||||
| |________^ ISC003
|
| |________^ ISC003
|
||||||
21 | )
|
21 | )
|
||||||
|
|
@ -51,6 +47,6 @@ ISC.py:80:10: ISC003 Explicitly concatenated string should be implicitly concate
|
||||||
| __________^
|
| __________^
|
||||||
81 | | + f"second"} d"
|
81 | | + f"second"} d"
|
||||||
| |_______________^ ISC003
|
| |_______________^ ISC003
|
||||||
82 |
|
82 |
|
||||||
83 | # See https://github.com/astral-sh/ruff/issues/12936
|
83 | # See https://github.com/astral-sh/ruff/issues/12936
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,24 +1,22 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_implicit_str_concat/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_implicit_str_concat/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
ISC.py:5:5: ISC002 Implicitly concatenated string literals over multiple lines
|
ISC.py:5:5: ISC002 Implicitly concatenated string literals over multiple lines
|
||||||
|
|
|
|
||||||
3 | _ = "abc" + "def"
|
3 | _ = "abc" + "def"
|
||||||
4 |
|
4 |
|
||||||
5 | _ = "abc" \
|
5 | _ = "abc" \
|
||||||
| _____^
|
| _____^
|
||||||
6 | | "def"
|
6 | | "def"
|
||||||
| |_________^ ISC002
|
| |_________^ ISC002
|
||||||
7 |
|
7 |
|
||||||
8 | _ = (
|
8 | _ = (
|
||||||
|
|
|
|
||||||
|
|
||||||
ISC.py:24:3: ISC002 Implicitly concatenated string literals over multiple lines
|
ISC.py:24:3: ISC002 Implicitly concatenated string literals over multiple lines
|
||||||
|
|
|
|
||||||
23 | _ = (
|
23 | _ = (
|
||||||
24 | "abc"
|
24 | / "abc"
|
||||||
| ___^
|
|
||||||
25 | | "def"
|
25 | | "def"
|
||||||
| |_______^ ISC002
|
| |_______^ ISC002
|
||||||
26 | )
|
26 | )
|
||||||
|
|
@ -27,8 +25,7 @@ ISC.py:24:3: ISC002 Implicitly concatenated string literals over multiple lines
|
||||||
ISC.py:29:3: ISC002 Implicitly concatenated string literals over multiple lines
|
ISC.py:29:3: ISC002 Implicitly concatenated string literals over multiple lines
|
||||||
|
|
|
|
||||||
28 | _ = (
|
28 | _ = (
|
||||||
29 | f"abc"
|
29 | / f"abc"
|
||||||
| ___^
|
|
||||||
30 | | "def"
|
30 | | "def"
|
||||||
| |_______^ ISC002
|
| |_______^ ISC002
|
||||||
31 | )
|
31 | )
|
||||||
|
|
@ -37,8 +34,7 @@ ISC.py:29:3: ISC002 Implicitly concatenated string literals over multiple lines
|
||||||
ISC.py:34:3: ISC002 Implicitly concatenated string literals over multiple lines
|
ISC.py:34:3: ISC002 Implicitly concatenated string literals over multiple lines
|
||||||
|
|
|
|
||||||
33 | _ = (
|
33 | _ = (
|
||||||
34 | b"abc"
|
34 | / b"abc"
|
||||||
| ___^
|
|
||||||
35 | | b"def"
|
35 | | b"def"
|
||||||
| |________^ ISC002
|
| |________^ ISC002
|
||||||
36 | )
|
36 | )
|
||||||
|
|
@ -48,8 +44,7 @@ ISC.py:67:5: ISC002 Implicitly concatenated string literals over multiple lines
|
||||||
|
|
|
|
||||||
65 | _ = f"""abc {"def" "ghi"} jkl"""
|
65 | _ = f"""abc {"def" "ghi"} jkl"""
|
||||||
66 | _ = f"""abc {
|
66 | _ = f"""abc {
|
||||||
67 | "def"
|
67 | / "def"
|
||||||
| _____^
|
|
||||||
68 | | "ghi"
|
68 | | "ghi"
|
||||||
| |_________^ ISC002
|
| |_________^ ISC002
|
||||||
69 | } jkl"""
|
69 | } jkl"""
|
||||||
|
|
@ -63,6 +58,6 @@ ISC.py:74:10: ISC002 Implicitly concatenated string literals over multiple lines
|
||||||
| __________^
|
| __________^
|
||||||
75 | | f"def"} g"
|
75 | | f"def"} g"
|
||||||
| |__________^ ISC002
|
| |__________^ ISC002
|
||||||
76 |
|
76 |
|
||||||
77 | # Explicitly concatenated nested f-strings
|
77 | # Explicitly concatenated nested f-strings
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,9 @@ PIE800.py:1:14: PIE800 [*] Unnecessary spread `**`
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
1 |-{"foo": 1, **{"bar": 1}} # PIE800
|
1 |-{"foo": 1, **{"bar": 1}} # PIE800
|
||||||
1 |+{"foo": 1, "bar": 1} # PIE800
|
1 |+{"foo": 1, "bar": 1} # PIE800
|
||||||
2 2 |
|
2 2 |
|
||||||
3 3 | {**{"bar": 10}, "a": "b"} # PIE800
|
3 3 | {**{"bar": 10}, "a": "b"} # PIE800
|
||||||
4 4 |
|
4 4 |
|
||||||
|
|
||||||
PIE800.py:3:4: PIE800 [*] Unnecessary spread `**`
|
PIE800.py:3:4: PIE800 [*] Unnecessary spread `**`
|
||||||
|
|
|
|
||||||
|
|
@ -30,12 +30,12 @@ PIE800.py:3:4: PIE800 [*] Unnecessary spread `**`
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
1 1 | {"foo": 1, **{"bar": 1}} # PIE800
|
1 1 | {"foo": 1, **{"bar": 1}} # PIE800
|
||||||
2 2 |
|
2 2 |
|
||||||
3 |-{**{"bar": 10}, "a": "b"} # PIE800
|
3 |-{**{"bar": 10}, "a": "b"} # PIE800
|
||||||
3 |+{"bar": 10, "a": "b"} # PIE800
|
3 |+{"bar": 10, "a": "b"} # PIE800
|
||||||
4 4 |
|
4 4 |
|
||||||
5 5 | foo({**foo, **{"bar": True}}) # PIE800
|
5 5 | foo({**foo, **{"bar": True}}) # PIE800
|
||||||
6 6 |
|
6 6 |
|
||||||
|
|
||||||
PIE800.py:5:15: PIE800 [*] Unnecessary spread `**`
|
PIE800.py:5:15: PIE800 [*] Unnecessary spread `**`
|
||||||
|
|
|
|
||||||
|
|
@ -49,14 +49,14 @@ PIE800.py:5:15: PIE800 [*] Unnecessary spread `**`
|
||||||
= help: Remove unnecessary dict
|
= help: Remove unnecessary dict
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
2 2 |
|
2 2 |
|
||||||
3 3 | {**{"bar": 10}, "a": "b"} # PIE800
|
3 3 | {**{"bar": 10}, "a": "b"} # PIE800
|
||||||
4 4 |
|
4 4 |
|
||||||
5 |-foo({**foo, **{"bar": True}}) # PIE800
|
5 |-foo({**foo, **{"bar": True}}) # PIE800
|
||||||
5 |+foo({**foo, "bar": True}) # PIE800
|
5 |+foo({**foo, "bar": True}) # PIE800
|
||||||
6 6 |
|
6 6 |
|
||||||
7 7 | {**foo, **{"bar": 10}} # PIE800
|
7 7 | {**foo, **{"bar": 10}} # PIE800
|
||||||
8 8 |
|
8 8 |
|
||||||
|
|
||||||
PIE800.py:7:11: PIE800 [*] Unnecessary spread `**`
|
PIE800.py:7:11: PIE800 [*] Unnecessary spread `**`
|
||||||
|
|
|
|
||||||
|
|
@ -70,12 +70,12 @@ PIE800.py:7:11: PIE800 [*] Unnecessary spread `**`
|
||||||
= help: Remove unnecessary dict
|
= help: Remove unnecessary dict
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
4 4 |
|
4 4 |
|
||||||
5 5 | foo({**foo, **{"bar": True}}) # PIE800
|
5 5 | foo({**foo, **{"bar": True}}) # PIE800
|
||||||
6 6 |
|
6 6 |
|
||||||
7 |-{**foo, **{"bar": 10}} # PIE800
|
7 |-{**foo, **{"bar": 10}} # PIE800
|
||||||
7 |+{**foo, "bar": 10} # PIE800
|
7 |+{**foo, "bar": 10} # PIE800
|
||||||
8 8 |
|
8 8 |
|
||||||
9 9 | { # PIE800
|
9 9 | { # PIE800
|
||||||
10 10 | "a": "b",
|
10 10 | "a": "b",
|
||||||
|
|
||||||
|
|
@ -99,7 +99,7 @@ PIE800.py:12:7: PIE800 [*] Unnecessary spread `**`
|
||||||
10 10 | "a": "b",
|
10 10 | "a": "b",
|
||||||
11 11 | # Preserve
|
11 11 | # Preserve
|
||||||
12 |- **{
|
12 |- **{
|
||||||
12 |+
|
12 |+
|
||||||
13 13 | # all
|
13 13 | # all
|
||||||
14 |- "bar": 10, # the
|
14 |- "bar": 10, # the
|
||||||
14 |+ "bar": 10 # the
|
14 |+ "bar": 10 # the
|
||||||
|
|
@ -107,7 +107,7 @@ PIE800.py:12:7: PIE800 [*] Unnecessary spread `**`
|
||||||
16 |- },
|
16 |- },
|
||||||
16 |+ ,
|
16 |+ ,
|
||||||
17 17 | }
|
17 17 | }
|
||||||
18 18 |
|
18 18 |
|
||||||
19 19 | {**foo, **buzz, **{bar: 10}} # PIE800
|
19 19 | {**foo, **buzz, **{bar: 10}} # PIE800
|
||||||
|
|
||||||
PIE800.py:19:19: PIE800 [*] Unnecessary spread `**`
|
PIE800.py:19:19: PIE800 [*] Unnecessary spread `**`
|
||||||
|
|
@ -124,10 +124,10 @@ PIE800.py:19:19: PIE800 [*] Unnecessary spread `**`
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
16 16 | },
|
16 16 | },
|
||||||
17 17 | }
|
17 17 | }
|
||||||
18 18 |
|
18 18 |
|
||||||
19 |-{**foo, **buzz, **{bar: 10}} # PIE800
|
19 |-{**foo, **buzz, **{bar: 10}} # PIE800
|
||||||
19 |+{**foo, **buzz, bar: 10} # PIE800
|
19 |+{**foo, **buzz, bar: 10} # PIE800
|
||||||
20 20 |
|
20 20 |
|
||||||
21 21 | # https://github.com/astral-sh/ruff/issues/15366
|
21 21 | # https://github.com/astral-sh/ruff/issues/15366
|
||||||
22 22 | {
|
22 22 | {
|
||||||
|
|
||||||
|
|
@ -148,15 +148,14 @@ PIE800.py:24:8: PIE800 [*] Unnecessary spread `**`
|
||||||
24 |- **({"count": 1 if include_count else {}}),
|
24 |- **({"count": 1 if include_count else {}}),
|
||||||
24 |+ "count": 1 if include_count else {},
|
24 |+ "count": 1 if include_count else {},
|
||||||
25 25 | }
|
25 25 | }
|
||||||
26 26 |
|
26 26 |
|
||||||
27 27 | {
|
27 27 | {
|
||||||
|
|
||||||
PIE800.py:30:9: PIE800 [*] Unnecessary spread `**`
|
PIE800.py:30:9: PIE800 [*] Unnecessary spread `**`
|
||||||
|
|
|
|
||||||
28 | "data": [],
|
28 | "data": [],
|
||||||
29 | **( # Comment
|
29 | **( # Comment
|
||||||
30 | { # Comment
|
30 | / { # Comment
|
||||||
| _________^
|
|
||||||
31 | | "count": 1 if include_count else {}}),
|
31 | | "count": 1 if include_count else {}}),
|
||||||
| |________________________________________________^ PIE800
|
| |________________________________________________^ PIE800
|
||||||
32 | }
|
32 | }
|
||||||
|
|
@ -164,7 +163,7 @@ PIE800.py:30:9: PIE800 [*] Unnecessary spread `**`
|
||||||
= help: Remove unnecessary dict
|
= help: Remove unnecessary dict
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
26 26 |
|
26 26 |
|
||||||
27 27 | {
|
27 27 | {
|
||||||
28 28 | "data": [],
|
28 28 | "data": [],
|
||||||
29 |- **( # Comment
|
29 |- **( # Comment
|
||||||
|
|
@ -174,15 +173,14 @@ PIE800.py:30:9: PIE800 [*] Unnecessary spread `**`
|
||||||
30 |+ # Comment
|
30 |+ # Comment
|
||||||
31 |+ "count": 1 if include_count else {},
|
31 |+ "count": 1 if include_count else {},
|
||||||
32 32 | }
|
32 32 | }
|
||||||
33 33 |
|
33 33 |
|
||||||
34 34 | {
|
34 34 | {
|
||||||
|
|
||||||
PIE800.py:37:9: PIE800 [*] Unnecessary spread `**`
|
PIE800.py:37:9: PIE800 [*] Unnecessary spread `**`
|
||||||
|
|
|
|
||||||
35 | "data": [],
|
35 | "data": [],
|
||||||
36 | **(
|
36 | **(
|
||||||
37 | {
|
37 | / {
|
||||||
| _________^
|
|
||||||
38 | | "count": (a := 1),}),
|
38 | | "count": (a := 1),}),
|
||||||
| |_______________________________^ PIE800
|
| |_______________________________^ PIE800
|
||||||
39 | }
|
39 | }
|
||||||
|
|
@ -190,25 +188,24 @@ PIE800.py:37:9: PIE800 [*] Unnecessary spread `**`
|
||||||
= help: Remove unnecessary dict
|
= help: Remove unnecessary dict
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
33 33 |
|
33 33 |
|
||||||
34 34 | {
|
34 34 | {
|
||||||
35 35 | "data": [],
|
35 35 | "data": [],
|
||||||
36 |- **(
|
36 |- **(
|
||||||
37 |- {
|
37 |- {
|
||||||
38 |- "count": (a := 1),}),
|
38 |- "count": (a := 1),}),
|
||||||
36 |+
|
36 |+
|
||||||
37 |+
|
37 |+
|
||||||
38 |+ "count": (a := 1),
|
38 |+ "count": (a := 1),
|
||||||
39 39 | }
|
39 39 | }
|
||||||
40 40 |
|
40 40 |
|
||||||
41 41 | {
|
41 41 | {
|
||||||
|
|
||||||
PIE800.py:44:9: PIE800 [*] Unnecessary spread `**`
|
PIE800.py:44:9: PIE800 [*] Unnecessary spread `**`
|
||||||
|
|
|
|
||||||
42 | "data": [],
|
42 | "data": [],
|
||||||
43 | **(
|
43 | **(
|
||||||
44 | {
|
44 | / {
|
||||||
| _________^
|
|
||||||
45 | | "count": (a := 1)
|
45 | | "count": (a := 1)
|
||||||
46 | | }
|
46 | | }
|
||||||
| |_____________^ PIE800
|
| |_____________^ PIE800
|
||||||
|
|
@ -218,28 +215,27 @@ PIE800.py:44:9: PIE800 [*] Unnecessary spread `**`
|
||||||
= help: Remove unnecessary dict
|
= help: Remove unnecessary dict
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
40 40 |
|
40 40 |
|
||||||
41 41 | {
|
41 41 | {
|
||||||
42 42 | "data": [],
|
42 42 | "data": [],
|
||||||
43 |- **(
|
43 |- **(
|
||||||
44 |- {
|
44 |- {
|
||||||
43 |+
|
43 |+
|
||||||
44 |+
|
44 |+
|
||||||
45 45 | "count": (a := 1)
|
45 45 | "count": (a := 1)
|
||||||
46 |- }
|
46 |- }
|
||||||
47 |- )
|
47 |- )
|
||||||
46 |+
|
46 |+
|
||||||
47 |+
|
47 |+
|
||||||
48 48 | ,
|
48 48 | ,
|
||||||
49 49 | }
|
49 49 | }
|
||||||
50 50 |
|
50 50 |
|
||||||
|
|
||||||
PIE800.py:54:9: PIE800 [*] Unnecessary spread `**`
|
PIE800.py:54:9: PIE800 [*] Unnecessary spread `**`
|
||||||
|
|
|
|
||||||
52 | "data": [],
|
52 | "data": [],
|
||||||
53 | **(
|
53 | **(
|
||||||
54 | {
|
54 | / {
|
||||||
| _________^
|
|
||||||
55 | | "count": (a := 1), # Comment
|
55 | | "count": (a := 1), # Comment
|
||||||
56 | | } # Comment
|
56 | | } # Comment
|
||||||
| |_____________^ PIE800
|
| |_____________^ PIE800
|
||||||
|
|
@ -249,7 +245,7 @@ PIE800.py:54:9: PIE800 [*] Unnecessary spread `**`
|
||||||
= help: Remove unnecessary dict
|
= help: Remove unnecessary dict
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
50 50 |
|
50 50 |
|
||||||
51 51 | {
|
51 51 | {
|
||||||
52 52 | "data": [],
|
52 52 | "data": [],
|
||||||
53 |- **(
|
53 |- **(
|
||||||
|
|
@ -257,14 +253,14 @@ PIE800.py:54:9: PIE800 [*] Unnecessary spread `**`
|
||||||
55 |- "count": (a := 1), # Comment
|
55 |- "count": (a := 1), # Comment
|
||||||
56 |- } # Comment
|
56 |- } # Comment
|
||||||
57 |- ) # Comment
|
57 |- ) # Comment
|
||||||
53 |+
|
53 |+
|
||||||
54 |+
|
54 |+
|
||||||
55 |+ "count": (a := 1) # Comment
|
55 |+ "count": (a := 1) # Comment
|
||||||
56 |+ # Comment
|
56 |+ # Comment
|
||||||
57 |+ # Comment
|
57 |+ # Comment
|
||||||
58 58 | ,
|
58 58 | ,
|
||||||
59 59 | }
|
59 59 | }
|
||||||
60 60 |
|
60 60 |
|
||||||
|
|
||||||
PIE800.py:65:1: PIE800 [*] Unnecessary spread `**`
|
PIE800.py:65:1: PIE800 [*] Unnecessary spread `**`
|
||||||
|
|
|
|
||||||
|
|
@ -280,7 +276,7 @@ PIE800.py:65:1: PIE800 [*] Unnecessary spread `**`
|
||||||
= help: Remove unnecessary dict
|
= help: Remove unnecessary dict
|
||||||
|
|
||||||
ℹ Safe fix
|
ℹ Safe fix
|
||||||
60 60 |
|
60 60 |
|
||||||
61 61 | ({
|
61 61 | ({
|
||||||
62 62 | "data": [],
|
62 62 | "data": [],
|
||||||
63 |- **( # Comment
|
63 |- **( # Comment
|
||||||
|
|
@ -295,7 +291,7 @@ PIE800.py:65:1: PIE800 [*] Unnecessary spread `**`
|
||||||
65 |+ # Comment
|
65 |+ # Comment
|
||||||
66 |+ "count": (a := 1) # Comment
|
66 |+ "count": (a := 1) # Comment
|
||||||
67 |+ # Comment
|
67 |+ # Comment
|
||||||
68 |+
|
68 |+
|
||||||
69 |+ # Comment
|
69 |+ # Comment
|
||||||
70 70 | ,
|
70 70 | ,
|
||||||
71 71 | })
|
71 71 | })
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ PYI016.py:7:15: PYI016 [*] Duplicate union member `str`
|
||||||
6 | # Should emit for duplicate field types.
|
6 | # Should emit for duplicate field types.
|
||||||
7 | field2: str | str # PYI016: Duplicate union member `str`
|
7 | field2: str | str # PYI016: Duplicate union member `str`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
8 |
|
8 |
|
||||||
9 | # Should emit for union types in arguments.
|
9 | # Should emit for union types in arguments.
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `str`
|
= help: Remove duplicate union member `str`
|
||||||
|
|
@ -126,7 +126,7 @@ PYI016.py:21:28: PYI016 [*] Duplicate union member `int`
|
||||||
20 | field5: str | int | str # PYI016: Duplicate union member `str`
|
20 | field5: str | int | str # PYI016: Duplicate union member `str`
|
||||||
21 | field6: int | bool | str | int # PYI016: Duplicate union member `int`
|
21 | field6: int | bool | str | int # PYI016: Duplicate union member `int`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
22 |
|
22 |
|
||||||
23 | # Shouldn't emit for non-type unions.
|
23 | # Shouldn't emit for non-type unions.
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -146,7 +146,7 @@ PYI016.py:27:22: PYI016 [*] Duplicate union member `int`
|
||||||
26 | # Should emit for strangely-bracketed unions.
|
26 | # Should emit for strangely-bracketed unions.
|
||||||
27 | field8: int | (str | int) # PYI016: Duplicate union member `int`
|
27 | field8: int | (str | int) # PYI016: Duplicate union member `int`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
28 |
|
28 |
|
||||||
29 | # Should handle user brackets when fixing.
|
29 | # Should handle user brackets when fixing.
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -186,7 +186,7 @@ PYI016.py:31:24: PYI016 [*] Duplicate union member `str`
|
||||||
30 | field9: int | (int | str) # PYI016: Duplicate union member `int`
|
30 | field9: int | (int | str) # PYI016: Duplicate union member `int`
|
||||||
31 | field10: (str | int) | str # PYI016: Duplicate union member `str`
|
31 | field10: (str | int) | str # PYI016: Duplicate union member `str`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
32 |
|
32 |
|
||||||
33 | # Should emit for nested unions.
|
33 | # Should emit for nested unions.
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `str`
|
= help: Remove duplicate union member `str`
|
||||||
|
|
@ -206,7 +206,7 @@ PYI016.py:34:21: PYI016 [*] Duplicate union member `int`
|
||||||
33 | # Should emit for nested unions.
|
33 | # Should emit for nested unions.
|
||||||
34 | field11: dict[int | int, str]
|
34 | field11: dict[int | int, str]
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
35 |
|
35 |
|
||||||
36 | # Should emit for unions with more than two cases
|
36 | # Should emit for unions with more than two cases
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -265,7 +265,7 @@ PYI016.py:38:16: PYI016 [*] Duplicate union member `int`
|
||||||
37 | field12: int | int | int # Error
|
37 | field12: int | int | int # Error
|
||||||
38 | field13: int | int | int | int # Error
|
38 | field13: int | int | int | int # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
39 |
|
39 |
|
||||||
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -286,7 +286,7 @@ PYI016.py:38:22: PYI016 [*] Duplicate union member `int`
|
||||||
37 | field12: int | int | int # Error
|
37 | field12: int | int | int # Error
|
||||||
38 | field13: int | int | int | int # Error
|
38 | field13: int | int | int | int # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
39 |
|
39 |
|
||||||
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -307,7 +307,7 @@ PYI016.py:38:28: PYI016 [*] Duplicate union member `int`
|
||||||
37 | field12: int | int | int # Error
|
37 | field12: int | int | int # Error
|
||||||
38 | field13: int | int | int | int # Error
|
38 | field13: int | int | int | int # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
39 |
|
39 |
|
||||||
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -327,7 +327,7 @@ PYI016.py:41:16: PYI016 [*] Duplicate union member `int`
|
||||||
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
41 | field14: int | int | str | int # Error
|
41 | field14: int | int | str | int # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
42 |
|
42 |
|
||||||
43 | # Should emit for duplicate literal types; also covered by PYI030
|
43 | # Should emit for duplicate literal types; also covered by PYI030
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -347,7 +347,7 @@ PYI016.py:41:28: PYI016 [*] Duplicate union member `int`
|
||||||
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
41 | field14: int | int | str | int # Error
|
41 | field14: int | int | str | int # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
42 |
|
42 |
|
||||||
43 | # Should emit for duplicate literal types; also covered by PYI030
|
43 | # Should emit for duplicate literal types; also covered by PYI030
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -367,7 +367,7 @@ PYI016.py:44:30: PYI016 [*] Duplicate union member `typing.Literal[1]`
|
||||||
43 | # Should emit for duplicate literal types; also covered by PYI030
|
43 | # Should emit for duplicate literal types; also covered by PYI030
|
||||||
44 | field15: typing.Literal[1] | typing.Literal[1] # Error
|
44 | field15: typing.Literal[1] | typing.Literal[1] # Error
|
||||||
| ^^^^^^^^^^^^^^^^^ PYI016
|
| ^^^^^^^^^^^^^^^^^ PYI016
|
||||||
45 |
|
45 |
|
||||||
46 | # Shouldn't emit if in new parent type
|
46 | # Shouldn't emit if in new parent type
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `typing.Literal[1]`
|
= help: Remove duplicate union member `typing.Literal[1]`
|
||||||
|
|
@ -386,8 +386,7 @@ PYI016.py:57:5: PYI016 [*] Duplicate union member `set[int]`
|
||||||
|
|
|
|
||||||
55 | int # foo
|
55 | int # foo
|
||||||
56 | ],
|
56 | ],
|
||||||
57 | set[
|
57 | / set[
|
||||||
| _____^
|
|
||||||
58 | | int # bar
|
58 | | int # bar
|
||||||
59 | | ],
|
59 | | ],
|
||||||
| |_____^ PYI016
|
| |_____^ PYI016
|
||||||
|
|
@ -417,7 +416,7 @@ PYI016.py:63:28: PYI016 [*] Duplicate union member `int`
|
||||||
62 | # Should emit in cases with `typing.Union` instead of `|`
|
62 | # Should emit in cases with `typing.Union` instead of `|`
|
||||||
63 | field19: typing.Union[int, int] # Error
|
63 | field19: typing.Union[int, int] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
64 |
|
64 |
|
||||||
65 | # Should emit in cases with nested `typing.Union`
|
65 | # Should emit in cases with nested `typing.Union`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -437,7 +436,7 @@ PYI016.py:66:41: PYI016 [*] Duplicate union member `int`
|
||||||
65 | # Should emit in cases with nested `typing.Union`
|
65 | # Should emit in cases with nested `typing.Union`
|
||||||
66 | field20: typing.Union[int, typing.Union[int, str]] # Error
|
66 | field20: typing.Union[int, typing.Union[int, str]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
67 |
|
67 |
|
||||||
68 | # Should emit in cases with mixed `typing.Union` and `|`
|
68 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -457,7 +456,7 @@ PYI016.py:69:28: PYI016 [*] Duplicate union member `int`
|
||||||
68 | # Should emit in cases with mixed `typing.Union` and `|`
|
68 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
69 | field21: typing.Union[int, int | str] # Error
|
69 | field21: typing.Union[int, int | str] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
70 |
|
70 |
|
||||||
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -477,7 +476,7 @@ PYI016.py:72:41: PYI016 [*] Duplicate union member `int`
|
||||||
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
73 |
|
73 |
|
||||||
74 | # Should emit in cases with newlines
|
74 | # Should emit in cases with newlines
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -497,7 +496,7 @@ PYI016.py:72:59: PYI016 [*] Duplicate union member `int`
|
||||||
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
73 |
|
73 |
|
||||||
74 | # Should emit in cases with newlines
|
74 | # Should emit in cases with newlines
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -517,7 +516,7 @@ PYI016.py:72:64: PYI016 [*] Duplicate union member `int`
|
||||||
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
73 |
|
73 |
|
||||||
74 | # Should emit in cases with newlines
|
74 | # Should emit in cases with newlines
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -538,7 +537,7 @@ PYI016.py:76:12: PYI016 [*] Duplicate union member `set[int]`
|
||||||
75 | field23: set[ # foo
|
75 | field23: set[ # foo
|
||||||
76 | int] | set[int]
|
76 | int] | set[int]
|
||||||
| ^^^^^^^^ PYI016
|
| ^^^^^^^^ PYI016
|
||||||
77 |
|
77 |
|
||||||
78 | # Should emit twice (once for each `int` in the nested union, both of which are
|
78 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `set[int]`
|
= help: Remove duplicate union member `set[int]`
|
||||||
|
|
@ -560,7 +559,7 @@ PYI016.py:81:41: PYI016 [*] Duplicate union member `int`
|
||||||
80 | # we incorrectly re-checked the nested union).
|
80 | # we incorrectly re-checked the nested union).
|
||||||
81 | field24: typing.Union[int, typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
81 | field24: typing.Union[int, typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
82 |
|
82 |
|
||||||
83 | # Should emit twice (once for each `int` in the nested union, both of which are
|
83 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -581,7 +580,7 @@ PYI016.py:81:46: PYI016 [*] Duplicate union member `int`
|
||||||
80 | # we incorrectly re-checked the nested union).
|
80 | # we incorrectly re-checked the nested union).
|
||||||
81 | field24: typing.Union[int, typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
81 | field24: typing.Union[int, typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
82 |
|
82 |
|
||||||
83 | # Should emit twice (once for each `int` in the nested union, both of which are
|
83 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -602,7 +601,7 @@ PYI016.py:86:28: PYI016 [*] Duplicate union member `int`
|
||||||
85 | # we incorrectly re-checked the nested union).
|
85 | # we incorrectly re-checked the nested union).
|
||||||
86 | field25: typing.Union[int, int | int] # PYI016: Duplicate union member `int`
|
86 | field25: typing.Union[int, int | int] # PYI016: Duplicate union member `int`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
87 |
|
87 |
|
||||||
88 | # Should emit in cases with nested `typing.Union`
|
88 | # Should emit in cases with nested `typing.Union`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -623,7 +622,7 @@ PYI016.py:86:34: PYI016 [*] Duplicate union member `int`
|
||||||
85 | # we incorrectly re-checked the nested union).
|
85 | # we incorrectly re-checked the nested union).
|
||||||
86 | field25: typing.Union[int, int | int] # PYI016: Duplicate union member `int`
|
86 | field25: typing.Union[int, int | int] # PYI016: Duplicate union member `int`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
87 |
|
87 |
|
||||||
88 | # Should emit in cases with nested `typing.Union`
|
88 | # Should emit in cases with nested `typing.Union`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -643,7 +642,7 @@ PYI016.py:89:41: PYI016 [*] Duplicate union member `int`
|
||||||
88 | # Should emit in cases with nested `typing.Union`
|
88 | # Should emit in cases with nested `typing.Union`
|
||||||
89 | field26: typing.Union[typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
89 | field26: typing.Union[typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
90 |
|
90 |
|
||||||
91 | # Should emit in cases with nested `typing.Union`
|
91 | # Should emit in cases with nested `typing.Union`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -663,7 +662,7 @@ PYI016.py:92:54: PYI016 [*] Duplicate union member `int`
|
||||||
91 | # Should emit in cases with nested `typing.Union`
|
91 | # Should emit in cases with nested `typing.Union`
|
||||||
92 | field27: typing.Union[typing.Union[typing.Union[int, int]]] # PYI016: Duplicate union member `int`
|
92 | field27: typing.Union[typing.Union[typing.Union[int, int]]] # PYI016: Duplicate union member `int`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
93 |
|
93 |
|
||||||
94 | # Should emit in cases with mixed `typing.Union` and `|`
|
94 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -683,7 +682,7 @@ PYI016.py:95:29: PYI016 [*] Duplicate union member `int`
|
||||||
94 | # Should emit in cases with mixed `typing.Union` and `|`
|
94 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
95 | field28: typing.Union[int | int] # Error
|
95 | field28: typing.Union[int | int] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
96 |
|
96 |
|
||||||
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -703,7 +702,7 @@ PYI016.py:98:54: PYI016 [*] Duplicate union member `int`
|
||||||
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
||||||
98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
99 |
|
99 |
|
||||||
100 | # Should emit once in cases with multiple nested `typing.Union`
|
100 | # Should emit once in cases with multiple nested `typing.Union`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -723,7 +722,7 @@ PYI016.py:98:59: PYI016 [*] Duplicate union member `int`
|
||||||
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
||||||
98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
99 |
|
99 |
|
||||||
100 | # Should emit once in cases with multiple nested `typing.Union`
|
100 | # Should emit once in cases with multiple nested `typing.Union`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -743,7 +742,7 @@ PYI016.py:101:54: PYI016 [*] Duplicate union member `int`
|
||||||
100 | # Should emit once in cases with multiple nested `typing.Union`
|
100 | # Should emit once in cases with multiple nested `typing.Union`
|
||||||
101 | field30: typing.Union[int, typing.Union[typing.Union[int, str]]] # Error
|
101 | field30: typing.Union[int, typing.Union[typing.Union[int, str]]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
102 |
|
102 |
|
||||||
103 | # Should emit once, and fix to `typing.Union[float, int]`
|
103 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -763,7 +762,7 @@ PYI016.py:104:49: PYI016 [*] Duplicate union member `int`
|
||||||
103 | # Should emit once, and fix to `typing.Union[float, int]`
|
103 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
104 | field31: typing.Union[float, typing.Union[int | int]] # Error
|
104 | field31: typing.Union[float, typing.Union[int | int]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
105 |
|
105 |
|
||||||
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -783,7 +782,7 @@ PYI016.py:107:49: PYI016 [*] Duplicate union member `int`
|
||||||
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
108 |
|
108 |
|
||||||
109 | # Test case for mixed union type fix
|
109 | # Test case for mixed union type fix
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -803,7 +802,7 @@ PYI016.py:107:55: PYI016 [*] Duplicate union member `int`
|
||||||
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
108 |
|
108 |
|
||||||
109 | # Test case for mixed union type fix
|
109 | # Test case for mixed union type fix
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -823,7 +822,7 @@ PYI016.py:110:42: PYI016 [*] Duplicate union member `int`
|
||||||
109 | # Test case for mixed union type fix
|
109 | # Test case for mixed union type fix
|
||||||
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
111 |
|
111 |
|
||||||
112 | # Test case for mixed union type
|
112 | # Test case for mixed union type
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -843,7 +842,7 @@ PYI016.py:110:62: PYI016 [*] Duplicate union member `int`
|
||||||
109 | # Test case for mixed union type fix
|
109 | # Test case for mixed union type fix
|
||||||
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
111 |
|
111 |
|
||||||
112 | # Test case for mixed union type
|
112 | # Test case for mixed union type
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -863,7 +862,7 @@ PYI016.py:110:68: PYI016 [*] Duplicate union member `int`
|
||||||
109 | # Test case for mixed union type fix
|
109 | # Test case for mixed union type fix
|
||||||
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
111 |
|
111 |
|
||||||
112 | # Test case for mixed union type
|
112 | # Test case for mixed union type
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ PYI016.pyi:7:15: PYI016 [*] Duplicate union member `str`
|
||||||
6 | # Should emit for duplicate field types.
|
6 | # Should emit for duplicate field types.
|
||||||
7 | field2: str | str # PYI016: Duplicate union member `str`
|
7 | field2: str | str # PYI016: Duplicate union member `str`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
8 |
|
8 |
|
||||||
9 | # Should emit for union types in arguments.
|
9 | # Should emit for union types in arguments.
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `str`
|
= help: Remove duplicate union member `str`
|
||||||
|
|
@ -127,7 +127,7 @@ PYI016.pyi:21:28: PYI016 [*] Duplicate union member `int`
|
||||||
20 | field5: str | int | str # PYI016: Duplicate union member `str`
|
20 | field5: str | int | str # PYI016: Duplicate union member `str`
|
||||||
21 | field6: int | bool | str | int # PYI016: Duplicate union member `int`
|
21 | field6: int | bool | str | int # PYI016: Duplicate union member `int`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
22 |
|
22 |
|
||||||
23 | # Shouldn't emit for non-type unions.
|
23 | # Shouldn't emit for non-type unions.
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -147,7 +147,7 @@ PYI016.pyi:27:22: PYI016 [*] Duplicate union member `int`
|
||||||
26 | # Should emit for strangely-bracketed unions.
|
26 | # Should emit for strangely-bracketed unions.
|
||||||
27 | field8: int | (str | int) # PYI016: Duplicate union member `int`
|
27 | field8: int | (str | int) # PYI016: Duplicate union member `int`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
28 |
|
28 |
|
||||||
29 | # Should handle user brackets when fixing.
|
29 | # Should handle user brackets when fixing.
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -187,7 +187,7 @@ PYI016.pyi:31:24: PYI016 [*] Duplicate union member `str`
|
||||||
30 | field9: int | (int | str) # PYI016: Duplicate union member `int`
|
30 | field9: int | (int | str) # PYI016: Duplicate union member `int`
|
||||||
31 | field10: (str | int) | str # PYI016: Duplicate union member `str`
|
31 | field10: (str | int) | str # PYI016: Duplicate union member `str`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
32 |
|
32 |
|
||||||
33 | # Should emit for nested unions.
|
33 | # Should emit for nested unions.
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `str`
|
= help: Remove duplicate union member `str`
|
||||||
|
|
@ -207,7 +207,7 @@ PYI016.pyi:34:21: PYI016 [*] Duplicate union member `int`
|
||||||
33 | # Should emit for nested unions.
|
33 | # Should emit for nested unions.
|
||||||
34 | field11: dict[int | int, str]
|
34 | field11: dict[int | int, str]
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
35 |
|
35 |
|
||||||
36 | # Should emit for unions with more than two cases
|
36 | # Should emit for unions with more than two cases
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -266,7 +266,7 @@ PYI016.pyi:38:16: PYI016 [*] Duplicate union member `int`
|
||||||
37 | field12: int | int | int # Error
|
37 | field12: int | int | int # Error
|
||||||
38 | field13: int | int | int | int # Error
|
38 | field13: int | int | int | int # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
39 |
|
39 |
|
||||||
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -287,7 +287,7 @@ PYI016.pyi:38:22: PYI016 [*] Duplicate union member `int`
|
||||||
37 | field12: int | int | int # Error
|
37 | field12: int | int | int # Error
|
||||||
38 | field13: int | int | int | int # Error
|
38 | field13: int | int | int | int # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
39 |
|
39 |
|
||||||
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -308,7 +308,7 @@ PYI016.pyi:38:28: PYI016 [*] Duplicate union member `int`
|
||||||
37 | field12: int | int | int # Error
|
37 | field12: int | int | int # Error
|
||||||
38 | field13: int | int | int | int # Error
|
38 | field13: int | int | int | int # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
39 |
|
39 |
|
||||||
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -328,7 +328,7 @@ PYI016.pyi:41:16: PYI016 [*] Duplicate union member `int`
|
||||||
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
41 | field14: int | int | str | int # Error
|
41 | field14: int | int | str | int # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
42 |
|
42 |
|
||||||
43 | # Should emit for duplicate literal types; also covered by PYI030
|
43 | # Should emit for duplicate literal types; also covered by PYI030
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -348,7 +348,7 @@ PYI016.pyi:41:28: PYI016 [*] Duplicate union member `int`
|
||||||
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
41 | field14: int | int | str | int # Error
|
41 | field14: int | int | str | int # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
42 |
|
42 |
|
||||||
43 | # Should emit for duplicate literal types; also covered by PYI030
|
43 | # Should emit for duplicate literal types; also covered by PYI030
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -368,7 +368,7 @@ PYI016.pyi:44:30: PYI016 [*] Duplicate union member `typing.Literal[1]`
|
||||||
43 | # Should emit for duplicate literal types; also covered by PYI030
|
43 | # Should emit for duplicate literal types; also covered by PYI030
|
||||||
44 | field15: typing.Literal[1] | typing.Literal[1] # Error
|
44 | field15: typing.Literal[1] | typing.Literal[1] # Error
|
||||||
| ^^^^^^^^^^^^^^^^^ PYI016
|
| ^^^^^^^^^^^^^^^^^ PYI016
|
||||||
45 |
|
45 |
|
||||||
46 | # Shouldn't emit if in new parent type
|
46 | # Shouldn't emit if in new parent type
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `typing.Literal[1]`
|
= help: Remove duplicate union member `typing.Literal[1]`
|
||||||
|
|
@ -387,8 +387,7 @@ PYI016.pyi:57:5: PYI016 [*] Duplicate union member `set[int]`
|
||||||
|
|
|
|
||||||
55 | int # foo
|
55 | int # foo
|
||||||
56 | ],
|
56 | ],
|
||||||
57 | set[
|
57 | / set[
|
||||||
| _____^
|
|
||||||
58 | | int # bar
|
58 | | int # bar
|
||||||
59 | | ],
|
59 | | ],
|
||||||
| |_____^ PYI016
|
| |_____^ PYI016
|
||||||
|
|
@ -418,7 +417,7 @@ PYI016.pyi:63:28: PYI016 [*] Duplicate union member `int`
|
||||||
62 | # Should emit in cases with `typing.Union` instead of `|`
|
62 | # Should emit in cases with `typing.Union` instead of `|`
|
||||||
63 | field19: typing.Union[int, int] # Error
|
63 | field19: typing.Union[int, int] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
64 |
|
64 |
|
||||||
65 | # Should emit in cases with nested `typing.Union`
|
65 | # Should emit in cases with nested `typing.Union`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -438,7 +437,7 @@ PYI016.pyi:66:41: PYI016 [*] Duplicate union member `int`
|
||||||
65 | # Should emit in cases with nested `typing.Union`
|
65 | # Should emit in cases with nested `typing.Union`
|
||||||
66 | field20: typing.Union[int, typing.Union[int, str]] # Error
|
66 | field20: typing.Union[int, typing.Union[int, str]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
67 |
|
67 |
|
||||||
68 | # Should emit in cases with mixed `typing.Union` and `|`
|
68 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -458,7 +457,7 @@ PYI016.pyi:69:28: PYI016 [*] Duplicate union member `int`
|
||||||
68 | # Should emit in cases with mixed `typing.Union` and `|`
|
68 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
69 | field21: typing.Union[int, int | str] # Error
|
69 | field21: typing.Union[int, int | str] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
70 |
|
70 |
|
||||||
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -478,7 +477,7 @@ PYI016.pyi:72:41: PYI016 [*] Duplicate union member `int`
|
||||||
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
73 |
|
73 |
|
||||||
74 | # Should emit in cases with newlines
|
74 | # Should emit in cases with newlines
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -498,7 +497,7 @@ PYI016.pyi:72:59: PYI016 [*] Duplicate union member `int`
|
||||||
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
73 |
|
73 |
|
||||||
74 | # Should emit in cases with newlines
|
74 | # Should emit in cases with newlines
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -518,7 +517,7 @@ PYI016.pyi:72:64: PYI016 [*] Duplicate union member `int`
|
||||||
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
73 |
|
73 |
|
||||||
74 | # Should emit in cases with newlines
|
74 | # Should emit in cases with newlines
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -539,7 +538,7 @@ PYI016.pyi:76:12: PYI016 [*] Duplicate union member `set[int]`
|
||||||
75 | field23: set[ # foo
|
75 | field23: set[ # foo
|
||||||
76 | int] | set[int]
|
76 | int] | set[int]
|
||||||
| ^^^^^^^^ PYI016
|
| ^^^^^^^^ PYI016
|
||||||
77 |
|
77 |
|
||||||
78 | # Should emit twice (once for each `int` in the nested union, both of which are
|
78 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `set[int]`
|
= help: Remove duplicate union member `set[int]`
|
||||||
|
|
@ -561,7 +560,7 @@ PYI016.pyi:81:41: PYI016 [*] Duplicate union member `int`
|
||||||
80 | # we incorrectly re-checked the nested union).
|
80 | # we incorrectly re-checked the nested union).
|
||||||
81 | field24: typing.Union[int, typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
81 | field24: typing.Union[int, typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
82 |
|
82 |
|
||||||
83 | # Should emit twice (once for each `int` in the nested union, both of which are
|
83 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -582,7 +581,7 @@ PYI016.pyi:81:46: PYI016 [*] Duplicate union member `int`
|
||||||
80 | # we incorrectly re-checked the nested union).
|
80 | # we incorrectly re-checked the nested union).
|
||||||
81 | field24: typing.Union[int, typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
81 | field24: typing.Union[int, typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
82 |
|
82 |
|
||||||
83 | # Should emit twice (once for each `int` in the nested union, both of which are
|
83 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -603,7 +602,7 @@ PYI016.pyi:86:28: PYI016 [*] Duplicate union member `int`
|
||||||
85 | # we incorrectly re-checked the nested union).
|
85 | # we incorrectly re-checked the nested union).
|
||||||
86 | field25: typing.Union[int, int | int] # PYI016: Duplicate union member `int`
|
86 | field25: typing.Union[int, int | int] # PYI016: Duplicate union member `int`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
87 |
|
87 |
|
||||||
88 | # Should emit in cases with nested `typing.Union`
|
88 | # Should emit in cases with nested `typing.Union`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -624,7 +623,7 @@ PYI016.pyi:86:34: PYI016 [*] Duplicate union member `int`
|
||||||
85 | # we incorrectly re-checked the nested union).
|
85 | # we incorrectly re-checked the nested union).
|
||||||
86 | field25: typing.Union[int, int | int] # PYI016: Duplicate union member `int`
|
86 | field25: typing.Union[int, int | int] # PYI016: Duplicate union member `int`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
87 |
|
87 |
|
||||||
88 | # Should emit in cases with nested `typing.Union`
|
88 | # Should emit in cases with nested `typing.Union`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -644,7 +643,7 @@ PYI016.pyi:89:41: PYI016 [*] Duplicate union member `int`
|
||||||
88 | # Should emit in cases with nested `typing.Union`
|
88 | # Should emit in cases with nested `typing.Union`
|
||||||
89 | field26: typing.Union[typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
89 | field26: typing.Union[typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
90 |
|
90 |
|
||||||
91 | # Should emit in cases with nested `typing.Union`
|
91 | # Should emit in cases with nested `typing.Union`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -664,7 +663,7 @@ PYI016.pyi:92:54: PYI016 [*] Duplicate union member `int`
|
||||||
91 | # Should emit in cases with nested `typing.Union`
|
91 | # Should emit in cases with nested `typing.Union`
|
||||||
92 | field27: typing.Union[typing.Union[typing.Union[int, int]]] # PYI016: Duplicate union member `int`
|
92 | field27: typing.Union[typing.Union[typing.Union[int, int]]] # PYI016: Duplicate union member `int`
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
93 |
|
93 |
|
||||||
94 | # Should emit in cases with mixed `typing.Union` and `|`
|
94 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -684,7 +683,7 @@ PYI016.pyi:95:29: PYI016 [*] Duplicate union member `int`
|
||||||
94 | # Should emit in cases with mixed `typing.Union` and `|`
|
94 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
95 | field28: typing.Union[int | int] # Error
|
95 | field28: typing.Union[int | int] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
96 |
|
96 |
|
||||||
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -704,7 +703,7 @@ PYI016.pyi:98:54: PYI016 [*] Duplicate union member `int`
|
||||||
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
||||||
98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
99 |
|
99 |
|
||||||
100 | # Should emit once in cases with multiple nested `typing.Union`
|
100 | # Should emit once in cases with multiple nested `typing.Union`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -724,7 +723,7 @@ PYI016.pyi:98:59: PYI016 [*] Duplicate union member `int`
|
||||||
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
||||||
98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
99 |
|
99 |
|
||||||
100 | # Should emit once in cases with multiple nested `typing.Union`
|
100 | # Should emit once in cases with multiple nested `typing.Union`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -744,7 +743,7 @@ PYI016.pyi:101:54: PYI016 [*] Duplicate union member `int`
|
||||||
100 | # Should emit once in cases with multiple nested `typing.Union`
|
100 | # Should emit once in cases with multiple nested `typing.Union`
|
||||||
101 | field30: typing.Union[int, typing.Union[typing.Union[int, str]]] # Error
|
101 | field30: typing.Union[int, typing.Union[typing.Union[int, str]]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
102 |
|
102 |
|
||||||
103 | # Should emit once, and fix to `typing.Union[float, int]`
|
103 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -764,7 +763,7 @@ PYI016.pyi:104:49: PYI016 [*] Duplicate union member `int`
|
||||||
103 | # Should emit once, and fix to `typing.Union[float, int]`
|
103 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
104 | field31: typing.Union[float, typing.Union[int | int]] # Error
|
104 | field31: typing.Union[float, typing.Union[int | int]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
105 |
|
105 |
|
||||||
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -784,7 +783,7 @@ PYI016.pyi:107:49: PYI016 [*] Duplicate union member `int`
|
||||||
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
108 |
|
108 |
|
||||||
109 | # Test case for mixed union type fix
|
109 | # Test case for mixed union type fix
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -804,7 +803,7 @@ PYI016.pyi:107:55: PYI016 [*] Duplicate union member `int`
|
||||||
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
108 |
|
108 |
|
||||||
109 | # Test case for mixed union type fix
|
109 | # Test case for mixed union type fix
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -824,7 +823,7 @@ PYI016.pyi:110:42: PYI016 [*] Duplicate union member `int`
|
||||||
109 | # Test case for mixed union type fix
|
109 | # Test case for mixed union type fix
|
||||||
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
111 |
|
111 |
|
||||||
112 | # Test case for mixed union type
|
112 | # Test case for mixed union type
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -844,7 +843,7 @@ PYI016.pyi:110:62: PYI016 [*] Duplicate union member `int`
|
||||||
109 | # Test case for mixed union type fix
|
109 | # Test case for mixed union type fix
|
||||||
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
111 |
|
111 |
|
||||||
112 | # Test case for mixed union type
|
112 | # Test case for mixed union type
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
@ -864,7 +863,7 @@ PYI016.pyi:110:68: PYI016 [*] Duplicate union member `int`
|
||||||
109 | # Test case for mixed union type fix
|
109 | # Test case for mixed union type fix
|
||||||
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
| ^^^ PYI016
|
| ^^^ PYI016
|
||||||
111 |
|
111 |
|
||||||
112 | # Test case for mixed union type
|
112 | # Test case for mixed union type
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,11 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pyi/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pyi/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
PYI021.pyi:1:1: PYI021 [*] Docstrings should not be included in stubs
|
PYI021.pyi:1:1: PYI021 [*] Docstrings should not be included in stubs
|
||||||
|
|
|
|
||||||
1 | """foo""" # ERROR PYI021
|
1 | """foo""" # ERROR PYI021
|
||||||
| ^^^^^^^^^ PYI021
|
| ^^^^^^^^^ PYI021
|
||||||
2 |
|
2 |
|
||||||
3 | def foo():
|
3 | def foo():
|
||||||
|
|
|
|
||||||
= help: Remove docstring
|
= help: Remove docstring
|
||||||
|
|
@ -23,7 +22,7 @@ PYI021.pyi:4:5: PYI021 [*] Docstrings should not be included in stubs
|
||||||
3 | def foo():
|
3 | def foo():
|
||||||
4 | """foo""" # ERROR PYI021
|
4 | """foo""" # ERROR PYI021
|
||||||
| ^^^^^^^^^ PYI021
|
| ^^^^^^^^^ PYI021
|
||||||
5 |
|
5 |
|
||||||
6 | class Bar:
|
6 | class Bar:
|
||||||
|
|
|
|
||||||
= help: Remove docstring
|
= help: Remove docstring
|
||||||
|
|
@ -43,7 +42,7 @@ PYI021.pyi:7:5: PYI021 [*] Docstrings should not be included in stubs
|
||||||
6 | class Bar:
|
6 | class Bar:
|
||||||
7 | """bar""" # ERROR PYI021
|
7 | """bar""" # ERROR PYI021
|
||||||
| ^^^^^^^^^ PYI021
|
| ^^^^^^^^^ PYI021
|
||||||
8 |
|
8 |
|
||||||
9 | class Qux:
|
9 | class Qux:
|
||||||
|
|
|
|
||||||
= help: Remove docstring
|
= help: Remove docstring
|
||||||
|
|
@ -63,7 +62,7 @@ PYI021.pyi:10:5: PYI021 [*] Docstrings should not be included in stubs
|
||||||
9 | class Qux:
|
9 | class Qux:
|
||||||
10 | """qux""" # ERROR PYI021
|
10 | """qux""" # ERROR PYI021
|
||||||
| ^^^^^^^^^ PYI021
|
| ^^^^^^^^^ PYI021
|
||||||
11 |
|
11 |
|
||||||
12 | def __init__(self) -> None: ...
|
12 | def __init__(self) -> None: ...
|
||||||
|
|
|
|
||||||
= help: Remove docstring
|
= help: Remove docstring
|
||||||
|
|
@ -81,13 +80,12 @@ PYI021.pyi:10:5: PYI021 [*] Docstrings should not be included in stubs
|
||||||
PYI021.pyi:15:5: PYI021 [*] Docstrings should not be included in stubs
|
PYI021.pyi:15:5: PYI021 [*] Docstrings should not be included in stubs
|
||||||
|
|
|
|
||||||
14 | class Baz:
|
14 | class Baz:
|
||||||
15 | """Multiline docstring
|
15 | / """Multiline docstring
|
||||||
| _____^
|
16 | |
|
||||||
16 | |
|
|
||||||
17 | | Lorem ipsum dolor sit amet
|
17 | | Lorem ipsum dolor sit amet
|
||||||
18 | | """
|
18 | | """
|
||||||
| |_______^ PYI021
|
| |_______^ PYI021
|
||||||
19 |
|
19 |
|
||||||
20 | def __init__(self) -> None: ...
|
20 | def __init__(self) -> None: ...
|
||||||
|
|
|
|
||||||
= help: Remove docstring
|
= help: Remove docstring
|
||||||
|
|
|
||||||
|
|
@ -193,8 +193,7 @@ PYI041.py:67:9: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
|
|
|
|
||||||
65 | def f10(
|
65 | def f10(
|
||||||
66 | arg: (
|
66 | arg: (
|
||||||
67 | int | # comment
|
67 | / int | # comment
|
||||||
| _________^
|
|
||||||
68 | | float | # another
|
68 | | float | # another
|
||||||
69 | | complex
|
69 | | complex
|
||||||
| |_______________^ PYI041
|
| |_______________^ PYI041
|
||||||
|
|
@ -216,7 +215,7 @@ PYI041.py:67:9: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
PYI041.py:79:24: PYI041 [*] Use `complex` instead of `int | float | complex`
|
PYI041.py:79:24: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
|
|
|
|
||||||
77 | ...
|
77 | ...
|
||||||
78 |
|
78 |
|
||||||
79 | def bad(self, arg: int | float | complex) -> None:
|
79 | def bad(self, arg: int | float | complex) -> None:
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ PYI041
|
| ^^^^^^^^^^^^^^^^^^^^^ PYI041
|
||||||
80 | ...
|
80 | ...
|
||||||
|
|
@ -236,7 +235,7 @@ PYI041.py:79:24: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
PYI041.py:82:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
PYI041.py:82:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
|
|
|
|
||||||
80 | ...
|
80 | ...
|
||||||
81 |
|
81 |
|
||||||
82 | def bad2(self, arg: int | Union[float, complex]) -> None:
|
82 | def bad2(self, arg: int | Union[float, complex]) -> None:
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
||||||
83 | ...
|
83 | ...
|
||||||
|
|
@ -256,7 +255,7 @@ PYI041.py:82:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
PYI041.py:85:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
PYI041.py:85:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
|
|
|
|
||||||
83 | ...
|
83 | ...
|
||||||
84 |
|
84 |
|
||||||
85 | def bad3(self, arg: Union[Union[float, complex], int]) -> None:
|
85 | def bad3(self, arg: Union[Union[float, complex], int]) -> None:
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
||||||
86 | ...
|
86 | ...
|
||||||
|
|
@ -276,7 +275,7 @@ PYI041.py:85:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
PYI041.py:88:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
PYI041.py:88:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
|
|
|
|
||||||
86 | ...
|
86 | ...
|
||||||
87 |
|
87 |
|
||||||
88 | def bad4(self, arg: Union[float | complex, int]) -> None:
|
88 | def bad4(self, arg: Union[float | complex, int]) -> None:
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
||||||
89 | ...
|
89 | ...
|
||||||
|
|
@ -296,7 +295,7 @@ PYI041.py:88:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
PYI041.py:91:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
PYI041.py:91:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
|
|
|
|
||||||
89 | ...
|
89 | ...
|
||||||
90 |
|
90 |
|
||||||
91 | def bad5(self, arg: int | (float | complex)) -> None:
|
91 | def bad5(self, arg: int | (float | complex)) -> None:
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
| ^^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
||||||
92 | ...
|
92 | ...
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ PYI041.pyi:33:24: PYI041 [*] Use `float` instead of `int | float`
|
||||||
|
|
|
|
||||||
33 | async def f4(**kwargs: int | int | float) -> None: ... # PYI041
|
33 | async def f4(**kwargs: int | int | float) -> None: ... # PYI041
|
||||||
| ^^^^^^^^^^^^^^^^^ PYI041
|
| ^^^^^^^^^^^^^^^^^ PYI041
|
||||||
34 |
|
34 |
|
||||||
35 | def f5(
|
35 | def f5(
|
||||||
|
|
|
|
||||||
= help: Remove redundant type
|
= help: Remove redundant type
|
||||||
|
|
@ -117,8 +117,7 @@ PYI041.pyi:43:9: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
|
|
|
|
||||||
41 | def f6(
|
41 | def f6(
|
||||||
42 | arg: (
|
42 | arg: (
|
||||||
43 | int | # comment
|
43 | / int | # comment
|
||||||
| _________^
|
|
||||||
44 | | float | # another
|
44 | | float | # another
|
||||||
45 | | complex
|
45 | | complex
|
||||||
| |_______________^ PYI041
|
| |_______________^ PYI041
|
||||||
|
|
@ -140,7 +139,7 @@ PYI041.pyi:43:9: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
PYI041.pyi:49:26: PYI041 [*] Use `float` instead of `int | float`
|
PYI041.pyi:49:26: PYI041 [*] Use `float` instead of `int | float`
|
||||||
|
|
|
|
||||||
47 | ) -> None: ... # PYI041
|
47 | ) -> None: ... # PYI041
|
||||||
48 |
|
48 |
|
||||||
49 | def f5(arg1: int, *args: Union[int, int, float]) -> None: ... # PYI041
|
49 | def f5(arg1: int, *args: Union[int, int, float]) -> None: ... # PYI041
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
| ^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
||||||
|
|
|
|
||||||
|
|
@ -210,10 +209,10 @@ PYI041.pyi:58:26: PYI041 [*] Use `float` instead of `int | float`
|
||||||
PYI041.pyi:64:24: PYI041 [*] Use `complex` instead of `int | float | complex`
|
PYI041.pyi:64:24: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
|
|
|
|
||||||
62 | def good(self, arg: int) -> None: ...
|
62 | def good(self, arg: int) -> None: ...
|
||||||
63 |
|
63 |
|
||||||
64 | def bad(self, arg: int | float | complex) -> None: ... # PYI041
|
64 | def bad(self, arg: int | float | complex) -> None: ... # PYI041
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ PYI041
|
| ^^^^^^^^^^^^^^^^^^^^^ PYI041
|
||||||
65 |
|
65 |
|
||||||
66 | def bad2(self, arg: int | Union[float, complex]) -> None: ... # PYI041
|
66 | def bad2(self, arg: int | Union[float, complex]) -> None: ... # PYI041
|
||||||
|
|
|
|
||||||
= help: Remove redundant type
|
= help: Remove redundant type
|
||||||
|
|
@ -231,10 +230,10 @@ PYI041.pyi:64:24: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
PYI041.pyi:66:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
PYI041.pyi:66:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
|
|
|
|
||||||
64 | def bad(self, arg: int | float | complex) -> None: ... # PYI041
|
64 | def bad(self, arg: int | float | complex) -> None: ... # PYI041
|
||||||
65 |
|
65 |
|
||||||
66 | def bad2(self, arg: int | Union[float, complex]) -> None: ... # PYI041
|
66 | def bad2(self, arg: int | Union[float, complex]) -> None: ... # PYI041
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
||||||
67 |
|
67 |
|
||||||
68 | def bad3(self, arg: Union[Union[float, complex], int]) -> None: ... # PYI041
|
68 | def bad3(self, arg: Union[Union[float, complex], int]) -> None: ... # PYI041
|
||||||
|
|
|
|
||||||
= help: Remove redundant type
|
= help: Remove redundant type
|
||||||
|
|
@ -252,10 +251,10 @@ PYI041.pyi:66:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
PYI041.pyi:68:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
PYI041.pyi:68:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
|
|
|
|
||||||
66 | def bad2(self, arg: int | Union[float, complex]) -> None: ... # PYI041
|
66 | def bad2(self, arg: int | Union[float, complex]) -> None: ... # PYI041
|
||||||
67 |
|
67 |
|
||||||
68 | def bad3(self, arg: Union[Union[float, complex], int]) -> None: ... # PYI041
|
68 | def bad3(self, arg: Union[Union[float, complex], int]) -> None: ... # PYI041
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
||||||
69 |
|
69 |
|
||||||
70 | def bad4(self, arg: Union[float | complex, int]) -> None: ... # PYI041
|
70 | def bad4(self, arg: Union[float | complex, int]) -> None: ... # PYI041
|
||||||
|
|
|
|
||||||
= help: Remove redundant type
|
= help: Remove redundant type
|
||||||
|
|
@ -273,10 +272,10 @@ PYI041.pyi:68:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
PYI041.pyi:70:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
PYI041.pyi:70:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
|
|
|
|
||||||
68 | def bad3(self, arg: Union[Union[float, complex], int]) -> None: ... # PYI041
|
68 | def bad3(self, arg: Union[Union[float, complex], int]) -> None: ... # PYI041
|
||||||
69 |
|
69 |
|
||||||
70 | def bad4(self, arg: Union[float | complex, int]) -> None: ... # PYI041
|
70 | def bad4(self, arg: Union[float | complex, int]) -> None: ... # PYI041
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
||||||
71 |
|
71 |
|
||||||
72 | def bad5(self, arg: int | (float | complex)) -> None: ... # PYI041
|
72 | def bad5(self, arg: int | (float | complex)) -> None: ... # PYI041
|
||||||
|
|
|
|
||||||
= help: Remove redundant type
|
= help: Remove redundant type
|
||||||
|
|
@ -293,7 +292,7 @@ PYI041.pyi:70:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
PYI041.pyi:72:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
PYI041.pyi:72:25: PYI041 [*] Use `complex` instead of `int | float | complex`
|
||||||
|
|
|
|
||||||
70 | def bad4(self, arg: Union[float | complex, int]) -> None: ... # PYI041
|
70 | def bad4(self, arg: Union[float | complex, int]) -> None: ... # PYI041
|
||||||
71 |
|
71 |
|
||||||
72 | def bad5(self, arg: int | (float | complex)) -> None: ... # PYI041
|
72 | def bad5(self, arg: int | (float | complex)) -> None: ... # PYI041
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
| ^^^^^^^^^^^^^^^^^^^^^^^ PYI041
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
PT003.py:14:17: PT003 [*] `scope='function'` is implied in `@pytest.fixture()`
|
PT003.py:14:17: PT003 [*] `scope='function'` is implied in `@pytest.fixture()`
|
||||||
|
|
|
|
||||||
|
|
@ -142,8 +141,7 @@ PT003.py:66:5: PT003 [*] `scope='function'` is implied in `@pytest.fixture()`
|
||||||
|
|
|
|
||||||
64 | # another comment ,)
|
64 | # another comment ,)
|
||||||
65 |
|
65 |
|
||||||
66 | scope=\
|
66 | / scope=\
|
||||||
| _____^
|
|
||||||
67 | | "function" # some comment ),
|
67 | | "function" # some comment ),
|
||||||
| |__________________^ PT003
|
| |__________________^ PT003
|
||||||
68 | ,
|
68 | ,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
PT006.py:24:26: PT006 [*] Wrong type passed to first argument of `pytest.mark.parametrize`; expected a string of comma-separated values
|
PT006.py:24:26: PT006 [*] Wrong type passed to first argument of `pytest.mark.parametrize`; expected a string of comma-separated values
|
||||||
|
|
|
|
||||||
|
|
@ -157,8 +156,7 @@ PT006.py:103:5: PT006 [*] Wrong type passed to first argument of `pytest.mark.pa
|
||||||
|
|
|
|
||||||
101 | # Unsafe fix
|
101 | # Unsafe fix
|
||||||
102 | @pytest.mark.parametrize(
|
102 | @pytest.mark.parametrize(
|
||||||
103 | (
|
103 | / (
|
||||||
| _____^
|
|
||||||
104 | | # comment
|
104 | | # comment
|
||||||
105 | | "param",
|
105 | | "param",
|
||||||
106 | | ),
|
106 | | ),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
PT006.py:9:26: PT006 [*] Wrong type passed to first argument of `pytest.mark.parametrize`; expected `tuple`
|
PT006.py:9:26: PT006 [*] Wrong type passed to first argument of `pytest.mark.parametrize`; expected `tuple`
|
||||||
|
|
|
|
||||||
|
|
@ -329,8 +328,7 @@ PT006.py:103:5: PT006 [*] Wrong type passed to first argument of `pytest.mark.pa
|
||||||
|
|
|
|
||||||
101 | # Unsafe fix
|
101 | # Unsafe fix
|
||||||
102 | @pytest.mark.parametrize(
|
102 | @pytest.mark.parametrize(
|
||||||
103 | (
|
103 | / (
|
||||||
| _____^
|
|
||||||
104 | | # comment
|
104 | | # comment
|
||||||
105 | | "param",
|
105 | | "param",
|
||||||
106 | | ),
|
106 | | ),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
PT006.py:9:26: PT006 [*] Wrong type passed to first argument of `pytest.mark.parametrize`; expected `list`
|
PT006.py:9:26: PT006 [*] Wrong type passed to first argument of `pytest.mark.parametrize`; expected `list`
|
||||||
|
|
|
|
||||||
|
|
@ -291,8 +290,7 @@ PT006.py:103:5: PT006 [*] Wrong type passed to first argument of `pytest.mark.pa
|
||||||
|
|
|
|
||||||
101 | # Unsafe fix
|
101 | # Unsafe fix
|
||||||
102 | @pytest.mark.parametrize(
|
102 | @pytest.mark.parametrize(
|
||||||
103 | (
|
103 | / (
|
||||||
| _____^
|
|
||||||
104 | | # comment
|
104 | | # comment
|
||||||
105 | | "param",
|
105 | | "param",
|
||||||
106 | | ),
|
106 | | ),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
PT007.py:4:35: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected `list` of `list`
|
PT007.py:4:35: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected `list` of `list`
|
||||||
|
|
|
|
||||||
|
|
@ -25,8 +24,7 @@ PT007.py:11:5: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected
|
||||||
|
|
|
|
||||||
9 | @pytest.mark.parametrize(
|
9 | @pytest.mark.parametrize(
|
||||||
10 | ("param1", "param2"),
|
10 | ("param1", "param2"),
|
||||||
11 | (
|
11 | / (
|
||||||
| _____^
|
|
||||||
12 | | (1, 2),
|
12 | | (1, 2),
|
||||||
13 | | (3, 4),
|
13 | | (3, 4),
|
||||||
14 | | ),
|
14 | | ),
|
||||||
|
|
@ -96,8 +94,7 @@ PT007.py:22:5: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected
|
||||||
|
|
|
|
||||||
20 | @pytest.mark.parametrize(
|
20 | @pytest.mark.parametrize(
|
||||||
21 | ("param1", "param2"),
|
21 | ("param1", "param2"),
|
||||||
22 | (
|
22 | / (
|
||||||
| _____^
|
|
||||||
23 | | [1, 2],
|
23 | | [1, 2],
|
||||||
24 | | [3, 4],
|
24 | | [3, 4],
|
||||||
25 | | ),
|
25 | | ),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
PT007.py:4:35: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected `list` of `tuple`
|
PT007.py:4:35: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected `list` of `tuple`
|
||||||
|
|
|
|
||||||
|
|
@ -25,8 +24,7 @@ PT007.py:11:5: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected
|
||||||
|
|
|
|
||||||
9 | @pytest.mark.parametrize(
|
9 | @pytest.mark.parametrize(
|
||||||
10 | ("param1", "param2"),
|
10 | ("param1", "param2"),
|
||||||
11 | (
|
11 | / (
|
||||||
| _____^
|
|
||||||
12 | | (1, 2),
|
12 | | (1, 2),
|
||||||
13 | | (3, 4),
|
13 | | (3, 4),
|
||||||
14 | | ),
|
14 | | ),
|
||||||
|
|
@ -54,8 +52,7 @@ PT007.py:22:5: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected
|
||||||
|
|
|
|
||||||
20 | @pytest.mark.parametrize(
|
20 | @pytest.mark.parametrize(
|
||||||
21 | ("param1", "param2"),
|
21 | ("param1", "param2"),
|
||||||
22 | (
|
22 | / (
|
||||||
| _____^
|
|
||||||
23 | | [1, 2],
|
23 | | [1, 2],
|
||||||
24 | | [3, 4],
|
24 | | [3, 4],
|
||||||
25 | | ),
|
25 | | ),
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
PT007.py:12:9: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected `tuple` of `list`
|
PT007.py:12:9: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected `tuple` of `list`
|
||||||
|
|
|
|
||||||
|
|
@ -67,8 +66,7 @@ PT007.py:38:5: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected
|
||||||
|
|
|
|
||||||
36 | @pytest.mark.parametrize(
|
36 | @pytest.mark.parametrize(
|
||||||
37 | ("param1", "param2"),
|
37 | ("param1", "param2"),
|
||||||
38 | [
|
38 | / [
|
||||||
| _____^
|
|
||||||
39 | | (1, 2),
|
39 | | (1, 2),
|
||||||
40 | | (3, 4),
|
40 | | (3, 4),
|
||||||
41 | | ],
|
41 | | ],
|
||||||
|
|
@ -138,8 +136,7 @@ PT007.py:49:5: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected
|
||||||
|
|
|
|
||||||
47 | @pytest.mark.parametrize(
|
47 | @pytest.mark.parametrize(
|
||||||
48 | ("param1", "param2"),
|
48 | ("param1", "param2"),
|
||||||
49 | [
|
49 | / [
|
||||||
| _____^
|
|
||||||
50 | | [1, 2],
|
50 | | [1, 2],
|
||||||
51 | | [3, 4],
|
51 | | [3, 4],
|
||||||
52 | | ],
|
52 | | ],
|
||||||
|
|
@ -167,8 +164,7 @@ PT007.py:60:5: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected
|
||||||
|
|
|
|
||||||
58 | @pytest.mark.parametrize(
|
58 | @pytest.mark.parametrize(
|
||||||
59 | "param1,param2",
|
59 | "param1,param2",
|
||||||
60 | [
|
60 | / [
|
||||||
| _____^
|
|
||||||
61 | | [1, 2],
|
61 | | [1, 2],
|
||||||
62 | | [3, 4],
|
62 | | [3, 4],
|
||||||
63 | | ],
|
63 | | ],
|
||||||
|
|
@ -196,8 +192,7 @@ PT007.py:71:5: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected
|
||||||
|
|
|
|
||||||
69 | @pytest.mark.parametrize(
|
69 | @pytest.mark.parametrize(
|
||||||
70 | "param",
|
70 | "param",
|
||||||
71 | [
|
71 | / [
|
||||||
| _____^
|
|
||||||
72 | | [1, 2],
|
72 | | [1, 2],
|
||||||
73 | | [3, 4],
|
73 | | [3, 4],
|
||||||
74 | | ],
|
74 | | ],
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
PT007.py:23:9: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected `tuple` of `tuple`
|
PT007.py:23:9: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected `tuple` of `tuple`
|
||||||
|
|
|
|
||||||
|
|
@ -67,8 +66,7 @@ PT007.py:38:5: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected
|
||||||
|
|
|
|
||||||
36 | @pytest.mark.parametrize(
|
36 | @pytest.mark.parametrize(
|
||||||
37 | ("param1", "param2"),
|
37 | ("param1", "param2"),
|
||||||
38 | [
|
38 | / [
|
||||||
| _____^
|
|
||||||
39 | | (1, 2),
|
39 | | (1, 2),
|
||||||
40 | | (3, 4),
|
40 | | (3, 4),
|
||||||
41 | | ],
|
41 | | ],
|
||||||
|
|
@ -96,8 +94,7 @@ PT007.py:49:5: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected
|
||||||
|
|
|
|
||||||
47 | @pytest.mark.parametrize(
|
47 | @pytest.mark.parametrize(
|
||||||
48 | ("param1", "param2"),
|
48 | ("param1", "param2"),
|
||||||
49 | [
|
49 | / [
|
||||||
| _____^
|
|
||||||
50 | | [1, 2],
|
50 | | [1, 2],
|
||||||
51 | | [3, 4],
|
51 | | [3, 4],
|
||||||
52 | | ],
|
52 | | ],
|
||||||
|
|
@ -167,8 +164,7 @@ PT007.py:60:5: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected
|
||||||
|
|
|
|
||||||
58 | @pytest.mark.parametrize(
|
58 | @pytest.mark.parametrize(
|
||||||
59 | "param1,param2",
|
59 | "param1,param2",
|
||||||
60 | [
|
60 | / [
|
||||||
| _____^
|
|
||||||
61 | | [1, 2],
|
61 | | [1, 2],
|
||||||
62 | | [3, 4],
|
62 | | [3, 4],
|
||||||
63 | | ],
|
63 | | ],
|
||||||
|
|
@ -238,8 +234,7 @@ PT007.py:71:5: PT007 [*] Wrong values type in `pytest.mark.parametrize` expected
|
||||||
|
|
|
|
||||||
69 | @pytest.mark.parametrize(
|
69 | @pytest.mark.parametrize(
|
||||||
70 | "param",
|
70 | "param",
|
||||||
71 | [
|
71 | / [
|
||||||
| _____^
|
|
||||||
72 | | [1, 2],
|
72 | | [1, 2],
|
||||||
73 | | [3, 4],
|
73 | | [3, 4],
|
||||||
74 | | ],
|
74 | | ],
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
PT012.py:42:5: PT012 `pytest.raises()` block should contain a single simple statement
|
PT012.py:42:5: PT012 `pytest.raises()` block should contain a single simple statement
|
||||||
|
|
|
|
||||||
41 | def test_error_multiple_statements():
|
41 | def test_error_multiple_statements():
|
||||||
42 | with pytest.raises(AttributeError):
|
42 | / with pytest.raises(AttributeError):
|
||||||
| _____^
|
|
||||||
43 | | len([])
|
43 | | len([])
|
||||||
44 | | [].size
|
44 | | [].size
|
||||||
| |_______________^ PT012
|
| |_______________^ PT012
|
||||||
|
|
@ -15,60 +13,55 @@ PT012.py:42:5: PT012 `pytest.raises()` block should contain a single simple stat
|
||||||
PT012.py:48:5: PT012 `pytest.raises()` block should contain a single simple statement
|
PT012.py:48:5: PT012 `pytest.raises()` block should contain a single simple statement
|
||||||
|
|
|
|
||||||
47 | async def test_error_complex_statement():
|
47 | async def test_error_complex_statement():
|
||||||
48 | with pytest.raises(AttributeError):
|
48 | / with pytest.raises(AttributeError):
|
||||||
| _____^
|
|
||||||
49 | | if True:
|
49 | | if True:
|
||||||
50 | | [].size
|
50 | | [].size
|
||||||
| |___________________^ PT012
|
| |___________________^ PT012
|
||||||
51 |
|
51 |
|
||||||
52 | with pytest.raises(AttributeError):
|
52 | with pytest.raises(AttributeError):
|
||||||
|
|
|
|
||||||
|
|
||||||
PT012.py:52:5: PT012 `pytest.raises()` block should contain a single simple statement
|
PT012.py:52:5: PT012 `pytest.raises()` block should contain a single simple statement
|
||||||
|
|
|
|
||||||
50 | [].size
|
50 | [].size
|
||||||
51 |
|
51 |
|
||||||
52 | with pytest.raises(AttributeError):
|
52 | / with pytest.raises(AttributeError):
|
||||||
| _____^
|
|
||||||
53 | | for i in []:
|
53 | | for i in []:
|
||||||
54 | | [].size
|
54 | | [].size
|
||||||
| |___________________^ PT012
|
| |___________________^ PT012
|
||||||
55 |
|
55 |
|
||||||
56 | with pytest.raises(AttributeError):
|
56 | with pytest.raises(AttributeError):
|
||||||
|
|
|
|
||||||
|
|
||||||
PT012.py:56:5: PT012 `pytest.raises()` block should contain a single simple statement
|
PT012.py:56:5: PT012 `pytest.raises()` block should contain a single simple statement
|
||||||
|
|
|
|
||||||
54 | [].size
|
54 | [].size
|
||||||
55 |
|
55 |
|
||||||
56 | with pytest.raises(AttributeError):
|
56 | / with pytest.raises(AttributeError):
|
||||||
| _____^
|
|
||||||
57 | | async for i in []:
|
57 | | async for i in []:
|
||||||
58 | | [].size
|
58 | | [].size
|
||||||
| |___________________^ PT012
|
| |___________________^ PT012
|
||||||
59 |
|
59 |
|
||||||
60 | with pytest.raises(AttributeError):
|
60 | with pytest.raises(AttributeError):
|
||||||
|
|
|
|
||||||
|
|
||||||
PT012.py:60:5: PT012 `pytest.raises()` block should contain a single simple statement
|
PT012.py:60:5: PT012 `pytest.raises()` block should contain a single simple statement
|
||||||
|
|
|
|
||||||
58 | [].size
|
58 | [].size
|
||||||
59 |
|
59 |
|
||||||
60 | with pytest.raises(AttributeError):
|
60 | / with pytest.raises(AttributeError):
|
||||||
| _____^
|
|
||||||
61 | | while True:
|
61 | | while True:
|
||||||
62 | | [].size
|
62 | | [].size
|
||||||
| |___________________^ PT012
|
| |___________________^ PT012
|
||||||
63 |
|
63 |
|
||||||
64 | with pytest.raises(AttributeError):
|
64 | with pytest.raises(AttributeError):
|
||||||
|
|
|
|
||||||
|
|
||||||
PT012.py:64:5: PT012 `pytest.raises()` block should contain a single simple statement
|
PT012.py:64:5: PT012 `pytest.raises()` block should contain a single simple statement
|
||||||
|
|
|
|
||||||
62 | [].size
|
62 | [].size
|
||||||
63 |
|
63 |
|
||||||
64 | with pytest.raises(AttributeError):
|
64 | / with pytest.raises(AttributeError):
|
||||||
| _____^
|
|
||||||
65 | | async with context_manager_under_test():
|
65 | | async with context_manager_under_test():
|
||||||
66 | | if True:
|
66 | | if True:
|
||||||
67 | | raise Exception
|
67 | | raise Exception
|
||||||
|
|
@ -78,8 +71,7 @@ PT012.py:64:5: PT012 `pytest.raises()` block should contain a single simple stat
|
||||||
PT012.py:71:5: PT012 `pytest.raises()` block should contain a single simple statement
|
PT012.py:71:5: PT012 `pytest.raises()` block should contain a single simple statement
|
||||||
|
|
|
|
||||||
70 | def test_error_try():
|
70 | def test_error_try():
|
||||||
71 | with pytest.raises(AttributeError):
|
71 | / with pytest.raises(AttributeError):
|
||||||
| _____^
|
|
||||||
72 | | try:
|
72 | | try:
|
||||||
73 | | [].size
|
73 | | [].size
|
||||||
74 | | except:
|
74 | | except:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
PT018.py:14:5: PT018 [*] Assertion should be broken down into multiple parts
|
PT018.py:14:5: PT018 [*] Assertion should be broken down into multiple parts
|
||||||
|
|
|
|
||||||
|
|
@ -159,8 +158,7 @@ PT018.py:21:5: PT018 [*] Assertion should be broken down into multiple parts
|
||||||
|
|
|
|
||||||
19 | assert not (something or something_else)
|
19 | assert not (something or something_else)
|
||||||
20 | assert not (something or something_else or something_third)
|
20 | assert not (something or something_else or something_third)
|
||||||
21 | assert something and something_else == """error
|
21 | / assert something and something_else == """error
|
||||||
| _____^
|
|
||||||
22 | | message
|
22 | | message
|
||||||
23 | | """
|
23 | | """
|
||||||
| |_______^ PT018
|
| |_______^ PT018
|
||||||
|
|
@ -184,8 +182,7 @@ PT018.py:24:5: PT018 [*] Assertion should be broken down into multiple parts
|
||||||
|
|
|
|
||||||
22 | message
|
22 | message
|
||||||
23 | """
|
23 | """
|
||||||
24 | assert (
|
24 | / assert (
|
||||||
| _____^
|
|
||||||
25 | | something
|
25 | | something
|
||||||
26 | | and something_else
|
26 | | and something_else
|
||||||
27 | | == """error
|
27 | | == """error
|
||||||
|
|
@ -193,7 +190,7 @@ PT018.py:24:5: PT018 [*] Assertion should be broken down into multiple parts
|
||||||
29 | | """
|
29 | | """
|
||||||
30 | | )
|
30 | | )
|
||||||
| |_____^ PT018
|
| |_____^ PT018
|
||||||
31 |
|
31 |
|
||||||
32 | # recursive case
|
32 | # recursive case
|
||||||
|
|
|
|
||||||
= help: Break down assertion into multiple parts
|
= help: Break down assertion into multiple parts
|
||||||
|
|
@ -237,7 +234,7 @@ PT018.py:34:5: PT018 [*] Assertion should be broken down into multiple parts
|
||||||
33 | assert not (a or not (b or c))
|
33 | assert not (a or not (b or c))
|
||||||
34 | assert not (a or not (b and c))
|
34 | assert not (a or not (b and c))
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PT018
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PT018
|
||||||
35 |
|
35 |
|
||||||
36 | # detected, but no fix for messages
|
36 | # detected, but no fix for messages
|
||||||
|
|
|
|
||||||
= help: Break down assertion into multiple parts
|
= help: Break down assertion into multiple parts
|
||||||
|
|
@ -328,7 +325,7 @@ PT018.py:49:5: PT018 Assertion should be broken down into multiple parts
|
||||||
48 | def test_multiline():
|
48 | def test_multiline():
|
||||||
49 | assert something and something_else; x = 1
|
49 | assert something and something_else; x = 1
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PT018
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PT018
|
||||||
50 |
|
50 |
|
||||||
51 | x = 1; assert something and something_else
|
51 | x = 1; assert something and something_else
|
||||||
|
|
|
|
||||||
= help: Break down assertion into multiple parts
|
= help: Break down assertion into multiple parts
|
||||||
|
|
@ -336,10 +333,10 @@ PT018.py:49:5: PT018 Assertion should be broken down into multiple parts
|
||||||
PT018.py:51:12: PT018 Assertion should be broken down into multiple parts
|
PT018.py:51:12: PT018 Assertion should be broken down into multiple parts
|
||||||
|
|
|
|
||||||
49 | assert something and something_else; x = 1
|
49 | assert something and something_else; x = 1
|
||||||
50 |
|
50 |
|
||||||
51 | x = 1; assert something and something_else
|
51 | x = 1; assert something and something_else
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PT018
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PT018
|
||||||
52 |
|
52 |
|
||||||
53 | x = 1; \
|
53 | x = 1; \
|
||||||
|
|
|
|
||||||
= help: Break down assertion into multiple parts
|
= help: Break down assertion into multiple parts
|
||||||
|
|
@ -356,14 +353,13 @@ PT018.py:59:5: PT018 [*] Assertion should be broken down into multiple parts
|
||||||
|
|
|
|
||||||
57 | # Regression test for: https://github.com/astral-sh/ruff/issues/7143
|
57 | # Regression test for: https://github.com/astral-sh/ruff/issues/7143
|
||||||
58 | def test_parenthesized_not():
|
58 | def test_parenthesized_not():
|
||||||
59 | assert not (
|
59 | / assert not (
|
||||||
| _____^
|
|
||||||
60 | | self.find_graph_output(node.output[0])
|
60 | | self.find_graph_output(node.output[0])
|
||||||
61 | | or self.find_graph_input(node.input[0])
|
61 | | or self.find_graph_input(node.input[0])
|
||||||
62 | | or self.find_graph_output(node.input[0])
|
62 | | or self.find_graph_output(node.input[0])
|
||||||
63 | | )
|
63 | | )
|
||||||
| |_____^ PT018
|
| |_____^ PT018
|
||||||
64 |
|
64 |
|
||||||
65 | assert (not (
|
65 | assert (not (
|
||||||
|
|
|
|
||||||
= help: Break down assertion into multiple parts
|
= help: Break down assertion into multiple parts
|
||||||
|
|
@ -384,15 +380,14 @@ PT018.py:59:5: PT018 [*] Assertion should be broken down into multiple parts
|
||||||
PT018.py:65:5: PT018 [*] Assertion should be broken down into multiple parts
|
PT018.py:65:5: PT018 [*] Assertion should be broken down into multiple parts
|
||||||
|
|
|
|
||||||
63 | )
|
63 | )
|
||||||
64 |
|
64 |
|
||||||
65 | assert (not (
|
65 | / assert (not (
|
||||||
| _____^
|
|
||||||
66 | | self.find_graph_output(node.output[0])
|
66 | | self.find_graph_output(node.output[0])
|
||||||
67 | | or self.find_graph_input(node.input[0])
|
67 | | or self.find_graph_input(node.input[0])
|
||||||
68 | | or self.find_graph_output(node.input[0])
|
68 | | or self.find_graph_output(node.input[0])
|
||||||
69 | | ))
|
69 | | ))
|
||||||
| |______^ PT018
|
| |______^ PT018
|
||||||
70 |
|
70 |
|
||||||
71 | assert (not self.find_graph_output(node.output[0]) or
|
71 | assert (not self.find_graph_output(node.output[0]) or
|
||||||
|
|
|
|
||||||
= help: Break down assertion into multiple parts
|
= help: Break down assertion into multiple parts
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
PT027_0.py:6:14: PT027 [*] Use `pytest.raises` instead of unittest-style `assertRaises`
|
PT027_0.py:6:14: PT027 [*] Use `pytest.raises` instead of unittest-style `assertRaises`
|
||||||
|
|
|
|
||||||
|
|
@ -54,7 +53,7 @@ PT027_0.py:8:14: PT027 [*] Use `pytest.raises` instead of unittest-style `assert
|
||||||
PT027_0.py:11:14: PT027 [*] Use `pytest.raises` instead of unittest-style `failUnlessRaises`
|
PT027_0.py:11:14: PT027 [*] Use `pytest.raises` instead of unittest-style `failUnlessRaises`
|
||||||
|
|
|
|
||||||
9 | raise ValueError
|
9 | raise ValueError
|
||||||
10 |
|
10 |
|
||||||
11 | with self.failUnlessRaises(ValueError):
|
11 | with self.failUnlessRaises(ValueError):
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ PT027
|
| ^^^^^^^^^^^^^^^^^^^^^ PT027
|
||||||
12 | raise ValueError
|
12 | raise ValueError
|
||||||
|
|
@ -80,7 +79,7 @@ PT027_0.py:11:14: PT027 [*] Use `pytest.raises` instead of unittest-style `failU
|
||||||
PT027_0.py:14:14: PT027 [*] Use `pytest.raises` instead of unittest-style `assertRaisesRegex`
|
PT027_0.py:14:14: PT027 [*] Use `pytest.raises` instead of unittest-style `assertRaisesRegex`
|
||||||
|
|
|
|
||||||
12 | raise ValueError
|
12 | raise ValueError
|
||||||
13 |
|
13 |
|
||||||
14 | with self.assertRaisesRegex(ValueError, "test"):
|
14 | with self.assertRaisesRegex(ValueError, "test"):
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ PT027
|
| ^^^^^^^^^^^^^^^^^^^^^^ PT027
|
||||||
15 | raise ValueError("test")
|
15 | raise ValueError("test")
|
||||||
|
|
@ -106,7 +105,7 @@ PT027_0.py:14:14: PT027 [*] Use `pytest.raises` instead of unittest-style `asser
|
||||||
PT027_0.py:17:14: PT027 [*] Use `pytest.raises` instead of unittest-style `assertRaisesRegex`
|
PT027_0.py:17:14: PT027 [*] Use `pytest.raises` instead of unittest-style `assertRaisesRegex`
|
||||||
|
|
|
|
||||||
15 | raise ValueError("test")
|
15 | raise ValueError("test")
|
||||||
16 |
|
16 |
|
||||||
17 | with self.assertRaisesRegex(ValueError, expected_regex="test"):
|
17 | with self.assertRaisesRegex(ValueError, expected_regex="test"):
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ PT027
|
| ^^^^^^^^^^^^^^^^^^^^^^ PT027
|
||||||
18 | raise ValueError("test")
|
18 | raise ValueError("test")
|
||||||
|
|
@ -132,7 +131,7 @@ PT027_0.py:17:14: PT027 [*] Use `pytest.raises` instead of unittest-style `asser
|
||||||
PT027_0.py:20:14: PT027 [*] Use `pytest.raises` instead of unittest-style `assertRaisesRegex`
|
PT027_0.py:20:14: PT027 [*] Use `pytest.raises` instead of unittest-style `assertRaisesRegex`
|
||||||
|
|
|
|
||||||
18 | raise ValueError("test")
|
18 | raise ValueError("test")
|
||||||
19 |
|
19 |
|
||||||
20 | with self.assertRaisesRegex(
|
20 | with self.assertRaisesRegex(
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ PT027
|
| ^^^^^^^^^^^^^^^^^^^^^^ PT027
|
||||||
21 | expected_exception=ValueError, expected_regex="test"
|
21 | expected_exception=ValueError, expected_regex="test"
|
||||||
|
|
@ -161,7 +160,7 @@ PT027_0.py:20:14: PT027 [*] Use `pytest.raises` instead of unittest-style `asser
|
||||||
PT027_0.py:25:14: PT027 [*] Use `pytest.raises` instead of unittest-style `assertRaisesRegex`
|
PT027_0.py:25:14: PT027 [*] Use `pytest.raises` instead of unittest-style `assertRaisesRegex`
|
||||||
|
|
|
|
||||||
23 | raise ValueError("test")
|
23 | raise ValueError("test")
|
||||||
24 |
|
24 |
|
||||||
25 | with self.assertRaisesRegex(
|
25 | with self.assertRaisesRegex(
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ PT027
|
| ^^^^^^^^^^^^^^^^^^^^^^ PT027
|
||||||
26 | expected_regex="test", expected_exception=ValueError
|
26 | expected_regex="test", expected_exception=ValueError
|
||||||
|
|
@ -190,7 +189,7 @@ PT027_0.py:25:14: PT027 [*] Use `pytest.raises` instead of unittest-style `asser
|
||||||
PT027_0.py:30:14: PT027 [*] Use `pytest.raises` instead of unittest-style `assertRaisesRegexp`
|
PT027_0.py:30:14: PT027 [*] Use `pytest.raises` instead of unittest-style `assertRaisesRegexp`
|
||||||
|
|
|
|
||||||
28 | raise ValueError("test")
|
28 | raise ValueError("test")
|
||||||
29 |
|
29 |
|
||||||
30 | with self.assertRaisesRegexp(ValueError, "test"):
|
30 | with self.assertRaisesRegexp(ValueError, "test"):
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ PT027
|
| ^^^^^^^^^^^^^^^^^^^^^^^ PT027
|
||||||
31 | raise ValueError("test")
|
31 | raise ValueError("test")
|
||||||
|
|
@ -225,7 +224,7 @@ PT027_0.py:34:14: PT027 Use `pytest.raises` instead of unittest-style `assertRai
|
||||||
PT027_0.py:37:14: PT027 Use `pytest.raises` instead of unittest-style `assertRaises`
|
PT027_0.py:37:14: PT027 Use `pytest.raises` instead of unittest-style `assertRaises`
|
||||||
|
|
|
|
||||||
35 | raise ValueError
|
35 | raise ValueError
|
||||||
36 |
|
36 |
|
||||||
37 | with self.assertRaises(
|
37 | with self.assertRaises(
|
||||||
| ^^^^^^^^^^^^^^^^^ PT027
|
| ^^^^^^^^^^^^^^^^^ PT027
|
||||||
38 | # comment
|
38 | # comment
|
||||||
|
|
@ -236,8 +235,7 @@ PT027_0.py:37:14: PT027 Use `pytest.raises` instead of unittest-style `assertRai
|
||||||
PT027_0.py:44:13: PT027 Use `pytest.raises` instead of unittest-style `assertRaises`
|
PT027_0.py:44:13: PT027 Use `pytest.raises` instead of unittest-style `assertRaises`
|
||||||
|
|
|
|
||||||
43 | with (
|
43 | with (
|
||||||
44 | self
|
44 | / self
|
||||||
| _____________^
|
|
||||||
45 | | # comment
|
45 | | # comment
|
||||||
46 | | .assertRaises(ValueError)
|
46 | | .assertRaises(ValueError)
|
||||||
| |_________________________^ PT027
|
| |_________________________^ PT027
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pytest_style/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
PT031.py:42:5: PT031 `pytest.warns()` block should contain a single simple statement
|
PT031.py:42:5: PT031 `pytest.warns()` block should contain a single simple statement
|
||||||
|
|
|
|
||||||
41 | def test_error_multiple_statements():
|
41 | def test_error_multiple_statements():
|
||||||
42 | with pytest.warns(UserWarning):
|
42 | / with pytest.warns(UserWarning):
|
||||||
| _____^
|
|
||||||
43 | | foo()
|
43 | | foo()
|
||||||
44 | | bar()
|
44 | | bar()
|
||||||
| |_____________^ PT031
|
| |_____________^ PT031
|
||||||
|
|
@ -15,60 +13,55 @@ PT031.py:42:5: PT031 `pytest.warns()` block should contain a single simple state
|
||||||
PT031.py:48:5: PT031 `pytest.warns()` block should contain a single simple statement
|
PT031.py:48:5: PT031 `pytest.warns()` block should contain a single simple statement
|
||||||
|
|
|
|
||||||
47 | async def test_error_complex_statement():
|
47 | async def test_error_complex_statement():
|
||||||
48 | with pytest.warns(UserWarning):
|
48 | / with pytest.warns(UserWarning):
|
||||||
| _____^
|
|
||||||
49 | | if True:
|
49 | | if True:
|
||||||
50 | | foo()
|
50 | | foo()
|
||||||
| |_________________^ PT031
|
| |_________________^ PT031
|
||||||
51 |
|
51 |
|
||||||
52 | with pytest.warns(UserWarning):
|
52 | with pytest.warns(UserWarning):
|
||||||
|
|
|
|
||||||
|
|
||||||
PT031.py:52:5: PT031 `pytest.warns()` block should contain a single simple statement
|
PT031.py:52:5: PT031 `pytest.warns()` block should contain a single simple statement
|
||||||
|
|
|
|
||||||
50 | foo()
|
50 | foo()
|
||||||
51 |
|
51 |
|
||||||
52 | with pytest.warns(UserWarning):
|
52 | / with pytest.warns(UserWarning):
|
||||||
| _____^
|
|
||||||
53 | | for i in []:
|
53 | | for i in []:
|
||||||
54 | | foo()
|
54 | | foo()
|
||||||
| |_________________^ PT031
|
| |_________________^ PT031
|
||||||
55 |
|
55 |
|
||||||
56 | with pytest.warns(UserWarning):
|
56 | with pytest.warns(UserWarning):
|
||||||
|
|
|
|
||||||
|
|
||||||
PT031.py:56:5: PT031 `pytest.warns()` block should contain a single simple statement
|
PT031.py:56:5: PT031 `pytest.warns()` block should contain a single simple statement
|
||||||
|
|
|
|
||||||
54 | foo()
|
54 | foo()
|
||||||
55 |
|
55 |
|
||||||
56 | with pytest.warns(UserWarning):
|
56 | / with pytest.warns(UserWarning):
|
||||||
| _____^
|
|
||||||
57 | | async for i in []:
|
57 | | async for i in []:
|
||||||
58 | | foo()
|
58 | | foo()
|
||||||
| |_________________^ PT031
|
| |_________________^ PT031
|
||||||
59 |
|
59 |
|
||||||
60 | with pytest.warns(UserWarning):
|
60 | with pytest.warns(UserWarning):
|
||||||
|
|
|
|
||||||
|
|
||||||
PT031.py:60:5: PT031 `pytest.warns()` block should contain a single simple statement
|
PT031.py:60:5: PT031 `pytest.warns()` block should contain a single simple statement
|
||||||
|
|
|
|
||||||
58 | foo()
|
58 | foo()
|
||||||
59 |
|
59 |
|
||||||
60 | with pytest.warns(UserWarning):
|
60 | / with pytest.warns(UserWarning):
|
||||||
| _____^
|
|
||||||
61 | | while True:
|
61 | | while True:
|
||||||
62 | | foo()
|
62 | | foo()
|
||||||
| |_________________^ PT031
|
| |_________________^ PT031
|
||||||
63 |
|
63 |
|
||||||
64 | with pytest.warns(UserWarning):
|
64 | with pytest.warns(UserWarning):
|
||||||
|
|
|
|
||||||
|
|
||||||
PT031.py:64:5: PT031 `pytest.warns()` block should contain a single simple statement
|
PT031.py:64:5: PT031 `pytest.warns()` block should contain a single simple statement
|
||||||
|
|
|
|
||||||
62 | foo()
|
62 | foo()
|
||||||
63 |
|
63 |
|
||||||
64 | with pytest.warns(UserWarning):
|
64 | / with pytest.warns(UserWarning):
|
||||||
| _____^
|
|
||||||
65 | | async with context_manager_under_test():
|
65 | | async with context_manager_under_test():
|
||||||
66 | | if True:
|
66 | | if True:
|
||||||
67 | | foo()
|
67 | | foo()
|
||||||
|
|
@ -78,8 +71,7 @@ PT031.py:64:5: PT031 `pytest.warns()` block should contain a single simple state
|
||||||
PT031.py:71:5: PT031 `pytest.warns()` block should contain a single simple statement
|
PT031.py:71:5: PT031 `pytest.warns()` block should contain a single simple statement
|
||||||
|
|
|
|
||||||
70 | def test_error_try():
|
70 | def test_error_try():
|
||||||
71 | with pytest.warns(UserWarning):
|
71 | / with pytest.warns(UserWarning):
|
||||||
| _____^
|
|
||||||
72 | | try:
|
72 | | try:
|
||||||
73 | | foo()
|
73 | | foo()
|
||||||
74 | | except:
|
74 | | except:
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,15 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_quotes/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_quotes/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
docstring_doubles.py:5:1: Q001 [*] Double quote multiline found but single quotes preferred
|
docstring_doubles.py:5:1: Q001 [*] Double quote multiline found but single quotes preferred
|
||||||
|
|
|
|
||||||
3 | """
|
3 | """
|
||||||
4 |
|
4 |
|
||||||
5 | / """
|
5 | / """
|
||||||
6 | | this is not a docstring
|
6 | | this is not a docstring
|
||||||
7 | | """
|
7 | | """
|
||||||
| |___^ Q001
|
| |___^ Q001
|
||||||
8 |
|
8 |
|
||||||
9 | l = []
|
9 | l = []
|
||||||
|
|
|
|
||||||
= help: Replace double multiline quotes with single quotes
|
= help: Replace double multiline quotes with single quotes
|
||||||
|
|
@ -31,13 +30,12 @@ docstring_doubles.py:5:1: Q001 [*] Double quote multiline found but single quote
|
||||||
docstring_doubles.py:16:5: Q001 [*] Double quote multiline found but single quotes preferred
|
docstring_doubles.py:16:5: Q001 [*] Double quote multiline found but single quotes preferred
|
||||||
|
|
|
|
||||||
14 | """
|
14 | """
|
||||||
15 |
|
15 |
|
||||||
16 | """
|
16 | / """
|
||||||
| _____^
|
|
||||||
17 | | this is not a docstring
|
17 | | this is not a docstring
|
||||||
18 | | """
|
18 | | """
|
||||||
| |_______^ Q001
|
| |_______^ Q001
|
||||||
19 |
|
19 |
|
||||||
20 | # The colon in the list indexing below is an edge case for the docstring scanner
|
20 | # The colon in the list indexing below is an edge case for the docstring scanner
|
||||||
|
|
|
|
||||||
= help: Replace double multiline quotes with single quotes
|
= help: Replace double multiline quotes with single quotes
|
||||||
|
|
@ -82,13 +80,12 @@ docstring_doubles.py:21:21: Q001 [*] Double quote multiline found but single quo
|
||||||
docstring_doubles.py:30:9: Q001 [*] Double quote multiline found but single quotes preferred
|
docstring_doubles.py:30:9: Q001 [*] Double quote multiline found but single quotes preferred
|
||||||
|
|
|
|
||||||
28 | some_expression = 'hello world'
|
28 | some_expression = 'hello world'
|
||||||
29 |
|
29 |
|
||||||
30 | """
|
30 | / """
|
||||||
| _________^
|
|
||||||
31 | | this is not a docstring
|
31 | | this is not a docstring
|
||||||
32 | | """
|
32 | | """
|
||||||
| |___________^ Q001
|
| |___________^ Q001
|
||||||
33 |
|
33 |
|
||||||
34 | if l:
|
34 | if l:
|
||||||
|
|
|
|
||||||
= help: Replace double multiline quotes with single quotes
|
= help: Replace double multiline quotes with single quotes
|
||||||
|
|
@ -109,8 +106,7 @@ docstring_doubles.py:30:9: Q001 [*] Double quote multiline found but single quot
|
||||||
docstring_doubles.py:35:13: Q001 [*] Double quote multiline found but single quotes preferred
|
docstring_doubles.py:35:13: Q001 [*] Double quote multiline found but single quotes preferred
|
||||||
|
|
|
|
||||||
34 | if l:
|
34 | if l:
|
||||||
35 | """
|
35 | / """
|
||||||
| _____________^
|
|
||||||
36 | | Looks like a docstring, but in reality it isn't - only modules, classes and functions
|
36 | | Looks like a docstring, but in reality it isn't - only modules, classes and functions
|
||||||
37 | | """
|
37 | | """
|
||||||
| |_______________^ Q001
|
| |_______________^ Q001
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_quotes/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_quotes/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
docstring_singles.py:1:1: Q002 [*] Single quote docstring found but double quotes preferred
|
docstring_singles.py:1:1: Q002 [*] Single quote docstring found but double quotes preferred
|
||||||
|
|
|
|
||||||
|
|
@ -8,7 +7,7 @@ docstring_singles.py:1:1: Q002 [*] Single quote docstring found but double quote
|
||||||
2 | | Single quotes multiline module docstring
|
2 | | Single quotes multiline module docstring
|
||||||
3 | | '''
|
3 | | '''
|
||||||
| |___^ Q002
|
| |___^ Q002
|
||||||
4 |
|
4 |
|
||||||
5 | '''
|
5 | '''
|
||||||
|
|
|
|
||||||
= help: Replace single quotes docstring with double quotes
|
= help: Replace single quotes docstring with double quotes
|
||||||
|
|
@ -27,12 +26,11 @@ docstring_singles.py:14:5: Q002 [*] Single quote docstring found but double quot
|
||||||
|
|
|
|
||||||
12 | class params \t not a docstring
|
12 | class params \t not a docstring
|
||||||
13 | ''')):
|
13 | ''')):
|
||||||
14 | '''
|
14 | / '''
|
||||||
| _____^
|
|
||||||
15 | | Single quotes multiline class docstring
|
15 | | Single quotes multiline class docstring
|
||||||
16 | | '''
|
16 | | '''
|
||||||
| |_______^ Q002
|
| |_______^ Q002
|
||||||
17 |
|
17 |
|
||||||
18 | '''
|
18 | '''
|
||||||
|
|
|
|
||||||
= help: Replace single quotes docstring with double quotes
|
= help: Replace single quotes docstring with double quotes
|
||||||
|
|
@ -54,12 +52,11 @@ docstring_singles.py:26:9: Q002 [*] Single quote docstring found but double quot
|
||||||
|
|
|
|
||||||
24 | definitely not a docstring''',
|
24 | definitely not a docstring''',
|
||||||
25 | val=l[Cls():3]):
|
25 | val=l[Cls():3]):
|
||||||
26 | '''
|
26 | / '''
|
||||||
| _________^
|
|
||||||
27 | | Single quotes multiline function docstring
|
27 | | Single quotes multiline function docstring
|
||||||
28 | | '''
|
28 | | '''
|
||||||
| |___________^ Q002
|
| |___________^ Q002
|
||||||
29 |
|
29 |
|
||||||
30 | some_expression = 'hello world'
|
30 | some_expression = 'hello world'
|
||||||
|
|
|
|
||||||
= help: Replace single quotes docstring with double quotes
|
= help: Replace single quotes docstring with double quotes
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_quotes/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_quotes/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
docstring_singles_function.py:2:5: Q002 [*] Single quote docstring found but double quotes preferred
|
docstring_singles_function.py:2:5: Q002 [*] Single quote docstring found but double quotes preferred
|
||||||
|
|
|
|
||||||
|
|
@ -23,8 +22,7 @@ docstring_singles_function.py:2:5: Q002 [*] Single quote docstring found but dou
|
||||||
docstring_singles_function.py:8:5: Q002 [*] Single quote docstring found but double quotes preferred
|
docstring_singles_function.py:8:5: Q002 [*] Single quote docstring found but double quotes preferred
|
||||||
|
|
|
|
||||||
7 | def foo2():
|
7 | def foo2():
|
||||||
8 | '''
|
8 | / '''
|
||||||
| _____^
|
|
||||||
9 | | function without params, multiline docstring
|
9 | | function without params, multiline docstring
|
||||||
10 | | '''
|
10 | | '''
|
||||||
| |_______^ Q002
|
| |_______^ Q002
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_quotes/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_quotes/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
docstring_doubles.py:1:1: Q002 [*] Double quote docstring found but single quotes preferred
|
docstring_doubles.py:1:1: Q002 [*] Double quote docstring found but single quotes preferred
|
||||||
|
|
|
|
||||||
|
|
@ -8,7 +7,7 @@ docstring_doubles.py:1:1: Q002 [*] Double quote docstring found but single quote
|
||||||
2 | | Double quotes multiline module docstring
|
2 | | Double quotes multiline module docstring
|
||||||
3 | | """
|
3 | | """
|
||||||
| |___^ Q002
|
| |___^ Q002
|
||||||
4 |
|
4 |
|
||||||
5 | """
|
5 | """
|
||||||
|
|
|
|
||||||
= help: Replace double quotes docstring with single quotes
|
= help: Replace double quotes docstring with single quotes
|
||||||
|
|
@ -26,12 +25,11 @@ docstring_doubles.py:1:1: Q002 [*] Double quote docstring found but single quote
|
||||||
docstring_doubles.py:12:5: Q002 [*] Double quote docstring found but single quotes preferred
|
docstring_doubles.py:12:5: Q002 [*] Double quote docstring found but single quotes preferred
|
||||||
|
|
|
|
||||||
11 | class Cls:
|
11 | class Cls:
|
||||||
12 | """
|
12 | / """
|
||||||
| _____^
|
|
||||||
13 | | Double quotes multiline class docstring
|
13 | | Double quotes multiline class docstring
|
||||||
14 | | """
|
14 | | """
|
||||||
| |_______^ Q002
|
| |_______^ Q002
|
||||||
15 |
|
15 |
|
||||||
16 | """
|
16 | """
|
||||||
|
|
|
|
||||||
= help: Replace double quotes docstring with single quotes
|
= help: Replace double quotes docstring with single quotes
|
||||||
|
|
@ -53,12 +51,11 @@ docstring_doubles.py:24:9: Q002 [*] Double quote docstring found but single quot
|
||||||
|
|
|
|
||||||
22 | definitely not a docstring""",
|
22 | definitely not a docstring""",
|
||||||
23 | val=l[Cls():3]):
|
23 | val=l[Cls():3]):
|
||||||
24 | """
|
24 | / """
|
||||||
| _________^
|
|
||||||
25 | | Double quotes multiline function docstring
|
25 | | Double quotes multiline function docstring
|
||||||
26 | | """
|
26 | | """
|
||||||
| |___________^ Q002
|
| |___________^ Q002
|
||||||
27 |
|
27 |
|
||||||
28 | some_expression = 'hello world'
|
28 | some_expression = 'hello world'
|
||||||
|
|
|
|
||||||
= help: Replace double quotes docstring with single quotes
|
= help: Replace double quotes docstring with single quotes
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_quotes/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_quotes/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
docstring_doubles_function.py:2:5: Q002 [*] Double quote docstring found but single quotes preferred
|
docstring_doubles_function.py:2:5: Q002 [*] Double quote docstring found but single quotes preferred
|
||||||
|
|
|
|
||||||
|
|
@ -23,8 +22,7 @@ docstring_doubles_function.py:2:5: Q002 [*] Double quote docstring found but sin
|
||||||
docstring_doubles_function.py:8:5: Q002 [*] Double quote docstring found but single quotes preferred
|
docstring_doubles_function.py:8:5: Q002 [*] Double quote docstring found but single quotes preferred
|
||||||
|
|
|
|
||||||
7 | def foo2():
|
7 | def foo2():
|
||||||
8 | """
|
8 | / """
|
||||||
| _____^
|
|
||||||
9 | | function without params, multiline docstring
|
9 | | function without params, multiline docstring
|
||||||
10 | | """
|
10 | | """
|
||||||
| |_______^ Q002
|
| |_______^ Q002
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,15 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_quotes/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_quotes/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
docstring_singles.py:5:1: Q001 [*] Single quote multiline found but double quotes preferred
|
docstring_singles.py:5:1: Q001 [*] Single quote multiline found but double quotes preferred
|
||||||
|
|
|
|
||||||
3 | '''
|
3 | '''
|
||||||
4 |
|
4 |
|
||||||
5 | / '''
|
5 | / '''
|
||||||
6 | | this is not a docstring
|
6 | | this is not a docstring
|
||||||
7 | | '''
|
7 | | '''
|
||||||
| |___^ Q001
|
| |___^ Q001
|
||||||
8 |
|
8 |
|
||||||
9 | l = []
|
9 | l = []
|
||||||
|
|
|
|
||||||
= help: Replace single multiline quotes with double quotes
|
= help: Replace single multiline quotes with double quotes
|
||||||
|
|
@ -31,7 +30,7 @@ docstring_singles.py:5:1: Q001 [*] Single quote multiline found but double quote
|
||||||
docstring_singles.py:11:21: Q001 [*] Single quote multiline found but double quotes preferred
|
docstring_singles.py:11:21: Q001 [*] Single quote multiline found but double quotes preferred
|
||||||
|
|
|
|
||||||
9 | l = []
|
9 | l = []
|
||||||
10 |
|
10 |
|
||||||
11 | class Cls(MakeKlass('''
|
11 | class Cls(MakeKlass('''
|
||||||
| _____________________^
|
| _____________________^
|
||||||
12 | | class params \t not a docstring
|
12 | | class params \t not a docstring
|
||||||
|
|
@ -58,13 +57,12 @@ docstring_singles.py:11:21: Q001 [*] Single quote multiline found but double quo
|
||||||
docstring_singles.py:18:5: Q001 [*] Single quote multiline found but double quotes preferred
|
docstring_singles.py:18:5: Q001 [*] Single quote multiline found but double quotes preferred
|
||||||
|
|
|
|
||||||
16 | '''
|
16 | '''
|
||||||
17 |
|
17 |
|
||||||
18 | '''
|
18 | / '''
|
||||||
| _____^
|
|
||||||
19 | | this is not a docstring
|
19 | | this is not a docstring
|
||||||
20 | | '''
|
20 | | '''
|
||||||
| |_______^ Q001
|
| |_______^ Q001
|
||||||
21 |
|
21 |
|
||||||
22 | # The colon in the list indexing below is an edge case for the docstring scanner
|
22 | # The colon in the list indexing below is an edge case for the docstring scanner
|
||||||
|
|
|
|
||||||
= help: Replace single multiline quotes with double quotes
|
= help: Replace single multiline quotes with double quotes
|
||||||
|
|
@ -109,13 +107,12 @@ docstring_singles.py:23:21: Q001 [*] Single quote multiline found but double quo
|
||||||
docstring_singles.py:32:9: Q001 [*] Single quote multiline found but double quotes preferred
|
docstring_singles.py:32:9: Q001 [*] Single quote multiline found but double quotes preferred
|
||||||
|
|
|
|
||||||
30 | some_expression = 'hello world'
|
30 | some_expression = 'hello world'
|
||||||
31 |
|
31 |
|
||||||
32 | '''
|
32 | / '''
|
||||||
| _________^
|
|
||||||
33 | | this is not a docstring
|
33 | | this is not a docstring
|
||||||
34 | | '''
|
34 | | '''
|
||||||
| |___________^ Q001
|
| |___________^ Q001
|
||||||
35 |
|
35 |
|
||||||
36 | if l:
|
36 | if l:
|
||||||
|
|
|
|
||||||
= help: Replace single multiline quotes with double quotes
|
= help: Replace single multiline quotes with double quotes
|
||||||
|
|
@ -136,8 +133,7 @@ docstring_singles.py:32:9: Q001 [*] Single quote multiline found but double quot
|
||||||
docstring_singles.py:37:13: Q001 [*] Single quote multiline found but double quotes preferred
|
docstring_singles.py:37:13: Q001 [*] Single quote multiline found but double quotes preferred
|
||||||
|
|
|
|
||||||
36 | if l:
|
36 | if l:
|
||||||
37 | '''
|
37 | / '''
|
||||||
| _____________^
|
|
||||||
38 | | Looks like a docstring, but in reality it isn't - only modules, classes and functions
|
38 | | Looks like a docstring, but in reality it isn't - only modules, classes and functions
|
||||||
39 | | '''
|
39 | | '''
|
||||||
| |_______________^ Q001
|
| |_______________^ Q001
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,11 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_return/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_return/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
RET503.py:21:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
RET503.py:21:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
||||||
|
|
|
|
||||||
19 | # if/elif/else
|
19 | # if/elif/else
|
||||||
20 | def x(y):
|
20 | def x(y):
|
||||||
21 | if not y:
|
21 | / if not y:
|
||||||
| _____^
|
|
||||||
22 | | return 1
|
22 | | return 1
|
||||||
| |________________^ RET503
|
| |________________^ RET503
|
||||||
23 | # error
|
23 | # error
|
||||||
|
|
@ -46,7 +44,7 @@ RET503.py:28:9: RET503 [*] Missing explicit `return` at the end of function able
|
||||||
RET503.py:37:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
RET503.py:37:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
||||||
|
|
|
|
||||||
35 | return 1
|
35 | return 1
|
||||||
36 |
|
36 |
|
||||||
37 | print() # error
|
37 | print() # error
|
||||||
| ^^^^^^^ RET503
|
| ^^^^^^^ RET503
|
||||||
|
|
|
|
||||||
|
|
@ -65,8 +63,7 @@ RET503.py:42:5: RET503 [*] Missing explicit `return` at the end of function able
|
||||||
|
|
|
|
||||||
40 | # for
|
40 | # for
|
||||||
41 | def x(y):
|
41 | def x(y):
|
||||||
42 | for i in range(10):
|
42 | / for i in range(10):
|
||||||
| _____^
|
|
||||||
43 | | if i > 10:
|
43 | | if i > 10:
|
||||||
44 | | return i
|
44 | | return i
|
||||||
| |____________________^ RET503
|
| |____________________^ RET503
|
||||||
|
|
@ -141,8 +138,7 @@ RET503.py:83:5: RET503 [*] Missing explicit `return` at the end of function able
|
||||||
|
|
|
|
||||||
81 | # last line in while loop
|
81 | # last line in while loop
|
||||||
82 | def x(y):
|
82 | def x(y):
|
||||||
83 | while i > 0:
|
83 | / while i > 0:
|
||||||
| _____^
|
|
||||||
84 | | if y > 0:
|
84 | | if y > 0:
|
||||||
85 | | return 1
|
85 | | return 1
|
||||||
86 | | y += 1
|
86 | | y += 1
|
||||||
|
|
@ -163,8 +159,7 @@ RET503.py:114:5: RET503 [*] Missing explicit `return` at the end of function abl
|
||||||
|
|
|
|
||||||
112 | # return value within loop
|
112 | # return value within loop
|
||||||
113 | def bar1(x, y, z):
|
113 | def bar1(x, y, z):
|
||||||
114 | for i in x:
|
114 | / for i in x:
|
||||||
| _____^
|
|
||||||
115 | | if i > y:
|
115 | | if i > y:
|
||||||
116 | | break
|
116 | | break
|
||||||
117 | | return z
|
117 | | return z
|
||||||
|
|
@ -184,8 +179,7 @@ RET503.py:114:5: RET503 [*] Missing explicit `return` at the end of function abl
|
||||||
RET503.py:121:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
RET503.py:121:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
||||||
|
|
|
|
||||||
120 | def bar3(x, y, z):
|
120 | def bar3(x, y, z):
|
||||||
121 | for i in x:
|
121 | / for i in x:
|
||||||
| _____^
|
|
||||||
122 | | if i > y:
|
122 | | if i > y:
|
||||||
123 | | if z:
|
123 | | if z:
|
||||||
124 | | break
|
124 | | break
|
||||||
|
|
@ -208,8 +202,7 @@ RET503.py:121:5: RET503 [*] Missing explicit `return` at the end of function abl
|
||||||
RET503.py:131:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
RET503.py:131:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
||||||
|
|
|
|
||||||
130 | def bar1(x, y, z):
|
130 | def bar1(x, y, z):
|
||||||
131 | for i in x:
|
131 | / for i in x:
|
||||||
| _____^
|
|
||||||
132 | | if i < y:
|
132 | | if i < y:
|
||||||
133 | | continue
|
133 | | continue
|
||||||
134 | | return z
|
134 | | return z
|
||||||
|
|
@ -229,8 +222,7 @@ RET503.py:131:5: RET503 [*] Missing explicit `return` at the end of function abl
|
||||||
RET503.py:138:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
RET503.py:138:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
||||||
|
|
|
|
||||||
137 | def bar3(x, y, z):
|
137 | def bar3(x, y, z):
|
||||||
138 | for i in x:
|
138 | / for i in x:
|
||||||
| _____^
|
|
||||||
139 | | if i < y:
|
139 | | if i < y:
|
||||||
140 | | if z:
|
140 | | if z:
|
||||||
141 | | continue
|
141 | | continue
|
||||||
|
|
@ -253,9 +245,8 @@ RET503.py:138:5: RET503 [*] Missing explicit `return` at the end of function abl
|
||||||
RET503.py:275:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
RET503.py:275:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
||||||
|
|
|
|
||||||
273 | return False
|
273 | return False
|
||||||
274 |
|
274 |
|
||||||
275 | for value in values:
|
275 | / for value in values:
|
||||||
| _____^
|
|
||||||
276 | | print(value)
|
276 | | print(value)
|
||||||
| |____________________^ RET503
|
| |____________________^ RET503
|
||||||
|
|
|
|
||||||
|
|
@ -292,8 +283,7 @@ RET503.py:301:9: RET503 [*] Missing explicit `return` at the end of function abl
|
||||||
|
|
|
|
||||||
299 | def end_of_statement():
|
299 | def end_of_statement():
|
||||||
300 | def example():
|
300 | def example():
|
||||||
301 | if True:
|
301 | / if True:
|
||||||
| _________^
|
|
||||||
302 | | return ""
|
302 | | return ""
|
||||||
| |_____________________^ RET503
|
| |_____________________^ RET503
|
||||||
|
|
|
|
||||||
|
|
@ -311,8 +301,7 @@ RET503.py:301:9: RET503 [*] Missing explicit `return` at the end of function abl
|
||||||
RET503.py:306:9: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
RET503.py:306:9: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
||||||
|
|
|
|
||||||
305 | def example():
|
305 | def example():
|
||||||
306 | if True:
|
306 | / if True:
|
||||||
| _________^
|
|
||||||
307 | | return ""
|
307 | | return ""
|
||||||
| |_____________________^ RET503
|
| |_____________________^ RET503
|
||||||
|
|
|
|
||||||
|
|
@ -330,8 +319,7 @@ RET503.py:306:9: RET503 [*] Missing explicit `return` at the end of function abl
|
||||||
RET503.py:311:9: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
RET503.py:311:9: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
||||||
|
|
|
|
||||||
310 | def example():
|
310 | def example():
|
||||||
311 | if True:
|
311 | / if True:
|
||||||
| _________^
|
|
||||||
312 | | return "" # type: ignore
|
312 | | return "" # type: ignore
|
||||||
| |_____________________^ RET503
|
| |_____________________^ RET503
|
||||||
|
|
|
|
||||||
|
|
@ -349,8 +337,7 @@ RET503.py:311:9: RET503 [*] Missing explicit `return` at the end of function abl
|
||||||
RET503.py:316:9: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
RET503.py:316:9: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
||||||
|
|
|
|
||||||
315 | def example():
|
315 | def example():
|
||||||
316 | if True:
|
316 | / if True:
|
||||||
| _________^
|
|
||||||
317 | | return "" ;
|
317 | | return "" ;
|
||||||
| |_____________________^ RET503
|
| |_____________________^ RET503
|
||||||
|
|
|
|
||||||
|
|
@ -368,8 +355,7 @@ RET503.py:316:9: RET503 [*] Missing explicit `return` at the end of function abl
|
||||||
RET503.py:321:9: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
RET503.py:321:9: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
||||||
|
|
|
|
||||||
320 | def example():
|
320 | def example():
|
||||||
321 | if True:
|
321 | / if True:
|
||||||
| _________^
|
|
||||||
322 | | return "" \
|
322 | | return "" \
|
||||||
| |_____________________^ RET503
|
| |_____________________^ RET503
|
||||||
323 | ; # type: ignore
|
323 | ; # type: ignore
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_return/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_return/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
RET503.py:20:1: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
RET503.py:20:1: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
||||||
|
|
|
|
||||||
|
|
@ -47,7 +46,7 @@ RET503.py:33:1: RET503 [*] Missing explicit `return` at the end of function able
|
||||||
33 | / def x(y):
|
33 | / def x(y):
|
||||||
34 | | if not y:
|
34 | | if not y:
|
||||||
35 | | return 1
|
35 | | return 1
|
||||||
36 | |
|
36 | |
|
||||||
37 | | print() # error
|
37 | | print() # error
|
||||||
| |___________^ RET503
|
| |___________^ RET503
|
||||||
|
|
|
|
||||||
|
|
@ -257,7 +256,7 @@ RET503.py:271:1: RET503 [*] Missing explicit `return` at the end of function abl
|
||||||
271 | / def nested(values):
|
271 | / def nested(values):
|
||||||
272 | | if not values:
|
272 | | if not values:
|
||||||
273 | | return False
|
273 | | return False
|
||||||
274 | |
|
274 | |
|
||||||
275 | | for value in values:
|
275 | | for value in values:
|
||||||
276 | | print(value)
|
276 | | print(value)
|
||||||
| |____________________^ RET503
|
| |____________________^ RET503
|
||||||
|
|
@ -298,8 +297,7 @@ RET503.py:287:1: RET503 [*] Missing explicit `return` at the end of function abl
|
||||||
RET503.py:300:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
RET503.py:300:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
||||||
|
|
|
|
||||||
299 | def end_of_statement():
|
299 | def end_of_statement():
|
||||||
300 | def example():
|
300 | / def example():
|
||||||
| _____^
|
|
||||||
301 | | if True:
|
301 | | if True:
|
||||||
302 | | return ""
|
302 | | return ""
|
||||||
| |_____________________^ RET503
|
| |_____________________^ RET503
|
||||||
|
|
@ -317,8 +315,7 @@ RET503.py:300:5: RET503 [*] Missing explicit `return` at the end of function abl
|
||||||
|
|
||||||
RET503.py:305:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
RET503.py:305:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
||||||
|
|
|
|
||||||
305 | def example():
|
305 | / def example():
|
||||||
| _____^
|
|
||||||
306 | | if True:
|
306 | | if True:
|
||||||
307 | | return ""
|
307 | | return ""
|
||||||
| |_____________________^ RET503
|
| |_____________________^ RET503
|
||||||
|
|
@ -336,8 +333,7 @@ RET503.py:305:5: RET503 [*] Missing explicit `return` at the end of function abl
|
||||||
|
|
||||||
RET503.py:310:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
RET503.py:310:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
||||||
|
|
|
|
||||||
310 | def example():
|
310 | / def example():
|
||||||
| _____^
|
|
||||||
311 | | if True:
|
311 | | if True:
|
||||||
312 | | return "" # type: ignore
|
312 | | return "" # type: ignore
|
||||||
| |_____________________^ RET503
|
| |_____________________^ RET503
|
||||||
|
|
@ -355,8 +351,7 @@ RET503.py:310:5: RET503 [*] Missing explicit `return` at the end of function abl
|
||||||
|
|
||||||
RET503.py:315:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
RET503.py:315:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
||||||
|
|
|
|
||||||
315 | def example():
|
315 | / def example():
|
||||||
| _____^
|
|
||||||
316 | | if True:
|
316 | | if True:
|
||||||
317 | | return "" ;
|
317 | | return "" ;
|
||||||
| |_____________________^ RET503
|
| |_____________________^ RET503
|
||||||
|
|
@ -374,8 +369,7 @@ RET503.py:315:5: RET503 [*] Missing explicit `return` at the end of function abl
|
||||||
|
|
||||||
RET503.py:320:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
RET503.py:320:5: RET503 [*] Missing explicit `return` at the end of function able to return non-`None` value
|
||||||
|
|
|
|
||||||
320 | def example():
|
320 | / def example():
|
||||||
| _____^
|
|
||||||
321 | | if True:
|
321 | | if True:
|
||||||
322 | | return "" \
|
322 | | return "" \
|
||||||
| |_____________________^ RET503
|
| |_____________________^ RET503
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
SIM102.py:2:1: SIM102 [*] Use a single `if` statement instead of nested `if` statements
|
SIM102.py:2:1: SIM102 [*] Use a single `if` statement instead of nested `if` statements
|
||||||
|
|
|
|
||||||
|
|
@ -53,8 +52,7 @@ SIM102.py:8:5: SIM102 [*] Use a single `if` statement instead of nested `if` sta
|
||||||
|
|
|
|
||||||
6 | # SIM102
|
6 | # SIM102
|
||||||
7 | if a:
|
7 | if a:
|
||||||
8 | if b:
|
8 | / if b:
|
||||||
| _____^
|
|
||||||
9 | | if c:
|
9 | | if c:
|
||||||
| |_____________^ SIM102
|
| |_____________^ SIM102
|
||||||
10 | d
|
10 | d
|
||||||
|
|
@ -139,8 +137,7 @@ SIM102.py:51:5: SIM102 [*] Use a single `if` statement instead of nested `if` st
|
||||||
|
|
|
|
||||||
49 | while x > 0:
|
49 | while x > 0:
|
||||||
50 | # SIM102
|
50 | # SIM102
|
||||||
51 | if y > 0:
|
51 | / if y > 0:
|
||||||
| _____^
|
|
||||||
52 | | if z > 0:
|
52 | | if z > 0:
|
||||||
| |_________________^ SIM102
|
| |_________________^ SIM102
|
||||||
53 | """this
|
53 | """this
|
||||||
|
|
@ -213,8 +210,7 @@ SIM102.py:83:5: SIM102 [*] Use a single `if` statement instead of nested `if` st
|
||||||
|
|
|
|
||||||
81 | while x > 0:
|
81 | while x > 0:
|
||||||
82 | # SIM102
|
82 | # SIM102
|
||||||
83 | if node.module:
|
83 | / if node.module:
|
||||||
| _____^
|
|
||||||
84 | | if node.module == "multiprocessing" or node.module.startswith(
|
84 | | if node.module == "multiprocessing" or node.module.startswith(
|
||||||
85 | | "multiprocessing."
|
85 | | "multiprocessing."
|
||||||
86 | | ):
|
86 | | ):
|
||||||
|
|
@ -285,8 +281,7 @@ SIM102.py:106:5: SIM102 [*] Use a single `if` statement instead of nested `if` s
|
||||||
|
|
|
|
||||||
104 | # Regression test for https://github.com/apache/airflow/blob/145b16caaa43f0c42bffd97344df916c602cddde/airflow/configuration.py#L1161
|
104 | # Regression test for https://github.com/apache/airflow/blob/145b16caaa43f0c42bffd97344df916c602cddde/airflow/configuration.py#L1161
|
||||||
105 | if a:
|
105 | if a:
|
||||||
106 | if b:
|
106 | / if b:
|
||||||
| _____^
|
|
||||||
107 | | if c:
|
107 | | if c:
|
||||||
| |_____________^ SIM102
|
| |_____________^ SIM102
|
||||||
108 | print("if")
|
108 | print("if")
|
||||||
|
|
@ -311,8 +306,7 @@ SIM102.py:132:5: SIM102 [*] Use a single `if` statement instead of nested `if` s
|
||||||
|
|
|
|
||||||
130 | if a:
|
130 | if a:
|
||||||
131 | # SIM 102
|
131 | # SIM 102
|
||||||
132 | if b:
|
132 | / if b:
|
||||||
| _____^
|
|
||||||
133 | | if c:
|
133 | | if c:
|
||||||
| |_____________^ SIM102
|
| |_____________^ SIM102
|
||||||
134 | print("foo")
|
134 | print("foo")
|
||||||
|
|
@ -337,8 +331,7 @@ SIM102.py:165:5: SIM102 [*] Use a single `if` statement instead of nested `if` s
|
||||||
|
|
|
|
||||||
163 | if a:
|
163 | if a:
|
||||||
164 | pass
|
164 | pass
|
||||||
165 | elif b:
|
165 | / elif b:
|
||||||
| _____^
|
|
||||||
166 | | if c:
|
166 | | if c:
|
||||||
| |_____________^ SIM102
|
| |_____________^ SIM102
|
||||||
167 | d
|
167 | d
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,11 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
SIM103.py:3:5: SIM103 [*] Return the condition `bool(a)` directly
|
SIM103.py:3:5: SIM103 [*] Return the condition `bool(a)` directly
|
||||||
|
|
|
|
||||||
1 | def f():
|
1 | def f():
|
||||||
2 | # SIM103
|
2 | # SIM103
|
||||||
3 | if a:
|
3 | / if a:
|
||||||
| _____^
|
|
||||||
4 | | return True
|
4 | | return True
|
||||||
5 | | else:
|
5 | | else:
|
||||||
6 | | return False
|
6 | | return False
|
||||||
|
|
@ -31,8 +29,7 @@ SIM103.py:11:5: SIM103 [*] Return the condition `a == b` directly
|
||||||
|
|
|
|
||||||
9 | def f():
|
9 | def f():
|
||||||
10 | # SIM103
|
10 | # SIM103
|
||||||
11 | if a == b:
|
11 | / if a == b:
|
||||||
| _____^
|
|
||||||
12 | | return True
|
12 | | return True
|
||||||
13 | | else:
|
13 | | else:
|
||||||
14 | | return False
|
14 | | return False
|
||||||
|
|
@ -57,8 +54,7 @@ SIM103.py:21:5: SIM103 [*] Return the condition `bool(b)` directly
|
||||||
|
|
|
|
||||||
19 | if a:
|
19 | if a:
|
||||||
20 | return 1
|
20 | return 1
|
||||||
21 | elif b:
|
21 | / elif b:
|
||||||
| _____^
|
|
||||||
22 | | return True
|
22 | | return True
|
||||||
23 | | else:
|
23 | | else:
|
||||||
24 | | return False
|
24 | | return False
|
||||||
|
|
@ -83,8 +79,7 @@ SIM103.py:32:9: SIM103 [*] Return the condition `bool(b)` directly
|
||||||
|
|
|
|
||||||
30 | return 1
|
30 | return 1
|
||||||
31 | else:
|
31 | else:
|
||||||
32 | if b:
|
32 | / if b:
|
||||||
| _________^
|
|
||||||
33 | | return True
|
33 | | return True
|
||||||
34 | | else:
|
34 | | else:
|
||||||
35 | | return False
|
35 | | return False
|
||||||
|
|
@ -109,8 +104,7 @@ SIM103.py:57:5: SIM103 [*] Return the condition `not a` directly
|
||||||
|
|
|
|
||||||
55 | def f():
|
55 | def f():
|
||||||
56 | # SIM103
|
56 | # SIM103
|
||||||
57 | if a:
|
57 | / if a:
|
||||||
| _____^
|
|
||||||
58 | | return False
|
58 | | return False
|
||||||
59 | | else:
|
59 | | else:
|
||||||
60 | | return True
|
60 | | return True
|
||||||
|
|
@ -135,8 +129,7 @@ SIM103.py:83:5: SIM103 Return the condition directly
|
||||||
|
|
|
|
||||||
81 | def bool():
|
81 | def bool():
|
||||||
82 | return False
|
82 | return False
|
||||||
83 | if a:
|
83 | / if a:
|
||||||
| _____^
|
|
||||||
84 | | return True
|
84 | | return True
|
||||||
85 | | else:
|
85 | | else:
|
||||||
86 | | return False
|
86 | | return False
|
||||||
|
|
@ -148,8 +141,7 @@ SIM103.py:91:5: SIM103 [*] Return the condition `not (keys is not None and notic
|
||||||
|
|
|
|
||||||
89 | def f():
|
89 | def f():
|
||||||
90 | # SIM103
|
90 | # SIM103
|
||||||
91 | if keys is not None and notice.key not in keys:
|
91 | / if keys is not None and notice.key not in keys:
|
||||||
| _____^
|
|
||||||
92 | | return False
|
92 | | return False
|
||||||
93 | | else:
|
93 | | else:
|
||||||
94 | | return True
|
94 | | return True
|
||||||
|
|
@ -174,8 +166,7 @@ SIM103.py:104:5: SIM103 [*] Return the condition `bool(a)` directly
|
||||||
|
|
|
|
||||||
102 | def f():
|
102 | def f():
|
||||||
103 | # SIM103
|
103 | # SIM103
|
||||||
104 | if a:
|
104 | / if a:
|
||||||
| _____^
|
|
||||||
105 | | return True
|
105 | | return True
|
||||||
106 | | return False
|
106 | | return False
|
||||||
| |________________^ SIM103
|
| |________________^ SIM103
|
||||||
|
|
@ -198,8 +189,7 @@ SIM103.py:111:5: SIM103 [*] Return the condition `not a` directly
|
||||||
|
|
|
|
||||||
109 | def f():
|
109 | def f():
|
||||||
110 | # SIM103
|
110 | # SIM103
|
||||||
111 | if a:
|
111 | / if a:
|
||||||
| _____^
|
|
||||||
112 | | return False
|
112 | | return False
|
||||||
113 | | return True
|
113 | | return True
|
||||||
| |_______________^ SIM103
|
| |_______________^ SIM103
|
||||||
|
|
@ -221,8 +211,7 @@ SIM103.py:111:5: SIM103 [*] Return the condition `not a` directly
|
||||||
SIM103.py:117:5: SIM103 [*] Return the condition `10 < a` directly
|
SIM103.py:117:5: SIM103 [*] Return the condition `10 < a` directly
|
||||||
|
|
|
|
||||||
116 | def f():
|
116 | def f():
|
||||||
117 | if not 10 < a:
|
117 | / if not 10 < a:
|
||||||
| _____^
|
|
||||||
118 | | return False
|
118 | | return False
|
||||||
119 | | return True
|
119 | | return True
|
||||||
| |_______________^ SIM103
|
| |_______________^ SIM103
|
||||||
|
|
@ -244,8 +233,7 @@ SIM103.py:117:5: SIM103 [*] Return the condition `10 < a` directly
|
||||||
SIM103.py:123:5: SIM103 [*] Return the condition `not 10 < a` directly
|
SIM103.py:123:5: SIM103 [*] Return the condition `not 10 < a` directly
|
||||||
|
|
|
|
||||||
122 | def f():
|
122 | def f():
|
||||||
123 | if 10 < a:
|
123 | / if 10 < a:
|
||||||
| _____^
|
|
||||||
124 | | return False
|
124 | | return False
|
||||||
125 | | return True
|
125 | | return True
|
||||||
| |_______________^ SIM103
|
| |_______________^ SIM103
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
SIM105_0.py:6:1: SIM105 [*] Use `contextlib.suppress(ValueError)` instead of `try`-`except`-`pass`
|
SIM105_0.py:6:1: SIM105 [*] Use `contextlib.suppress(ValueError)` instead of `try`-`except`-`pass`
|
||||||
|
|
|
|
||||||
|
|
@ -37,7 +36,7 @@ SIM105_0.py:13:1: SIM105 [*] Use `contextlib.suppress(ValueError, OSError)` inst
|
||||||
15 | | except (ValueError, OSError):
|
15 | | except (ValueError, OSError):
|
||||||
16 | | pass
|
16 | | pass
|
||||||
| |________^ SIM105
|
| |________^ SIM105
|
||||||
17 |
|
17 |
|
||||||
18 | # SIM105
|
18 | # SIM105
|
||||||
|
|
|
|
||||||
= help: Replace with `contextlib.suppress(ValueError, OSError)`
|
= help: Replace with `contextlib.suppress(ValueError, OSError)`
|
||||||
|
|
@ -68,7 +67,7 @@ SIM105_0.py:19:1: SIM105 [*] Use `contextlib.suppress(ValueError, OSError)` inst
|
||||||
21 | | except (ValueError, OSError) as e:
|
21 | | except (ValueError, OSError) as e:
|
||||||
22 | | pass
|
22 | | pass
|
||||||
| |________^ SIM105
|
| |________^ SIM105
|
||||||
23 |
|
23 |
|
||||||
24 | # SIM105
|
24 | # SIM105
|
||||||
|
|
|
|
||||||
= help: Replace with `contextlib.suppress(ValueError, OSError)`
|
= help: Replace with `contextlib.suppress(ValueError, OSError)`
|
||||||
|
|
@ -99,7 +98,7 @@ SIM105_0.py:25:1: SIM105 [*] Use `contextlib.suppress(Exception)` instead of `tr
|
||||||
27 | | except:
|
27 | | except:
|
||||||
28 | | pass
|
28 | | pass
|
||||||
| |________^ SIM105
|
| |________^ SIM105
|
||||||
29 |
|
29 |
|
||||||
30 | # SIM105
|
30 | # SIM105
|
||||||
|
|
|
|
||||||
= help: Replace with `contextlib.suppress(Exception)`
|
= help: Replace with `contextlib.suppress(Exception)`
|
||||||
|
|
@ -130,7 +129,7 @@ SIM105_0.py:31:1: SIM105 [*] Use `contextlib.suppress(a.Error, b.Error)` instead
|
||||||
33 | | except (a.Error, b.Error):
|
33 | | except (a.Error, b.Error):
|
||||||
34 | | pass
|
34 | | pass
|
||||||
| |________^ SIM105
|
| |________^ SIM105
|
||||||
35 |
|
35 |
|
||||||
36 | # OK
|
36 | # OK
|
||||||
|
|
|
|
||||||
= help: Replace with `contextlib.suppress(a.Error, b.Error)`
|
= help: Replace with `contextlib.suppress(a.Error, b.Error)`
|
||||||
|
|
@ -157,8 +156,7 @@ SIM105_0.py:85:5: SIM105 [*] Use `contextlib.suppress(ValueError)` instead of `t
|
||||||
|
|
|
|
||||||
83 | def with_ellipsis():
|
83 | def with_ellipsis():
|
||||||
84 | # OK
|
84 | # OK
|
||||||
85 | try:
|
85 | / try:
|
||||||
| _____^
|
|
||||||
86 | | foo()
|
86 | | foo()
|
||||||
87 | | except ValueError:
|
87 | | except ValueError:
|
||||||
88 | | ...
|
88 | | ...
|
||||||
|
|
@ -187,13 +185,12 @@ SIM105_0.py:85:5: SIM105 [*] Use `contextlib.suppress(ValueError)` instead of `t
|
||||||
SIM105_0.py:100:5: SIM105 Use `contextlib.suppress(ValueError, OSError)` instead of `try`-`except`-`pass`
|
SIM105_0.py:100:5: SIM105 Use `contextlib.suppress(ValueError, OSError)` instead of `try`-`except`-`pass`
|
||||||
|
|
|
|
||||||
99 | def with_comment():
|
99 | def with_comment():
|
||||||
100 | try:
|
100 | / try:
|
||||||
| _____^
|
|
||||||
101 | | foo()
|
101 | | foo()
|
||||||
102 | | except (ValueError, OSError):
|
102 | | except (ValueError, OSError):
|
||||||
103 | | pass # Trailing comment.
|
103 | | pass # Trailing comment.
|
||||||
| |____________^ SIM105
|
| |____________^ SIM105
|
||||||
104 |
|
104 |
|
||||||
105 | try:
|
105 | try:
|
||||||
|
|
|
|
||||||
= help: Replace with `contextlib.suppress(ValueError, OSError)`
|
= help: Replace with `contextlib.suppress(ValueError, OSError)`
|
||||||
|
|
@ -202,13 +199,12 @@ SIM105_0.py:117:5: SIM105 [*] Use `contextlib.suppress(OSError)` instead of `try
|
||||||
|
|
|
|
||||||
115 | # Regression test for: https://github.com/astral-sh/ruff/issues/7123
|
115 | # Regression test for: https://github.com/astral-sh/ruff/issues/7123
|
||||||
116 | def write_models(directory, Models):
|
116 | def write_models(directory, Models):
|
||||||
117 | try:
|
117 | / try:
|
||||||
| _____^
|
|
||||||
118 | | os.makedirs(model_dir);
|
118 | | os.makedirs(model_dir);
|
||||||
119 | | except OSError:
|
119 | | except OSError:
|
||||||
120 | | pass;
|
120 | | pass;
|
||||||
| |____________^ SIM105
|
| |____________^ SIM105
|
||||||
121 |
|
121 |
|
||||||
122 | try: os.makedirs(model_dir);
|
122 | try: os.makedirs(model_dir);
|
||||||
|
|
|
|
||||||
= help: Replace with `contextlib.suppress(OSError)`
|
= help: Replace with `contextlib.suppress(OSError)`
|
||||||
|
|
@ -234,13 +230,12 @@ SIM105_0.py:117:5: SIM105 [*] Use `contextlib.suppress(OSError)` instead of `try
|
||||||
SIM105_0.py:122:5: SIM105 [*] Use `contextlib.suppress(OSError)` instead of `try`-`except`-`pass`
|
SIM105_0.py:122:5: SIM105 [*] Use `contextlib.suppress(OSError)` instead of `try`-`except`-`pass`
|
||||||
|
|
|
|
||||||
120 | pass;
|
120 | pass;
|
||||||
121 |
|
121 |
|
||||||
122 | try: os.makedirs(model_dir);
|
122 | / try: os.makedirs(model_dir);
|
||||||
| _____^
|
|
||||||
123 | | except OSError:
|
123 | | except OSError:
|
||||||
124 | | pass;
|
124 | | pass;
|
||||||
| |____________^ SIM105
|
| |____________^ SIM105
|
||||||
125 |
|
125 |
|
||||||
126 | try: os.makedirs(model_dir);
|
126 | try: os.makedirs(model_dir);
|
||||||
|
|
|
|
||||||
= help: Replace with `contextlib.suppress(OSError)`
|
= help: Replace with `contextlib.suppress(OSError)`
|
||||||
|
|
@ -265,9 +260,8 @@ SIM105_0.py:122:5: SIM105 [*] Use `contextlib.suppress(OSError)` instead of `try
|
||||||
SIM105_0.py:126:5: SIM105 [*] Use `contextlib.suppress(OSError)` instead of `try`-`except`-`pass`
|
SIM105_0.py:126:5: SIM105 [*] Use `contextlib.suppress(OSError)` instead of `try`-`except`-`pass`
|
||||||
|
|
|
|
||||||
124 | pass;
|
124 | pass;
|
||||||
125 |
|
125 |
|
||||||
126 | try: os.makedirs(model_dir);
|
126 | / try: os.makedirs(model_dir);
|
||||||
| _____^
|
|
||||||
127 | | except OSError:
|
127 | | except OSError:
|
||||||
128 | | pass; \
|
128 | | pass; \
|
||||||
| |____________^ SIM105
|
| |____________^ SIM105
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,11 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
SIM105_3.py:10:5: SIM105 Use `contextlib.suppress(ValueError)` instead of `try`-`except`-`pass`
|
SIM105_3.py:10:5: SIM105 Use `contextlib.suppress(ValueError)` instead of `try`-`except`-`pass`
|
||||||
|
|
|
|
||||||
8 | def bar():
|
8 | def bar():
|
||||||
9 | # SIM105
|
9 | # SIM105
|
||||||
10 | try:
|
10 | / try:
|
||||||
| _____^
|
|
||||||
11 | | foo()
|
11 | | foo()
|
||||||
12 | | except ValueError:
|
12 | | except ValueError:
|
||||||
13 | | pass
|
13 | | pass
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
SIM108.py:2:1: SIM108 [*] Use ternary operator `b = c if a else d` instead of `if`-`else`-block
|
SIM108.py:2:1: SIM108 [*] Use ternary operator `b = c if a else d` instead of `if`-`else`-block
|
||||||
|
|
|
|
||||||
|
|
@ -10,7 +9,7 @@ SIM108.py:2:1: SIM108 [*] Use ternary operator `b = c if a else d` instead of `i
|
||||||
4 | | else:
|
4 | | else:
|
||||||
5 | | b = d
|
5 | | b = d
|
||||||
| |_________^ SIM108
|
| |_________^ SIM108
|
||||||
6 |
|
6 |
|
||||||
7 | # OK
|
7 | # OK
|
||||||
|
|
|
|
||||||
= help: Replace `if`-`else`-block with `b = c if a else d`
|
= help: Replace `if`-`else`-block with `b = c if a else d`
|
||||||
|
|
@ -30,8 +29,7 @@ SIM108.py:30:5: SIM108 [*] Use ternary operator `b = 1 if a else 2` instead of `
|
||||||
|
|
|
|
||||||
28 | pass
|
28 | pass
|
||||||
29 | else:
|
29 | else:
|
||||||
30 | if a:
|
30 | / if a:
|
||||||
| _____^
|
|
||||||
31 | | b = 1
|
31 | | b = 1
|
||||||
32 | | else:
|
32 | | else:
|
||||||
33 | | b = 2
|
33 | | b = 2
|
||||||
|
|
@ -129,7 +127,7 @@ SIM108.py:141:1: SIM108 [*] Use ternary operator `z = cond if cond else other_co
|
||||||
143 | | else:
|
143 | | else:
|
||||||
144 | | z = other_cond
|
144 | | z = other_cond
|
||||||
| |__________________^ SIM108
|
| |__________________^ SIM108
|
||||||
145 |
|
145 |
|
||||||
146 | # SIM108 - should suggest
|
146 | # SIM108 - should suggest
|
||||||
|
|
|
|
||||||
= help: Replace `if`-`else`-block with `z = cond if cond else other_cond`
|
= help: Replace `if`-`else`-block with `z = cond if cond else other_cond`
|
||||||
|
|
@ -156,7 +154,7 @@ SIM108.py:148:1: SIM108 [*] Use ternary operator `z = cond if not cond else othe
|
||||||
150 | | else:
|
150 | | else:
|
||||||
151 | | z = other_cond
|
151 | | z = other_cond
|
||||||
| |__________________^ SIM108
|
| |__________________^ SIM108
|
||||||
152 |
|
152 |
|
||||||
153 | # SIM108 - should suggest
|
153 | # SIM108 - should suggest
|
||||||
|
|
|
|
||||||
= help: Replace `if`-`else`-block with `z = cond if not cond else other_cond`
|
= help: Replace `if`-`else`-block with `z = cond if not cond else other_cond`
|
||||||
|
|
@ -183,7 +181,7 @@ SIM108.py:155:1: SIM108 [*] Use ternary operator `z = not cond if cond else othe
|
||||||
157 | | else:
|
157 | | else:
|
||||||
158 | | z = other_cond
|
158 | | z = other_cond
|
||||||
| |__________________^ SIM108
|
| |__________________^ SIM108
|
||||||
159 |
|
159 |
|
||||||
160 | # SIM108 does not suggest
|
160 | # SIM108 does not suggest
|
||||||
|
|
|
|
||||||
= help: Replace `if`-`else`-block with `z = not cond if cond else other_cond`
|
= help: Replace `if`-`else`-block with `z = not cond if cond else other_cond`
|
||||||
|
|
@ -210,7 +208,7 @@ SIM108.py:167:1: SIM108 [*] Use ternary operator `z = 1 if True else other` inst
|
||||||
169 | | else:
|
169 | | else:
|
||||||
170 | | z = other
|
170 | | z = other
|
||||||
| |_____________^ SIM108
|
| |_____________^ SIM108
|
||||||
171 |
|
171 |
|
||||||
172 | if False:
|
172 | if False:
|
||||||
|
|
|
|
||||||
= help: Replace `if`-`else`-block with `z = 1 if True else other`
|
= help: Replace `if`-`else`-block with `z = 1 if True else other`
|
||||||
|
|
@ -231,13 +229,13 @@ SIM108.py:167:1: SIM108 [*] Use ternary operator `z = 1 if True else other` inst
|
||||||
SIM108.py:177:1: SIM108 [*] Use ternary operator `z = True if 1 else other` instead of `if`-`else`-block
|
SIM108.py:177:1: SIM108 [*] Use ternary operator `z = True if 1 else other` instead of `if`-`else`-block
|
||||||
|
|
|
|
||||||
175 | z = other
|
175 | z = other
|
||||||
176 |
|
176 |
|
||||||
177 | / if 1:
|
177 | / if 1:
|
||||||
178 | | z = True
|
178 | | z = True
|
||||||
179 | | else:
|
179 | | else:
|
||||||
180 | | z = other
|
180 | | z = other
|
||||||
| |_____________^ SIM108
|
| |_____________^ SIM108
|
||||||
181 |
|
181 |
|
||||||
182 | # SIM108 does not suggest a binary option in this
|
182 | # SIM108 does not suggest a binary option in this
|
||||||
|
|
|
|
||||||
= help: Replace `if`-`else`-block with `z = True if 1 else other`
|
= help: Replace `if`-`else`-block with `z = True if 1 else other`
|
||||||
|
|
@ -264,7 +262,7 @@ SIM108.py:185:1: SIM108 [*] Use ternary operator `z = foo() if foo() else other`
|
||||||
187 | | else:
|
187 | | else:
|
||||||
188 | | z = other
|
188 | | z = other
|
||||||
| |_____________^ SIM108
|
| |_____________^ SIM108
|
||||||
189 |
|
189 |
|
||||||
190 | # SIM108 does not suggest a binary option in this
|
190 | # SIM108 does not suggest a binary option in this
|
||||||
|
|
|
|
||||||
= help: Replace `if`-`else`-block with `z = foo() if foo() else other`
|
= help: Replace `if`-`else`-block with `z = foo() if foo() else other`
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,11 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
SIM110.py:3:5: SIM110 [*] Use `return any(check(x) for x in iterable)` instead of `for` loop
|
SIM110.py:3:5: SIM110 [*] Use `return any(check(x) for x in iterable)` instead of `for` loop
|
||||||
|
|
|
|
||||||
1 | def f():
|
1 | def f():
|
||||||
2 | # SIM110
|
2 | # SIM110
|
||||||
3 | for x in iterable:
|
3 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
4 | | if check(x):
|
4 | | if check(x):
|
||||||
5 | | return True
|
5 | | return True
|
||||||
6 | | return False
|
6 | | return False
|
||||||
|
|
@ -31,8 +29,7 @@ SIM110.py:25:5: SIM110 [*] Use `return all(not check(x) for x in iterable)` inst
|
||||||
|
|
|
|
||||||
23 | def f():
|
23 | def f():
|
||||||
24 | # SIM111
|
24 | # SIM111
|
||||||
25 | for x in iterable:
|
25 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
26 | | if check(x):
|
26 | | if check(x):
|
||||||
27 | | return False
|
27 | | return False
|
||||||
28 | | return True
|
28 | | return True
|
||||||
|
|
@ -57,8 +54,7 @@ SIM110.py:33:5: SIM110 [*] Use `return all(x.is_empty() for x in iterable)` inst
|
||||||
|
|
|
|
||||||
31 | def f():
|
31 | def f():
|
||||||
32 | # SIM111
|
32 | # SIM111
|
||||||
33 | for x in iterable:
|
33 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
34 | | if not x.is_empty():
|
34 | | if not x.is_empty():
|
||||||
35 | | return False
|
35 | | return False
|
||||||
36 | | return True
|
36 | | return True
|
||||||
|
|
@ -83,8 +79,7 @@ SIM110.py:55:5: SIM110 [*] Use `return any(check(x) for x in iterable)` instead
|
||||||
|
|
|
|
||||||
53 | def f():
|
53 | def f():
|
||||||
54 | # SIM110
|
54 | # SIM110
|
||||||
55 | for x in iterable:
|
55 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
56 | | if check(x):
|
56 | | if check(x):
|
||||||
57 | | return True
|
57 | | return True
|
||||||
58 | | else:
|
58 | | else:
|
||||||
|
|
@ -111,8 +106,7 @@ SIM110.py:64:5: SIM110 [*] Use `return all(not check(x) for x in iterable)` inst
|
||||||
|
|
|
|
||||||
62 | def f():
|
62 | def f():
|
||||||
63 | # SIM111
|
63 | # SIM111
|
||||||
64 | for x in iterable:
|
64 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
65 | | if check(x):
|
65 | | if check(x):
|
||||||
66 | | return False
|
66 | | return False
|
||||||
67 | | else:
|
67 | | else:
|
||||||
|
|
@ -139,8 +133,7 @@ SIM110.py:73:5: SIM110 [*] Use `return any(check(x) for x in iterable)` instead
|
||||||
|
|
|
|
||||||
71 | def f():
|
71 | def f():
|
||||||
72 | # SIM110
|
72 | # SIM110
|
||||||
73 | for x in iterable:
|
73 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
74 | | if check(x):
|
74 | | if check(x):
|
||||||
75 | | return True
|
75 | | return True
|
||||||
76 | | else:
|
76 | | else:
|
||||||
|
|
@ -168,8 +161,7 @@ SIM110.py:83:5: SIM110 [*] Use `return all(not check(x) for x in iterable)` inst
|
||||||
|
|
|
|
||||||
81 | def f():
|
81 | def f():
|
||||||
82 | # SIM111
|
82 | # SIM111
|
||||||
83 | for x in iterable:
|
83 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
84 | | if check(x):
|
84 | | if check(x):
|
||||||
85 | | return False
|
85 | | return False
|
||||||
86 | | else:
|
86 | | else:
|
||||||
|
|
@ -196,9 +188,8 @@ SIM110.py:83:5: SIM110 [*] Use `return all(not check(x) for x in iterable)` inst
|
||||||
SIM110.py:124:5: SIM110 Use `return any(check(x) for x in iterable)` instead of `for` loop
|
SIM110.py:124:5: SIM110 Use `return any(check(x) for x in iterable)` instead of `for` loop
|
||||||
|
|
|
|
||||||
122 | pass
|
122 | pass
|
||||||
123 |
|
123 |
|
||||||
124 | for x in iterable:
|
124 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
125 | | if check(x):
|
125 | | if check(x):
|
||||||
126 | | return True
|
126 | | return True
|
||||||
127 | | return False
|
127 | | return False
|
||||||
|
|
@ -209,9 +200,8 @@ SIM110.py:124:5: SIM110 Use `return any(check(x) for x in iterable)` instead of
|
||||||
SIM110.py:134:5: SIM110 Use `return all(not check(x) for x in iterable)` instead of `for` loop
|
SIM110.py:134:5: SIM110 Use `return all(not check(x) for x in iterable)` instead of `for` loop
|
||||||
|
|
|
|
||||||
132 | pass
|
132 | pass
|
||||||
133 |
|
133 |
|
||||||
134 | for x in iterable:
|
134 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
135 | | if check(x):
|
135 | | if check(x):
|
||||||
136 | | return False
|
136 | | return False
|
||||||
137 | | return True
|
137 | | return True
|
||||||
|
|
@ -222,8 +212,7 @@ SIM110.py:134:5: SIM110 Use `return all(not check(x) for x in iterable)` instead
|
||||||
SIM110.py:144:5: SIM110 [*] Use `return any(check(x) for x in iterable)` instead of `for` loop
|
SIM110.py:144:5: SIM110 [*] Use `return any(check(x) for x in iterable)` instead of `for` loop
|
||||||
|
|
|
|
||||||
143 | # SIM110
|
143 | # SIM110
|
||||||
144 | for x in iterable:
|
144 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
145 | | if check(x):
|
145 | | if check(x):
|
||||||
146 | | return True
|
146 | | return True
|
||||||
147 | | return False
|
147 | | return False
|
||||||
|
|
@ -247,8 +236,7 @@ SIM110.py:144:5: SIM110 [*] Use `return any(check(x) for x in iterable)` instead
|
||||||
SIM110.py:154:5: SIM110 [*] Use `return all(not check(x) for x in iterable)` instead of `for` loop
|
SIM110.py:154:5: SIM110 [*] Use `return all(not check(x) for x in iterable)` instead of `for` loop
|
||||||
|
|
|
|
||||||
153 | # SIM111
|
153 | # SIM111
|
||||||
154 | for x in iterable:
|
154 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
155 | | if check(x):
|
155 | | if check(x):
|
||||||
156 | | return False
|
156 | | return False
|
||||||
157 | | return True
|
157 | | return True
|
||||||
|
|
@ -273,8 +261,7 @@ SIM110.py:162:5: SIM110 [*] Use `return any(x.isdigit() for x in "012ß9💣2ℝ
|
||||||
|
|
|
|
||||||
160 | def f():
|
160 | def f():
|
||||||
161 | # SIM110
|
161 | # SIM110
|
||||||
162 | for x in "012ß9💣2ℝ9012ß9💣2ℝ9012ß9💣2ℝ9012ß9💣2ℝ9012ß9💣2ℝ":
|
162 | / for x in "012ß9💣2ℝ9012ß9💣2ℝ9012ß9💣2ℝ9012ß9💣2ℝ9012ß9💣2ℝ":
|
||||||
| _____^
|
|
||||||
163 | | if x.isdigit():
|
163 | | if x.isdigit():
|
||||||
164 | | return True
|
164 | | return True
|
||||||
165 | | return False
|
165 | | return False
|
||||||
|
|
@ -299,13 +286,12 @@ SIM110.py:184:5: SIM110 [*] Use `return any(check(x) for x in iterable)` instead
|
||||||
|
|
|
|
||||||
182 | async def f():
|
182 | async def f():
|
||||||
183 | # SIM110
|
183 | # SIM110
|
||||||
184 | for x in iterable:
|
184 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
185 | | if check(x):
|
185 | | if check(x):
|
||||||
186 | | return True
|
186 | | return True
|
||||||
187 | | return False
|
187 | | return False
|
||||||
| |________________^ SIM110
|
| |________________^ SIM110
|
||||||
188 |
|
188 |
|
||||||
189 | async def f():
|
189 | async def f():
|
||||||
|
|
|
|
||||||
= help: Replace with `return any(check(x) for x in iterable)`
|
= help: Replace with `return any(check(x) for x in iterable)`
|
||||||
|
|
@ -327,13 +313,12 @@ SIM110.py:191:5: SIM110 [*] Use `return any(check(x) for x in await iterable)` i
|
||||||
|
|
|
|
||||||
189 | async def f():
|
189 | async def f():
|
||||||
190 | # SIM110
|
190 | # SIM110
|
||||||
191 | for x in await iterable:
|
191 | / for x in await iterable:
|
||||||
| _____^
|
|
||||||
192 | | if check(x):
|
192 | | if check(x):
|
||||||
193 | | return True
|
193 | | return True
|
||||||
194 | | return False
|
194 | | return False
|
||||||
| |________________^ SIM110
|
| |________________^ SIM110
|
||||||
195 |
|
195 |
|
||||||
196 | def f():
|
196 | def f():
|
||||||
|
|
|
|
||||||
= help: Replace with `return any(check(x) for x in await iterable)`
|
= help: Replace with `return any(check(x) for x in await iterable)`
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,11 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
SIM111.py:3:5: SIM110 [*] Use `return any(check(x) for x in iterable)` instead of `for` loop
|
SIM111.py:3:5: SIM110 [*] Use `return any(check(x) for x in iterable)` instead of `for` loop
|
||||||
|
|
|
|
||||||
1 | def f():
|
1 | def f():
|
||||||
2 | # SIM110
|
2 | # SIM110
|
||||||
3 | for x in iterable:
|
3 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
4 | | if check(x):
|
4 | | if check(x):
|
||||||
5 | | return True
|
5 | | return True
|
||||||
6 | | return False
|
6 | | return False
|
||||||
|
|
@ -31,8 +29,7 @@ SIM111.py:25:5: SIM110 [*] Use `return all(not check(x) for x in iterable)` inst
|
||||||
|
|
|
|
||||||
23 | def f():
|
23 | def f():
|
||||||
24 | # SIM111
|
24 | # SIM111
|
||||||
25 | for x in iterable:
|
25 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
26 | | if check(x):
|
26 | | if check(x):
|
||||||
27 | | return False
|
27 | | return False
|
||||||
28 | | return True
|
28 | | return True
|
||||||
|
|
@ -57,8 +54,7 @@ SIM111.py:33:5: SIM110 [*] Use `return all(x.is_empty() for x in iterable)` inst
|
||||||
|
|
|
|
||||||
31 | def f():
|
31 | def f():
|
||||||
32 | # SIM111
|
32 | # SIM111
|
||||||
33 | for x in iterable:
|
33 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
34 | | if not x.is_empty():
|
34 | | if not x.is_empty():
|
||||||
35 | | return False
|
35 | | return False
|
||||||
36 | | return True
|
36 | | return True
|
||||||
|
|
@ -83,8 +79,7 @@ SIM111.py:55:5: SIM110 [*] Use `return any(check(x) for x in iterable)` instead
|
||||||
|
|
|
|
||||||
53 | def f():
|
53 | def f():
|
||||||
54 | # SIM110
|
54 | # SIM110
|
||||||
55 | for x in iterable:
|
55 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
56 | | if check(x):
|
56 | | if check(x):
|
||||||
57 | | return True
|
57 | | return True
|
||||||
58 | | else:
|
58 | | else:
|
||||||
|
|
@ -111,8 +106,7 @@ SIM111.py:64:5: SIM110 [*] Use `return all(not check(x) for x in iterable)` inst
|
||||||
|
|
|
|
||||||
62 | def f():
|
62 | def f():
|
||||||
63 | # SIM111
|
63 | # SIM111
|
||||||
64 | for x in iterable:
|
64 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
65 | | if check(x):
|
65 | | if check(x):
|
||||||
66 | | return False
|
66 | | return False
|
||||||
67 | | else:
|
67 | | else:
|
||||||
|
|
@ -139,8 +133,7 @@ SIM111.py:73:5: SIM110 [*] Use `return any(check(x) for x in iterable)` instead
|
||||||
|
|
|
|
||||||
71 | def f():
|
71 | def f():
|
||||||
72 | # SIM110
|
72 | # SIM110
|
||||||
73 | for x in iterable:
|
73 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
74 | | if check(x):
|
74 | | if check(x):
|
||||||
75 | | return True
|
75 | | return True
|
||||||
76 | | else:
|
76 | | else:
|
||||||
|
|
@ -168,8 +161,7 @@ SIM111.py:83:5: SIM110 [*] Use `return all(not check(x) for x in iterable)` inst
|
||||||
|
|
|
|
||||||
81 | def f():
|
81 | def f():
|
||||||
82 | # SIM111
|
82 | # SIM111
|
||||||
83 | for x in iterable:
|
83 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
84 | | if check(x):
|
84 | | if check(x):
|
||||||
85 | | return False
|
85 | | return False
|
||||||
86 | | else:
|
86 | | else:
|
||||||
|
|
@ -196,9 +188,8 @@ SIM111.py:83:5: SIM110 [*] Use `return all(not check(x) for x in iterable)` inst
|
||||||
SIM111.py:124:5: SIM110 Use `return any(check(x) for x in iterable)` instead of `for` loop
|
SIM111.py:124:5: SIM110 Use `return any(check(x) for x in iterable)` instead of `for` loop
|
||||||
|
|
|
|
||||||
122 | pass
|
122 | pass
|
||||||
123 |
|
123 |
|
||||||
124 | for x in iterable:
|
124 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
125 | | if check(x):
|
125 | | if check(x):
|
||||||
126 | | return True
|
126 | | return True
|
||||||
127 | | return False
|
127 | | return False
|
||||||
|
|
@ -209,9 +200,8 @@ SIM111.py:124:5: SIM110 Use `return any(check(x) for x in iterable)` instead of
|
||||||
SIM111.py:134:5: SIM110 Use `return all(not check(x) for x in iterable)` instead of `for` loop
|
SIM111.py:134:5: SIM110 Use `return all(not check(x) for x in iterable)` instead of `for` loop
|
||||||
|
|
|
|
||||||
132 | pass
|
132 | pass
|
||||||
133 |
|
133 |
|
||||||
134 | for x in iterable:
|
134 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
135 | | if check(x):
|
135 | | if check(x):
|
||||||
136 | | return False
|
136 | | return False
|
||||||
137 | | return True
|
137 | | return True
|
||||||
|
|
@ -222,8 +212,7 @@ SIM111.py:134:5: SIM110 Use `return all(not check(x) for x in iterable)` instead
|
||||||
SIM111.py:144:5: SIM110 [*] Use `return any(check(x) for x in iterable)` instead of `for` loop
|
SIM111.py:144:5: SIM110 [*] Use `return any(check(x) for x in iterable)` instead of `for` loop
|
||||||
|
|
|
|
||||||
143 | # SIM110
|
143 | # SIM110
|
||||||
144 | for x in iterable:
|
144 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
145 | | if check(x):
|
145 | | if check(x):
|
||||||
146 | | return True
|
146 | | return True
|
||||||
147 | | return False
|
147 | | return False
|
||||||
|
|
@ -247,8 +236,7 @@ SIM111.py:144:5: SIM110 [*] Use `return any(check(x) for x in iterable)` instead
|
||||||
SIM111.py:154:5: SIM110 [*] Use `return all(not check(x) for x in iterable)` instead of `for` loop
|
SIM111.py:154:5: SIM110 [*] Use `return all(not check(x) for x in iterable)` instead of `for` loop
|
||||||
|
|
|
|
||||||
153 | # SIM111
|
153 | # SIM111
|
||||||
154 | for x in iterable:
|
154 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
155 | | if check(x):
|
155 | | if check(x):
|
||||||
156 | | return False
|
156 | | return False
|
||||||
157 | | return True
|
157 | | return True
|
||||||
|
|
@ -273,8 +261,7 @@ SIM111.py:162:5: SIM110 [*] Use `return all(x in y for x in iterable)` instead o
|
||||||
|
|
|
|
||||||
160 | def f():
|
160 | def f():
|
||||||
161 | # SIM111
|
161 | # SIM111
|
||||||
162 | for x in iterable:
|
162 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
163 | | if x not in y:
|
163 | | if x not in y:
|
||||||
164 | | return False
|
164 | | return False
|
||||||
165 | | return True
|
165 | | return True
|
||||||
|
|
@ -299,8 +286,7 @@ SIM111.py:170:5: SIM110 [*] Use `return all(x <= y for x in iterable)` instead o
|
||||||
|
|
|
|
||||||
168 | def f():
|
168 | def f():
|
||||||
169 | # SIM111
|
169 | # SIM111
|
||||||
170 | for x in iterable:
|
170 | / for x in iterable:
|
||||||
| _____^
|
|
||||||
171 | | if x > y:
|
171 | | if x > y:
|
||||||
172 | | return False
|
172 | | return False
|
||||||
173 | | return True
|
173 | | return True
|
||||||
|
|
@ -325,8 +311,7 @@ SIM111.py:178:5: SIM110 [*] Use `return all(not x.isdigit() for x in "012ß9💣
|
||||||
|
|
|
|
||||||
176 | def f():
|
176 | def f():
|
||||||
177 | # SIM111
|
177 | # SIM111
|
||||||
178 | for x in "012ß9💣2ℝ9012ß9💣2ℝ9012ß9💣2ℝ9012ß9💣2ℝ9012ß9":
|
178 | / for x in "012ß9💣2ℝ9012ß9💣2ℝ9012ß9💣2ℝ9012ß9💣2ℝ9012ß9":
|
||||||
| _____^
|
|
||||||
179 | | if x.isdigit():
|
179 | | if x.isdigit():
|
||||||
180 | | return False
|
180 | | return False
|
||||||
181 | | return True
|
181 | | return True
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
SIM114.py:2:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
SIM114.py:2:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
|
|
|
|
||||||
|
|
@ -10,7 +9,7 @@ SIM114.py:2:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
4 | | elif c:
|
4 | | elif c:
|
||||||
5 | | b
|
5 | | b
|
||||||
| |_____^ SIM114
|
| |_____^ SIM114
|
||||||
6 |
|
6 |
|
||||||
7 | if a: # we preserve comments, too!
|
7 | if a: # we preserve comments, too!
|
||||||
|
|
|
|
||||||
= help: Combine `if` branches
|
= help: Combine `if` branches
|
||||||
|
|
@ -28,13 +27,13 @@ SIM114.py:2:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
SIM114.py:7:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
SIM114.py:7:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
|
|
|
|
||||||
5 | b
|
5 | b
|
||||||
6 |
|
6 |
|
||||||
7 | / if a: # we preserve comments, too!
|
7 | / if a: # we preserve comments, too!
|
||||||
8 | | b
|
8 | | b
|
||||||
9 | | elif c: # but not on the second branch
|
9 | | elif c: # but not on the second branch
|
||||||
10 | | b
|
10 | | b
|
||||||
| |_____^ SIM114
|
| |_____^ SIM114
|
||||||
11 |
|
11 |
|
||||||
12 | if x == 1:
|
12 | if x == 1:
|
||||||
|
|
|
|
||||||
= help: Combine `if` branches
|
= help: Combine `if` branches
|
||||||
|
|
@ -54,7 +53,7 @@ SIM114.py:7:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
SIM114.py:12:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
SIM114.py:12:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
|
|
|
|
||||||
10 | b
|
10 | b
|
||||||
11 |
|
11 |
|
||||||
12 | / if x == 1:
|
12 | / if x == 1:
|
||||||
13 | | for _ in range(20):
|
13 | | for _ in range(20):
|
||||||
14 | | print("hello")
|
14 | | print("hello")
|
||||||
|
|
@ -62,7 +61,7 @@ SIM114.py:12:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
16 | | for _ in range(20):
|
16 | | for _ in range(20):
|
||||||
17 | | print("hello")
|
17 | | print("hello")
|
||||||
| |______________________^ SIM114
|
| |______________________^ SIM114
|
||||||
18 |
|
18 |
|
||||||
19 | if x == 1:
|
19 | if x == 1:
|
||||||
|
|
|
|
||||||
= help: Combine `if` branches
|
= help: Combine `if` branches
|
||||||
|
|
@ -83,7 +82,7 @@ SIM114.py:12:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
SIM114.py:19:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
SIM114.py:19:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
|
|
|
|
||||||
17 | print("hello")
|
17 | print("hello")
|
||||||
18 |
|
18 |
|
||||||
19 | / if x == 1:
|
19 | / if x == 1:
|
||||||
20 | | if True:
|
20 | | if True:
|
||||||
21 | | for _ in range(20):
|
21 | | for _ in range(20):
|
||||||
|
|
@ -93,7 +92,7 @@ SIM114.py:19:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
25 | | for _ in range(20):
|
25 | | for _ in range(20):
|
||||||
26 | | print("hello")
|
26 | | print("hello")
|
||||||
| |__________________________^ SIM114
|
| |__________________________^ SIM114
|
||||||
27 |
|
27 |
|
||||||
28 | if x == 1:
|
28 | if x == 1:
|
||||||
|
|
|
|
||||||
= help: Combine `if` branches
|
= help: Combine `if` branches
|
||||||
|
|
@ -115,7 +114,7 @@ SIM114.py:19:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
SIM114.py:28:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
SIM114.py:28:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
|
|
|
|
||||||
26 | print("hello")
|
26 | print("hello")
|
||||||
27 |
|
27 |
|
||||||
28 | / if x == 1:
|
28 | / if x == 1:
|
||||||
29 | | if True:
|
29 | | if True:
|
||||||
30 | | for _ in range(20):
|
30 | | for _ in range(20):
|
||||||
|
|
@ -131,7 +130,7 @@ SIM114.py:28:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
40 | | for _ in range(20):
|
40 | | for _ in range(20):
|
||||||
41 | | print("hello")
|
41 | | print("hello")
|
||||||
| |__________________________^ SIM114
|
| |__________________________^ SIM114
|
||||||
42 |
|
42 |
|
||||||
43 | if (
|
43 | if (
|
||||||
|
|
|
|
||||||
= help: Combine `if` branches
|
= help: Combine `if` branches
|
||||||
|
|
@ -156,8 +155,7 @@ SIM114.py:28:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
SIM114.py:29:5: SIM114 [*] Combine `if` branches using logical `or` operator
|
SIM114.py:29:5: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
|
|
|
|
||||||
28 | if x == 1:
|
28 | if x == 1:
|
||||||
29 | if True:
|
29 | / if True:
|
||||||
| _____^
|
|
||||||
30 | | for _ in range(20):
|
30 | | for _ in range(20):
|
||||||
31 | | print("hello")
|
31 | | print("hello")
|
||||||
32 | | elif False:
|
32 | | elif False:
|
||||||
|
|
@ -186,15 +184,14 @@ SIM114.py:36:5: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
|
|
|
|
||||||
34 | print("hello")
|
34 | print("hello")
|
||||||
35 | elif x == 2:
|
35 | elif x == 2:
|
||||||
36 | if True:
|
36 | / if True:
|
||||||
| _____^
|
|
||||||
37 | | for _ in range(20):
|
37 | | for _ in range(20):
|
||||||
38 | | print("hello")
|
38 | | print("hello")
|
||||||
39 | | elif False:
|
39 | | elif False:
|
||||||
40 | | for _ in range(20):
|
40 | | for _ in range(20):
|
||||||
41 | | print("hello")
|
41 | | print("hello")
|
||||||
| |__________________________^ SIM114
|
| |__________________________^ SIM114
|
||||||
42 |
|
42 |
|
||||||
43 | if (
|
43 | if (
|
||||||
|
|
|
|
||||||
= help: Combine `if` branches
|
= help: Combine `if` branches
|
||||||
|
|
@ -215,7 +212,7 @@ SIM114.py:36:5: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
SIM114.py:43:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
SIM114.py:43:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
|
|
|
|
||||||
41 | print("hello")
|
41 | print("hello")
|
||||||
42 |
|
42 |
|
||||||
43 | / if (
|
43 | / if (
|
||||||
44 | | x == 1
|
44 | | x == 1
|
||||||
45 | | and y == 2
|
45 | | and y == 2
|
||||||
|
|
@ -236,7 +233,7 @@ SIM114.py:43:1: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
60 | | elif 1 == 2:
|
60 | | elif 1 == 2:
|
||||||
61 | | pass
|
61 | | pass
|
||||||
| |________^ SIM114
|
| |________^ SIM114
|
||||||
62 |
|
62 |
|
||||||
63 | if result.eofs == "O":
|
63 | if result.eofs == "O":
|
||||||
|
|
|
|
||||||
= help: Combine `if` branches
|
= help: Combine `if` branches
|
||||||
|
|
@ -333,8 +330,7 @@ SIM114.py:118:5: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
|
|
|
|
||||||
116 | a = True
|
116 | a = True
|
||||||
117 | b = False
|
117 | b = False
|
||||||
118 | if a > b: # end-of-line
|
118 | / if a > b: # end-of-line
|
||||||
| _____^
|
|
||||||
119 | | return 3
|
119 | | return 3
|
||||||
120 | | elif a == b:
|
120 | | elif a == b:
|
||||||
121 | | return 3
|
121 | | return 3
|
||||||
|
|
@ -360,8 +356,7 @@ SIM114.py:122:5: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
|
|
|
|
||||||
120 | elif a == b:
|
120 | elif a == b:
|
||||||
121 | return 3
|
121 | return 3
|
||||||
122 | elif a < b: # end-of-line
|
122 | / elif a < b: # end-of-line
|
||||||
| _____^
|
|
||||||
123 | | return 4
|
123 | | return 4
|
||||||
124 | | elif b is None:
|
124 | | elif b is None:
|
||||||
125 | | return 4
|
125 | | return 4
|
||||||
|
|
@ -385,8 +380,7 @@ SIM114.py:132:5: SIM114 [*] Combine `if` branches using logical `or` operator
|
||||||
|
|
|
|
||||||
130 | a = True
|
130 | a = True
|
||||||
131 | b = False
|
131 | b = False
|
||||||
132 | if a > b: # end-of-line
|
132 | / if a > b: # end-of-line
|
||||||
| _____^
|
|
||||||
133 | | return 3
|
133 | | return 3
|
||||||
134 | | elif a := 1:
|
134 | | elif a := 1:
|
||||||
135 | | return 3
|
135 | | return 3
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
SIM117.py:2:1: SIM117 [*] Use a single `with` statement with multiple contexts instead of nested `with` statements
|
SIM117.py:2:1: SIM117 [*] Use a single `with` statement with multiple contexts instead of nested `with` statements
|
||||||
|
|
|
|
||||||
|
|
@ -113,8 +112,7 @@ SIM117.py:53:5: SIM117 [*] Use a single `with` statement with multiple contexts
|
||||||
|
|
|
|
||||||
51 | while True:
|
51 | while True:
|
||||||
52 | # SIM117
|
52 | # SIM117
|
||||||
53 | with A() as a:
|
53 | / with A() as a:
|
||||||
| _____^
|
|
||||||
54 | | with B() as b:
|
54 | | with B() as b:
|
||||||
| |______________________^ SIM117
|
| |______________________^ SIM117
|
||||||
55 | """this
|
55 | """this
|
||||||
|
|
@ -277,8 +275,7 @@ SIM117.py:106:5: SIM117 Use a single `with` statement with multiple contexts ins
|
||||||
|
|
|
|
||||||
104 | # From issue #3025.
|
104 | # From issue #3025.
|
||||||
105 | async def main():
|
105 | async def main():
|
||||||
106 | async with A() as a: # SIM117.
|
106 | / async with A() as a: # SIM117.
|
||||||
| _____^
|
|
||||||
107 | | async with B() as b:
|
107 | | async with B() as b:
|
||||||
| |____________________________^ SIM117
|
| |____________________________^ SIM117
|
||||||
108 | print("async-inside!")
|
108 | print("async-inside!")
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_simplify/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
SIM401.py:6:1: SIM401 [*] Use `var = a_dict.get(key, "default1")` instead of an `if` block
|
SIM401.py:6:1: SIM401 [*] Use `var = a_dict.get(key, "default1")` instead of an `if` block
|
||||||
|
|
|
|
||||||
|
|
@ -10,7 +9,7 @@ SIM401.py:6:1: SIM401 [*] Use `var = a_dict.get(key, "default1")` instead of an
|
||||||
8 | | else:
|
8 | | else:
|
||||||
9 | | var = "default1"
|
9 | | var = "default1"
|
||||||
| |____________________^ SIM401
|
| |____________________^ SIM401
|
||||||
10 |
|
10 |
|
||||||
11 | # SIM401 (pattern-2)
|
11 | # SIM401 (pattern-2)
|
||||||
|
|
|
|
||||||
= help: Replace with `var = a_dict.get(key, "default1")`
|
= help: Replace with `var = a_dict.get(key, "default1")`
|
||||||
|
|
@ -36,7 +35,7 @@ SIM401.py:12:1: SIM401 [*] Use `var = a_dict.get(key, "default2")` instead of an
|
||||||
14 | | else:
|
14 | | else:
|
||||||
15 | | var = a_dict[key]
|
15 | | var = a_dict[key]
|
||||||
| |_____________________^ SIM401
|
| |_____________________^ SIM401
|
||||||
16 |
|
16 |
|
||||||
17 | # OK (default contains effect)
|
17 | # OK (default contains effect)
|
||||||
|
|
|
|
||||||
= help: Replace with `var = a_dict.get(key, "default2")`
|
= help: Replace with `var = a_dict.get(key, "default2")`
|
||||||
|
|
@ -62,7 +61,7 @@ SIM401.py:24:1: SIM401 [*] Use `var = a_dict.get(keys[idx], "default")` instead
|
||||||
26 | | else:
|
26 | | else:
|
||||||
27 | | var = "default"
|
27 | | var = "default"
|
||||||
| |___________________^ SIM401
|
| |___________________^ SIM401
|
||||||
28 |
|
28 |
|
||||||
29 | # SIM401 (complex expression in dict)
|
29 | # SIM401 (complex expression in dict)
|
||||||
|
|
|
|
||||||
= help: Replace with `var = a_dict.get(keys[idx], "default")`
|
= help: Replace with `var = a_dict.get(keys[idx], "default")`
|
||||||
|
|
@ -88,7 +87,7 @@ SIM401.py:30:1: SIM401 [*] Use `var = dicts[idx].get(key, "default")` instead of
|
||||||
32 | | else:
|
32 | | else:
|
||||||
33 | | var = "default"
|
33 | | var = "default"
|
||||||
| |___________________^ SIM401
|
| |___________________^ SIM401
|
||||||
34 |
|
34 |
|
||||||
35 | # SIM401 (complex expression in var)
|
35 | # SIM401 (complex expression in var)
|
||||||
|
|
|
|
||||||
= help: Replace with `var = dicts[idx].get(key, "default")`
|
= help: Replace with `var = dicts[idx].get(key, "default")`
|
||||||
|
|
@ -114,7 +113,7 @@ SIM401.py:36:1: SIM401 [*] Use `vars[idx] = a_dict.get(key, "defaultß9💣2ℝ6
|
||||||
38 | | else:
|
38 | | else:
|
||||||
39 | | vars[idx] = "defaultß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789"
|
39 | | vars[idx] = "defaultß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789"
|
||||||
| |___________________________________________________________________________^ SIM401
|
| |___________________________________________________________________________^ SIM401
|
||||||
40 |
|
40 |
|
||||||
41 | # SIM401
|
41 | # SIM401
|
||||||
|
|
|
|
||||||
= help: Replace with `vars[idx] = a_dict.get(key, "defaultß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789")`
|
= help: Replace with `vars[idx] = a_dict.get(key, "defaultß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789")`
|
||||||
|
|
@ -136,13 +135,12 @@ SIM401.py:45:5: SIM401 [*] Use `vars[idx] = a_dict.get(key, "default")` instead
|
||||||
|
|
|
|
||||||
43 | pass
|
43 | pass
|
||||||
44 | else:
|
44 | else:
|
||||||
45 | if key in a_dict:
|
45 | / if key in a_dict:
|
||||||
| _____^
|
|
||||||
46 | | vars[idx] = a_dict[key]
|
46 | | vars[idx] = a_dict[key]
|
||||||
47 | | else:
|
47 | | else:
|
||||||
48 | | vars[idx] = "default"
|
48 | | vars[idx] = "default"
|
||||||
| |_____________________________^ SIM401
|
| |_____________________________^ SIM401
|
||||||
49 |
|
49 |
|
||||||
50 | ###
|
50 | ###
|
||||||
|
|
|
|
||||||
= help: Replace with `vars[idx] = a_dict.get(key, "default")`
|
= help: Replace with `vars[idx] = a_dict.get(key, "default")`
|
||||||
|
|
@ -165,7 +163,7 @@ SIM401.py:123:7: SIM401 [*] Use `a_dict.get(key, "default3")` instead of an `if`
|
||||||
122 | # SIM401
|
122 | # SIM401
|
||||||
123 | var = a_dict[key] if key in a_dict else "default3"
|
123 | var = a_dict[key] if key in a_dict else "default3"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SIM401
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SIM401
|
||||||
124 |
|
124 |
|
||||||
125 | # SIM401
|
125 | # SIM401
|
||||||
|
|
|
|
||||||
= help: Replace with `a_dict.get(key, "default3")`
|
= help: Replace with `a_dict.get(key, "default3")`
|
||||||
|
|
@ -185,7 +183,7 @@ SIM401.py:126:7: SIM401 [*] Use `a_dict.get(key, "default-1")` instead of an `if
|
||||||
125 | # SIM401
|
125 | # SIM401
|
||||||
126 | var = "default-1" if key not in a_dict else a_dict[key]
|
126 | var = "default-1" if key not in a_dict else a_dict[key]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SIM401
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SIM401
|
||||||
127 |
|
127 |
|
||||||
128 | # OK (default contains effect)
|
128 | # OK (default contains effect)
|
||||||
|
|
|
|
||||||
= help: Replace with `a_dict.get(key, "default-1")`
|
= help: Replace with `a_dict.get(key, "default-1")`
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ source: crates/ruff_linter/src/rules/flake8_type_checking/mod.rs
|
||||||
TC006.py:4:10: TC006 [*] Add quotes to type expression in `typing.cast()`
|
TC006.py:4:10: TC006 [*] Add quotes to type expression in `typing.cast()`
|
||||||
|
|
|
|
||||||
2 | from typing import cast
|
2 | from typing import cast
|
||||||
3 |
|
3 |
|
||||||
4 | cast(int, 3.0) # TC006
|
4 | cast(int, 3.0) # TC006
|
||||||
| ^^^ TC006
|
| ^^^ TC006
|
||||||
|
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ TC006.py:4:10: TC006 [*] Add quotes to type expression in `typing.cast()`
|
||||||
TC006.py:10:10: TC006 [*] Add quotes to type expression in `typing.cast()`
|
TC006.py:10:10: TC006 [*] Add quotes to type expression in `typing.cast()`
|
||||||
|
|
|
|
||||||
8 | from typing import cast
|
8 | from typing import cast
|
||||||
9 |
|
9 |
|
||||||
10 | cast(list[tuple[bool | float | int | str]], 3.0) # TC006
|
10 | cast(list[tuple[bool | float | int | str]], 3.0) # TC006
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TC006
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TC006
|
||||||
|
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ TC006.py:10:10: TC006 [*] Add quotes to type expression in `typing.cast()`
|
||||||
TC006.py:16:10: TC006 [*] Add quotes to type expression in `typing.cast()`
|
TC006.py:16:10: TC006 [*] Add quotes to type expression in `typing.cast()`
|
||||||
|
|
|
|
||||||
14 | from typing import Union, cast
|
14 | from typing import Union, cast
|
||||||
15 |
|
15 |
|
||||||
16 | cast(list[tuple[Union[bool, float, int, str]]], 3.0) # TC006
|
16 | cast(list[tuple[Union[bool, float, int, str]]], 3.0) # TC006
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TC006
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TC006
|
||||||
|
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ TC006.py:16:10: TC006 [*] Add quotes to type expression in `typing.cast()`
|
||||||
TC006.py:40:14: TC006 [*] Add quotes to type expression in `typing.cast()`
|
TC006.py:40:14: TC006 [*] Add quotes to type expression in `typing.cast()`
|
||||||
|
|
|
|
||||||
38 | from typing import cast as typecast
|
38 | from typing import cast as typecast
|
||||||
39 |
|
39 |
|
||||||
40 | typecast(int, 3.0) # TC006
|
40 | typecast(int, 3.0) # TC006
|
||||||
| ^^^ TC006
|
| ^^^ TC006
|
||||||
|
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ TC006.py:40:14: TC006 [*] Add quotes to type expression in `typing.cast()`
|
||||||
TC006.py:46:17: TC006 [*] Add quotes to type expression in `typing.cast()`
|
TC006.py:46:17: TC006 [*] Add quotes to type expression in `typing.cast()`
|
||||||
|
|
|
|
||||||
44 | import typing
|
44 | import typing
|
||||||
45 |
|
45 |
|
||||||
46 | typing.cast(int, 3.0) # TC006
|
46 | typing.cast(int, 3.0) # TC006
|
||||||
| ^^^ TC006
|
| ^^^ TC006
|
||||||
|
|
|
|
||||||
|
|
@ -99,7 +99,7 @@ TC006.py:46:17: TC006 [*] Add quotes to type expression in `typing.cast()`
|
||||||
TC006.py:52:12: TC006 [*] Add quotes to type expression in `typing.cast()`
|
TC006.py:52:12: TC006 [*] Add quotes to type expression in `typing.cast()`
|
||||||
|
|
|
|
||||||
50 | import typing as t
|
50 | import typing as t
|
||||||
51 |
|
51 |
|
||||||
52 | t.cast(t.Literal["3.0", '3'], 3.0) # TC006
|
52 | t.cast(t.Literal["3.0", '3'], 3.0) # TC006
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ TC006
|
| ^^^^^^^^^^^^^^^^^^^^^ TC006
|
||||||
|
|
|
|
||||||
|
|
@ -118,8 +118,7 @@ TC006.py:52:12: TC006 [*] Add quotes to type expression in `typing.cast()`
|
||||||
TC006.py:59:9: TC006 [*] Add quotes to type expression in `typing.cast()`
|
TC006.py:59:9: TC006 [*] Add quotes to type expression in `typing.cast()`
|
||||||
|
|
|
|
||||||
58 | cast(
|
58 | cast(
|
||||||
59 | int # TC006 (unsafe, because it will get rid of this comment)
|
59 | / int # TC006 (unsafe, because it will get rid of this comment)
|
||||||
| _________^
|
|
||||||
60 | | | None,
|
60 | | | None,
|
||||||
| |______________^ TC006
|
| |______________^ TC006
|
||||||
61 | 3.0
|
61 | 3.0
|
||||||
|
|
@ -160,7 +159,7 @@ TC006.py:68:17: TC006 [*] Add quotes to type expression in `typing.cast()`
|
||||||
TC006.py:75:10: TC006 [*] Add quotes to type expression in `typing.cast()`
|
TC006.py:75:10: TC006 [*] Add quotes to type expression in `typing.cast()`
|
||||||
|
|
|
|
||||||
73 | from typing import cast, Literal
|
73 | from typing import cast, Literal
|
||||||
74 |
|
74 |
|
||||||
75 | cast(Literal["A"], 'A')
|
75 | cast(Literal["A"], 'A')
|
||||||
| ^^^^^^^^^^^^ TC006
|
| ^^^^^^^^^^^^ TC006
|
||||||
|
|
|
|
||||||
|
|
@ -179,7 +178,7 @@ TC006.py:75:10: TC006 [*] Add quotes to type expression in `typing.cast()`
|
||||||
TC006.py:82:10: TC006 [*] Add quotes to type expression in `typing.cast()`
|
TC006.py:82:10: TC006 [*] Add quotes to type expression in `typing.cast()`
|
||||||
|
|
|
|
||||||
80 | from typing import cast, Annotated, Literal
|
80 | from typing import cast, Annotated, Literal
|
||||||
81 |
|
81 |
|
||||||
82 | cast(list[Annotated["list['Literal[\"A\"]']", "Foo"]], ['A'])
|
82 | cast(list[Annotated["list['Literal[\"A\"]']", "Foo"]], ['A'])
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TC006
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TC006
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_use_pathlib/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_use_pathlib/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
PTH201.py:6:10: PTH201 [*] Do not pass the current directory explicitly to `Path`
|
PTH201.py:6:10: PTH201 [*] Do not pass the current directory explicitly to `Path`
|
||||||
|
|
|
|
||||||
|
|
@ -69,7 +68,7 @@ PTH201.py:9:10: PTH201 [*] Do not pass the current directory explicitly to `Path
|
||||||
8 | _ = PurePath(".")
|
8 | _ = PurePath(".")
|
||||||
9 | _ = Path("")
|
9 | _ = Path("")
|
||||||
| ^^ PTH201
|
| ^^ PTH201
|
||||||
10 |
|
10 |
|
||||||
11 | Path('', )
|
11 | Path('', )
|
||||||
|
|
|
|
||||||
= help: Remove the current directory argument
|
= help: Remove the current directory argument
|
||||||
|
|
@ -87,10 +86,10 @@ PTH201.py:9:10: PTH201 [*] Do not pass the current directory explicitly to `Path
|
||||||
PTH201.py:11:6: PTH201 [*] Do not pass the current directory explicitly to `Path`
|
PTH201.py:11:6: PTH201 [*] Do not pass the current directory explicitly to `Path`
|
||||||
|
|
|
|
||||||
9 | _ = Path("")
|
9 | _ = Path("")
|
||||||
10 |
|
10 |
|
||||||
11 | Path('', )
|
11 | Path('', )
|
||||||
| ^^ PTH201
|
| ^^ PTH201
|
||||||
12 |
|
12 |
|
||||||
13 | Path(
|
13 | Path(
|
||||||
|
|
|
|
||||||
= help: Remove the current directory argument
|
= help: Remove the current directory argument
|
||||||
|
|
@ -171,8 +170,7 @@ PTH201.py:22:5: PTH201 [*] Do not pass the current directory explicitly to `Path
|
||||||
PTH201.py:26:5: PTH201 [*] Do not pass the current directory explicitly to `Path`
|
PTH201.py:26:5: PTH201 [*] Do not pass the current directory explicitly to `Path`
|
||||||
|
|
|
|
||||||
25 | Path(
|
25 | Path(
|
||||||
26 | '' # Comment in the middle of implicitly concatenated string
|
26 | / '' # Comment in the middle of implicitly concatenated string
|
||||||
| _____^
|
|
||||||
27 | | ".",
|
27 | | ".",
|
||||||
| |_______^ PTH201
|
| |_______^ PTH201
|
||||||
28 | )
|
28 | )
|
||||||
|
|
@ -281,8 +279,7 @@ PTH201.py:44:5: PTH201 [*] Do not pass the current directory explicitly to `Path
|
||||||
PTH201.py:48:5: PTH201 [*] Do not pass the current directory explicitly to `Path`
|
PTH201.py:48:5: PTH201 [*] Do not pass the current directory explicitly to `Path`
|
||||||
|
|
|
|
||||||
47 | ( Path(
|
47 | ( Path(
|
||||||
48 | '' # Comment in the middle of implicitly concatenated string
|
48 | / '' # Comment in the middle of implicitly concatenated string
|
||||||
| _____^
|
|
||||||
49 | | ".",
|
49 | | ".",
|
||||||
| |_______^ PTH201
|
| |_______^ PTH201
|
||||||
50 | ) )/ (("parenthesized path call")
|
50 | ) )/ (("parenthesized path call")
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,11 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/isort/mod.rs
|
source: crates/ruff_linter/src/rules/isort/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
bom_unsorted.py:1:1: I001 [*] Import block is un-sorted or un-formatted
|
bom_unsorted.py:1:1: I001 [*] Import block is un-sorted or un-formatted
|
||||||
|
|
|
|
||||||
1 | import foo
|
1 | / import foo
|
||||||
| _^
|
|
||||||
2 | | import bar
|
2 | | import bar
|
||||||
|
| |___________^ I001
|
||||||
|
|
|
|
||||||
= help: Organize imports
|
= help: Organize imports
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,12 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/isort/mod.rs
|
source: crates/ruff_linter/src/rules/isort/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
trailing_suffix.py:1:1: I001 Import block is un-sorted or un-formatted
|
trailing_suffix.py:1:1: I001 Import block is un-sorted or un-formatted
|
||||||
|
|
|
|
||||||
1 | / import sys
|
1 | / import sys
|
||||||
2 | | import os; x = 1
|
2 | | import os; x = 1
|
||||||
| |_________^ I001
|
| |_________^ I001
|
||||||
3 |
|
3 |
|
||||||
4 | if True:
|
4 | if True:
|
||||||
|
|
|
|
||||||
= help: Organize imports
|
= help: Organize imports
|
||||||
|
|
@ -15,8 +14,7 @@ trailing_suffix.py:1:1: I001 Import block is un-sorted or un-formatted
|
||||||
trailing_suffix.py:5:5: I001 Import block is un-sorted or un-formatted
|
trailing_suffix.py:5:5: I001 Import block is un-sorted or un-formatted
|
||||||
|
|
|
|
||||||
4 | if True:
|
4 | if True:
|
||||||
5 | import sys
|
5 | / import sys
|
||||||
| _____^
|
|
||||||
6 | | import os; x = 1
|
6 | | import os; x = 1
|
||||||
| |_____________^ I001
|
| |_____________^ I001
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,13 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/perflint/mod.rs
|
source: crates/ruff_linter/src/rules/perflint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
PERF203.py:5:5: PERF203 `try`-`except` within a loop incurs performance overhead
|
PERF203.py:5:5: PERF203 `try`-`except` within a loop incurs performance overhead
|
||||||
|
|
|
|
||||||
3 | try:
|
3 | try:
|
||||||
4 | print(f"{i}")
|
4 | print(f"{i}")
|
||||||
5 | except:
|
5 | / except:
|
||||||
| _____^
|
|
||||||
6 | | print("error")
|
6 | | print("error")
|
||||||
| |______________________^ PERF203
|
| |______________________^ PERF203
|
||||||
7 |
|
7 |
|
||||||
8 | # OK
|
8 | # OK
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -151,8 +151,7 @@ PERF401.py:210:13: PERF401 Use a list comprehension to create a transformed list
|
||||||
|
|
|
|
||||||
208 | ): # Comment 3
|
208 | ): # Comment 3
|
||||||
209 | if i % 2: # Comment 4
|
209 | if i % 2: # Comment 4
|
||||||
210 | result.append(
|
210 | / result.append(
|
||||||
| _____________^
|
|
||||||
211 | | (
|
211 | | (
|
||||||
212 | | i + 1,
|
212 | | i + 1,
|
||||||
213 | | # Comment 5
|
213 | | # Comment 5
|
||||||
|
|
@ -188,7 +187,7 @@ PERF401.py:239:9: PERF401 Use a list comprehension to create a transformed list
|
||||||
238 | for a in values:
|
238 | for a in values:
|
||||||
239 | result.append(a + 1) # PERF401
|
239 | result.append(a + 1) # PERF401
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ PERF401
|
| ^^^^^^^^^^^^^^^^^^^^ PERF401
|
||||||
240 |
|
240 |
|
||||||
241 | def f():
|
241 | def f():
|
||||||
|
|
|
|
||||||
= help: Replace for loop with list comprehension
|
= help: Replace for loop with list comprehension
|
||||||
|
|
|
||||||
|
|
@ -355,8 +355,7 @@ PERF401.py:210:13: PERF401 [*] Use a list comprehension to create a transformed
|
||||||
|
|
|
|
||||||
208 | ): # Comment 3
|
208 | ): # Comment 3
|
||||||
209 | if i % 2: # Comment 4
|
209 | if i % 2: # Comment 4
|
||||||
210 | result.append(
|
210 | / result.append(
|
||||||
| _____________^
|
|
||||||
211 | | (
|
211 | | (
|
||||||
212 | | i + 1,
|
212 | | i + 1,
|
||||||
213 | | # Comment 5
|
213 | | # Comment 5
|
||||||
|
|
@ -447,7 +446,7 @@ PERF401.py:239:9: PERF401 [*] Use a list comprehension to create a transformed l
|
||||||
238 | for a in values:
|
238 | for a in values:
|
||||||
239 | result.append(a + 1) # PERF401
|
239 | result.append(a + 1) # PERF401
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ PERF401
|
| ^^^^^^^^^^^^^^^^^^^^ PERF401
|
||||||
240 |
|
240 |
|
||||||
241 | def f():
|
241 | def f():
|
||||||
|
|
|
|
||||||
= help: Replace for loop with list comprehension
|
= help: Replace for loop with list comprehension
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pycodestyle/mod.rs
|
source: crates/ruff_linter/src/rules/pycodestyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
E731.py:3:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
E731.py:3:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
|
|
|
|
||||||
|
|
@ -187,7 +186,7 @@ E731.py:86:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
E731.py:94:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
E731.py:94:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
|
|
|
|
||||||
92 | from typing import Callable
|
92 | from typing import Callable
|
||||||
93 |
|
93 |
|
||||||
94 | f: Callable[[], None] = lambda: None
|
94 | f: Callable[[], None] = lambda: None
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E731
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E731
|
||||||
|
|
|
|
||||||
|
|
@ -207,7 +206,7 @@ E731.py:94:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
E731.py:102:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
E731.py:102:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
|
|
|
|
||||||
100 | from typing import Callable
|
100 | from typing import Callable
|
||||||
101 |
|
101 |
|
||||||
102 | f: Callable[..., None] = lambda a, b: None
|
102 | f: Callable[..., None] = lambda a, b: None
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E731
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E731
|
||||||
|
|
|
|
||||||
|
|
@ -227,7 +226,7 @@ E731.py:102:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
E731.py:110:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
E731.py:110:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
|
|
|
|
||||||
108 | from typing import Callable
|
108 | from typing import Callable
|
||||||
109 |
|
109 |
|
||||||
110 | f: Callable[[int], int] = lambda x: 2 * x
|
110 | f: Callable[[int], int] = lambda x: 2 * x
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E731
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E731
|
||||||
|
|
|
|
||||||
|
|
@ -247,7 +246,7 @@ E731.py:110:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
E731.py:119:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
E731.py:119:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
|
|
|
|
||||||
117 | from collections.abc import Callable
|
117 | from collections.abc import Callable
|
||||||
118 |
|
118 |
|
||||||
119 | f: Callable[[str, int], str] = lambda a, b: a * b
|
119 | f: Callable[[str, int], str] = lambda a, b: a * b
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E731
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E731
|
||||||
|
|
|
|
||||||
|
|
@ -267,7 +266,7 @@ E731.py:119:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
E731.py:127:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
E731.py:127:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
|
|
|
|
||||||
125 | from collections.abc import Callable
|
125 | from collections.abc import Callable
|
||||||
126 |
|
126 |
|
||||||
127 | f: Callable[[str, int], tuple[str, int]] = lambda a, b: (a, b)
|
127 | f: Callable[[str, int], tuple[str, int]] = lambda a, b: (a, b)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E731
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E731
|
||||||
|
|
|
|
||||||
|
|
@ -287,7 +286,7 @@ E731.py:127:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
E731.py:135:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
E731.py:135:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
|
|
|
|
||||||
133 | from collections.abc import Callable
|
133 | from collections.abc import Callable
|
||||||
134 |
|
134 |
|
||||||
135 | f: Callable[[str, int, list[str]], list[str]] = lambda a, b, /, c: [*c, a * b]
|
135 | f: Callable[[str, int, list[str]], list[str]] = lambda a, b, /, c: [*c, a * b]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E731
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E731
|
||||||
|
|
|
|
||||||
|
|
@ -347,9 +346,8 @@ E731.py:140:5: E731 Do not assign a `lambda` expression, use a `def`
|
||||||
E731.py:147:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
E731.py:147:5: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
|
|
|
|
||||||
145 | # E731
|
145 | # E731
|
||||||
146 |
|
146 |
|
||||||
147 | f = lambda: (
|
147 | / f = lambda: (
|
||||||
| _____^
|
|
||||||
148 | | i := 1,
|
148 | | i := 1,
|
||||||
149 | | )
|
149 | | )
|
||||||
| |_____^ E731
|
| |_____^ E731
|
||||||
|
|
@ -380,7 +378,7 @@ E731.py:163:1: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
165 | | b
|
165 | | b
|
||||||
166 | | """
|
166 | | """
|
||||||
| |___^ E731
|
| |___^ E731
|
||||||
167 |
|
167 |
|
||||||
168 | # * https://github.com/astral-sh/ruff/issues/10277
|
168 | # * https://github.com/astral-sh/ruff/issues/10277
|
||||||
|
|
|
|
||||||
= help: Rewrite `x` as a `def`
|
= help: Rewrite `x` as a `def`
|
||||||
|
|
@ -401,7 +399,7 @@ E731.py:169:1: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
168 | # * https://github.com/astral-sh/ruff/issues/10277
|
168 | # * https://github.com/astral-sh/ruff/issues/10277
|
||||||
169 | at_least_one_million = lambda _: _ >= 1_000_000
|
169 | at_least_one_million = lambda _: _ >= 1_000_000
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E731
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E731
|
||||||
170 |
|
170 |
|
||||||
171 | x = lambda: (
|
171 | x = lambda: (
|
||||||
|
|
|
|
||||||
= help: Rewrite `at_least_one_million` as a `def`
|
= help: Rewrite `at_least_one_million` as a `def`
|
||||||
|
|
@ -420,13 +418,13 @@ E731.py:169:1: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
E731.py:171:1: E731 [*] Do not assign a `lambda` expression, use a `def`
|
E731.py:171:1: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
|
|
|
|
||||||
169 | at_least_one_million = lambda _: _ >= 1_000_000
|
169 | at_least_one_million = lambda _: _ >= 1_000_000
|
||||||
170 |
|
170 |
|
||||||
171 | / x = lambda: (
|
171 | / x = lambda: (
|
||||||
172 | | # comment
|
172 | | # comment
|
||||||
173 | | 5 + 10
|
173 | | 5 + 10
|
||||||
174 | | )
|
174 | | )
|
||||||
| |_^ E731
|
| |_^ E731
|
||||||
175 |
|
175 |
|
||||||
176 | x = lambda: (
|
176 | x = lambda: (
|
||||||
|
|
|
|
||||||
= help: Rewrite `x` as a `def`
|
= help: Rewrite `x` as a `def`
|
||||||
|
|
@ -445,7 +443,7 @@ E731.py:171:1: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
E731.py:176:1: E731 [*] Do not assign a `lambda` expression, use a `def`
|
E731.py:176:1: E731 [*] Do not assign a `lambda` expression, use a `def`
|
||||||
|
|
|
|
||||||
174 | )
|
174 | )
|
||||||
175 |
|
175 |
|
||||||
176 | / x = lambda: (
|
176 | / x = lambda: (
|
||||||
177 | | # comment
|
177 | | # comment
|
||||||
178 | | y := 10
|
178 | | y := 10
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,19 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
DOC502_google.py:7:5: DOC502 Raised exception is not explicitly raised: `FasterThanLightError`
|
DOC502_google.py:7:5: DOC502 Raised exception is not explicitly raised: `FasterThanLightError`
|
||||||
|
|
|
|
||||||
5 | # DOC502
|
5 | # DOC502
|
||||||
6 | def calculate_speed(distance: float, time: float) -> float:
|
6 | def calculate_speed(distance: float, time: float) -> float:
|
||||||
7 | """Calculate speed as distance divided by time.
|
7 | / """Calculate speed as distance divided by time.
|
||||||
| _____^
|
8 | |
|
||||||
8 | |
|
|
||||||
9 | | Args:
|
9 | | Args:
|
||||||
10 | | distance: Distance traveled.
|
10 | | distance: Distance traveled.
|
||||||
11 | | time: Time spent traveling.
|
11 | | time: Time spent traveling.
|
||||||
12 | |
|
12 | |
|
||||||
13 | | Returns:
|
13 | | Returns:
|
||||||
14 | | Speed as distance divided by time.
|
14 | | Speed as distance divided by time.
|
||||||
15 | |
|
15 | |
|
||||||
16 | | Raises:
|
16 | | Raises:
|
||||||
17 | | FasterThanLightError: If speed is greater than the speed of light.
|
17 | | FasterThanLightError: If speed is greater than the speed of light.
|
||||||
18 | | """
|
18 | | """
|
||||||
|
|
@ -28,16 +26,15 @@ DOC502_google.py:24:5: DOC502 Raised exceptions are not explicitly raised: `Fast
|
||||||
|
|
|
|
||||||
22 | # DOC502
|
22 | # DOC502
|
||||||
23 | def calculate_speed(distance: float, time: float) -> float:
|
23 | def calculate_speed(distance: float, time: float) -> float:
|
||||||
24 | """Calculate speed as distance divided by time.
|
24 | / """Calculate speed as distance divided by time.
|
||||||
| _____^
|
25 | |
|
||||||
25 | |
|
|
||||||
26 | | Args:
|
26 | | Args:
|
||||||
27 | | distance: Distance traveled.
|
27 | | distance: Distance traveled.
|
||||||
28 | | time: Time spent traveling.
|
28 | | time: Time spent traveling.
|
||||||
29 | |
|
29 | |
|
||||||
30 | | Returns:
|
30 | | Returns:
|
||||||
31 | | Speed as distance divided by time.
|
31 | | Speed as distance divided by time.
|
||||||
32 | |
|
32 | |
|
||||||
33 | | Raises:
|
33 | | Raises:
|
||||||
34 | | FasterThanLightError: If speed is greater than the speed of light.
|
34 | | FasterThanLightError: If speed is greater than the speed of light.
|
||||||
35 | | DivisionByZero: Divide by zero.
|
35 | | DivisionByZero: Divide by zero.
|
||||||
|
|
@ -51,16 +48,15 @@ DOC502_google.py:42:5: DOC502 Raised exception is not explicitly raised: `Divisi
|
||||||
|
|
|
|
||||||
40 | # DOC502
|
40 | # DOC502
|
||||||
41 | def calculate_speed(distance: float, time: float) -> float:
|
41 | def calculate_speed(distance: float, time: float) -> float:
|
||||||
42 | """Calculate speed as distance divided by time.
|
42 | / """Calculate speed as distance divided by time.
|
||||||
| _____^
|
43 | |
|
||||||
43 | |
|
|
||||||
44 | | Args:
|
44 | | Args:
|
||||||
45 | | distance: Distance traveled.
|
45 | | distance: Distance traveled.
|
||||||
46 | | time: Time spent traveling.
|
46 | | time: Time spent traveling.
|
||||||
47 | |
|
47 | |
|
||||||
48 | | Returns:
|
48 | | Returns:
|
||||||
49 | | Speed as distance divided by time.
|
49 | | Speed as distance divided by time.
|
||||||
50 | |
|
50 | |
|
||||||
51 | | Raises:
|
51 | | Raises:
|
||||||
52 | | FasterThanLightError: If speed is greater than the speed of light.
|
52 | | FasterThanLightError: If speed is greater than the speed of light.
|
||||||
53 | | DivisionByZero: Divide by zero.
|
53 | | DivisionByZero: Divide by zero.
|
||||||
|
|
|
||||||
|
|
@ -1,27 +1,25 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
DOC502_numpy.py:7:5: DOC502 Raised exception is not explicitly raised: `FasterThanLightError`
|
DOC502_numpy.py:7:5: DOC502 Raised exception is not explicitly raised: `FasterThanLightError`
|
||||||
|
|
|
|
||||||
5 | # DOC502
|
5 | # DOC502
|
||||||
6 | def calculate_speed(distance: float, time: float) -> float:
|
6 | def calculate_speed(distance: float, time: float) -> float:
|
||||||
7 | """
|
7 | / """
|
||||||
| _____^
|
|
||||||
8 | | Calculate speed as distance divided by time.
|
8 | | Calculate speed as distance divided by time.
|
||||||
9 | |
|
9 | |
|
||||||
10 | | Parameters
|
10 | | Parameters
|
||||||
11 | | ----------
|
11 | | ----------
|
||||||
12 | | distance : float
|
12 | | distance : float
|
||||||
13 | | Distance traveled.
|
13 | | Distance traveled.
|
||||||
14 | | time : float
|
14 | | time : float
|
||||||
15 | | Time spent traveling.
|
15 | | Time spent traveling.
|
||||||
16 | |
|
16 | |
|
||||||
17 | | Returns
|
17 | | Returns
|
||||||
18 | | -------
|
18 | | -------
|
||||||
19 | | float
|
19 | | float
|
||||||
20 | | Speed as distance divided by time.
|
20 | | Speed as distance divided by time.
|
||||||
21 | |
|
21 | |
|
||||||
22 | | Raises
|
22 | | Raises
|
||||||
23 | | ------
|
23 | | ------
|
||||||
24 | | FasterThanLightError
|
24 | | FasterThanLightError
|
||||||
|
|
@ -36,22 +34,21 @@ DOC502_numpy.py:32:5: DOC502 Raised exceptions are not explicitly raised: `Faste
|
||||||
|
|
|
|
||||||
30 | # DOC502
|
30 | # DOC502
|
||||||
31 | def calculate_speed(distance: float, time: float) -> float:
|
31 | def calculate_speed(distance: float, time: float) -> float:
|
||||||
32 | """
|
32 | / """
|
||||||
| _____^
|
|
||||||
33 | | Calculate speed as distance divided by time.
|
33 | | Calculate speed as distance divided by time.
|
||||||
34 | |
|
34 | |
|
||||||
35 | | Parameters
|
35 | | Parameters
|
||||||
36 | | ----------
|
36 | | ----------
|
||||||
37 | | distance : float
|
37 | | distance : float
|
||||||
38 | | Distance traveled.
|
38 | | Distance traveled.
|
||||||
39 | | time : float
|
39 | | time : float
|
||||||
40 | | Time spent traveling.
|
40 | | Time spent traveling.
|
||||||
41 | |
|
41 | |
|
||||||
42 | | Returns
|
42 | | Returns
|
||||||
43 | | -------
|
43 | | -------
|
||||||
44 | | float
|
44 | | float
|
||||||
45 | | Speed as distance divided by time.
|
45 | | Speed as distance divided by time.
|
||||||
46 | |
|
46 | |
|
||||||
47 | | Raises
|
47 | | Raises
|
||||||
48 | | ------
|
48 | | ------
|
||||||
49 | | FasterThanLightError
|
49 | | FasterThanLightError
|
||||||
|
|
@ -68,22 +65,21 @@ DOC502_numpy.py:59:5: DOC502 Raised exception is not explicitly raised: `Divisio
|
||||||
|
|
|
|
||||||
57 | # DOC502
|
57 | # DOC502
|
||||||
58 | def calculate_speed(distance: float, time: float) -> float:
|
58 | def calculate_speed(distance: float, time: float) -> float:
|
||||||
59 | """
|
59 | / """
|
||||||
| _____^
|
|
||||||
60 | | Calculate speed as distance divided by time.
|
60 | | Calculate speed as distance divided by time.
|
||||||
61 | |
|
61 | |
|
||||||
62 | | Parameters
|
62 | | Parameters
|
||||||
63 | | ----------
|
63 | | ----------
|
||||||
64 | | distance : float
|
64 | | distance : float
|
||||||
65 | | Distance traveled.
|
65 | | Distance traveled.
|
||||||
66 | | time : float
|
66 | | time : float
|
||||||
67 | | Time spent traveling.
|
67 | | Time spent traveling.
|
||||||
68 | |
|
68 | |
|
||||||
69 | | Returns
|
69 | | Returns
|
||||||
70 | | -------
|
70 | | -------
|
||||||
71 | | float
|
71 | | float
|
||||||
72 | | Speed as distance divided by time.
|
72 | | Speed as distance divided by time.
|
||||||
73 | |
|
73 | |
|
||||||
74 | | Raises
|
74 | | Raises
|
||||||
75 | | ------
|
75 | | ------
|
||||||
76 | | FasterThanLightError
|
76 | | FasterThanLightError
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,16 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
DOC202_google.py:14:5: DOC202 Docstring should not have a returns section because the function doesn't return anything
|
DOC202_google.py:14:5: DOC202 Docstring should not have a returns section because the function doesn't return anything
|
||||||
|
|
|
|
||||||
12 | # DOC202
|
12 | # DOC202
|
||||||
13 | def foo(num: int) -> str:
|
13 | def foo(num: int) -> str:
|
||||||
14 | """
|
14 | / """
|
||||||
| _____^
|
|
||||||
15 | | Do something
|
15 | | Do something
|
||||||
16 | |
|
16 | |
|
||||||
17 | | Args:
|
17 | | Args:
|
||||||
18 | | num (int): A number
|
18 | | num (int): A number
|
||||||
19 | |
|
19 | |
|
||||||
20 | | Returns:
|
20 | | Returns:
|
||||||
21 | | str: A string
|
21 | | str: A string
|
||||||
22 | | """
|
22 | | """
|
||||||
|
|
@ -25,13 +23,12 @@ DOC202_google.py:30:9: DOC202 Docstring should not have a returns section becaus
|
||||||
|
|
|
|
||||||
28 | # DOC202
|
28 | # DOC202
|
||||||
29 | def foo(self) -> str:
|
29 | def foo(self) -> str:
|
||||||
30 | """
|
30 | / """
|
||||||
| _________^
|
|
||||||
31 | | Do something
|
31 | | Do something
|
||||||
32 | |
|
32 | |
|
||||||
33 | | Args:
|
33 | | Args:
|
||||||
34 | | num (int): A number
|
34 | | num (int): A number
|
||||||
35 | |
|
35 | |
|
||||||
36 | | Returns:
|
36 | | Returns:
|
||||||
37 | | str: A string
|
37 | | str: A string
|
||||||
38 | | """
|
38 | | """
|
||||||
|
|
@ -44,9 +41,8 @@ DOC202_google.py:80:5: DOC202 Docstring should not have a returns section becaus
|
||||||
|
|
|
|
||||||
78 | # DOC202 -- never explicitly returns anything, just short-circuits
|
78 | # DOC202 -- never explicitly returns anything, just short-circuits
|
||||||
79 | def foo(s: str, condition: bool):
|
79 | def foo(s: str, condition: bool):
|
||||||
80 | """Fooey things.
|
80 | / """Fooey things.
|
||||||
| _____^
|
81 | |
|
||||||
81 | |
|
|
||||||
82 | | Returns:
|
82 | | Returns:
|
||||||
83 | | None
|
83 | | None
|
||||||
84 | | """
|
84 | | """
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,18 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
DOC202_numpy.py:16:5: DOC202 Docstring should not have a returns section because the function doesn't return anything
|
DOC202_numpy.py:16:5: DOC202 Docstring should not have a returns section because the function doesn't return anything
|
||||||
|
|
|
|
||||||
14 | # DOC202
|
14 | # DOC202
|
||||||
15 | def foo(num: int) -> str:
|
15 | def foo(num: int) -> str:
|
||||||
16 | """
|
16 | / """
|
||||||
| _____^
|
|
||||||
17 | | Do something
|
17 | | Do something
|
||||||
18 | |
|
18 | |
|
||||||
19 | | Parameters
|
19 | | Parameters
|
||||||
20 | | ----------
|
20 | | ----------
|
||||||
21 | | num : int
|
21 | | num : int
|
||||||
22 | | A number
|
22 | | A number
|
||||||
23 | |
|
23 | |
|
||||||
24 | | Returns
|
24 | | Returns
|
||||||
25 | | -------
|
25 | | -------
|
||||||
26 | | str
|
26 | | str
|
||||||
|
|
@ -29,15 +27,14 @@ DOC202_numpy.py:36:9: DOC202 Docstring should not have a returns section because
|
||||||
|
|
|
|
||||||
34 | # DOC202
|
34 | # DOC202
|
||||||
35 | def foo(self) -> str:
|
35 | def foo(self) -> str:
|
||||||
36 | """
|
36 | / """
|
||||||
| _________^
|
|
||||||
37 | | Do something
|
37 | | Do something
|
||||||
38 | |
|
38 | |
|
||||||
39 | | Parameters
|
39 | | Parameters
|
||||||
40 | | ----------
|
40 | | ----------
|
||||||
41 | | num : int
|
41 | | num : int
|
||||||
42 | | A number
|
42 | | A number
|
||||||
43 | |
|
43 | |
|
||||||
44 | | Returns
|
44 | | Returns
|
||||||
45 | | -------
|
45 | | -------
|
||||||
46 | | str
|
46 | | str
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,16 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
DOC403_google.py:14:5: DOC403 Docstring has a "Yields" section but the function doesn't yield anything
|
DOC403_google.py:14:5: DOC403 Docstring has a "Yields" section but the function doesn't yield anything
|
||||||
|
|
|
|
||||||
12 | # DOC403
|
12 | # DOC403
|
||||||
13 | def foo(num: int) -> str:
|
13 | def foo(num: int) -> str:
|
||||||
14 | """
|
14 | / """
|
||||||
| _____^
|
|
||||||
15 | | Do something
|
15 | | Do something
|
||||||
16 | |
|
16 | |
|
||||||
17 | | Args:
|
17 | | Args:
|
||||||
18 | | num (int): A number
|
18 | | num (int): A number
|
||||||
19 | |
|
19 | |
|
||||||
20 | | Yields:
|
20 | | Yields:
|
||||||
21 | | str: A string
|
21 | | str: A string
|
||||||
22 | | """
|
22 | | """
|
||||||
|
|
@ -25,13 +23,12 @@ DOC403_google.py:30:9: DOC403 Docstring has a "Yields" section but the function
|
||||||
|
|
|
|
||||||
28 | # DOC403
|
28 | # DOC403
|
||||||
29 | def foo(self) -> str:
|
29 | def foo(self) -> str:
|
||||||
30 | """
|
30 | / """
|
||||||
| _________^
|
|
||||||
31 | | Do something
|
31 | | Do something
|
||||||
32 | |
|
32 | |
|
||||||
33 | | Args:
|
33 | | Args:
|
||||||
34 | | num (int): A number
|
34 | | num (int): A number
|
||||||
35 | |
|
35 | |
|
||||||
36 | | Yields:
|
36 | | Yields:
|
||||||
37 | | str: A string
|
37 | | str: A string
|
||||||
38 | | """
|
38 | | """
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,18 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
DOC403_numpy.py:16:5: DOC403 Docstring has a "Yields" section but the function doesn't yield anything
|
DOC403_numpy.py:16:5: DOC403 Docstring has a "Yields" section but the function doesn't yield anything
|
||||||
|
|
|
|
||||||
14 | # DOC403
|
14 | # DOC403
|
||||||
15 | def foo(num: int) -> str:
|
15 | def foo(num: int) -> str:
|
||||||
16 | """
|
16 | / """
|
||||||
| _____^
|
|
||||||
17 | | Do something
|
17 | | Do something
|
||||||
18 | |
|
18 | |
|
||||||
19 | | Parameters
|
19 | | Parameters
|
||||||
20 | | ----------
|
20 | | ----------
|
||||||
21 | | num : int
|
21 | | num : int
|
||||||
22 | | A number
|
22 | | A number
|
||||||
23 | |
|
23 | |
|
||||||
24 | | Yields
|
24 | | Yields
|
||||||
25 | | -------
|
25 | | -------
|
||||||
26 | | str
|
26 | | str
|
||||||
|
|
@ -29,15 +27,14 @@ DOC403_numpy.py:36:9: DOC403 Docstring has a "Yields" section but the function d
|
||||||
|
|
|
|
||||||
34 | # DOC403
|
34 | # DOC403
|
||||||
35 | def foo(self) -> str:
|
35 | def foo(self) -> str:
|
||||||
36 | """
|
36 | / """
|
||||||
| _________^
|
|
||||||
37 | | Do something
|
37 | | Do something
|
||||||
38 | |
|
38 | |
|
||||||
39 | | Parameters
|
39 | | Parameters
|
||||||
40 | | ----------
|
40 | | ----------
|
||||||
41 | | num : int
|
41 | | num : int
|
||||||
42 | | A number
|
42 | | A number
|
||||||
43 | |
|
43 | |
|
||||||
44 | | Yields
|
44 | | Yields
|
||||||
45 | | -------
|
45 | | -------
|
||||||
46 | | str
|
46 | | str
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,16 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
DOC501_google.py:34:5: DOC501 Raised exception `FasterThanLightError` missing from docstring
|
DOC501_google.py:34:5: DOC501 Raised exception `FasterThanLightError` missing from docstring
|
||||||
|
|
|
|
||||||
32 | # DOC501
|
32 | # DOC501
|
||||||
33 | def calculate_speed(distance: float, time: float) -> float:
|
33 | def calculate_speed(distance: float, time: float) -> float:
|
||||||
34 | """Calculate speed as distance divided by time.
|
34 | / """Calculate speed as distance divided by time.
|
||||||
| _____^
|
35 | |
|
||||||
35 | |
|
|
||||||
36 | | Args:
|
36 | | Args:
|
||||||
37 | | distance: Distance traveled.
|
37 | | distance: Distance traveled.
|
||||||
38 | | time: Time spent traveling.
|
38 | | time: Time spent traveling.
|
||||||
39 | |
|
39 | |
|
||||||
40 | | Returns:
|
40 | | Returns:
|
||||||
41 | | Speed as distance divided by time.
|
41 | | Speed as distance divided by time.
|
||||||
42 | | """
|
42 | | """
|
||||||
|
|
@ -26,13 +24,12 @@ DOC501_google.py:51:5: DOC501 Raised exception `ValueError` missing from docstri
|
||||||
|
|
|
|
||||||
49 | # DOC501
|
49 | # DOC501
|
||||||
50 | def calculate_speed(distance: float, time: float) -> float:
|
50 | def calculate_speed(distance: float, time: float) -> float:
|
||||||
51 | """Calculate speed as distance divided by time.
|
51 | / """Calculate speed as distance divided by time.
|
||||||
| _____^
|
52 | |
|
||||||
52 | |
|
|
||||||
53 | | Args:
|
53 | | Args:
|
||||||
54 | | distance: Distance traveled.
|
54 | | distance: Distance traveled.
|
||||||
55 | | time: Time spent traveling.
|
55 | | time: Time spent traveling.
|
||||||
56 | |
|
56 | |
|
||||||
57 | | Returns:
|
57 | | Returns:
|
||||||
58 | | Speed as distance divided by time.
|
58 | | Speed as distance divided by time.
|
||||||
59 | | """
|
59 | | """
|
||||||
|
|
@ -46,13 +43,12 @@ DOC501_google.py:51:5: DOC501 Raised exception `FasterThanLightError` missing fr
|
||||||
|
|
|
|
||||||
49 | # DOC501
|
49 | # DOC501
|
||||||
50 | def calculate_speed(distance: float, time: float) -> float:
|
50 | def calculate_speed(distance: float, time: float) -> float:
|
||||||
51 | """Calculate speed as distance divided by time.
|
51 | / """Calculate speed as distance divided by time.
|
||||||
| _____^
|
52 | |
|
||||||
52 | |
|
|
||||||
53 | | Args:
|
53 | | Args:
|
||||||
54 | | distance: Distance traveled.
|
54 | | distance: Distance traveled.
|
||||||
55 | | time: Time spent traveling.
|
55 | | time: Time spent traveling.
|
||||||
56 | |
|
56 | |
|
||||||
57 | | Returns:
|
57 | | Returns:
|
||||||
58 | | Speed as distance divided by time.
|
58 | | Speed as distance divided by time.
|
||||||
59 | | """
|
59 | | """
|
||||||
|
|
@ -66,13 +62,12 @@ DOC501_google.py:106:5: DOC501 Raised exception `AnotherError` missing from docs
|
||||||
|
|
|
|
||||||
104 | # DOC501
|
104 | # DOC501
|
||||||
105 | def calculate_speed(distance: float, time: float) -> float:
|
105 | def calculate_speed(distance: float, time: float) -> float:
|
||||||
106 | """Calculate speed as distance divided by time.
|
106 | / """Calculate speed as distance divided by time.
|
||||||
| _____^
|
107 | |
|
||||||
107 | |
|
|
||||||
108 | | Args:
|
108 | | Args:
|
||||||
109 | | distance: Distance traveled.
|
109 | | distance: Distance traveled.
|
||||||
110 | | time: Time spent traveling.
|
110 | | time: Time spent traveling.
|
||||||
111 | |
|
111 | |
|
||||||
112 | | Returns:
|
112 | | Returns:
|
||||||
113 | | Speed as distance divided by time.
|
113 | | Speed as distance divided by time.
|
||||||
114 | | """
|
114 | | """
|
||||||
|
|
@ -85,13 +80,12 @@ DOC501_google.py:120:5: DOC501 Raised exception `AnotherError` missing from docs
|
||||||
|
|
|
|
||||||
118 | # DOC501
|
118 | # DOC501
|
||||||
119 | def calculate_speed(distance: float, time: float) -> float:
|
119 | def calculate_speed(distance: float, time: float) -> float:
|
||||||
120 | """Calculate speed as distance divided by time.
|
120 | / """Calculate speed as distance divided by time.
|
||||||
| _____^
|
121 | |
|
||||||
121 | |
|
|
||||||
122 | | Args:
|
122 | | Args:
|
||||||
123 | | distance: Distance traveled.
|
123 | | distance: Distance traveled.
|
||||||
124 | | time: Time spent traveling.
|
124 | | time: Time spent traveling.
|
||||||
125 | |
|
125 | |
|
||||||
126 | | Returns:
|
126 | | Returns:
|
||||||
127 | | Speed as distance divided by time.
|
127 | | Speed as distance divided by time.
|
||||||
128 | | """
|
128 | | """
|
||||||
|
|
@ -104,9 +98,8 @@ DOC501_google.py:134:5: DOC501 Raised exception `SomeError` missing from docstri
|
||||||
|
|
|
|
||||||
132 | # DOC501
|
132 | # DOC501
|
||||||
133 | def foo(bar: int):
|
133 | def foo(bar: int):
|
||||||
134 | """Foo.
|
134 | / """Foo.
|
||||||
| _____^
|
135 | |
|
||||||
135 | |
|
|
||||||
136 | | Args:
|
136 | | Args:
|
||||||
137 | | bar: Bar.
|
137 | | bar: Bar.
|
||||||
138 | | """
|
138 | | """
|
||||||
|
|
@ -119,16 +112,15 @@ DOC501_google.py:197:5: DOC501 Raised exception `ZeroDivisionError` missing from
|
||||||
|
|
|
|
||||||
195 | # DOC501
|
195 | # DOC501
|
||||||
196 | def calculate_speed(distance: float, time: float) -> float:
|
196 | def calculate_speed(distance: float, time: float) -> float:
|
||||||
197 | """Calculate speed as distance divided by time.
|
197 | / """Calculate speed as distance divided by time.
|
||||||
| _____^
|
198 | |
|
||||||
198 | |
|
|
||||||
199 | | Args:
|
199 | | Args:
|
||||||
200 | | distance: Distance traveled.
|
200 | | distance: Distance traveled.
|
||||||
201 | | time: Time spent traveling.
|
201 | | time: Time spent traveling.
|
||||||
202 | |
|
202 | |
|
||||||
203 | | Returns:
|
203 | | Returns:
|
||||||
204 | | Speed as distance divided by time.
|
204 | | Speed as distance divided by time.
|
||||||
205 | |
|
205 | |
|
||||||
206 | | Raises:
|
206 | | Raises:
|
||||||
207 | | TypeError: if you didn't pass a number for both parameters
|
207 | | TypeError: if you didn't pass a number for both parameters
|
||||||
208 | | """
|
208 | | """
|
||||||
|
|
@ -141,9 +133,8 @@ DOC501_google.py:197:5: DOC501 Raised exception `ZeroDivisionError` missing from
|
||||||
DOC501_google.py:238:5: DOC501 Raised exception `TypeError` missing from docstring
|
DOC501_google.py:238:5: DOC501 Raised exception `TypeError` missing from docstring
|
||||||
|
|
|
|
||||||
237 | def foo():
|
237 | def foo():
|
||||||
238 | """Foo.
|
238 | / """Foo.
|
||||||
| _____^
|
239 | |
|
||||||
239 | |
|
|
||||||
240 | | Returns:
|
240 | | Returns:
|
||||||
241 | | 42: int.
|
241 | | 42: int.
|
||||||
242 | | """
|
242 | | """
|
||||||
|
|
@ -156,9 +147,8 @@ DOC501_google.py:238:5: DOC501 Raised exception `TypeError` missing from docstri
|
||||||
DOC501_google.py:238:5: DOC501 Raised exception `ValueError` missing from docstring
|
DOC501_google.py:238:5: DOC501 Raised exception `ValueError` missing from docstring
|
||||||
|
|
|
|
||||||
237 | def foo():
|
237 | def foo():
|
||||||
238 | """Foo.
|
238 | / """Foo.
|
||||||
| _____^
|
239 | |
|
||||||
239 | |
|
|
||||||
240 | | Returns:
|
240 | | Returns:
|
||||||
241 | | 42: int.
|
241 | | 42: int.
|
||||||
242 | | """
|
242 | | """
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,20 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
DOC501_numpy.py:35:5: DOC501 Raised exception `FasterThanLightError` missing from docstring
|
DOC501_numpy.py:35:5: DOC501 Raised exception `FasterThanLightError` missing from docstring
|
||||||
|
|
|
|
||||||
33 | # DOC501
|
33 | # DOC501
|
||||||
34 | def calculate_speed(distance: float, time: float) -> float:
|
34 | def calculate_speed(distance: float, time: float) -> float:
|
||||||
35 | """
|
35 | / """
|
||||||
| _____^
|
|
||||||
36 | | Calculate speed as distance divided by time.
|
36 | | Calculate speed as distance divided by time.
|
||||||
37 | |
|
37 | |
|
||||||
38 | | Parameters
|
38 | | Parameters
|
||||||
39 | | ----------
|
39 | | ----------
|
||||||
40 | | distance : float
|
40 | | distance : float
|
||||||
41 | | Distance traveled.
|
41 | | Distance traveled.
|
||||||
42 | | time : float
|
42 | | time : float
|
||||||
43 | | Time spent traveling.
|
43 | | Time spent traveling.
|
||||||
44 | |
|
44 | |
|
||||||
45 | | Returns
|
45 | | Returns
|
||||||
46 | | -------
|
46 | | -------
|
||||||
47 | | float
|
47 | | float
|
||||||
|
|
@ -32,17 +30,16 @@ DOC501_numpy.py:58:5: DOC501 Raised exception `ValueError` missing from docstrin
|
||||||
|
|
|
|
||||||
56 | # DOC501
|
56 | # DOC501
|
||||||
57 | def calculate_speed(distance: float, time: float) -> float:
|
57 | def calculate_speed(distance: float, time: float) -> float:
|
||||||
58 | """
|
58 | / """
|
||||||
| _____^
|
|
||||||
59 | | Calculate speed as distance divided by time.
|
59 | | Calculate speed as distance divided by time.
|
||||||
60 | |
|
60 | |
|
||||||
61 | | Parameters
|
61 | | Parameters
|
||||||
62 | | ----------
|
62 | | ----------
|
||||||
63 | | distance : float
|
63 | | distance : float
|
||||||
64 | | Distance traveled.
|
64 | | Distance traveled.
|
||||||
65 | | time : float
|
65 | | time : float
|
||||||
66 | | Time spent traveling.
|
66 | | Time spent traveling.
|
||||||
67 | |
|
67 | |
|
||||||
68 | | Returns
|
68 | | Returns
|
||||||
69 | | -------
|
69 | | -------
|
||||||
70 | | float
|
70 | | float
|
||||||
|
|
@ -58,17 +55,16 @@ DOC501_numpy.py:58:5: DOC501 Raised exception `FasterThanLightError` missing fro
|
||||||
|
|
|
|
||||||
56 | # DOC501
|
56 | # DOC501
|
||||||
57 | def calculate_speed(distance: float, time: float) -> float:
|
57 | def calculate_speed(distance: float, time: float) -> float:
|
||||||
58 | """
|
58 | / """
|
||||||
| _____^
|
|
||||||
59 | | Calculate speed as distance divided by time.
|
59 | | Calculate speed as distance divided by time.
|
||||||
60 | |
|
60 | |
|
||||||
61 | | Parameters
|
61 | | Parameters
|
||||||
62 | | ----------
|
62 | | ----------
|
||||||
63 | | distance : float
|
63 | | distance : float
|
||||||
64 | | Distance traveled.
|
64 | | Distance traveled.
|
||||||
65 | | time : float
|
65 | | time : float
|
||||||
66 | | Time spent traveling.
|
66 | | Time spent traveling.
|
||||||
67 | |
|
67 | |
|
||||||
68 | | Returns
|
68 | | Returns
|
||||||
69 | | -------
|
69 | | -------
|
||||||
70 | | float
|
70 | | float
|
||||||
|
|
@ -84,23 +80,22 @@ DOC501_numpy.py:83:5: DOC501 Raised exception `TypeError` missing from docstring
|
||||||
|
|
|
|
||||||
81 | # DOC501
|
81 | # DOC501
|
||||||
82 | def calculate_speed(distance: float, time: float) -> float:
|
82 | def calculate_speed(distance: float, time: float) -> float:
|
||||||
83 | """Calculate speed as distance divided by time.
|
83 | / """Calculate speed as distance divided by time.
|
||||||
| _____^
|
84 | |
|
||||||
84 | |
|
|
||||||
85 | | ACalculate speed as distance divided by time.
|
85 | | ACalculate speed as distance divided by time.
|
||||||
86 | |
|
86 | |
|
||||||
87 | | Parameters
|
87 | | Parameters
|
||||||
88 | | ----------
|
88 | | ----------
|
||||||
89 | | distance : float
|
89 | | distance : float
|
||||||
90 | | Distance traveled.
|
90 | | Distance traveled.
|
||||||
91 | | time : float
|
91 | | time : float
|
||||||
92 | | Time spent traveling.
|
92 | | Time spent traveling.
|
||||||
93 | |
|
93 | |
|
||||||
94 | | Returns
|
94 | | Returns
|
||||||
95 | | -------
|
95 | | -------
|
||||||
96 | | float
|
96 | | float
|
||||||
97 | | Speed as distance divided by time.
|
97 | | Speed as distance divided by time.
|
||||||
98 | |
|
98 | |
|
||||||
99 | | Raises
|
99 | | Raises
|
||||||
100 | | ------
|
100 | | ------
|
||||||
101 | | ZeroDivisionError
|
101 | | ZeroDivisionError
|
||||||
|
|
@ -115,9 +110,8 @@ DOC501_numpy.py:83:5: DOC501 Raised exception `TypeError` missing from docstring
|
||||||
DOC501_numpy.py:139:5: DOC501 Raised exception `TypeError` missing from docstring
|
DOC501_numpy.py:139:5: DOC501 Raised exception `TypeError` missing from docstring
|
||||||
|
|
|
|
||||||
138 | def foo():
|
138 | def foo():
|
||||||
139 | """Foo.
|
139 | / """Foo.
|
||||||
| _____^
|
140 | |
|
||||||
140 | |
|
|
||||||
141 | | Returns
|
141 | | Returns
|
||||||
142 | | -------
|
142 | | -------
|
||||||
143 | | int
|
143 | | int
|
||||||
|
|
@ -132,9 +126,8 @@ DOC501_numpy.py:139:5: DOC501 Raised exception `TypeError` missing from docstrin
|
||||||
DOC501_numpy.py:139:5: DOC501 Raised exception `ValueError` missing from docstring
|
DOC501_numpy.py:139:5: DOC501 Raised exception `ValueError` missing from docstring
|
||||||
|
|
|
|
||||||
138 | def foo():
|
138 | def foo():
|
||||||
139 | """Foo.
|
139 | / """Foo.
|
||||||
| _____^
|
140 | |
|
||||||
140 | |
|
|
||||||
141 | | Returns
|
141 | | Returns
|
||||||
142 | | -------
|
142 | | -------
|
||||||
143 | | int
|
143 | | int
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,13 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
DOC201_google.py:3:5: DOC201 `return` is not documented in docstring
|
DOC201_google.py:3:5: DOC201 `return` is not documented in docstring
|
||||||
|
|
|
|
||||||
1 | # DOC201
|
1 | # DOC201
|
||||||
2 | def foo(num: int) -> str:
|
2 | def foo(num: int) -> str:
|
||||||
3 | """
|
3 | / """
|
||||||
| _____^
|
|
||||||
4 | | Do something
|
4 | | Do something
|
||||||
5 | |
|
5 | |
|
||||||
6 | | Args:
|
6 | | Args:
|
||||||
7 | | num (int): A number
|
7 | | num (int): A number
|
||||||
8 | | """
|
8 | | """
|
||||||
|
|
@ -22,10 +20,9 @@ DOC201_google.py:44:9: DOC201 `return` is not documented in docstring
|
||||||
|
|
|
|
||||||
42 | # DOC201
|
42 | # DOC201
|
||||||
43 | def bar(self) -> str:
|
43 | def bar(self) -> str:
|
||||||
44 | """
|
44 | / """
|
||||||
| _________^
|
|
||||||
45 | | Do something
|
45 | | Do something
|
||||||
46 | |
|
46 | |
|
||||||
47 | | Args:
|
47 | | Args:
|
||||||
48 | | num (int): A number
|
48 | | num (int): A number
|
||||||
49 | | """
|
49 | | """
|
||||||
|
|
@ -58,9 +55,8 @@ DOC201_google.py:178:5: DOC201 `return` is not documented in docstring
|
||||||
|
|
|
|
||||||
176 | # DOC201 - non-early return explicit None
|
176 | # DOC201 - non-early return explicit None
|
||||||
177 | def foo(x: int) -> int | None:
|
177 | def foo(x: int) -> int | None:
|
||||||
178 | """A very helpful docstring.
|
178 | / """A very helpful docstring.
|
||||||
| _____^
|
179 | |
|
||||||
179 | |
|
|
||||||
180 | | Args:
|
180 | | Args:
|
||||||
181 | | x (int): An integer.
|
181 | | x (int): An integer.
|
||||||
182 | | """
|
182 | | """
|
||||||
|
|
@ -74,9 +70,8 @@ DOC201_google.py:191:5: DOC201 `return` is not documented in docstring
|
||||||
|
|
|
|
||||||
189 | # DOC201 - non-early return explicit None w/o useful type annotations
|
189 | # DOC201 - non-early return explicit None w/o useful type annotations
|
||||||
190 | def foo(x):
|
190 | def foo(x):
|
||||||
191 | """A very helpful docstring.
|
191 | / """A very helpful docstring.
|
||||||
| _____^
|
192 | |
|
||||||
192 | |
|
|
||||||
193 | | Args:
|
193 | | Args:
|
||||||
194 | | x (int): An integer.
|
194 | | x (int): An integer.
|
||||||
195 | | """
|
195 | | """
|
||||||
|
|
@ -90,9 +85,8 @@ DOC201_google.py:204:5: DOC201 `return` is not documented in docstring
|
||||||
|
|
|
|
||||||
202 | # DOC201 - only returns None, but return annotation is not None
|
202 | # DOC201 - only returns None, but return annotation is not None
|
||||||
203 | def foo(s: str) -> str | None:
|
203 | def foo(s: str) -> str | None:
|
||||||
204 | """A very helpful docstring.
|
204 | / """A very helpful docstring.
|
||||||
| _____^
|
205 | |
|
||||||
205 | |
|
|
||||||
206 | | Args:
|
206 | | Args:
|
||||||
207 | | s (str): A string.
|
207 | | s (str): A string.
|
||||||
208 | | """
|
208 | | """
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,13 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
DOC201_numpy.py:3:5: DOC201 `return` is not documented in docstring
|
DOC201_numpy.py:3:5: DOC201 `return` is not documented in docstring
|
||||||
|
|
|
|
||||||
1 | # DOC201
|
1 | # DOC201
|
||||||
2 | def foo(num: int) -> str:
|
2 | def foo(num: int) -> str:
|
||||||
3 | """
|
3 | / """
|
||||||
| _____^
|
|
||||||
4 | | Do something
|
4 | | Do something
|
||||||
5 | |
|
5 | |
|
||||||
6 | | Parameters
|
6 | | Parameters
|
||||||
7 | | ----------
|
7 | | ----------
|
||||||
8 | | num : int
|
8 | | num : int
|
||||||
|
|
@ -24,10 +22,9 @@ DOC201_numpy.py:54:9: DOC201 `return` is not documented in docstring
|
||||||
|
|
|
|
||||||
52 | # DOC201
|
52 | # DOC201
|
||||||
53 | def bar(self) -> str:
|
53 | def bar(self) -> str:
|
||||||
54 | """
|
54 | / """
|
||||||
| _________^
|
|
||||||
55 | | Do something
|
55 | | Do something
|
||||||
56 | |
|
56 | |
|
||||||
57 | | Parameters
|
57 | | Parameters
|
||||||
58 | | ----------
|
58 | | ----------
|
||||||
59 | | num : int
|
59 | | num : int
|
||||||
|
|
@ -52,9 +49,8 @@ DOC201_numpy.py:152:5: DOC201 `return` is not documented in docstring
|
||||||
|
|
|
|
||||||
150 | # DOC201 - non-early return explicit None
|
150 | # DOC201 - non-early return explicit None
|
||||||
151 | def foo(x: int) -> int | None:
|
151 | def foo(x: int) -> int | None:
|
||||||
152 | """A very helpful docstring.
|
152 | / """A very helpful docstring.
|
||||||
| _____^
|
153 | |
|
||||||
153 | |
|
|
||||||
154 | | Parameters
|
154 | | Parameters
|
||||||
155 | | ----------
|
155 | | ----------
|
||||||
156 | | x : int
|
156 | | x : int
|
||||||
|
|
@ -70,9 +66,8 @@ DOC201_numpy.py:167:5: DOC201 `return` is not documented in docstring
|
||||||
|
|
|
|
||||||
165 | # DOC201 - non-early return explicit None w/o useful type annotations
|
165 | # DOC201 - non-early return explicit None w/o useful type annotations
|
||||||
166 | def foo(x):
|
166 | def foo(x):
|
||||||
167 | """A very helpful docstring.
|
167 | / """A very helpful docstring.
|
||||||
| _____^
|
168 | |
|
||||||
168 | |
|
|
||||||
169 | | Parameters
|
169 | | Parameters
|
||||||
170 | | ----------
|
170 | | ----------
|
||||||
171 | | x : int
|
171 | | x : int
|
||||||
|
|
@ -88,9 +83,8 @@ DOC201_numpy.py:182:5: DOC201 `return` is not documented in docstring
|
||||||
|
|
|
|
||||||
180 | # DOC201 - only returns None, but return annotation is not None
|
180 | # DOC201 - only returns None, but return annotation is not None
|
||||||
181 | def foo(s: str) -> str | None:
|
181 | def foo(s: str) -> str | None:
|
||||||
182 | """A very helpful docstring.
|
182 | / """A very helpful docstring.
|
||||||
| _____^
|
183 | |
|
||||||
183 | |
|
|
||||||
184 | | Parameters
|
184 | | Parameters
|
||||||
185 | | ----------
|
185 | | ----------
|
||||||
186 | | x : str
|
186 | | x : str
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,13 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
DOC402_google.py:3:5: DOC402 `yield` is not documented in docstring
|
DOC402_google.py:3:5: DOC402 `yield` is not documented in docstring
|
||||||
|
|
|
|
||||||
1 | # DOC402
|
1 | # DOC402
|
||||||
2 | def foo(num: int) -> str:
|
2 | def foo(num: int) -> str:
|
||||||
3 | """
|
3 | / """
|
||||||
| _____^
|
|
||||||
4 | | Do something
|
4 | | Do something
|
||||||
5 | |
|
5 | |
|
||||||
6 | | Args:
|
6 | | Args:
|
||||||
7 | | num (int): A number
|
7 | | num (int): A number
|
||||||
8 | | """
|
8 | | """
|
||||||
|
|
@ -22,10 +20,9 @@ DOC402_google.py:44:9: DOC402 `yield` is not documented in docstring
|
||||||
|
|
|
|
||||||
42 | # DOC402
|
42 | # DOC402
|
||||||
43 | def bar(self) -> str:
|
43 | def bar(self) -> str:
|
||||||
44 | """
|
44 | / """
|
||||||
| _________^
|
|
||||||
45 | | Do something
|
45 | | Do something
|
||||||
46 | |
|
46 | |
|
||||||
47 | | Args:
|
47 | | Args:
|
||||||
48 | | num (int): A number
|
48 | | num (int): A number
|
||||||
49 | | """
|
49 | | """
|
||||||
|
|
@ -58,8 +55,7 @@ DOC402_google.py:97:5: DOC402 `yield` is not documented in docstring
|
||||||
|
|
|
|
||||||
95 | # DOC402
|
95 | # DOC402
|
||||||
96 | def foo() -> collections.abc.Generator[int | None, None, None]:
|
96 | def foo() -> collections.abc.Generator[int | None, None, None]:
|
||||||
97 | """
|
97 | / """
|
||||||
| _____^
|
|
||||||
98 | | Do something
|
98 | | Do something
|
||||||
99 | | """
|
99 | | """
|
||||||
| |_______^ DOC402
|
| |_______^ DOC402
|
||||||
|
|
@ -71,8 +67,7 @@ DOC402_google.py:105:5: DOC402 `yield` is not documented in docstring
|
||||||
|
|
|
|
||||||
103 | # DOC402
|
103 | # DOC402
|
||||||
104 | def bar() -> collections.abc.Iterator[int | None]:
|
104 | def bar() -> collections.abc.Iterator[int | None]:
|
||||||
105 | """
|
105 | / """
|
||||||
| _____^
|
|
||||||
106 | | Do something
|
106 | | Do something
|
||||||
107 | | """
|
107 | | """
|
||||||
| |_______^ DOC402
|
| |_______^ DOC402
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,13 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
source: crates/ruff_linter/src/rules/pydoclint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
DOC402_numpy.py:3:5: DOC402 `yield` is not documented in docstring
|
DOC402_numpy.py:3:5: DOC402 `yield` is not documented in docstring
|
||||||
|
|
|
|
||||||
1 | # DOC402
|
1 | # DOC402
|
||||||
2 | def foo(num: int) -> str:
|
2 | def foo(num: int) -> str:
|
||||||
3 | """
|
3 | / """
|
||||||
| _____^
|
|
||||||
4 | | Do something
|
4 | | Do something
|
||||||
5 | |
|
5 | |
|
||||||
6 | | Parameters
|
6 | | Parameters
|
||||||
7 | | ----------
|
7 | | ----------
|
||||||
8 | | num : int
|
8 | | num : int
|
||||||
|
|
@ -24,10 +22,9 @@ DOC402_numpy.py:54:9: DOC402 `yield` is not documented in docstring
|
||||||
|
|
|
|
||||||
52 | # DOC402
|
52 | # DOC402
|
||||||
53 | def bar(self) -> str:
|
53 | def bar(self) -> str:
|
||||||
54 | """
|
54 | / """
|
||||||
| _________^
|
|
||||||
55 | | Do something
|
55 | | Do something
|
||||||
56 | |
|
56 | |
|
||||||
57 | | Parameters
|
57 | | Parameters
|
||||||
58 | | ----------
|
58 | | ----------
|
||||||
59 | | num : int
|
59 | | num : int
|
||||||
|
|
@ -42,8 +39,7 @@ DOC402_numpy.py:86:5: DOC402 `yield` is not documented in docstring
|
||||||
|
|
|
|
||||||
84 | # DOC402
|
84 | # DOC402
|
||||||
85 | def foo() -> typing.Generator[int | None, None, None]:
|
85 | def foo() -> typing.Generator[int | None, None, None]:
|
||||||
86 | """
|
86 | / """
|
||||||
| _____^
|
|
||||||
87 | | Do something
|
87 | | Do something
|
||||||
88 | | """
|
88 | | """
|
||||||
| |_______^ DOC402
|
| |_______^ DOC402
|
||||||
|
|
@ -56,8 +52,7 @@ DOC402_numpy.py:95:5: DOC402 `yield` is not documented in docstring
|
||||||
|
|
|
|
||||||
93 | # DOC402
|
93 | # DOC402
|
||||||
94 | def foo() -> typing.Generator[int, None, None]:
|
94 | def foo() -> typing.Generator[int, None, None]:
|
||||||
95 | """
|
95 | / """
|
||||||
| _____^
|
|
||||||
96 | | Do something
|
96 | | Do something
|
||||||
97 | | """
|
97 | | """
|
||||||
| |_______^ DOC402
|
| |_______^ DOC402
|
||||||
|
|
@ -69,8 +64,7 @@ DOC402_numpy.py:119:5: DOC402 `yield` is not documented in docstring
|
||||||
|
|
|
|
||||||
117 | # DOC402
|
117 | # DOC402
|
||||||
118 | def foo():
|
118 | def foo():
|
||||||
119 | """
|
119 | / """
|
||||||
| _____^
|
|
||||||
120 | | Do something
|
120 | | Do something
|
||||||
121 | | """
|
121 | | """
|
||||||
| |_______^ DOC402
|
| |_______^ DOC402
|
||||||
|
|
@ -83,8 +77,7 @@ DOC402_numpy.py:128:5: DOC402 `yield` is not documented in docstring
|
||||||
|
|
|
|
||||||
126 | # DOC402
|
126 | # DOC402
|
||||||
127 | def foo():
|
127 | def foo():
|
||||||
128 | """
|
128 | / """
|
||||||
| _____^
|
|
||||||
129 | | Do something
|
129 | | Do something
|
||||||
130 | | """
|
130 | | """
|
||||||
| |_______^ DOC402
|
| |_______^ DOC402
|
||||||
|
|
@ -97,8 +90,7 @@ DOC402_numpy.py:137:5: DOC402 `yield` is not documented in docstring
|
||||||
|
|
|
|
||||||
135 | # DOC402
|
135 | # DOC402
|
||||||
136 | def bar() -> typing.Iterator[int | None]:
|
136 | def bar() -> typing.Iterator[int | None]:
|
||||||
137 | """
|
137 | / """
|
||||||
| _____^
|
|
||||||
138 | | Do something
|
138 | | Do something
|
||||||
139 | | """
|
139 | | """
|
||||||
| |_______^ DOC402
|
| |_______^ DOC402
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,11 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D.py:129:5: D200 [*] One-line docstring should fit on one line
|
D.py:129:5: D200 [*] One-line docstring should fit on one line
|
||||||
|
|
|
|
||||||
127 | @expect('D212: Multi-line docstring summary should start at the first line')
|
127 | @expect('D212: Multi-line docstring summary should start at the first line')
|
||||||
128 | def asdlkfasd():
|
128 | def asdlkfasd():
|
||||||
129 | """
|
129 | / """
|
||||||
| _____^
|
|
||||||
130 | | Wrong.
|
130 | | Wrong.
|
||||||
131 | | """
|
131 | | """
|
||||||
| |_______^ D200
|
| |_______^ D200
|
||||||
|
|
@ -30,9 +28,8 @@ D.py:597:5: D200 [*] One-line docstring should fit on one line
|
||||||
|
|
|
|
||||||
595 | @expect('D212: Multi-line docstring summary should start at the first line')
|
595 | @expect('D212: Multi-line docstring summary should start at the first line')
|
||||||
596 | def one_liner():
|
596 | def one_liner():
|
||||||
597 | """
|
597 | / """
|
||||||
| _____^
|
598 | |
|
||||||
598 | |
|
|
||||||
599 | | Wrong."""
|
599 | | Wrong."""
|
||||||
| |_____________^ D200
|
| |_____________^ D200
|
||||||
|
|
|
|
||||||
|
|
@ -54,9 +51,8 @@ D.py:606:5: D200 [*] One-line docstring should fit on one line
|
||||||
|
|
|
|
||||||
604 | @expect('D212: Multi-line docstring summary should start at the first line')
|
604 | @expect('D212: Multi-line docstring summary should start at the first line')
|
||||||
605 | def one_liner():
|
605 | def one_liner():
|
||||||
606 | r"""Wrong.
|
606 | / r"""Wrong.
|
||||||
| _____^
|
607 | |
|
||||||
607 | |
|
|
||||||
608 | | """
|
608 | | """
|
||||||
| |_______^ D200
|
| |_______^ D200
|
||||||
|
|
|
|
||||||
|
|
@ -78,9 +74,8 @@ D.py:615:5: D200 One-line docstring should fit on one line
|
||||||
|
|
|
|
||||||
613 | @expect('D212: Multi-line docstring summary should start at the first line')
|
613 | @expect('D212: Multi-line docstring summary should start at the first line')
|
||||||
614 | def one_liner():
|
614 | def one_liner():
|
||||||
615 | """Wrong."
|
615 | / """Wrong."
|
||||||
| _____^
|
616 | |
|
||||||
616 | |
|
|
||||||
617 | | """
|
617 | | """
|
||||||
| |_______^ D200
|
| |_______^ D200
|
||||||
|
|
|
|
||||||
|
|
@ -90,9 +85,8 @@ D.py:624:5: D200 One-line docstring should fit on one line
|
||||||
|
|
|
|
||||||
622 | @expect('D212: Multi-line docstring summary should start at the first line')
|
622 | @expect('D212: Multi-line docstring summary should start at the first line')
|
||||||
623 | def one_liner():
|
623 | def one_liner():
|
||||||
624 | """
|
624 | / """
|
||||||
| _____^
|
625 | |
|
||||||
625 | |
|
|
||||||
626 | | "Wrong."""
|
626 | | "Wrong."""
|
||||||
| |______________^ D200
|
| |______________^ D200
|
||||||
|
|
|
|
||||||
|
|
@ -101,11 +95,10 @@ D.py:624:5: D200 One-line docstring should fit on one line
|
||||||
D.py:645:5: D200 One-line docstring should fit on one line
|
D.py:645:5: D200 One-line docstring should fit on one line
|
||||||
|
|
|
|
||||||
644 | def single_line_docstring_with_an_escaped_backslash():
|
644 | def single_line_docstring_with_an_escaped_backslash():
|
||||||
645 | "\
|
645 | / "\
|
||||||
| _____^
|
|
||||||
646 | | "
|
646 | | "
|
||||||
| |_____^ D200
|
| |_____^ D200
|
||||||
647 |
|
647 |
|
||||||
648 | class StatementOnSameLineAsDocstring:
|
648 | class StatementOnSameLineAsDocstring:
|
||||||
|
|
|
|
||||||
= help: Reformat to one line
|
= help: Reformat to one line
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D200.py:2:5: D200 One-line docstring should fit on one line
|
D200.py:2:5: D200 One-line docstring should fit on one line
|
||||||
|
|
|
|
||||||
1 | def func():
|
1 | def func():
|
||||||
2 | """\
|
2 | / """\
|
||||||
| _____^
|
|
||||||
3 | | """
|
3 | | """
|
||||||
| |_______^ D200
|
| |_______^ D200
|
||||||
|
|
|
|
||||||
|
|
@ -15,8 +13,7 @@ D200.py:2:5: D200 One-line docstring should fit on one line
|
||||||
D200.py:7:5: D200 [*] One-line docstring should fit on one line
|
D200.py:7:5: D200 [*] One-line docstring should fit on one line
|
||||||
|
|
|
|
||||||
6 | def func():
|
6 | def func():
|
||||||
7 | """\\
|
7 | / """\\
|
||||||
| _____^
|
|
||||||
8 | | """
|
8 | | """
|
||||||
| |_______^ D200
|
| |_______^ D200
|
||||||
|
|
|
|
||||||
|
|
@ -36,8 +33,7 @@ D200.py:7:5: D200 [*] One-line docstring should fit on one line
|
||||||
D200.py:12:5: D200 One-line docstring should fit on one line
|
D200.py:12:5: D200 One-line docstring should fit on one line
|
||||||
|
|
|
|
||||||
11 | def func():
|
11 | def func():
|
||||||
12 | """\ \
|
12 | / """\ \
|
||||||
| _____^
|
|
||||||
13 | | """
|
13 | | """
|
||||||
| |_______^ D200
|
| |_______^ D200
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,10 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D.py:137:5: D201 [*] No blank lines allowed before function docstring (found 1)
|
D.py:137:5: D201 [*] No blank lines allowed before function docstring (found 1)
|
||||||
|
|
|
|
||||||
135 | def leading_space():
|
135 | def leading_space():
|
||||||
136 |
|
136 |
|
||||||
137 | """Leading space."""
|
137 | """Leading space."""
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ D201
|
| ^^^^^^^^^^^^^^^^^^^^ D201
|
||||||
|
|
|
|
||||||
|
|
@ -23,10 +22,10 @@ D.py:137:5: D201 [*] No blank lines allowed before function docstring (found 1)
|
||||||
D.py:151:5: D201 [*] No blank lines allowed before function docstring (found 1)
|
D.py:151:5: D201 [*] No blank lines allowed before function docstring (found 1)
|
||||||
|
|
|
|
||||||
149 | def trailing_and_leading_space():
|
149 | def trailing_and_leading_space():
|
||||||
150 |
|
150 |
|
||||||
151 | """Trailing and leading space."""
|
151 | """Trailing and leading space."""
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D201
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D201
|
||||||
152 |
|
152 |
|
||||||
153 | pass
|
153 | pass
|
||||||
|
|
|
|
||||||
= help: Remove blank line(s) before function docstring
|
= help: Remove blank line(s) before function docstring
|
||||||
|
|
@ -43,10 +42,9 @@ D.py:151:5: D201 [*] No blank lines allowed before function docstring (found 1)
|
||||||
D.py:546:5: D201 [*] No blank lines allowed before function docstring (found 1)
|
D.py:546:5: D201 [*] No blank lines allowed before function docstring (found 1)
|
||||||
|
|
|
|
||||||
544 | def multiline_leading_space():
|
544 | def multiline_leading_space():
|
||||||
545 |
|
545 |
|
||||||
546 | """Leading space.
|
546 | / """Leading space.
|
||||||
| _____^
|
547 | |
|
||||||
547 | |
|
|
||||||
548 | | More content.
|
548 | | More content.
|
||||||
549 | | """
|
549 | | """
|
||||||
| |_______^ D201
|
| |_______^ D201
|
||||||
|
|
@ -65,14 +63,13 @@ D.py:546:5: D201 [*] No blank lines allowed before function docstring (found 1)
|
||||||
D.py:568:5: D201 [*] No blank lines allowed before function docstring (found 1)
|
D.py:568:5: D201 [*] No blank lines allowed before function docstring (found 1)
|
||||||
|
|
|
|
||||||
566 | def multiline_trailing_and_leading_space():
|
566 | def multiline_trailing_and_leading_space():
|
||||||
567 |
|
567 |
|
||||||
568 | """Trailing and leading space.
|
568 | / """Trailing and leading space.
|
||||||
| _____^
|
569 | |
|
||||||
569 | |
|
|
||||||
570 | | More content.
|
570 | | More content.
|
||||||
571 | | """
|
571 | | """
|
||||||
| |_______^ D201
|
| |_______^ D201
|
||||||
572 |
|
572 |
|
||||||
573 | pass
|
573 | pass
|
||||||
|
|
|
|
||||||
= help: Remove blank line(s) before function docstring
|
= help: Remove blank line(s) before function docstring
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D.py:142:5: D202 [*] No blank lines allowed after function docstring (found 1)
|
D.py:142:5: D202 [*] No blank lines allowed after function docstring (found 1)
|
||||||
|
|
|
|
||||||
|
|
@ -8,7 +7,7 @@ D.py:142:5: D202 [*] No blank lines allowed after function docstring (found 1)
|
||||||
141 | def trailing_space():
|
141 | def trailing_space():
|
||||||
142 | """Leading space."""
|
142 | """Leading space."""
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ D202
|
| ^^^^^^^^^^^^^^^^^^^^ D202
|
||||||
143 |
|
143 |
|
||||||
144 | pass
|
144 | pass
|
||||||
|
|
|
|
||||||
= help: Remove blank line(s) after function docstring
|
= help: Remove blank line(s) after function docstring
|
||||||
|
|
@ -25,10 +24,10 @@ D.py:142:5: D202 [*] No blank lines allowed after function docstring (found 1)
|
||||||
D.py:151:5: D202 [*] No blank lines allowed after function docstring (found 1)
|
D.py:151:5: D202 [*] No blank lines allowed after function docstring (found 1)
|
||||||
|
|
|
|
||||||
149 | def trailing_and_leading_space():
|
149 | def trailing_and_leading_space():
|
||||||
150 |
|
150 |
|
||||||
151 | """Trailing and leading space."""
|
151 | """Trailing and leading space."""
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D202
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D202
|
||||||
152 |
|
152 |
|
||||||
153 | pass
|
153 | pass
|
||||||
|
|
|
|
||||||
= help: Remove blank line(s) after function docstring
|
= help: Remove blank line(s) after function docstring
|
||||||
|
|
@ -46,13 +45,12 @@ D.py:555:5: D202 [*] No blank lines allowed after function docstring (found 1)
|
||||||
|
|
|
|
||||||
553 | @expect('D213: Multi-line docstring summary should start at the second line')
|
553 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
554 | def multiline_trailing_space():
|
554 | def multiline_trailing_space():
|
||||||
555 | """Leading space.
|
555 | / """Leading space.
|
||||||
| _____^
|
556 | |
|
||||||
556 | |
|
|
||||||
557 | | More content.
|
557 | | More content.
|
||||||
558 | | """
|
558 | | """
|
||||||
| |_______^ D202
|
| |_______^ D202
|
||||||
559 |
|
559 |
|
||||||
560 | pass
|
560 | pass
|
||||||
|
|
|
|
||||||
= help: Remove blank line(s) after function docstring
|
= help: Remove blank line(s) after function docstring
|
||||||
|
|
@ -69,14 +67,13 @@ D.py:555:5: D202 [*] No blank lines allowed after function docstring (found 1)
|
||||||
D.py:568:5: D202 [*] No blank lines allowed after function docstring (found 1)
|
D.py:568:5: D202 [*] No blank lines allowed after function docstring (found 1)
|
||||||
|
|
|
|
||||||
566 | def multiline_trailing_and_leading_space():
|
566 | def multiline_trailing_and_leading_space():
|
||||||
567 |
|
567 |
|
||||||
568 | """Trailing and leading space.
|
568 | / """Trailing and leading space.
|
||||||
| _____^
|
569 | |
|
||||||
569 | |
|
|
||||||
570 | | More content.
|
570 | | More content.
|
||||||
571 | | """
|
571 | | """
|
||||||
| |_______^ D202
|
| |_______^ D202
|
||||||
572 |
|
572 |
|
||||||
573 | pass
|
573 | pass
|
||||||
|
|
|
|
||||||
= help: Remove blank line(s) after function docstring
|
= help: Remove blank line(s) after function docstring
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D.py:161:5: D203 [*] 1 blank line required before class docstring
|
D.py:161:5: D203 [*] 1 blank line required before class docstring
|
||||||
|
|
|
|
||||||
|
|
@ -41,16 +40,15 @@ D.py:526:5: D203 [*] 1 blank line required before class docstring
|
||||||
|
|
|
|
||||||
524 | # parameters as functions for Google / Numpy conventions.
|
524 | # parameters as functions for Google / Numpy conventions.
|
||||||
525 | class Blah: # noqa: D203,D213
|
525 | class Blah: # noqa: D203,D213
|
||||||
526 | """A Blah.
|
526 | / """A Blah.
|
||||||
| _____^
|
527 | |
|
||||||
527 | |
|
|
||||||
528 | | Parameters
|
528 | | Parameters
|
||||||
529 | | ----------
|
529 | | ----------
|
||||||
530 | | x : int
|
530 | | x : int
|
||||||
531 | |
|
531 | |
|
||||||
532 | | """
|
532 | | """
|
||||||
| |_______^ D203
|
| |_______^ D203
|
||||||
533 |
|
533 |
|
||||||
534 | def __init__(self, x):
|
534 | def __init__(self, x):
|
||||||
|
|
|
|
||||||
= help: Insert 1 blank line before class docstring
|
= help: Insert 1 blank line before class docstring
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,13 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D.py:200:5: D205 1 blank line required between summary line and description
|
D.py:200:5: D205 1 blank line required between summary line and description
|
||||||
|
|
|
|
||||||
198 | @expect('D213: Multi-line docstring summary should start at the second line')
|
198 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
199 | def multi_line_zero_separating_blanks():
|
199 | def multi_line_zero_separating_blanks():
|
||||||
200 | """Summary.
|
200 | / """Summary.
|
||||||
| _____^
|
|
||||||
201 | | Description.
|
201 | | Description.
|
||||||
202 | |
|
202 | |
|
||||||
203 | | """
|
203 | | """
|
||||||
| |_______^ D205
|
| |_______^ D205
|
||||||
|
|
|
|
||||||
|
|
@ -19,12 +17,11 @@ D.py:210:5: D205 [*] 1 blank line required between summary line and description
|
||||||
|
|
|
|
||||||
208 | @expect('D213: Multi-line docstring summary should start at the second line')
|
208 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
209 | def multi_line_two_separating_blanks():
|
209 | def multi_line_two_separating_blanks():
|
||||||
210 | """Summary.
|
210 | / """Summary.
|
||||||
| _____^
|
211 | |
|
||||||
211 | |
|
212 | |
|
||||||
212 | |
|
|
||||||
213 | | Description.
|
213 | | Description.
|
||||||
214 | |
|
214 | |
|
||||||
215 | | """
|
215 | | """
|
||||||
| |_______^ D205
|
| |_______^ D205
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,12 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D.py:281:5: D209 [*] Multi-line docstring closing quotes should be on a separate line
|
D.py:281:5: D209 [*] Multi-line docstring closing quotes should be on a separate line
|
||||||
|
|
|
|
||||||
279 | @expect('D213: Multi-line docstring summary should start at the second line')
|
279 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
280 | def asdfljdf24():
|
280 | def asdfljdf24():
|
||||||
281 | """Summary.
|
281 | / """Summary.
|
||||||
| _____^
|
282 | |
|
||||||
282 | |
|
|
||||||
283 | | Description."""
|
283 | | Description."""
|
||||||
| |___________________^ D209
|
| |___________________^ D209
|
||||||
|
|
|
|
||||||
|
|
@ -29,9 +27,8 @@ D.py:588:5: D209 [*] Multi-line docstring closing quotes should be on a separate
|
||||||
|
|
|
|
||||||
586 | @expect('D213: Multi-line docstring summary should start at the second line')
|
586 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
587 | def asdfljdjgf24():
|
587 | def asdfljdjgf24():
|
||||||
588 | """Summary.
|
588 | / """Summary.
|
||||||
| _____^
|
589 | |
|
||||||
589 | |
|
|
||||||
590 | | Description. """
|
590 | | Description. """
|
||||||
| |_____________________^ D209
|
| |_____________________^ D209
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D.py:288:5: D210 [*] No whitespaces allowed surrounding docstring text
|
D.py:288:5: D210 [*] No whitespaces allowed surrounding docstring text
|
||||||
|
|
|
|
||||||
|
|
@ -44,9 +43,8 @@ D.py:299:5: D210 [*] No whitespaces allowed surrounding docstring text
|
||||||
|
|
|
|
||||||
297 | @expect('D213: Multi-line docstring summary should start at the second line')
|
297 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
298 | def multiline():
|
298 | def multiline():
|
||||||
299 | """ Whitespace at the beginning.
|
299 | / """ Whitespace at the beginning.
|
||||||
| _____^
|
300 | |
|
||||||
300 | |
|
|
||||||
301 | | This is the end.
|
301 | | This is the end.
|
||||||
302 | | """
|
302 | | """
|
||||||
| |_______^ D210
|
| |_______^ D210
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,11 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D.py:129:5: D212 [*] Multi-line docstring summary should start at the first line
|
D.py:129:5: D212 [*] Multi-line docstring summary should start at the first line
|
||||||
|
|
|
|
||||||
127 | @expect('D212: Multi-line docstring summary should start at the first line')
|
127 | @expect('D212: Multi-line docstring summary should start at the first line')
|
||||||
128 | def asdlkfasd():
|
128 | def asdlkfasd():
|
||||||
129 | """
|
129 | / """
|
||||||
| _____^
|
|
||||||
130 | | Wrong.
|
130 | | Wrong.
|
||||||
131 | | """
|
131 | | """
|
||||||
| |_______^ D212
|
| |_______^ D212
|
||||||
|
|
@ -29,9 +27,8 @@ D.py:597:5: D212 [*] Multi-line docstring summary should start at the first line
|
||||||
|
|
|
|
||||||
595 | @expect('D212: Multi-line docstring summary should start at the first line')
|
595 | @expect('D212: Multi-line docstring summary should start at the first line')
|
||||||
596 | def one_liner():
|
596 | def one_liner():
|
||||||
597 | """
|
597 | / """
|
||||||
| _____^
|
598 | |
|
||||||
598 | |
|
|
||||||
599 | | Wrong."""
|
599 | | Wrong."""
|
||||||
| |_____________^ D212
|
| |_____________^ D212
|
||||||
|
|
|
|
||||||
|
|
@ -53,9 +50,8 @@ D.py:624:5: D212 [*] Multi-line docstring summary should start at the first line
|
||||||
|
|
|
|
||||||
622 | @expect('D212: Multi-line docstring summary should start at the first line')
|
622 | @expect('D212: Multi-line docstring summary should start at the first line')
|
||||||
623 | def one_liner():
|
623 | def one_liner():
|
||||||
624 | """
|
624 | / """
|
||||||
| _____^
|
625 | |
|
||||||
625 | |
|
|
||||||
626 | | "Wrong."""
|
626 | | "Wrong."""
|
||||||
| |______________^ D212
|
| |______________^ D212
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,13 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D.py:200:5: D213 [*] Multi-line docstring summary should start at the second line
|
D.py:200:5: D213 [*] Multi-line docstring summary should start at the second line
|
||||||
|
|
|
|
||||||
198 | @expect('D213: Multi-line docstring summary should start at the second line')
|
198 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
199 | def multi_line_zero_separating_blanks():
|
199 | def multi_line_zero_separating_blanks():
|
||||||
200 | """Summary.
|
200 | / """Summary.
|
||||||
| _____^
|
|
||||||
201 | | Description.
|
201 | | Description.
|
||||||
202 | |
|
202 | |
|
||||||
203 | | """
|
203 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
|
|
|
|
||||||
|
|
@ -30,12 +28,11 @@ D.py:210:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
208 | @expect('D213: Multi-line docstring summary should start at the second line')
|
208 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
209 | def multi_line_two_separating_blanks():
|
209 | def multi_line_two_separating_blanks():
|
||||||
210 | """Summary.
|
210 | / """Summary.
|
||||||
| _____^
|
211 | |
|
||||||
211 | |
|
212 | |
|
||||||
212 | |
|
|
||||||
213 | | Description.
|
213 | | Description.
|
||||||
214 | |
|
214 | |
|
||||||
215 | | """
|
215 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
|
|
|
|
||||||
|
|
@ -56,11 +53,10 @@ D.py:220:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
218 | @expect('D213: Multi-line docstring summary should start at the second line')
|
218 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
219 | def multi_line_one_separating_blanks():
|
219 | def multi_line_one_separating_blanks():
|
||||||
220 | """Summary.
|
220 | / """Summary.
|
||||||
| _____^
|
221 | |
|
||||||
221 | |
|
|
||||||
222 | | Description.
|
222 | | Description.
|
||||||
223 | |
|
223 | |
|
||||||
224 | | """
|
224 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
|
|
|
|
||||||
|
|
@ -81,11 +77,10 @@ D.py:230:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
228 | @expect('D213: Multi-line docstring summary should start at the second line')
|
228 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
229 | def asdfsdf():
|
229 | def asdfsdf():
|
||||||
230 | """Summary.
|
230 | / """Summary.
|
||||||
| _____^
|
231 | |
|
||||||
231 | |
|
|
||||||
232 | | Description.
|
232 | | Description.
|
||||||
233 | |
|
233 | |
|
||||||
234 | | """
|
234 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
|
|
|
|
||||||
|
|
@ -106,11 +101,10 @@ D.py:240:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
238 | @expect('D213: Multi-line docstring summary should start at the second line')
|
238 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
239 | def asdsdfsdffsdf():
|
239 | def asdsdfsdffsdf():
|
||||||
240 | """Summary.
|
240 | / """Summary.
|
||||||
| _____^
|
241 | |
|
||||||
241 | |
|
|
||||||
242 | | Description.
|
242 | | Description.
|
||||||
243 | |
|
243 | |
|
||||||
244 | | """
|
244 | | """
|
||||||
| |___^ D213
|
| |___^ D213
|
||||||
|
|
|
|
||||||
|
|
@ -131,11 +125,10 @@ D.py:250:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
248 | @expect('D213: Multi-line docstring summary should start at the second line')
|
248 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
249 | def asdfsdsdf24():
|
249 | def asdfsdsdf24():
|
||||||
250 | """Summary.
|
250 | / """Summary.
|
||||||
| _____^
|
251 | |
|
||||||
251 | |
|
|
||||||
252 | | Description.
|
252 | | Description.
|
||||||
253 | |
|
253 | |
|
||||||
254 | | """
|
254 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
|
|
|
|
||||||
|
|
@ -156,11 +149,10 @@ D.py:260:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
258 | @expect('D213: Multi-line docstring summary should start at the second line')
|
258 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
259 | def asdfsdsdfsdf24():
|
259 | def asdfsdsdfsdf24():
|
||||||
260 | """Summary.
|
260 | / """Summary.
|
||||||
| _____^
|
261 | |
|
||||||
261 | |
|
|
||||||
262 | | Description.
|
262 | | Description.
|
||||||
263 | |
|
263 | |
|
||||||
264 | | """
|
264 | | """
|
||||||
| |___________^ D213
|
| |___________^ D213
|
||||||
|
|
|
|
||||||
|
|
@ -181,11 +173,10 @@ D.py:270:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
268 | @expect('D213: Multi-line docstring summary should start at the second line')
|
268 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
269 | def asdfsdfsdsdsdfsdf24():
|
269 | def asdfsdfsdsdsdfsdf24():
|
||||||
270 | """Summary.
|
270 | / """Summary.
|
||||||
| _____^
|
271 | |
|
||||||
271 | |
|
|
||||||
272 | | Description.
|
272 | | Description.
|
||||||
273 | |
|
273 | |
|
||||||
274 | | """
|
274 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
|
|
|
|
||||||
|
|
@ -206,9 +197,8 @@ D.py:281:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
279 | @expect('D213: Multi-line docstring summary should start at the second line')
|
279 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
280 | def asdfljdf24():
|
280 | def asdfljdf24():
|
||||||
281 | """Summary.
|
281 | / """Summary.
|
||||||
| _____^
|
282 | |
|
||||||
282 | |
|
|
||||||
283 | | Description."""
|
283 | | Description."""
|
||||||
| |___________________^ D213
|
| |___________________^ D213
|
||||||
|
|
|
|
||||||
|
|
@ -229,9 +219,8 @@ D.py:299:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
297 | @expect('D213: Multi-line docstring summary should start at the second line')
|
297 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
298 | def multiline():
|
298 | def multiline():
|
||||||
299 | """ Whitespace at the beginning.
|
299 | / """ Whitespace at the beginning.
|
||||||
| _____^
|
300 | |
|
||||||
300 | |
|
|
||||||
301 | | This is the end.
|
301 | | This is the end.
|
||||||
302 | | """
|
302 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
|
|
@ -253,9 +242,8 @@ D.py:343:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
341 | @expect('D213: Multi-line docstring summary should start at the second line')
|
341 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
342 | def exceptions_of_D301():
|
342 | def exceptions_of_D301():
|
||||||
343 | """Exclude some backslashes from D301.
|
343 | / """Exclude some backslashes from D301.
|
||||||
| _____^
|
344 | |
|
||||||
344 | |
|
|
||||||
345 | | In particular, line continuations \
|
345 | | In particular, line continuations \
|
||||||
346 | | and unicode literals \u0394 and \N{GREEK CAPITAL LETTER DELTA}.
|
346 | | and unicode literals \u0394 and \N{GREEK CAPITAL LETTER DELTA}.
|
||||||
347 | | They are considered to be intentionally unescaped.
|
347 | | They are considered to be intentionally unescaped.
|
||||||
|
|
@ -279,9 +267,8 @@ D.py:383:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
381 | @expect('D213: Multi-line docstring summary should start at the second line')
|
381 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
382 | def new_209():
|
382 | def new_209():
|
||||||
383 | """First line.
|
383 | / """First line.
|
||||||
| _____^
|
384 | |
|
||||||
384 | |
|
|
||||||
385 | | More lines.
|
385 | | More lines.
|
||||||
386 | | """
|
386 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
|
|
@ -304,11 +291,10 @@ D.py:392:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
390 | @expect('D213: Multi-line docstring summary should start at the second line')
|
390 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
391 | def old_209():
|
391 | def old_209():
|
||||||
392 | """One liner.
|
392 | / """One liner.
|
||||||
| _____^
|
393 | |
|
||||||
393 | |
|
|
||||||
394 | | Multi-line comments. OK to have extra blank line
|
394 | | Multi-line comments. OK to have extra blank line
|
||||||
395 | |
|
395 | |
|
||||||
396 | | """
|
396 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
|
|
|
|
||||||
|
|
@ -331,7 +317,7 @@ D.py:438:37: D213 [*] Multi-line docstring summary should start at the second li
|
||||||
437 | @expect('D213: Multi-line docstring summary should start at the second line')
|
437 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
438 | def docstring_start_in_same_line(): """First Line.
|
438 | def docstring_start_in_same_line(): """First Line.
|
||||||
| _____________________________________^
|
| _____________________________________^
|
||||||
439 | |
|
439 | |
|
||||||
440 | | Second Line
|
440 | | Second Line
|
||||||
441 | | """
|
441 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
|
|
@ -353,11 +339,10 @@ D.py:450:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
448 | @expect('D213: Multi-line docstring summary should start at the second line')
|
448 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
449 | def a_following_valid_function(x=None):
|
449 | def a_following_valid_function(x=None):
|
||||||
450 | """Check for a bug where the previous function caused an assertion.
|
450 | / """Check for a bug where the previous function caused an assertion.
|
||||||
| _____^
|
451 | |
|
||||||
451 | |
|
|
||||||
452 | | The assertion was caused in the next function, so this one is necessary.
|
452 | | The assertion was caused in the next function, so this one is necessary.
|
||||||
453 | |
|
453 | |
|
||||||
454 | | """
|
454 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
|
|
|
|
||||||
|
|
@ -378,16 +363,15 @@ D.py:526:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
524 | # parameters as functions for Google / Numpy conventions.
|
524 | # parameters as functions for Google / Numpy conventions.
|
||||||
525 | class Blah: # noqa: D203,D213
|
525 | class Blah: # noqa: D203,D213
|
||||||
526 | """A Blah.
|
526 | / """A Blah.
|
||||||
| _____^
|
527 | |
|
||||||
527 | |
|
|
||||||
528 | | Parameters
|
528 | | Parameters
|
||||||
529 | | ----------
|
529 | | ----------
|
||||||
530 | | x : int
|
530 | | x : int
|
||||||
531 | |
|
531 | |
|
||||||
532 | | """
|
532 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
533 |
|
533 |
|
||||||
534 | def __init__(self, x):
|
534 | def __init__(self, x):
|
||||||
|
|
|
|
||||||
= help: Insert line break and indentation after opening quotes
|
= help: Insert line break and indentation after opening quotes
|
||||||
|
|
@ -406,10 +390,9 @@ D.py:526:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
D.py:546:5: D213 [*] Multi-line docstring summary should start at the second line
|
D.py:546:5: D213 [*] Multi-line docstring summary should start at the second line
|
||||||
|
|
|
|
||||||
544 | def multiline_leading_space():
|
544 | def multiline_leading_space():
|
||||||
545 |
|
545 |
|
||||||
546 | """Leading space.
|
546 | / """Leading space.
|
||||||
| _____^
|
547 | |
|
||||||
547 | |
|
|
||||||
548 | | More content.
|
548 | | More content.
|
||||||
549 | | """
|
549 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
|
|
@ -431,13 +414,12 @@ D.py:555:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
553 | @expect('D213: Multi-line docstring summary should start at the second line')
|
553 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
554 | def multiline_trailing_space():
|
554 | def multiline_trailing_space():
|
||||||
555 | """Leading space.
|
555 | / """Leading space.
|
||||||
| _____^
|
556 | |
|
||||||
556 | |
|
|
||||||
557 | | More content.
|
557 | | More content.
|
||||||
558 | | """
|
558 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
559 |
|
559 |
|
||||||
560 | pass
|
560 | pass
|
||||||
|
|
|
|
||||||
= help: Insert line break and indentation after opening quotes
|
= help: Insert line break and indentation after opening quotes
|
||||||
|
|
@ -456,14 +438,13 @@ D.py:555:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
D.py:568:5: D213 [*] Multi-line docstring summary should start at the second line
|
D.py:568:5: D213 [*] Multi-line docstring summary should start at the second line
|
||||||
|
|
|
|
||||||
566 | def multiline_trailing_and_leading_space():
|
566 | def multiline_trailing_and_leading_space():
|
||||||
567 |
|
567 |
|
||||||
568 | """Trailing and leading space.
|
568 | / """Trailing and leading space.
|
||||||
| _____^
|
569 | |
|
||||||
569 | |
|
|
||||||
570 | | More content.
|
570 | | More content.
|
||||||
571 | | """
|
571 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
572 |
|
572 |
|
||||||
573 | pass
|
573 | pass
|
||||||
|
|
|
|
||||||
= help: Insert line break and indentation after opening quotes
|
= help: Insert line break and indentation after opening quotes
|
||||||
|
|
@ -483,9 +464,8 @@ D.py:588:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
586 | @expect('D213: Multi-line docstring summary should start at the second line')
|
586 | @expect('D213: Multi-line docstring summary should start at the second line')
|
||||||
587 | def asdfljdjgf24():
|
587 | def asdfljdjgf24():
|
||||||
588 | """Summary.
|
588 | / """Summary.
|
||||||
| _____^
|
589 | |
|
||||||
589 | |
|
|
||||||
590 | | Description. """
|
590 | | Description. """
|
||||||
| |_____________________^ D213
|
| |_____________________^ D213
|
||||||
|
|
|
|
||||||
|
|
@ -506,9 +486,8 @@ D.py:606:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
604 | @expect('D212: Multi-line docstring summary should start at the first line')
|
604 | @expect('D212: Multi-line docstring summary should start at the first line')
|
||||||
605 | def one_liner():
|
605 | def one_liner():
|
||||||
606 | r"""Wrong.
|
606 | / r"""Wrong.
|
||||||
| _____^
|
607 | |
|
||||||
607 | |
|
|
||||||
608 | | """
|
608 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
|
|
|
|
||||||
|
|
@ -529,9 +508,8 @@ D.py:615:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
|
|
|
|
||||||
613 | @expect('D212: Multi-line docstring summary should start at the first line')
|
613 | @expect('D212: Multi-line docstring summary should start at the first line')
|
||||||
614 | def one_liner():
|
614 | def one_liner():
|
||||||
615 | """Wrong."
|
615 | / """Wrong."
|
||||||
| _____^
|
616 | |
|
||||||
616 | |
|
|
||||||
617 | | """
|
617 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
|
|
|
|
||||||
|
|
@ -551,9 +529,8 @@ D.py:615:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
D.py:671:5: D213 [*] Multi-line docstring summary should start at the second line
|
D.py:671:5: D213 [*] Multi-line docstring summary should start at the second line
|
||||||
|
|
|
|
||||||
670 | def retain_extra_whitespace():
|
670 | def retain_extra_whitespace():
|
||||||
671 | """Summary.
|
671 | / """Summary.
|
||||||
| _____^
|
672 | |
|
||||||
672 | |
|
|
||||||
673 | | This is overindented
|
673 | | This is overindented
|
||||||
674 | | And so is this, but it we should preserve the extra space on this line relative
|
674 | | And so is this, but it we should preserve the extra space on this line relative
|
||||||
675 | | to the one before
|
675 | | to the one before
|
||||||
|
|
@ -576,9 +553,8 @@ D.py:671:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
D.py:680:5: D213 [*] Multi-line docstring summary should start at the second line
|
D.py:680:5: D213 [*] Multi-line docstring summary should start at the second line
|
||||||
|
|
|
|
||||||
679 | def retain_extra_whitespace_multiple():
|
679 | def retain_extra_whitespace_multiple():
|
||||||
680 | """Summary.
|
680 | / """Summary.
|
||||||
| _____^
|
681 | |
|
||||||
681 | |
|
|
||||||
682 | | This is overindented
|
682 | | This is overindented
|
||||||
683 | | And so is this, but it we should preserve the extra space on this line relative
|
683 | | And so is this, but it we should preserve the extra space on this line relative
|
||||||
684 | | to the one before
|
684 | | to the one before
|
||||||
|
|
@ -604,16 +580,15 @@ D.py:680:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
D.py:693:5: D213 [*] Multi-line docstring summary should start at the second line
|
D.py:693:5: D213 [*] Multi-line docstring summary should start at the second line
|
||||||
|
|
|
|
||||||
692 | def retain_extra_whitespace_deeper():
|
692 | def retain_extra_whitespace_deeper():
|
||||||
693 | """Summary.
|
693 | / """Summary.
|
||||||
| _____^
|
694 | |
|
||||||
694 | |
|
|
||||||
695 | | This is overindented
|
695 | | This is overindented
|
||||||
696 | | And so is this, but it we should preserve the extra space on this line relative
|
696 | | And so is this, but it we should preserve the extra space on this line relative
|
||||||
697 | | to the one before
|
697 | | to the one before
|
||||||
698 | | And the relative indent here should be preserved too
|
698 | | And the relative indent here should be preserved too
|
||||||
699 | | """
|
699 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
700 |
|
700 |
|
||||||
701 | def retain_extra_whitespace_followed_by_same_offset():
|
701 | def retain_extra_whitespace_followed_by_same_offset():
|
||||||
|
|
|
|
||||||
= help: Insert line break and indentation after opening quotes
|
= help: Insert line break and indentation after opening quotes
|
||||||
|
|
@ -632,9 +607,8 @@ D.py:693:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
D.py:702:5: D213 [*] Multi-line docstring summary should start at the second line
|
D.py:702:5: D213 [*] Multi-line docstring summary should start at the second line
|
||||||
|
|
|
|
||||||
701 | def retain_extra_whitespace_followed_by_same_offset():
|
701 | def retain_extra_whitespace_followed_by_same_offset():
|
||||||
702 | """Summary.
|
702 | / """Summary.
|
||||||
| _____^
|
703 | |
|
||||||
703 | |
|
|
||||||
704 | | This is overindented
|
704 | | This is overindented
|
||||||
705 | | And so is this, but it we should preserve the extra space on this line relative
|
705 | | And so is this, but it we should preserve the extra space on this line relative
|
||||||
706 | | This is overindented
|
706 | | This is overindented
|
||||||
|
|
@ -658,9 +632,8 @@ D.py:702:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
D.py:712:5: D213 [*] Multi-line docstring summary should start at the second line
|
D.py:712:5: D213 [*] Multi-line docstring summary should start at the second line
|
||||||
|
|
|
|
||||||
711 | def retain_extra_whitespace_not_overindented():
|
711 | def retain_extra_whitespace_not_overindented():
|
||||||
712 | """Summary.
|
712 | / """Summary.
|
||||||
| _____^
|
713 | |
|
||||||
713 | |
|
|
||||||
714 | | This is not overindented
|
714 | | This is not overindented
|
||||||
715 | | This is overindented, but since one line is not overindented this should not raise
|
715 | | This is overindented, but since one line is not overindented this should not raise
|
||||||
716 | | And so is this, but it we should preserve the extra space on this line relative
|
716 | | And so is this, but it we should preserve the extra space on this line relative
|
||||||
|
|
@ -683,9 +656,8 @@ D.py:712:5: D213 [*] Multi-line docstring summary should start at the second lin
|
||||||
D.py:721:5: D213 [*] Multi-line docstring summary should start at the second line
|
D.py:721:5: D213 [*] Multi-line docstring summary should start at the second line
|
||||||
|
|
|
|
||||||
720 | def inconsistent_indent_byte_size():
|
720 | def inconsistent_indent_byte_size():
|
||||||
721 | """There's a non-breaking space (2-bytes) after 3 spaces (https://github.com/astral-sh/ruff/issues/9080).
|
721 | / """There's a non-breaking space (2-bytes) after 3 spaces (https://github.com/astral-sh/ruff/issues/9080).
|
||||||
| _____^
|
722 | |
|
||||||
722 | |
|
|
||||||
723 | | Returns:
|
723 | | Returns:
|
||||||
724 | | """
|
724 | | """
|
||||||
| |_______^ D213
|
| |_______^ D213
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D.py:307:5: D300 [*] Use triple double quotes `"""`
|
D.py:307:5: D300 [*] Use triple double quotes `"""`
|
||||||
|
|
|
|
||||||
|
|
@ -100,11 +99,10 @@ D.py:328:5: D300 [*] Use triple double quotes `"""`
|
||||||
D.py:645:5: D300 [*] Use triple double quotes `"""`
|
D.py:645:5: D300 [*] Use triple double quotes `"""`
|
||||||
|
|
|
|
||||||
644 | def single_line_docstring_with_an_escaped_backslash():
|
644 | def single_line_docstring_with_an_escaped_backslash():
|
||||||
645 | "\
|
645 | / "\
|
||||||
| _____^
|
|
||||||
646 | | "
|
646 | | "
|
||||||
| |_____^ D300
|
| |_____^ D300
|
||||||
647 |
|
647 |
|
||||||
648 | class StatementOnSameLineAsDocstring:
|
648 | class StatementOnSameLineAsDocstring:
|
||||||
|
|
|
|
||||||
= help: Convert to triple double quotes
|
= help: Convert to triple double quotes
|
||||||
|
|
@ -182,8 +180,7 @@ D.py:658:5: D300 [*] Use triple double quotes `"""`
|
||||||
D.py:664:5: D300 [*] Use triple double quotes `"""`
|
D.py:664:5: D300 [*] Use triple double quotes `"""`
|
||||||
|
|
|
|
||||||
663 | def newline_after_closing_quote(self):
|
663 | def newline_after_closing_quote(self):
|
||||||
664 | "We enforce a newline after the closing quote for a multi-line docstring \
|
664 | / "We enforce a newline after the closing quote for a multi-line docstring \
|
||||||
| _____^
|
|
||||||
665 | | but continuations shouldn't be considered multi-line"
|
665 | | but continuations shouldn't be considered multi-line"
|
||||||
| |_________________________________________________________^ D300
|
| |_________________________________________________________^ D300
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D301.py:2:5: D301 [*] Use `r"""` if any backslashes in a docstring
|
D301.py:2:5: D301 [*] Use `r"""` if any backslashes in a docstring
|
||||||
|
|
|
|
||||||
|
|
@ -29,8 +28,7 @@ D301.py:37:5: D301 Use `r"""` if any backslashes in a docstring
|
||||||
D301.py:93:5: D301 [*] Use `r"""` if any backslashes in a docstring
|
D301.py:93:5: D301 [*] Use `r"""` if any backslashes in a docstring
|
||||||
|
|
|
|
||||||
92 | def should_add_raw_for_single_double_quote_escape():
|
92 | def should_add_raw_for_single_double_quote_escape():
|
||||||
93 | """
|
93 | / """
|
||||||
| _____^
|
|
||||||
94 | | This is single quote escape \".
|
94 | | This is single quote escape \".
|
||||||
95 | | """
|
95 | | """
|
||||||
| |_______^ D301
|
| |_______^ D301
|
||||||
|
|
@ -50,8 +48,7 @@ D301.py:93:5: D301 [*] Use `r"""` if any backslashes in a docstring
|
||||||
D301.py:99:5: D301 [*] Use `r"""` if any backslashes in a docstring
|
D301.py:99:5: D301 [*] Use `r"""` if any backslashes in a docstring
|
||||||
|
|
|
|
||||||
98 | def should_add_raw_for_single_single_quote_escape():
|
98 | def should_add_raw_for_single_single_quote_escape():
|
||||||
99 | '''
|
99 | / '''
|
||||||
| _____^
|
|
||||||
100 | | This is single quote escape \'.
|
100 | | This is single quote escape \'.
|
||||||
101 | | '''
|
101 | | '''
|
||||||
| |_______^ D301
|
| |_______^ D301
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D.py:355:5: D400 [*] First line should end with a period
|
D.py:355:5: D400 [*] First line should end with a period
|
||||||
|
|
|
|
||||||
|
|
@ -245,9 +244,8 @@ D.py:615:5: D400 [*] First line should end with a period
|
||||||
|
|
|
|
||||||
613 | @expect('D212: Multi-line docstring summary should start at the first line')
|
613 | @expect('D212: Multi-line docstring summary should start at the first line')
|
||||||
614 | def one_liner():
|
614 | def one_liner():
|
||||||
615 | """Wrong."
|
615 | / """Wrong."
|
||||||
| _____^
|
616 | |
|
||||||
616 | |
|
|
||||||
617 | | """
|
617 | | """
|
||||||
| |_______^ D400
|
| |_______^ D400
|
||||||
|
|
|
|
||||||
|
|
@ -267,7 +265,7 @@ D.py:639:17: D400 [*] First line should end with a period
|
||||||
|
|
|
|
||||||
639 | class SameLine: """This is a docstring on the same line"""
|
639 | class SameLine: """This is a docstring on the same line"""
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D400
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D400
|
||||||
640 |
|
640 |
|
||||||
641 | def same_line(): """This is a docstring on the same line"""
|
641 | def same_line(): """This is a docstring on the same line"""
|
||||||
|
|
|
|
||||||
= help: Add period
|
= help: Add period
|
||||||
|
|
@ -285,7 +283,7 @@ D.py:639:17: D400 [*] First line should end with a period
|
||||||
D.py:641:18: D400 [*] First line should end with a period
|
D.py:641:18: D400 [*] First line should end with a period
|
||||||
|
|
|
|
||||||
639 | class SameLine: """This is a docstring on the same line"""
|
639 | class SameLine: """This is a docstring on the same line"""
|
||||||
640 |
|
640 |
|
||||||
641 | def same_line(): """This is a docstring on the same line"""
|
641 | def same_line(): """This is a docstring on the same line"""
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D400
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D400
|
||||||
|
|
|
|
||||||
|
|
@ -304,8 +302,7 @@ D.py:641:18: D400 [*] First line should end with a period
|
||||||
D.py:664:5: D400 [*] First line should end with a period
|
D.py:664:5: D400 [*] First line should end with a period
|
||||||
|
|
|
|
||||||
663 | def newline_after_closing_quote(self):
|
663 | def newline_after_closing_quote(self):
|
||||||
664 | "We enforce a newline after the closing quote for a multi-line docstring \
|
664 | / "We enforce a newline after the closing quote for a multi-line docstring \
|
||||||
| _____^
|
|
||||||
665 | | but continuations shouldn't be considered multi-line"
|
665 | | but continuations shouldn't be considered multi-line"
|
||||||
| |_________________________________________________________^ D400
|
| |_________________________________________________________^ D400
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D400.py:2:5: D400 [*] First line should end with a period
|
D400.py:2:5: D400 [*] First line should end with a period
|
||||||
|
|
|
|
||||||
|
|
@ -41,8 +40,7 @@ D400.py:7:5: D400 [*] First line should end with a period
|
||||||
D400.py:12:5: D400 [*] First line should end with a period
|
D400.py:12:5: D400 [*] First line should end with a period
|
||||||
|
|
|
|
||||||
11 | def f():
|
11 | def f():
|
||||||
12 | """
|
12 | / """
|
||||||
| _____^
|
|
||||||
13 | | Here's a line without a period,
|
13 | | Here's a line without a period,
|
||||||
14 | | but here's the next line
|
14 | | but here's the next line
|
||||||
15 | | """
|
15 | | """
|
||||||
|
|
@ -83,8 +81,7 @@ D400.py:20:5: D400 [*] First line should end with a period
|
||||||
D400.py:25:5: D400 [*] First line should end with a period
|
D400.py:25:5: D400 [*] First line should end with a period
|
||||||
|
|
|
|
||||||
24 | def f():
|
24 | def f():
|
||||||
25 | """
|
25 | / """
|
||||||
| _____^
|
|
||||||
26 | | Here's a line without a period,
|
26 | | Here's a line without a period,
|
||||||
27 | | but here's the next line"""
|
27 | | but here's the next line"""
|
||||||
| |_______________________________^ D400
|
| |_______________________________^ D400
|
||||||
|
|
@ -105,8 +102,7 @@ D400.py:25:5: D400 [*] First line should end with a period
|
||||||
D400.py:32:5: D400 [*] First line should end with a period
|
D400.py:32:5: D400 [*] First line should end with a period
|
||||||
|
|
|
|
||||||
31 | def f():
|
31 | def f():
|
||||||
32 | """
|
32 | / """
|
||||||
| _____^
|
|
||||||
33 | | Here's a line without a period,
|
33 | | Here's a line without a period,
|
||||||
34 | | but here's the next line with trailing space """
|
34 | | but here's the next line with trailing space """
|
||||||
| |____________________________________________________^ D400
|
| |____________________________________________________^ D400
|
||||||
|
|
@ -165,8 +161,7 @@ D400.py:44:5: D400 [*] First line should end with a period
|
||||||
D400.py:49:5: D400 [*] First line should end with a period
|
D400.py:49:5: D400 [*] First line should end with a period
|
||||||
|
|
|
|
||||||
48 | def f():
|
48 | def f():
|
||||||
49 | r"""
|
49 | / r"""
|
||||||
| _____^
|
|
||||||
50 | | Here's a line without a period,
|
50 | | Here's a line without a period,
|
||||||
51 | | but here's the next line
|
51 | | but here's the next line
|
||||||
52 | | """
|
52 | | """
|
||||||
|
|
@ -207,8 +202,7 @@ D400.py:57:5: D400 [*] First line should end with a period
|
||||||
D400.py:62:5: D400 [*] First line should end with a period
|
D400.py:62:5: D400 [*] First line should end with a period
|
||||||
|
|
|
|
||||||
61 | def f():
|
61 | def f():
|
||||||
62 | r"""
|
62 | / r"""
|
||||||
| _____^
|
|
||||||
63 | | Here's a line without a period,
|
63 | | Here's a line without a period,
|
||||||
64 | | but here's the next line"""
|
64 | | but here's the next line"""
|
||||||
| |_______________________________^ D400
|
| |_______________________________^ D400
|
||||||
|
|
@ -229,8 +223,7 @@ D400.py:62:5: D400 [*] First line should end with a period
|
||||||
D400.py:69:5: D400 [*] First line should end with a period
|
D400.py:69:5: D400 [*] First line should end with a period
|
||||||
|
|
|
|
||||||
68 | def f():
|
68 | def f():
|
||||||
69 | r"""
|
69 | / r"""
|
||||||
| _____^
|
|
||||||
70 | | Here's a line without a period,
|
70 | | Here's a line without a period,
|
||||||
71 | | but here's the next line with trailing space """
|
71 | | but here's the next line with trailing space """
|
||||||
| |____________________________________________________^ D400
|
| |____________________________________________________^ D400
|
||||||
|
|
@ -251,11 +244,10 @@ D400.py:69:5: D400 [*] First line should end with a period
|
||||||
D400.py:97:5: D400 [*] First line should end with a period
|
D400.py:97:5: D400 [*] First line should end with a period
|
||||||
|
|
|
|
||||||
96 | def f():
|
96 | def f():
|
||||||
97 | """
|
97 | / """
|
||||||
| _____^
|
|
||||||
98 | | My example
|
98 | | My example
|
||||||
99 | | ==========
|
99 | | ==========
|
||||||
100 | |
|
100 | |
|
||||||
101 | | My example explanation
|
101 | | My example explanation
|
||||||
102 | | """
|
102 | | """
|
||||||
| |_______^ D400
|
| |_______^ D400
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D401.py:10:5: D401 First line of docstring should be in imperative mood: "Returns foo."
|
D401.py:10:5: D401 First line of docstring should be in imperative mood: "Returns foo."
|
||||||
|
|
|
|
||||||
|
|
@ -19,11 +18,10 @@ D401.py:14:5: D401 First line of docstring should be in imperative mood: "Constr
|
||||||
D401.py:18:5: D401 First line of docstring should be in imperative mood: "Constructor for a boa."
|
D401.py:18:5: D401 First line of docstring should be in imperative mood: "Constructor for a boa."
|
||||||
|
|
|
|
||||||
17 | def bad_sdgfsdg23245777():
|
17 | def bad_sdgfsdg23245777():
|
||||||
18 | """
|
18 | / """
|
||||||
| _____^
|
19 | |
|
||||||
19 | |
|
|
||||||
20 | | Constructor for a boa.
|
20 | | Constructor for a boa.
|
||||||
21 | |
|
21 | |
|
||||||
22 | | """
|
22 | | """
|
||||||
| |_______^ D401
|
| |_______^ D401
|
||||||
|
|
|
|
||||||
|
|
@ -33,7 +31,7 @@ D401.py:26:5: D401 First line of docstring should be in imperative mood: "Runs s
|
||||||
25 | def bad_run_something():
|
25 | def bad_run_something():
|
||||||
26 | """Runs something"""
|
26 | """Runs something"""
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ D401
|
| ^^^^^^^^^^^^^^^^^^^^ D401
|
||||||
27 |
|
27 |
|
||||||
28 | def bad_nested():
|
28 | def bad_nested():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -42,15 +40,14 @@ D401.py:29:9: D401 First line of docstring should be in imperative mood: "Runs o
|
||||||
28 | def bad_nested():
|
28 | def bad_nested():
|
||||||
29 | """Runs other things, nested"""
|
29 | """Runs other things, nested"""
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D401
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D401
|
||||||
30 |
|
30 |
|
||||||
31 | bad_nested()
|
31 | bad_nested()
|
||||||
|
|
|
|
||||||
|
|
||||||
D401.py:35:5: D401 First line of docstring should be in imperative mood: "Writes a logical line that"
|
D401.py:35:5: D401 First line of docstring should be in imperative mood: "Writes a logical line that"
|
||||||
|
|
|
|
||||||
34 | def multi_line():
|
34 | def multi_line():
|
||||||
35 | """Writes a logical line that
|
35 | / """Writes a logical line that
|
||||||
| _____^
|
|
||||||
36 | | extends to two physical lines.
|
36 | | extends to two physical lines.
|
||||||
37 | | """
|
37 | | """
|
||||||
| |_______^ D401
|
| |_______^ D401
|
||||||
|
|
@ -61,6 +58,6 @@ D401.py:74:9: D401 First line of docstring should be in imperative mood: "This m
|
||||||
73 | def bad_method(self):
|
73 | def bad_method(self):
|
||||||
74 | """This method docstring should be written in imperative mood."""
|
74 | """This method docstring should be written in imperative mood."""
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D401
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D401
|
||||||
75 |
|
75 |
|
||||||
76 | @property
|
76 | @property
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,12 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D403.py:2:5: D403 [*] First word of the docstring should be capitalized: `this` -> `This`
|
D403.py:2:5: D403 [*] First word of the docstring should be capitalized: `this` -> `This`
|
||||||
|
|
|
|
||||||
1 | def bad_function():
|
1 | def bad_function():
|
||||||
2 | """this docstring is not capitalized"""
|
2 | """this docstring is not capitalized"""
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D403
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D403
|
||||||
3 |
|
3 |
|
||||||
4 | def good_function():
|
4 | def good_function():
|
||||||
|
|
|
|
||||||
= help: Capitalize `this` to `This`
|
= help: Capitalize `this` to `This`
|
||||||
|
|
@ -25,7 +24,7 @@ D403.py:30:5: D403 [*] First word of the docstring should be capitalized: `singl
|
||||||
29 | def single_word():
|
29 | def single_word():
|
||||||
30 | """singleword."""
|
30 | """singleword."""
|
||||||
| ^^^^^^^^^^^^^^^^^ D403
|
| ^^^^^^^^^^^^^^^^^ D403
|
||||||
31 |
|
31 |
|
||||||
32 | def single_word_no_dot():
|
32 | def single_word_no_dot():
|
||||||
|
|
|
|
||||||
= help: Capitalize `singleword` to `Singleword`
|
= help: Capitalize `singleword` to `Singleword`
|
||||||
|
|
@ -45,7 +44,7 @@ D403.py:33:5: D403 [*] First word of the docstring should be capitalized: `singl
|
||||||
32 | def single_word_no_dot():
|
32 | def single_word_no_dot():
|
||||||
33 | """singleword"""
|
33 | """singleword"""
|
||||||
| ^^^^^^^^^^^^^^^^ D403
|
| ^^^^^^^^^^^^^^^^ D403
|
||||||
34 |
|
34 |
|
||||||
35 | def first_word_lots_of_whitespace():
|
35 | def first_word_lots_of_whitespace():
|
||||||
|
|
|
|
||||||
= help: Capitalize `singleword` to `Singleword`
|
= help: Capitalize `singleword` to `Singleword`
|
||||||
|
|
@ -63,17 +62,16 @@ D403.py:33:5: D403 [*] First word of the docstring should be capitalized: `singl
|
||||||
D403.py:36:5: D403 [*] First word of the docstring should be capitalized: `here` -> `Here`
|
D403.py:36:5: D403 [*] First word of the docstring should be capitalized: `here` -> `Here`
|
||||||
|
|
|
|
||||||
35 | def first_word_lots_of_whitespace():
|
35 | def first_word_lots_of_whitespace():
|
||||||
36 | """
|
36 | / """
|
||||||
| _____^
|
37 | |
|
||||||
37 | |
|
38 | |
|
||||||
38 | |
|
39 | |
|
||||||
39 | |
|
|
||||||
40 | | here is the start of my docstring!
|
40 | | here is the start of my docstring!
|
||||||
41 | |
|
41 | |
|
||||||
42 | | What do you think?
|
42 | | What do you think?
|
||||||
43 | | """
|
43 | | """
|
||||||
| |_______^ D403
|
| |_______^ D403
|
||||||
44 |
|
44 |
|
||||||
45 | def single_word_newline():
|
45 | def single_word_newline():
|
||||||
|
|
|
|
||||||
= help: Capitalize `here` to `Here`
|
= help: Capitalize `here` to `Here`
|
||||||
|
|
@ -91,12 +89,11 @@ D403.py:36:5: D403 [*] First word of the docstring should be capitalized: `here`
|
||||||
D403.py:46:5: D403 [*] First word of the docstring should be capitalized: `singleword` -> `Singleword`
|
D403.py:46:5: D403 [*] First word of the docstring should be capitalized: `singleword` -> `Singleword`
|
||||||
|
|
|
|
||||||
45 | def single_word_newline():
|
45 | def single_word_newline():
|
||||||
46 | """singleword
|
46 | / """singleword
|
||||||
| _____^
|
47 | |
|
||||||
47 | |
|
|
||||||
48 | | """
|
48 | | """
|
||||||
| |_______^ D403
|
| |_______^ D403
|
||||||
49 |
|
49 |
|
||||||
50 | def single_word_dot_newline():
|
50 | def single_word_dot_newline():
|
||||||
|
|
|
|
||||||
= help: Capitalize `singleword` to `Singleword`
|
= help: Capitalize `singleword` to `Singleword`
|
||||||
|
|
@ -114,12 +111,11 @@ D403.py:46:5: D403 [*] First word of the docstring should be capitalized: `singl
|
||||||
D403.py:51:5: D403 [*] First word of the docstring should be capitalized: `singleword` -> `Singleword`
|
D403.py:51:5: D403 [*] First word of the docstring should be capitalized: `singleword` -> `Singleword`
|
||||||
|
|
|
|
||||||
50 | def single_word_dot_newline():
|
50 | def single_word_dot_newline():
|
||||||
51 | """singleword.
|
51 | / """singleword.
|
||||||
| _____^
|
52 | |
|
||||||
52 | |
|
|
||||||
53 | | """
|
53 | | """
|
||||||
| |_______^ D403
|
| |_______^ D403
|
||||||
54 |
|
54 |
|
||||||
55 | def single_word_second_line():
|
55 | def single_word_second_line():
|
||||||
|
|
|
|
||||||
= help: Capitalize `singleword` to `Singleword`
|
= help: Capitalize `singleword` to `Singleword`
|
||||||
|
|
@ -137,12 +133,11 @@ D403.py:51:5: D403 [*] First word of the docstring should be capitalized: `singl
|
||||||
D403.py:56:5: D403 [*] First word of the docstring should be capitalized: `singleword` -> `Singleword`
|
D403.py:56:5: D403 [*] First word of the docstring should be capitalized: `singleword` -> `Singleword`
|
||||||
|
|
|
|
||||||
55 | def single_word_second_line():
|
55 | def single_word_second_line():
|
||||||
56 | """
|
56 | / """
|
||||||
| _____^
|
|
||||||
57 | | singleword
|
57 | | singleword
|
||||||
58 | | """
|
58 | | """
|
||||||
| |_______^ D403
|
| |_______^ D403
|
||||||
59 |
|
59 |
|
||||||
60 | def single_word_dot_second_line():
|
60 | def single_word_dot_second_line():
|
||||||
|
|
|
|
||||||
= help: Capitalize `singleword` to `Singleword`
|
= help: Capitalize `singleword` to `Singleword`
|
||||||
|
|
@ -160,12 +155,11 @@ D403.py:56:5: D403 [*] First word of the docstring should be capitalized: `singl
|
||||||
D403.py:61:5: D403 [*] First word of the docstring should be capitalized: `singleword` -> `Singleword`
|
D403.py:61:5: D403 [*] First word of the docstring should be capitalized: `singleword` -> `Singleword`
|
||||||
|
|
|
|
||||||
60 | def single_word_dot_second_line():
|
60 | def single_word_dot_second_line():
|
||||||
61 | """
|
61 | / """
|
||||||
| _____^
|
|
||||||
62 | | singleword.
|
62 | | singleword.
|
||||||
63 | | """
|
63 | | """
|
||||||
| |_______^ D403
|
| |_______^ D403
|
||||||
64 |
|
64 |
|
||||||
65 | def single_word_then_more_text():
|
65 | def single_word_then_more_text():
|
||||||
|
|
|
|
||||||
= help: Capitalize `singleword` to `Singleword`
|
= help: Capitalize `singleword` to `Singleword`
|
||||||
|
|
@ -183,13 +177,12 @@ D403.py:61:5: D403 [*] First word of the docstring should be capitalized: `singl
|
||||||
D403.py:66:5: D403 [*] First word of the docstring should be capitalized: `singleword` -> `Singleword`
|
D403.py:66:5: D403 [*] First word of the docstring should be capitalized: `singleword` -> `Singleword`
|
||||||
|
|
|
|
||||||
65 | def single_word_then_more_text():
|
65 | def single_word_then_more_text():
|
||||||
66 | """singleword
|
66 | / """singleword
|
||||||
| _____^
|
67 | |
|
||||||
67 | |
|
|
||||||
68 | | This is more text.
|
68 | | This is more text.
|
||||||
69 | | """
|
69 | | """
|
||||||
| |_______^ D403
|
| |_______^ D403
|
||||||
70 |
|
70 |
|
||||||
71 | def single_word_dot_then_more_text():
|
71 | def single_word_dot_then_more_text():
|
||||||
|
|
|
|
||||||
= help: Capitalize `singleword` to `Singleword`
|
= help: Capitalize `singleword` to `Singleword`
|
||||||
|
|
@ -207,13 +200,12 @@ D403.py:66:5: D403 [*] First word of the docstring should be capitalized: `singl
|
||||||
D403.py:72:5: D403 [*] First word of the docstring should be capitalized: `singleword` -> `Singleword`
|
D403.py:72:5: D403 [*] First word of the docstring should be capitalized: `singleword` -> `Singleword`
|
||||||
|
|
|
|
||||||
71 | def single_word_dot_then_more_text():
|
71 | def single_word_dot_then_more_text():
|
||||||
72 | """singleword.
|
72 | / """singleword.
|
||||||
| _____^
|
73 | |
|
||||||
73 | |
|
|
||||||
74 | | This is more text.
|
74 | | This is more text.
|
||||||
75 | | """
|
75 | | """
|
||||||
| |_______^ D403
|
| |_______^ D403
|
||||||
76 |
|
76 |
|
||||||
77 | def single_word_second_line_then_more_text():
|
77 | def single_word_second_line_then_more_text():
|
||||||
|
|
|
|
||||||
= help: Capitalize `singleword` to `Singleword`
|
= help: Capitalize `singleword` to `Singleword`
|
||||||
|
|
@ -231,14 +223,13 @@ D403.py:72:5: D403 [*] First word of the docstring should be capitalized: `singl
|
||||||
D403.py:78:5: D403 [*] First word of the docstring should be capitalized: `singleword` -> `Singleword`
|
D403.py:78:5: D403 [*] First word of the docstring should be capitalized: `singleword` -> `Singleword`
|
||||||
|
|
|
|
||||||
77 | def single_word_second_line_then_more_text():
|
77 | def single_word_second_line_then_more_text():
|
||||||
78 | """
|
78 | / """
|
||||||
| _____^
|
|
||||||
79 | | singleword
|
79 | | singleword
|
||||||
80 | |
|
80 | |
|
||||||
81 | | This is more text.
|
81 | | This is more text.
|
||||||
82 | | """
|
82 | | """
|
||||||
| |_______^ D403
|
| |_______^ D403
|
||||||
83 |
|
83 |
|
||||||
84 | def single_word_dot_second_line_then_more_text():
|
84 | def single_word_dot_second_line_then_more_text():
|
||||||
|
|
|
|
||||||
= help: Capitalize `singleword` to `Singleword`
|
= help: Capitalize `singleword` to `Singleword`
|
||||||
|
|
@ -256,10 +247,9 @@ D403.py:78:5: D403 [*] First word of the docstring should be capitalized: `singl
|
||||||
D403.py:85:5: D403 [*] First word of the docstring should be capitalized: `singleword` -> `Singleword`
|
D403.py:85:5: D403 [*] First word of the docstring should be capitalized: `singleword` -> `Singleword`
|
||||||
|
|
|
|
||||||
84 | def single_word_dot_second_line_then_more_text():
|
84 | def single_word_dot_second_line_then_more_text():
|
||||||
85 | """
|
85 | / """
|
||||||
| _____^
|
|
||||||
86 | | singleword.
|
86 | | singleword.
|
||||||
87 | |
|
87 | |
|
||||||
88 | | This is more text.
|
88 | | This is more text.
|
||||||
89 | | """
|
89 | | """
|
||||||
| |_______^ D403
|
| |_______^ D403
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D.py:355:5: D415 [*] First line should end with a period, question mark, or exclamation point
|
D.py:355:5: D415 [*] First line should end with a period, question mark, or exclamation point
|
||||||
|
|
|
|
||||||
|
|
@ -237,9 +236,8 @@ D.py:615:5: D415 [*] First line should end with a period, question mark, or excl
|
||||||
|
|
|
|
||||||
613 | @expect('D212: Multi-line docstring summary should start at the first line')
|
613 | @expect('D212: Multi-line docstring summary should start at the first line')
|
||||||
614 | def one_liner():
|
614 | def one_liner():
|
||||||
615 | """Wrong."
|
615 | / """Wrong."
|
||||||
| _____^
|
616 | |
|
||||||
616 | |
|
|
||||||
617 | | """
|
617 | | """
|
||||||
| |_______^ D415
|
| |_______^ D415
|
||||||
|
|
|
|
||||||
|
|
@ -259,7 +257,7 @@ D.py:639:17: D415 [*] First line should end with a period, question mark, or exc
|
||||||
|
|
|
|
||||||
639 | class SameLine: """This is a docstring on the same line"""
|
639 | class SameLine: """This is a docstring on the same line"""
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D415
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D415
|
||||||
640 |
|
640 |
|
||||||
641 | def same_line(): """This is a docstring on the same line"""
|
641 | def same_line(): """This is a docstring on the same line"""
|
||||||
|
|
|
|
||||||
= help: Add closing punctuation
|
= help: Add closing punctuation
|
||||||
|
|
@ -277,7 +275,7 @@ D.py:639:17: D415 [*] First line should end with a period, question mark, or exc
|
||||||
D.py:641:18: D415 [*] First line should end with a period, question mark, or exclamation point
|
D.py:641:18: D415 [*] First line should end with a period, question mark, or exclamation point
|
||||||
|
|
|
|
||||||
639 | class SameLine: """This is a docstring on the same line"""
|
639 | class SameLine: """This is a docstring on the same line"""
|
||||||
640 |
|
640 |
|
||||||
641 | def same_line(): """This is a docstring on the same line"""
|
641 | def same_line(): """This is a docstring on the same line"""
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D415
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ D415
|
||||||
|
|
|
|
||||||
|
|
@ -296,8 +294,7 @@ D.py:641:18: D415 [*] First line should end with a period, question mark, or exc
|
||||||
D.py:664:5: D415 [*] First line should end with a period, question mark, or exclamation point
|
D.py:664:5: D415 [*] First line should end with a period, question mark, or exclamation point
|
||||||
|
|
|
|
||||||
663 | def newline_after_closing_quote(self):
|
663 | def newline_after_closing_quote(self):
|
||||||
664 | "We enforce a newline after the closing quote for a multi-line docstring \
|
664 | / "We enforce a newline after the closing quote for a multi-line docstring \
|
||||||
| _____^
|
|
||||||
665 | | but continuations shouldn't be considered multi-line"
|
665 | | but continuations shouldn't be considered multi-line"
|
||||||
| |_________________________________________________________^ D415
|
| |_________________________________________________________^ D415
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
source: crates/ruff_linter/src/rules/pydocstyle/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
D209_D400.py:2:5: D209 [*] Multi-line docstring closing quotes should be on a separate line
|
D209_D400.py:2:5: D209 [*] Multi-line docstring closing quotes should be on a separate line
|
||||||
|
|
|
|
||||||
1 | def lorem():
|
1 | def lorem():
|
||||||
2 | """lorem ipsum dolor sit amet consectetur adipiscing elit
|
2 | / """lorem ipsum dolor sit amet consectetur adipiscing elit
|
||||||
| _____^
|
|
||||||
3 | | sed do eiusmod tempor incididunt ut labore et dolore magna aliqua"""
|
3 | | sed do eiusmod tempor incididunt ut labore et dolore magna aliqua"""
|
||||||
| |________________________________________________________________________^ D209
|
| |________________________________________________________________________^ D209
|
||||||
|
|
|
|
||||||
|
|
@ -22,8 +20,7 @@ D209_D400.py:2:5: D209 [*] Multi-line docstring closing quotes should be on a se
|
||||||
D209_D400.py:2:5: D400 [*] First line should end with a period
|
D209_D400.py:2:5: D400 [*] First line should end with a period
|
||||||
|
|
|
|
||||||
1 | def lorem():
|
1 | def lorem():
|
||||||
2 | """lorem ipsum dolor sit amet consectetur adipiscing elit
|
2 | / """lorem ipsum dolor sit amet consectetur adipiscing elit
|
||||||
| _____^
|
|
||||||
3 | | sed do eiusmod tempor incididunt ut labore et dolore magna aliqua"""
|
3 | | sed do eiusmod tempor incididunt ut labore et dolore magna aliqua"""
|
||||||
| |________________________________________________________________________^ D400
|
| |________________________________________________________________________^ D400
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pylint/mod.rs
|
source: crates/ruff_linter/src/rules/pylint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
await_outside_async.py:15:11: PLE1142 `await` should be used within an async function
|
await_outside_async.py:15:11: PLE1142 `await` should be used within an async function
|
||||||
|
|
|
|
||||||
|
|
@ -20,8 +19,7 @@ await_outside_async.py:29:9: PLE1142 `await` should be used within an async func
|
||||||
await_outside_async.py:38:5: PLE1142 `await` should be used within an async function
|
await_outside_async.py:38:5: PLE1142 `await` should be used within an async function
|
||||||
|
|
|
|
||||||
37 | def async_for_loop():
|
37 | def async_for_loop():
|
||||||
38 | async for x in foo():
|
38 | / async for x in foo():
|
||||||
| _____^
|
|
||||||
39 | | pass
|
39 | | pass
|
||||||
| |____________^ PLE1142
|
| |____________^ PLE1142
|
||||||
|
|
|
|
||||||
|
|
@ -29,8 +27,7 @@ await_outside_async.py:38:5: PLE1142 `await` should be used within an async func
|
||||||
await_outside_async.py:43:5: PLE1142 `await` should be used within an async function
|
await_outside_async.py:43:5: PLE1142 `await` should be used within an async function
|
||||||
|
|
|
|
||||||
42 | def async_with():
|
42 | def async_with():
|
||||||
43 | async with foo():
|
43 | / async with foo():
|
||||||
| _____^
|
|
||||||
44 | | pass
|
44 | | pass
|
||||||
| |____________^ PLE1142
|
| |____________^ PLE1142
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,12 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pylint/mod.rs
|
source: crates/ruff_linter/src/rules/pylint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
bad_str_strip_call.py:2:21: PLE1310 String `strip` call contains duplicate characters
|
bad_str_strip_call.py:2:21: PLE1310 String `strip` call contains duplicate characters
|
||||||
|
|
|
|
||||||
1 | # PLE1310
|
1 | # PLE1310
|
||||||
2 | "Hello World".strip("Hello")
|
2 | "Hello World".strip("Hello")
|
||||||
| ^^^^^^^ PLE1310
|
| ^^^^^^^ PLE1310
|
||||||
3 |
|
3 |
|
||||||
4 | # PLE1310
|
4 | # PLE1310
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -16,7 +15,7 @@ bad_str_strip_call.py:5:21: PLE1310 String `strip` call contains duplicate chara
|
||||||
4 | # PLE1310
|
4 | # PLE1310
|
||||||
5 | "Hello World".strip("Hello")
|
5 | "Hello World".strip("Hello")
|
||||||
| ^^^^^^^ PLE1310
|
| ^^^^^^^ PLE1310
|
||||||
6 |
|
6 |
|
||||||
7 | # PLE1310
|
7 | # PLE1310
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -25,7 +24,7 @@ bad_str_strip_call.py:8:21: PLE1310 String `strip` call contains duplicate chara
|
||||||
7 | # PLE1310
|
7 | # PLE1310
|
||||||
8 | "Hello World".strip(u"Hello")
|
8 | "Hello World".strip(u"Hello")
|
||||||
| ^^^^^^^^ PLE1310
|
| ^^^^^^^^ PLE1310
|
||||||
9 |
|
9 |
|
||||||
10 | # PLE1310
|
10 | # PLE1310
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -34,7 +33,7 @@ bad_str_strip_call.py:11:21: PLE1310 String `strip` call contains duplicate char
|
||||||
10 | # PLE1310
|
10 | # PLE1310
|
||||||
11 | "Hello World".strip(r"Hello")
|
11 | "Hello World".strip(r"Hello")
|
||||||
| ^^^^^^^^ PLE1310
|
| ^^^^^^^^ PLE1310
|
||||||
12 |
|
12 |
|
||||||
13 | # PLE1310
|
13 | # PLE1310
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -43,7 +42,7 @@ bad_str_strip_call.py:14:21: PLE1310 String `strip` call contains duplicate char
|
||||||
13 | # PLE1310
|
13 | # PLE1310
|
||||||
14 | "Hello World".strip("Hello\t")
|
14 | "Hello World".strip("Hello\t")
|
||||||
| ^^^^^^^^^ PLE1310
|
| ^^^^^^^^^ PLE1310
|
||||||
15 |
|
15 |
|
||||||
16 | # PLE1310
|
16 | # PLE1310
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -52,7 +51,7 @@ bad_str_strip_call.py:17:21: PLE1310 String `strip` call contains duplicate char
|
||||||
16 | # PLE1310
|
16 | # PLE1310
|
||||||
17 | "Hello World".strip(r"Hello\t")
|
17 | "Hello World".strip(r"Hello\t")
|
||||||
| ^^^^^^^^^^ PLE1310
|
| ^^^^^^^^^^ PLE1310
|
||||||
18 |
|
18 |
|
||||||
19 | # PLE1310
|
19 | # PLE1310
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -61,7 +60,7 @@ bad_str_strip_call.py:20:21: PLE1310 String `strip` call contains duplicate char
|
||||||
19 | # PLE1310
|
19 | # PLE1310
|
||||||
20 | "Hello World".strip("Hello\\")
|
20 | "Hello World".strip("Hello\\")
|
||||||
| ^^^^^^^^^ PLE1310
|
| ^^^^^^^^^ PLE1310
|
||||||
21 |
|
21 |
|
||||||
22 | # PLE1310
|
22 | # PLE1310
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -70,7 +69,7 @@ bad_str_strip_call.py:23:21: PLE1310 String `strip` call contains duplicate char
|
||||||
22 | # PLE1310
|
22 | # PLE1310
|
||||||
23 | "Hello World".strip(r"Hello\\")
|
23 | "Hello World".strip(r"Hello\\")
|
||||||
| ^^^^^^^^^^ PLE1310
|
| ^^^^^^^^^^ PLE1310
|
||||||
24 |
|
24 |
|
||||||
25 | # PLE1310
|
25 | # PLE1310
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -79,7 +78,7 @@ bad_str_strip_call.py:26:21: PLE1310 String `strip` call contains duplicate char
|
||||||
25 | # PLE1310
|
25 | # PLE1310
|
||||||
26 | "Hello World".strip("🤣🤣🤣🤣🙃👀😀")
|
26 | "Hello World".strip("🤣🤣🤣🤣🙃👀😀")
|
||||||
| ^^^^^^^^^^^^^^^^ PLE1310
|
| ^^^^^^^^^^^^^^^^ PLE1310
|
||||||
27 |
|
27 |
|
||||||
28 | # PLE1310
|
28 | # PLE1310
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -87,8 +86,7 @@ bad_str_strip_call.py:30:5: PLE1310 String `strip` call contains duplicate chara
|
||||||
|
|
|
|
||||||
28 | # PLE1310
|
28 | # PLE1310
|
||||||
29 | "Hello World".strip(
|
29 | "Hello World".strip(
|
||||||
30 | """
|
30 | / """
|
||||||
| _____^
|
|
||||||
31 | | there are a lot of characters to strip
|
31 | | there are a lot of characters to strip
|
||||||
32 | | """
|
32 | | """
|
||||||
| |___^ PLE1310
|
| |___^ PLE1310
|
||||||
|
|
@ -103,7 +101,7 @@ bad_str_strip_call.py:36:21: PLE1310 String `strip` call contains duplicate char
|
||||||
37 | | "string of characters to strip " \
|
37 | | "string of characters to strip " \
|
||||||
38 | | "please?")
|
38 | | "please?")
|
||||||
| |_____________________________^ PLE1310
|
| |_____________________________^ PLE1310
|
||||||
39 |
|
39 |
|
||||||
40 | # PLE1310
|
40 | # PLE1310
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -111,8 +109,7 @@ bad_str_strip_call.py:42:5: PLE1310 String `strip` call contains duplicate chara
|
||||||
|
|
|
|
||||||
40 | # PLE1310
|
40 | # PLE1310
|
||||||
41 | "Hello World".strip(
|
41 | "Hello World".strip(
|
||||||
42 | "can we get a long "
|
42 | / "can we get a long "
|
||||||
| _____^
|
|
||||||
43 | | "string of characters to strip "
|
43 | | "string of characters to strip "
|
||||||
44 | | "please?"
|
44 | | "please?"
|
||||||
| |_____________^ PLE1310
|
| |_____________^ PLE1310
|
||||||
|
|
@ -123,8 +120,7 @@ bad_str_strip_call.py:49:5: PLE1310 String `strip` call contains duplicate chara
|
||||||
|
|
|
|
||||||
47 | # PLE1310
|
47 | # PLE1310
|
||||||
48 | "Hello World".strip(
|
48 | "Hello World".strip(
|
||||||
49 | "can \t we get a long"
|
49 | / "can \t we get a long"
|
||||||
| _____^
|
|
||||||
50 | | "string \t of characters to strip"
|
50 | | "string \t of characters to strip"
|
||||||
51 | | "please?"
|
51 | | "please?"
|
||||||
| |_____________^ PLE1310
|
| |_____________^ PLE1310
|
||||||
|
|
@ -136,7 +132,7 @@ bad_str_strip_call.py:61:11: PLE1310 String `strip` call contains duplicate char
|
||||||
60 | # PLE1310
|
60 | # PLE1310
|
||||||
61 | u''.strip('http://')
|
61 | u''.strip('http://')
|
||||||
| ^^^^^^^^^ PLE1310
|
| ^^^^^^^^^ PLE1310
|
||||||
62 |
|
62 |
|
||||||
63 | # PLE1310
|
63 | # PLE1310
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -145,7 +141,7 @@ bad_str_strip_call.py:64:12: PLE1310 String `lstrip` call contains duplicate cha
|
||||||
63 | # PLE1310
|
63 | # PLE1310
|
||||||
64 | u''.lstrip('http://')
|
64 | u''.lstrip('http://')
|
||||||
| ^^^^^^^^^ PLE1310
|
| ^^^^^^^^^ PLE1310
|
||||||
65 |
|
65 |
|
||||||
66 | # PLE1310
|
66 | # PLE1310
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -154,6 +150,6 @@ bad_str_strip_call.py:67:12: PLE1310 String `rstrip` call contains duplicate cha
|
||||||
66 | # PLE1310
|
66 | # PLE1310
|
||||||
67 | b''.rstrip('http://')
|
67 | b''.rstrip('http://')
|
||||||
| ^^^^^^^^^ PLE1310
|
| ^^^^^^^^^ PLE1310
|
||||||
68 |
|
68 |
|
||||||
69 | # OK
|
69 | # OK
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pylint/mod.rs
|
source: crates/ruff_linter/src/rules/pylint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
too_many_nested_blocks.py:2:5: PLR1702 Too many nested blocks (6 > 5)
|
too_many_nested_blocks.py:2:5: PLR1702 Too many nested blocks (6 > 5)
|
||||||
|
|
|
|
||||||
1 | def correct_fruits(fruits) -> bool:
|
1 | def correct_fruits(fruits) -> bool:
|
||||||
2 | if len(fruits) > 1: # PLR1702
|
2 | / if len(fruits) > 1: # PLR1702
|
||||||
| _____^
|
|
||||||
3 | | if "apple" in fruits:
|
3 | | if "apple" in fruits:
|
||||||
4 | | if "orange" in fruits:
|
4 | | if "orange" in fruits:
|
||||||
5 | | count = fruits["orange"]
|
5 | | count = fruits["orange"]
|
||||||
|
|
|
||||||
|
|
@ -349,7 +349,7 @@ boolean_chained_comparison.py:127:4: PLR1716 [*] Contains chained boolean compar
|
||||||
126 | (a < b) and (b < c)
|
126 | (a < b) and (b < c)
|
||||||
127 | (((a < b))) and (b < c)
|
127 | (((a < b))) and (b < c)
|
||||||
| ^^^^^^^^^^^^^^^^^^^ PLR1716
|
| ^^^^^^^^^^^^^^^^^^^ PLR1716
|
||||||
128 |
|
128 |
|
||||||
129 | (a<b) and b<c and ((c<d))
|
129 | (a<b) and b<c and ((c<d))
|
||||||
|
|
|
|
||||||
= help: Use a single compare expression
|
= help: Use a single compare expression
|
||||||
|
|
@ -367,10 +367,10 @@ boolean_chained_comparison.py:127:4: PLR1716 [*] Contains chained boolean compar
|
||||||
boolean_chained_comparison.py:129:2: PLR1716 [*] Contains chained boolean comparison that can be simplified
|
boolean_chained_comparison.py:129:2: PLR1716 [*] Contains chained boolean comparison that can be simplified
|
||||||
|
|
|
|
||||||
127 | (((a < b))) and (b < c)
|
127 | (((a < b))) and (b < c)
|
||||||
128 |
|
128 |
|
||||||
129 | (a<b) and b<c and ((c<d))
|
129 | (a<b) and b<c and ((c<d))
|
||||||
| ^^^^^^^^^^^^ PLR1716
|
| ^^^^^^^^^^^^ PLR1716
|
||||||
130 |
|
130 |
|
||||||
131 | # should error and fix
|
131 | # should error and fix
|
||||||
|
|
|
|
||||||
= help: Use a single compare expression
|
= help: Use a single compare expression
|
||||||
|
|
@ -388,10 +388,10 @@ boolean_chained_comparison.py:129:2: PLR1716 [*] Contains chained boolean compar
|
||||||
boolean_chained_comparison.py:129:11: PLR1716 [*] Contains chained boolean comparison that can be simplified
|
boolean_chained_comparison.py:129:11: PLR1716 [*] Contains chained boolean comparison that can be simplified
|
||||||
|
|
|
|
||||||
127 | (((a < b))) and (b < c)
|
127 | (((a < b))) and (b < c)
|
||||||
128 |
|
128 |
|
||||||
129 | (a<b) and b<c and ((c<d))
|
129 | (a<b) and b<c and ((c<d))
|
||||||
| ^^^^^^^^^^^^^ PLR1716
|
| ^^^^^^^^^^^^^ PLR1716
|
||||||
130 |
|
130 |
|
||||||
131 | # should error and fix
|
131 | # should error and fix
|
||||||
|
|
|
|
||||||
= help: Use a single compare expression
|
= help: Use a single compare expression
|
||||||
|
|
@ -411,7 +411,7 @@ boolean_chained_comparison.py:132:1: PLR1716 [*] Contains chained boolean compar
|
||||||
131 | # should error and fix
|
131 | # should error and fix
|
||||||
132 | a<b<c and c<d
|
132 | a<b<c and c<d
|
||||||
| ^^^^^^^^^^^^^ PLR1716
|
| ^^^^^^^^^^^^^ PLR1716
|
||||||
133 |
|
133 |
|
||||||
134 | # more involved examples (all should error and fix)
|
134 | # more involved examples (all should error and fix)
|
||||||
|
|
|
|
||||||
= help: Use a single compare expression
|
= help: Use a single compare expression
|
||||||
|
|
@ -434,7 +434,7 @@ boolean_chained_comparison.py:135:1: PLR1716 [*] Contains chained boolean compar
|
||||||
137 | | # more comments
|
137 | | # more comments
|
||||||
138 | | ) and b < c
|
138 | | ) and b < c
|
||||||
| |___________^ PLR1716
|
| |___________^ PLR1716
|
||||||
139 |
|
139 |
|
||||||
140 | (
|
140 | (
|
||||||
|
|
|
|
||||||
= help: Use a single compare expression
|
= help: Use a single compare expression
|
||||||
|
|
@ -452,8 +452,7 @@ boolean_chained_comparison.py:135:1: PLR1716 [*] Contains chained boolean compar
|
||||||
boolean_chained_comparison.py:141:5: PLR1716 [*] Contains chained boolean comparison that can be simplified
|
boolean_chained_comparison.py:141:5: PLR1716 [*] Contains chained boolean comparison that can be simplified
|
||||||
|
|
|
|
||||||
140 | (
|
140 | (
|
||||||
141 | a
|
141 | / a
|
||||||
| _____^
|
|
||||||
142 | | <b
|
142 | | <b
|
||||||
143 | | # hmmm...
|
143 | | # hmmm...
|
||||||
144 | | <c
|
144 | | <c
|
||||||
|
|
@ -481,7 +480,7 @@ boolean_chained_comparison.py:141:5: PLR1716 [*] Contains chained boolean compar
|
||||||
boolean_chained_comparison.py:148:1: PLR1716 [*] Contains chained boolean comparison that can be simplified
|
boolean_chained_comparison.py:148:1: PLR1716 [*] Contains chained boolean comparison that can be simplified
|
||||||
|
|
|
|
||||||
146 | )
|
146 | )
|
||||||
147 |
|
147 |
|
||||||
148 | a < (b) and (((b)) < c)
|
148 | a < (b) and (((b)) < c)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ PLR1716
|
| ^^^^^^^^^^^^^^^^^^^^^^ PLR1716
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pylint/mod.rs
|
source: crates/ruff_linter/src/rules/pylint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
if_stmt_min_max.py:8:1: PLR1730 [*] Replace `if` statement with `value = max(value, 10)`
|
if_stmt_min_max.py:8:1: PLR1730 [*] Replace `if` statement with `value = max(value, 10)`
|
||||||
|
|
|
|
||||||
|
|
@ -8,7 +7,7 @@ if_stmt_min_max.py:8:1: PLR1730 [*] Replace `if` statement with `value = max(val
|
||||||
8 | / if value < 10: # [max-instead-of-if]
|
8 | / if value < 10: # [max-instead-of-if]
|
||||||
9 | | value = 10
|
9 | | value = 10
|
||||||
| |______________^ PLR1730
|
| |______________^ PLR1730
|
||||||
10 |
|
10 |
|
||||||
11 | if value <= 10: # [max-instead-of-if]
|
11 | if value <= 10: # [max-instead-of-if]
|
||||||
|
|
|
|
||||||
= help: Replace with `value = max(value, 10)`
|
= help: Replace with `value = max(value, 10)`
|
||||||
|
|
@ -27,11 +26,11 @@ if_stmt_min_max.py:8:1: PLR1730 [*] Replace `if` statement with `value = max(val
|
||||||
if_stmt_min_max.py:11:1: PLR1730 [*] Replace `if` statement with `value = max(10, value)`
|
if_stmt_min_max.py:11:1: PLR1730 [*] Replace `if` statement with `value = max(10, value)`
|
||||||
|
|
|
|
||||||
9 | value = 10
|
9 | value = 10
|
||||||
10 |
|
10 |
|
||||||
11 | / if value <= 10: # [max-instead-of-if]
|
11 | / if value <= 10: # [max-instead-of-if]
|
||||||
12 | | value = 10
|
12 | | value = 10
|
||||||
| |______________^ PLR1730
|
| |______________^ PLR1730
|
||||||
13 |
|
13 |
|
||||||
14 | if value < value2: # [max-instead-of-if]
|
14 | if value < value2: # [max-instead-of-if]
|
||||||
|
|
|
|
||||||
= help: Replace with `value = max(10, value)`
|
= help: Replace with `value = max(10, value)`
|
||||||
|
|
@ -50,11 +49,11 @@ if_stmt_min_max.py:11:1: PLR1730 [*] Replace `if` statement with `value = max(10
|
||||||
if_stmt_min_max.py:14:1: PLR1730 [*] Replace `if` statement with `value = max(value, value2)`
|
if_stmt_min_max.py:14:1: PLR1730 [*] Replace `if` statement with `value = max(value, value2)`
|
||||||
|
|
|
|
||||||
12 | value = 10
|
12 | value = 10
|
||||||
13 |
|
13 |
|
||||||
14 | / if value < value2: # [max-instead-of-if]
|
14 | / if value < value2: # [max-instead-of-if]
|
||||||
15 | | value = value2
|
15 | | value = value2
|
||||||
| |__________________^ PLR1730
|
| |__________________^ PLR1730
|
||||||
16 |
|
16 |
|
||||||
17 | if value > 10: # [min-instead-of-if]
|
17 | if value > 10: # [min-instead-of-if]
|
||||||
|
|
|
|
||||||
= help: Replace with `value = max(value, value2)`
|
= help: Replace with `value = max(value, value2)`
|
||||||
|
|
@ -73,11 +72,11 @@ if_stmt_min_max.py:14:1: PLR1730 [*] Replace `if` statement with `value = max(va
|
||||||
if_stmt_min_max.py:17:1: PLR1730 [*] Replace `if` statement with `value = min(value, 10)`
|
if_stmt_min_max.py:17:1: PLR1730 [*] Replace `if` statement with `value = min(value, 10)`
|
||||||
|
|
|
|
||||||
15 | value = value2
|
15 | value = value2
|
||||||
16 |
|
16 |
|
||||||
17 | / if value > 10: # [min-instead-of-if]
|
17 | / if value > 10: # [min-instead-of-if]
|
||||||
18 | | value = 10
|
18 | | value = 10
|
||||||
| |______________^ PLR1730
|
| |______________^ PLR1730
|
||||||
19 |
|
19 |
|
||||||
20 | if value >= 10: # [min-instead-of-if]
|
20 | if value >= 10: # [min-instead-of-if]
|
||||||
|
|
|
|
||||||
= help: Replace with `value = min(value, 10)`
|
= help: Replace with `value = min(value, 10)`
|
||||||
|
|
@ -96,11 +95,11 @@ if_stmt_min_max.py:17:1: PLR1730 [*] Replace `if` statement with `value = min(va
|
||||||
if_stmt_min_max.py:20:1: PLR1730 [*] Replace `if` statement with `value = min(10, value)`
|
if_stmt_min_max.py:20:1: PLR1730 [*] Replace `if` statement with `value = min(10, value)`
|
||||||
|
|
|
|
||||||
18 | value = 10
|
18 | value = 10
|
||||||
19 |
|
19 |
|
||||||
20 | / if value >= 10: # [min-instead-of-if]
|
20 | / if value >= 10: # [min-instead-of-if]
|
||||||
21 | | value = 10
|
21 | | value = 10
|
||||||
| |______________^ PLR1730
|
| |______________^ PLR1730
|
||||||
22 |
|
22 |
|
||||||
23 | if value > value2: # [min-instead-of-if]
|
23 | if value > value2: # [min-instead-of-if]
|
||||||
|
|
|
|
||||||
= help: Replace with `value = min(10, value)`
|
= help: Replace with `value = min(10, value)`
|
||||||
|
|
@ -119,7 +118,7 @@ if_stmt_min_max.py:20:1: PLR1730 [*] Replace `if` statement with `value = min(10
|
||||||
if_stmt_min_max.py:23:1: PLR1730 [*] Replace `if` statement with `value = min(value, value2)`
|
if_stmt_min_max.py:23:1: PLR1730 [*] Replace `if` statement with `value = min(value, value2)`
|
||||||
|
|
|
|
||||||
21 | value = 10
|
21 | value = 10
|
||||||
22 |
|
22 |
|
||||||
23 | / if value > value2: # [min-instead-of-if]
|
23 | / if value > value2: # [min-instead-of-if]
|
||||||
24 | | value = value2
|
24 | | value = value2
|
||||||
| |__________________^ PLR1730
|
| |__________________^ PLR1730
|
||||||
|
|
@ -143,7 +142,7 @@ if_stmt_min_max.py:33:1: PLR1730 [*] Replace `if` statement with `A1.value = max
|
||||||
33 | / if A1.value < 10: # [max-instead-of-if]
|
33 | / if A1.value < 10: # [max-instead-of-if]
|
||||||
34 | | A1.value = 10
|
34 | | A1.value = 10
|
||||||
| |_________________^ PLR1730
|
| |_________________^ PLR1730
|
||||||
35 |
|
35 |
|
||||||
36 | if A1.value > 10: # [min-instead-of-if]
|
36 | if A1.value > 10: # [min-instead-of-if]
|
||||||
|
|
|
|
||||||
= help: Replace with `A1.value = max(A1.value, 10)`
|
= help: Replace with `A1.value = max(A1.value, 10)`
|
||||||
|
|
@ -162,7 +161,7 @@ if_stmt_min_max.py:33:1: PLR1730 [*] Replace `if` statement with `A1.value = max
|
||||||
if_stmt_min_max.py:36:1: PLR1730 [*] Replace `if` statement with `A1.value = min(A1.value, 10)`
|
if_stmt_min_max.py:36:1: PLR1730 [*] Replace `if` statement with `A1.value = min(A1.value, 10)`
|
||||||
|
|
|
|
||||||
34 | A1.value = 10
|
34 | A1.value = 10
|
||||||
35 |
|
35 |
|
||||||
36 | / if A1.value > 10: # [min-instead-of-if]
|
36 | / if A1.value > 10: # [min-instead-of-if]
|
||||||
37 | | A1.value = 10
|
37 | | A1.value = 10
|
||||||
| |_________________^ PLR1730
|
| |_________________^ PLR1730
|
||||||
|
|
@ -183,11 +182,11 @@ if_stmt_min_max.py:36:1: PLR1730 [*] Replace `if` statement with `A1.value = min
|
||||||
if_stmt_min_max.py:60:1: PLR1730 [*] Replace `if` statement with `A2 = max(A2, A1)`
|
if_stmt_min_max.py:60:1: PLR1730 [*] Replace `if` statement with `A2 = max(A2, A1)`
|
||||||
|
|
|
|
||||||
58 | A2 = AA(3)
|
58 | A2 = AA(3)
|
||||||
59 |
|
59 |
|
||||||
60 | / if A2 < A1: # [max-instead-of-if]
|
60 | / if A2 < A1: # [max-instead-of-if]
|
||||||
61 | | A2 = A1
|
61 | | A2 = A1
|
||||||
| |___________^ PLR1730
|
| |___________^ PLR1730
|
||||||
62 |
|
62 |
|
||||||
63 | if A2 <= A1: # [max-instead-of-if]
|
63 | if A2 <= A1: # [max-instead-of-if]
|
||||||
|
|
|
|
||||||
= help: Replace with `A2 = max(A2, A1)`
|
= help: Replace with `A2 = max(A2, A1)`
|
||||||
|
|
@ -206,11 +205,11 @@ if_stmt_min_max.py:60:1: PLR1730 [*] Replace `if` statement with `A2 = max(A2, A
|
||||||
if_stmt_min_max.py:63:1: PLR1730 [*] Replace `if` statement with `A2 = max(A1, A2)`
|
if_stmt_min_max.py:63:1: PLR1730 [*] Replace `if` statement with `A2 = max(A1, A2)`
|
||||||
|
|
|
|
||||||
61 | A2 = A1
|
61 | A2 = A1
|
||||||
62 |
|
62 |
|
||||||
63 | / if A2 <= A1: # [max-instead-of-if]
|
63 | / if A2 <= A1: # [max-instead-of-if]
|
||||||
64 | | A2 = A1
|
64 | | A2 = A1
|
||||||
| |___________^ PLR1730
|
| |___________^ PLR1730
|
||||||
65 |
|
65 |
|
||||||
66 | if A2 > A1: # [min-instead-of-if]
|
66 | if A2 > A1: # [min-instead-of-if]
|
||||||
|
|
|
|
||||||
= help: Replace with `A2 = max(A1, A2)`
|
= help: Replace with `A2 = max(A1, A2)`
|
||||||
|
|
@ -229,11 +228,11 @@ if_stmt_min_max.py:63:1: PLR1730 [*] Replace `if` statement with `A2 = max(A1, A
|
||||||
if_stmt_min_max.py:66:1: PLR1730 [*] Replace `if` statement with `A2 = min(A2, A1)`
|
if_stmt_min_max.py:66:1: PLR1730 [*] Replace `if` statement with `A2 = min(A2, A1)`
|
||||||
|
|
|
|
||||||
64 | A2 = A1
|
64 | A2 = A1
|
||||||
65 |
|
65 |
|
||||||
66 | / if A2 > A1: # [min-instead-of-if]
|
66 | / if A2 > A1: # [min-instead-of-if]
|
||||||
67 | | A2 = A1
|
67 | | A2 = A1
|
||||||
| |___________^ PLR1730
|
| |___________^ PLR1730
|
||||||
68 |
|
68 |
|
||||||
69 | if A2 >= A1: # [min-instead-of-if]
|
69 | if A2 >= A1: # [min-instead-of-if]
|
||||||
|
|
|
|
||||||
= help: Replace with `A2 = min(A2, A1)`
|
= help: Replace with `A2 = min(A2, A1)`
|
||||||
|
|
@ -252,11 +251,11 @@ if_stmt_min_max.py:66:1: PLR1730 [*] Replace `if` statement with `A2 = min(A2, A
|
||||||
if_stmt_min_max.py:69:1: PLR1730 [*] Replace `if` statement with `A2 = min(A1, A2)`
|
if_stmt_min_max.py:69:1: PLR1730 [*] Replace `if` statement with `A2 = min(A1, A2)`
|
||||||
|
|
|
|
||||||
67 | A2 = A1
|
67 | A2 = A1
|
||||||
68 |
|
68 |
|
||||||
69 | / if A2 >= A1: # [min-instead-of-if]
|
69 | / if A2 >= A1: # [min-instead-of-if]
|
||||||
70 | | A2 = A1
|
70 | | A2 = A1
|
||||||
| |___________^ PLR1730
|
| |___________^ PLR1730
|
||||||
71 |
|
71 |
|
||||||
72 | # Negative
|
72 | # Negative
|
||||||
|
|
|
|
||||||
= help: Replace with `A2 = min(A1, A2)`
|
= help: Replace with `A2 = min(A1, A2)`
|
||||||
|
|
@ -281,7 +280,7 @@ if_stmt_min_max.py:132:1: PLR1730 [*] Replace `if` statement with `min` call
|
||||||
135 | | attr
|
135 | | attr
|
||||||
136 | | ) = 3
|
136 | | ) = 3
|
||||||
| |_________^ PLR1730
|
| |_________^ PLR1730
|
||||||
137 |
|
137 |
|
||||||
138 | class Foo:
|
138 | class Foo:
|
||||||
|
|
|
|
||||||
= help: Replace with `min` call
|
= help: Replace with `min` call
|
||||||
|
|
@ -304,8 +303,7 @@ if_stmt_min_max.py:132:1: PLR1730 [*] Replace `if` statement with `min` call
|
||||||
if_stmt_min_max.py:143:9: PLR1730 [*] Replace `if` statement with `self._min = min(value, self._min)`
|
if_stmt_min_max.py:143:9: PLR1730 [*] Replace `if` statement with `self._min = min(value, self._min)`
|
||||||
|
|
|
|
||||||
142 | def foo(self, value) -> None:
|
142 | def foo(self, value) -> None:
|
||||||
143 | if value < self._min:
|
143 | / if value < self._min:
|
||||||
| _________^
|
|
||||||
144 | | self._min = value
|
144 | | self._min = value
|
||||||
| |_____________________________^ PLR1730
|
| |_____________________________^ PLR1730
|
||||||
145 | if value > self._max:
|
145 | if value > self._max:
|
||||||
|
|
@ -328,11 +326,10 @@ if_stmt_min_max.py:145:9: PLR1730 [*] Replace `if` statement with `self._max = m
|
||||||
|
|
|
|
||||||
143 | if value < self._min:
|
143 | if value < self._min:
|
||||||
144 | self._min = value
|
144 | self._min = value
|
||||||
145 | if value > self._max:
|
145 | / if value > self._max:
|
||||||
| _________^
|
|
||||||
146 | | self._max = value
|
146 | | self._max = value
|
||||||
| |_____________________________^ PLR1730
|
| |_____________________________^ PLR1730
|
||||||
147 |
|
147 |
|
||||||
148 | if self._min < value:
|
148 | if self._min < value:
|
||||||
|
|
|
|
||||||
= help: Replace with `self._max = max(value, self._max)`
|
= help: Replace with `self._max = max(value, self._max)`
|
||||||
|
|
@ -351,9 +348,8 @@ if_stmt_min_max.py:145:9: PLR1730 [*] Replace `if` statement with `self._max = m
|
||||||
if_stmt_min_max.py:148:9: PLR1730 [*] Replace `if` statement with `self._min = max(self._min, value)`
|
if_stmt_min_max.py:148:9: PLR1730 [*] Replace `if` statement with `self._min = max(self._min, value)`
|
||||||
|
|
|
|
||||||
146 | self._max = value
|
146 | self._max = value
|
||||||
147 |
|
147 |
|
||||||
148 | if self._min < value:
|
148 | / if self._min < value:
|
||||||
| _________^
|
|
||||||
149 | | self._min = value
|
149 | | self._min = value
|
||||||
| |_____________________________^ PLR1730
|
| |_____________________________^ PLR1730
|
||||||
150 | if self._max > value:
|
150 | if self._max > value:
|
||||||
|
|
@ -376,11 +372,10 @@ if_stmt_min_max.py:150:9: PLR1730 [*] Replace `if` statement with `self._max = m
|
||||||
|
|
|
|
||||||
148 | if self._min < value:
|
148 | if self._min < value:
|
||||||
149 | self._min = value
|
149 | self._min = value
|
||||||
150 | if self._max > value:
|
150 | / if self._max > value:
|
||||||
| _________^
|
|
||||||
151 | | self._max = value
|
151 | | self._max = value
|
||||||
| |_____________________________^ PLR1730
|
| |_____________________________^ PLR1730
|
||||||
152 |
|
152 |
|
||||||
153 | if value <= self._min:
|
153 | if value <= self._min:
|
||||||
|
|
|
|
||||||
= help: Replace with `self._max = min(self._max, value)`
|
= help: Replace with `self._max = min(self._max, value)`
|
||||||
|
|
@ -399,9 +394,8 @@ if_stmt_min_max.py:150:9: PLR1730 [*] Replace `if` statement with `self._max = m
|
||||||
if_stmt_min_max.py:153:9: PLR1730 [*] Replace `if` statement with `self._min = min(self._min, value)`
|
if_stmt_min_max.py:153:9: PLR1730 [*] Replace `if` statement with `self._min = min(self._min, value)`
|
||||||
|
|
|
|
||||||
151 | self._max = value
|
151 | self._max = value
|
||||||
152 |
|
152 |
|
||||||
153 | if value <= self._min:
|
153 | / if value <= self._min:
|
||||||
| _________^
|
|
||||||
154 | | self._min = value
|
154 | | self._min = value
|
||||||
| |_____________________________^ PLR1730
|
| |_____________________________^ PLR1730
|
||||||
155 | if value >= self._max:
|
155 | if value >= self._max:
|
||||||
|
|
@ -424,11 +418,10 @@ if_stmt_min_max.py:155:9: PLR1730 [*] Replace `if` statement with `self._max = m
|
||||||
|
|
|
|
||||||
153 | if value <= self._min:
|
153 | if value <= self._min:
|
||||||
154 | self._min = value
|
154 | self._min = value
|
||||||
155 | if value >= self._max:
|
155 | / if value >= self._max:
|
||||||
| _________^
|
|
||||||
156 | | self._max = value
|
156 | | self._max = value
|
||||||
| |_____________________________^ PLR1730
|
| |_____________________________^ PLR1730
|
||||||
157 |
|
157 |
|
||||||
158 | if self._min <= value:
|
158 | if self._min <= value:
|
||||||
|
|
|
|
||||||
= help: Replace with `self._max = max(self._max, value)`
|
= help: Replace with `self._max = max(self._max, value)`
|
||||||
|
|
@ -447,9 +440,8 @@ if_stmt_min_max.py:155:9: PLR1730 [*] Replace `if` statement with `self._max = m
|
||||||
if_stmt_min_max.py:158:9: PLR1730 [*] Replace `if` statement with `self._min = max(value, self._min)`
|
if_stmt_min_max.py:158:9: PLR1730 [*] Replace `if` statement with `self._min = max(value, self._min)`
|
||||||
|
|
|
|
||||||
156 | self._max = value
|
156 | self._max = value
|
||||||
157 |
|
157 |
|
||||||
158 | if self._min <= value:
|
158 | / if self._min <= value:
|
||||||
| _________^
|
|
||||||
159 | | self._min = value
|
159 | | self._min = value
|
||||||
| |_____________________________^ PLR1730
|
| |_____________________________^ PLR1730
|
||||||
160 | if self._max >= value:
|
160 | if self._max >= value:
|
||||||
|
|
@ -471,8 +463,7 @@ if_stmt_min_max.py:160:9: PLR1730 [*] Replace `if` statement with `self._max = m
|
||||||
|
|
|
|
||||||
158 | if self._min <= value:
|
158 | if self._min <= value:
|
||||||
159 | self._min = value
|
159 | self._min = value
|
||||||
160 | if self._max >= value:
|
160 | / if self._max >= value:
|
||||||
| _________^
|
|
||||||
161 | | self._max = value
|
161 | | self._max = value
|
||||||
| |_____________________________^ PLR1730
|
| |_____________________________^ PLR1730
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,11 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pylint/mod.rs
|
source: crates/ruff_linter/src/rules/pylint/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
collapsible_else_if.py:37:5: PLR5501 [*] Use `elif` instead of `else` then `if`, to reduce indentation
|
collapsible_else_if.py:37:5: PLR5501 [*] Use `elif` instead of `else` then `if`, to reduce indentation
|
||||||
|
|
|
|
||||||
35 | if 1:
|
35 | if 1:
|
||||||
36 | pass
|
36 | pass
|
||||||
37 | else:
|
37 | / else:
|
||||||
| _____^
|
|
||||||
38 | | if 2:
|
38 | | if 2:
|
||||||
| |________^ PLR5501
|
| |________^ PLR5501
|
||||||
39 | pass
|
39 | pass
|
||||||
|
|
@ -31,8 +29,7 @@ collapsible_else_if.py:45:5: PLR5501 [*] Use `elif` instead of `else` then `if`,
|
||||||
|
|
|
|
||||||
43 | if 1:
|
43 | if 1:
|
||||||
44 | pass
|
44 | pass
|
||||||
45 | else:
|
45 | / else:
|
||||||
| _____^
|
|
||||||
46 | | if 2:
|
46 | | if 2:
|
||||||
| |________^ PLR5501
|
| |________^ PLR5501
|
||||||
47 | pass
|
47 | pass
|
||||||
|
|
@ -60,8 +57,7 @@ collapsible_else_if.py:55:5: PLR5501 [*] Use `elif` instead of `else` then `if`,
|
||||||
|
|
|
|
||||||
53 | if 1:
|
53 | if 1:
|
||||||
54 | pass
|
54 | pass
|
||||||
55 | else:
|
55 | / else:
|
||||||
| _____^
|
|
||||||
56 | | # inner comment
|
56 | | # inner comment
|
||||||
57 | | if 2:
|
57 | | if 2:
|
||||||
| |________^ PLR5501
|
| |________^ PLR5501
|
||||||
|
|
@ -92,8 +88,7 @@ collapsible_else_if.py:69:5: PLR5501 [*] Use `elif` instead of `else` then `if`,
|
||||||
|
|
|
|
||||||
67 | elif True:
|
67 | elif True:
|
||||||
68 | print(2)
|
68 | print(2)
|
||||||
69 | else:
|
69 | / else:
|
||||||
| _____^
|
|
||||||
70 | | if True:
|
70 | | if True:
|
||||||
| |________^ PLR5501
|
| |________^ PLR5501
|
||||||
71 | print(3)
|
71 | print(3)
|
||||||
|
|
@ -121,8 +116,7 @@ collapsible_else_if.py:79:5: PLR5501 [*] Use `elif` instead of `else` then `if`,
|
||||||
|
|
|
|
||||||
77 | if 1:
|
77 | if 1:
|
||||||
78 | pass
|
78 | pass
|
||||||
79 | else:
|
79 | / else:
|
||||||
| _____^
|
|
||||||
80 | | if 2: pass
|
80 | | if 2: pass
|
||||||
| |________^ PLR5501
|
| |________^ PLR5501
|
||||||
81 | else: pass
|
81 | else: pass
|
||||||
|
|
@ -146,8 +140,7 @@ collapsible_else_if.py:87:5: PLR5501 [*] Use `elif` instead of `else` then `if`,
|
||||||
|
|
|
|
||||||
85 | if 1:
|
85 | if 1:
|
||||||
86 | pass
|
86 | pass
|
||||||
87 | else:
|
87 | / else:
|
||||||
| _____^
|
|
||||||
88 | | if 2: pass
|
88 | | if 2: pass
|
||||||
| |________^ PLR5501
|
| |________^ PLR5501
|
||||||
89 | else:
|
89 | else:
|
||||||
|
|
@ -173,8 +166,7 @@ collapsible_else_if.py:96:5: PLR5501 [*] Use `elif` instead of `else` then `if`,
|
||||||
|
|
|
|
||||||
94 | if 1:
|
94 | if 1:
|
||||||
95 | pass
|
95 | pass
|
||||||
96 | else:
|
96 | / else:
|
||||||
| _____^
|
|
||||||
97 | | if 2:
|
97 | | if 2:
|
||||||
| |________^ PLR5501
|
| |________^ PLR5501
|
||||||
98 | pass
|
98 | pass
|
||||||
|
|
@ -201,8 +193,7 @@ collapsible_else_if.py:105:5: PLR5501 [*] Use `elif` instead of `else` then `if`
|
||||||
|
|
|
|
||||||
103 | if 1:
|
103 | if 1:
|
||||||
104 | pass
|
104 | pass
|
||||||
105 | else:
|
105 | / else:
|
||||||
| _____^
|
|
||||||
106 | | # inner comment which happens
|
106 | | # inner comment which happens
|
||||||
107 | | # to be longer than one line
|
107 | | # to be longer than one line
|
||||||
108 | | if 2:
|
108 | | if 2:
|
||||||
|
|
@ -236,8 +227,7 @@ collapsible_else_if.py:117:5: PLR5501 [*] Use `elif` instead of `else` then `if`
|
||||||
|
|
|
|
||||||
115 | if 1:
|
115 | if 1:
|
||||||
116 | pass
|
116 | pass
|
||||||
117 | else:
|
117 | / else:
|
||||||
| _____^
|
|
||||||
118 | | # inner comment which happens to be overly indented
|
118 | | # inner comment which happens to be overly indented
|
||||||
119 | | if 2:
|
119 | | if 2:
|
||||||
| |________^ PLR5501
|
| |________^ PLR5501
|
||||||
|
|
@ -268,8 +258,7 @@ collapsible_else_if.py:128:5: PLR5501 [*] Use `elif` instead of `else` then `if`
|
||||||
|
|
|
|
||||||
126 | if 1:
|
126 | if 1:
|
||||||
127 | pass
|
127 | pass
|
||||||
128 | else:
|
128 | / else:
|
||||||
| _____^
|
|
||||||
129 | | # inner comment which happens to be under indented
|
129 | | # inner comment which happens to be under indented
|
||||||
130 | | if 2:
|
130 | | if 2:
|
||||||
| |________^ PLR5501
|
| |________^ PLR5501
|
||||||
|
|
@ -300,8 +289,7 @@ collapsible_else_if.py:139:5: PLR5501 [*] Use `elif` instead of `else` then `if`
|
||||||
|
|
|
|
||||||
137 | if 1:
|
137 | if 1:
|
||||||
138 | pass
|
138 | pass
|
||||||
139 | else:
|
139 | / else:
|
||||||
| _____^
|
|
||||||
140 | | # inner comment which has mixed
|
140 | | # inner comment which has mixed
|
||||||
141 | | # indentation levels
|
141 | | # indentation levels
|
||||||
142 | | # which is pretty weird
|
142 | | # which is pretty weird
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ unreachable.py:3:5: PLW0101 Unreachable code in `after_return`
|
||||||
2 | return "reachable"
|
2 | return "reachable"
|
||||||
3 | return "unreachable"
|
3 | return "unreachable"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
||||||
4 |
|
4 |
|
||||||
5 | async def also_works_on_async_functions():
|
5 | async def also_works_on_async_functions():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -17,7 +17,7 @@ unreachable.py:7:5: PLW0101 Unreachable code in `also_works_on_async_functions`
|
||||||
6 | return "reachable"
|
6 | return "reachable"
|
||||||
7 | return "unreachable"
|
7 | return "unreachable"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
||||||
8 |
|
8 |
|
||||||
9 | def if_always_true():
|
9 | def if_always_true():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -27,7 +27,7 @@ unreachable.py:12:5: PLW0101 Unreachable code in `if_always_true`
|
||||||
11 | return "reachable"
|
11 | return "reachable"
|
||||||
12 | return "unreachable"
|
12 | return "unreachable"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
||||||
13 |
|
13 |
|
||||||
14 | def if_always_false():
|
14 | def if_always_false():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -44,8 +44,7 @@ unreachable.py:21:9: PLW0101 Unreachable code in `if_elif_always_false`
|
||||||
|
|
|
|
||||||
19 | def if_elif_always_false():
|
19 | def if_elif_always_false():
|
||||||
20 | if False:
|
20 | if False:
|
||||||
21 | return "unreachable"
|
21 | / return "unreachable"
|
||||||
| _________^
|
|
||||||
22 | | elif False:
|
22 | | elif False:
|
||||||
23 | | return "also unreachable"
|
23 | | return "also unreachable"
|
||||||
| |_________________________________^ PLW0101
|
| |_________________________________^ PLW0101
|
||||||
|
|
@ -68,7 +67,7 @@ unreachable.py:31:5: PLW0101 Unreachable code in `if_elif_always_true`
|
||||||
30 | return "reachable"
|
30 | return "reachable"
|
||||||
31 | return "also unreachable"
|
31 | return "also unreachable"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ PLW0101
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^ PLW0101
|
||||||
32 |
|
32 |
|
||||||
33 | def ends_with_if():
|
33 | def ends_with_if():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -88,7 +87,7 @@ unreachable.py:42:5: PLW0101 Unreachable code in `infinite_loop`
|
||||||
41 | continue
|
41 | continue
|
||||||
42 | return "unreachable"
|
42 | return "unreachable"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
||||||
43 |
|
43 |
|
||||||
44 | ''' TODO: we could determine these, but we don't yet.
|
44 | ''' TODO: we could determine these, but we don't yet.
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -98,7 +97,7 @@ unreachable.py:75:5: PLW0101 Unreachable code in `match_wildcard`
|
||||||
74 | return "reachable"
|
74 | return "reachable"
|
||||||
75 | return "unreachable"
|
75 | return "unreachable"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
||||||
76 |
|
76 |
|
||||||
77 | def match_case_and_wildcard(status):
|
77 | def match_case_and_wildcard(status):
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -108,7 +107,7 @@ unreachable.py:83:5: PLW0101 Unreachable code in `match_case_and_wildcard`
|
||||||
82 | return "reachable"
|
82 | return "reachable"
|
||||||
83 | return "unreachable"
|
83 | return "unreachable"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
||||||
84 |
|
84 |
|
||||||
85 | def raise_exception():
|
85 | def raise_exception():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -118,7 +117,7 @@ unreachable.py:87:5: PLW0101 Unreachable code in `raise_exception`
|
||||||
86 | raise Exception
|
86 | raise Exception
|
||||||
87 | return "unreachable"
|
87 | return "unreachable"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
||||||
88 |
|
88 |
|
||||||
89 | def while_false():
|
89 | def while_false():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -157,7 +156,7 @@ unreachable.py:105:5: PLW0101 Unreachable code in `while_false_else_return`
|
||||||
104 | return "reachable"
|
104 | return "reachable"
|
||||||
105 | return "also unreachable"
|
105 | return "also unreachable"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ PLW0101
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^ PLW0101
|
||||||
106 |
|
106 |
|
||||||
107 | def while_true():
|
107 | def while_true():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -167,7 +166,7 @@ unreachable.py:110:5: PLW0101 Unreachable code in `while_true`
|
||||||
109 | return "reachable"
|
109 | return "reachable"
|
||||||
110 | return "unreachable"
|
110 | return "unreachable"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
||||||
111 |
|
111 |
|
||||||
112 | def while_true_else():
|
112 | def while_true_else():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -177,7 +176,7 @@ unreachable.py:116:9: PLW0101 Unreachable code in `while_true_else`
|
||||||
115 | else:
|
115 | else:
|
||||||
116 | return "unreachable"
|
116 | return "unreachable"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
||||||
117 |
|
117 |
|
||||||
118 | def while_true_else_return():
|
118 | def while_true_else_return():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -185,11 +184,10 @@ unreachable.py:122:9: PLW0101 Unreachable code in `while_true_else_return`
|
||||||
|
|
|
|
||||||
120 | return "reachable"
|
120 | return "reachable"
|
||||||
121 | else:
|
121 | else:
|
||||||
122 | return "unreachable"
|
122 | / return "unreachable"
|
||||||
| _________^
|
|
||||||
123 | | return "also unreachable"
|
123 | | return "also unreachable"
|
||||||
| |_____________________________^ PLW0101
|
| |_____________________________^ PLW0101
|
||||||
124 |
|
124 |
|
||||||
125 | def while_false_var_i():
|
125 | def while_false_var_i():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -208,7 +206,7 @@ unreachable.py:135:5: PLW0101 Unreachable code in `while_true_var_i`
|
||||||
134 | i += 1
|
134 | i += 1
|
||||||
135 | return i
|
135 | return i
|
||||||
| ^^^^^^^^ PLW0101
|
| ^^^^^^^^ PLW0101
|
||||||
136 |
|
136 |
|
||||||
137 | def while_infinite():
|
137 | def while_infinite():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -218,7 +216,7 @@ unreachable.py:140:5: PLW0101 Unreachable code in `while_infinite`
|
||||||
139 | pass
|
139 | pass
|
||||||
140 | return "unreachable"
|
140 | return "unreachable"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
||||||
141 |
|
141 |
|
||||||
142 | def while_if_true():
|
142 | def while_if_true():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -228,7 +226,7 @@ unreachable.py:146:5: PLW0101 Unreachable code in `while_if_true`
|
||||||
145 | return "reachable"
|
145 | return "reachable"
|
||||||
146 | return "unreachable"
|
146 | return "unreachable"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
| ^^^^^^^^^^^^^^^^^^^^ PLW0101
|
||||||
147 |
|
147 |
|
||||||
148 | def while_break():
|
148 | def while_break():
|
||||||
|
|
|
|
||||||
|
|
||||||
|
|
@ -245,8 +243,7 @@ unreachable.py:248:5: PLW0101 Unreachable code in `after_return`
|
||||||
|
|
|
|
||||||
246 | def after_return():
|
246 | def after_return():
|
||||||
247 | return "reachable"
|
247 | return "reachable"
|
||||||
248 | print("unreachable")
|
248 | / print("unreachable")
|
||||||
| _____^
|
|
||||||
249 | | print("unreachable")
|
249 | | print("unreachable")
|
||||||
250 | | print("unreachable")
|
250 | | print("unreachable")
|
||||||
251 | | print("unreachable")
|
251 | | print("unreachable")
|
||||||
|
|
@ -258,8 +255,7 @@ unreachable.py:257:5: PLW0101 Unreachable code in `check_if_url_exists`
|
||||||
|
|
|
|
||||||
255 | def check_if_url_exists(url: str) -> bool: # type: ignore[return]
|
255 | def check_if_url_exists(url: str) -> bool: # type: ignore[return]
|
||||||
256 | return True # uncomment to check URLs
|
256 | return True # uncomment to check URLs
|
||||||
257 | response = requests.head(url, allow_redirects=True)
|
257 | / response = requests.head(url, allow_redirects=True)
|
||||||
| _____^
|
|
||||||
258 | | if response.status_code == 200:
|
258 | | if response.status_code == 200:
|
||||||
259 | | return True
|
259 | | return True
|
||||||
260 | | if response.status_code == 404:
|
260 | | if response.status_code == 404:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pyupgrade/mod.rs
|
source: crates/ruff_linter/src/rules/pyupgrade/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
UP012.py:2:1: UP012 [*] Unnecessary call to `encode` as UTF-8
|
UP012.py:2:1: UP012 [*] Unnecessary call to `encode` as UTF-8
|
||||||
|
|
|
|
||||||
|
|
@ -130,7 +129,7 @@ UP012.py:8:1: UP012 [*] Unnecessary call to `encode` as UTF-8
|
||||||
7 | "foo".encode(encoding="utf-8") # b"foo"
|
7 | "foo".encode(encoding="utf-8") # b"foo"
|
||||||
8 | / """
|
8 | / """
|
||||||
9 | | Lorem
|
9 | | Lorem
|
||||||
10 | |
|
10 | |
|
||||||
11 | | Ipsum
|
11 | | Ipsum
|
||||||
12 | | """.encode(
|
12 | | """.encode(
|
||||||
13 | | "utf-8"
|
13 | | "utf-8"
|
||||||
|
|
@ -162,8 +161,7 @@ UP012.py:16:5: UP012 [*] Unnecessary call to `encode` as UTF-8
|
||||||
|
|
|
|
||||||
14 | )
|
14 | )
|
||||||
15 | (
|
15 | (
|
||||||
16 | "Lorem "
|
16 | / "Lorem "
|
||||||
| _____^
|
|
||||||
17 | | "Ipsum".encode()
|
17 | | "Ipsum".encode()
|
||||||
| |____________________^ UP012
|
| |____________________^ UP012
|
||||||
18 | )
|
18 | )
|
||||||
|
|
@ -187,8 +185,7 @@ UP012.py:20:5: UP012 [*] Unnecessary call to `encode` as UTF-8
|
||||||
|
|
|
|
||||||
18 | )
|
18 | )
|
||||||
19 | (
|
19 | (
|
||||||
20 | "Lorem " # Comment
|
20 | / "Lorem " # Comment
|
||||||
| _____^
|
|
||||||
21 | | "Ipsum".encode() # Comment
|
21 | | "Ipsum".encode() # Comment
|
||||||
| |____________________^ UP012
|
| |____________________^ UP012
|
||||||
22 | )
|
22 | )
|
||||||
|
|
@ -256,7 +253,7 @@ UP012.py:36:1: UP012 [*] Unnecessary UTF-8 `encoding` argument to `encode`
|
||||||
37 | | "utf-8",
|
37 | | "utf-8",
|
||||||
38 | | )
|
38 | | )
|
||||||
| |_^ UP012
|
| |_^ UP012
|
||||||
39 |
|
39 |
|
||||||
40 | # `encode` with custom args and kwargs should not be processed.
|
40 | # `encode` with custom args and kwargs should not be processed.
|
||||||
|
|
|
|
||||||
= help: Remove unnecessary `encoding` argument
|
= help: Remove unnecessary `encoding` argument
|
||||||
|
|
@ -299,7 +296,7 @@ UP012.py:55:1: UP012 [*] Unnecessary UTF-8 `encoding` argument to `encode`
|
||||||
54 | "unicode text©".encode()
|
54 | "unicode text©".encode()
|
||||||
55 | "unicode text©".encode(encoding="UTF8") # "unicode text©".encode()
|
55 | "unicode text©".encode(encoding="UTF8") # "unicode text©".encode()
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP012
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP012
|
||||||
56 |
|
56 |
|
||||||
57 | r"foo\o".encode("utf-8") # br"foo\o"
|
57 | r"foo\o".encode("utf-8") # br"foo\o"
|
||||||
|
|
|
|
||||||
= help: Remove unnecessary `encoding` argument
|
= help: Remove unnecessary `encoding` argument
|
||||||
|
|
@ -317,7 +314,7 @@ UP012.py:55:1: UP012 [*] Unnecessary UTF-8 `encoding` argument to `encode`
|
||||||
UP012.py:57:1: UP012 [*] Unnecessary call to `encode` as UTF-8
|
UP012.py:57:1: UP012 [*] Unnecessary call to `encode` as UTF-8
|
||||||
|
|
|
|
||||||
55 | "unicode text©".encode(encoding="UTF8") # "unicode text©".encode()
|
55 | "unicode text©".encode(encoding="UTF8") # "unicode text©".encode()
|
||||||
56 |
|
56 |
|
||||||
57 | r"foo\o".encode("utf-8") # br"foo\o"
|
57 | r"foo\o".encode("utf-8") # br"foo\o"
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ UP012
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ UP012
|
||||||
58 | u"foo".encode("utf-8") # b"foo"
|
58 | u"foo".encode("utf-8") # b"foo"
|
||||||
|
|
@ -402,7 +399,7 @@ UP012.py:61:7: UP012 [*] Unnecessary call to `encode` as UTF-8
|
||||||
60 | U"foo".encode("utf-8") # b"foo"
|
60 | U"foo".encode("utf-8") # b"foo"
|
||||||
61 | print("foo".encode()) # print(b"foo")
|
61 | print("foo".encode()) # print(b"foo")
|
||||||
| ^^^^^^^^^^^^^^ UP012
|
| ^^^^^^^^^^^^^^ UP012
|
||||||
62 |
|
62 |
|
||||||
63 | # `encode` on parenthesized strings.
|
63 | # `encode` on parenthesized strings.
|
||||||
|
|
|
|
||||||
= help: Rewrite as bytes literal
|
= help: Rewrite as bytes literal
|
||||||
|
|
@ -425,7 +422,7 @@ UP012.py:64:1: UP012 [*] Unnecessary call to `encode` as UTF-8
|
||||||
66 | | "def"
|
66 | | "def"
|
||||||
67 | | ).encode()
|
67 | | ).encode()
|
||||||
| |__________^ UP012
|
| |__________^ UP012
|
||||||
68 |
|
68 |
|
||||||
69 | ((
|
69 | ((
|
||||||
|
|
|
|
||||||
= help: Rewrite as bytes literal
|
= help: Rewrite as bytes literal
|
||||||
|
|
@ -447,13 +444,13 @@ UP012.py:64:1: UP012 [*] Unnecessary call to `encode` as UTF-8
|
||||||
UP012.py:69:1: UP012 [*] Unnecessary call to `encode` as UTF-8
|
UP012.py:69:1: UP012 [*] Unnecessary call to `encode` as UTF-8
|
||||||
|
|
|
|
||||||
67 | ).encode()
|
67 | ).encode()
|
||||||
68 |
|
68 |
|
||||||
69 | / ((
|
69 | / ((
|
||||||
70 | | "abc"
|
70 | | "abc"
|
||||||
71 | | "def"
|
71 | | "def"
|
||||||
72 | | )).encode()
|
72 | | )).encode()
|
||||||
| |___________^ UP012
|
| |___________^ UP012
|
||||||
73 |
|
73 |
|
||||||
74 | (f"foo{bar}").encode("utf-8")
|
74 | (f"foo{bar}").encode("utf-8")
|
||||||
|
|
|
|
||||||
= help: Rewrite as bytes literal
|
= help: Rewrite as bytes literal
|
||||||
|
|
@ -475,7 +472,7 @@ UP012.py:69:1: UP012 [*] Unnecessary call to `encode` as UTF-8
|
||||||
UP012.py:74:1: UP012 [*] Unnecessary UTF-8 `encoding` argument to `encode`
|
UP012.py:74:1: UP012 [*] Unnecessary UTF-8 `encoding` argument to `encode`
|
||||||
|
|
|
|
||||||
72 | )).encode()
|
72 | )).encode()
|
||||||
73 |
|
73 |
|
||||||
74 | (f"foo{bar}").encode("utf-8")
|
74 | (f"foo{bar}").encode("utf-8")
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP012
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP012
|
||||||
75 | (f"foo{bar}").encode(encoding="utf-8")
|
75 | (f"foo{bar}").encode(encoding="utf-8")
|
||||||
|
|
@ -558,7 +555,7 @@ UP012.py:82:17: UP012 [*] Unnecessary call to `encode` as UTF-8
|
||||||
81 | def _match_ignore(line):
|
81 | def _match_ignore(line):
|
||||||
82 | input=stdin and'\n'.encode()or None
|
82 | input=stdin and'\n'.encode()or None
|
||||||
| ^^^^^^^^^^^^^ UP012
|
| ^^^^^^^^^^^^^ UP012
|
||||||
83 |
|
83 |
|
||||||
84 | # Not a valid type annotation but this test shouldn't result in a panic.
|
84 | # Not a valid type annotation but this test shouldn't result in a panic.
|
||||||
|
|
|
|
||||||
= help: Rewrite as bytes literal
|
= help: Rewrite as bytes literal
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pyupgrade/mod.rs
|
source: crates/ruff_linter/src/rules/pyupgrade/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
UP026.py:3:12: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
UP026.py:3:12: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
|
|
|
|
||||||
|
|
@ -8,7 +7,7 @@ UP026.py:3:12: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
2 | if True:
|
2 | if True:
|
||||||
3 | import mock
|
3 | import mock
|
||||||
| ^^^^ UP026
|
| ^^^^ UP026
|
||||||
4 |
|
4 |
|
||||||
5 | # Error (`from unittest import mock`)
|
5 | # Error (`from unittest import mock`)
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -28,7 +27,7 @@ UP026.py:7:12: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
6 | if True:
|
6 | if True:
|
||||||
7 | import mock, sys
|
7 | import mock, sys
|
||||||
| ^^^^ UP026
|
| ^^^^ UP026
|
||||||
8 |
|
8 |
|
||||||
9 | # Error (`from unittest.mock import *`)
|
9 | # Error (`from unittest.mock import *`)
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -50,7 +49,7 @@ UP026.py:11:5: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
10 | if True:
|
10 | if True:
|
||||||
11 | from mock import *
|
11 | from mock import *
|
||||||
| ^^^^^^^^^^^^^^^^^^ UP026
|
| ^^^^^^^^^^^^^^^^^^ UP026
|
||||||
12 |
|
12 |
|
||||||
13 | # Error (`from unittest import mock`)
|
13 | # Error (`from unittest import mock`)
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -70,7 +69,7 @@ UP026.py:14:8: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
13 | # Error (`from unittest import mock`)
|
13 | # Error (`from unittest import mock`)
|
||||||
14 | import mock.mock
|
14 | import mock.mock
|
||||||
| ^^^^^^^^^ UP026
|
| ^^^^^^^^^ UP026
|
||||||
15 |
|
15 |
|
||||||
16 | # Error (`from unittest import mock`)
|
16 | # Error (`from unittest import mock`)
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -90,7 +89,7 @@ UP026.py:17:20: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
16 | # Error (`from unittest import mock`)
|
16 | # Error (`from unittest import mock`)
|
||||||
17 | import contextlib, mock, sys
|
17 | import contextlib, mock, sys
|
||||||
| ^^^^ UP026
|
| ^^^^ UP026
|
||||||
18 |
|
18 |
|
||||||
19 | # Error (`from unittest import mock`)
|
19 | # Error (`from unittest import mock`)
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -131,7 +130,7 @@ UP026.py:24:1: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
23 | # Error (`from unittest import mock`)
|
23 | # Error (`from unittest import mock`)
|
||||||
24 | from mock import mock
|
24 | from mock import mock
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ UP026
|
| ^^^^^^^^^^^^^^^^^^^^^ UP026
|
||||||
25 |
|
25 |
|
||||||
26 | # Error (keep trailing comma)
|
26 | # Error (keep trailing comma)
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -188,7 +187,7 @@ UP026.py:33:1: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
37 | | mock,
|
37 | | mock,
|
||||||
38 | | )
|
38 | | )
|
||||||
| |_^ UP026
|
| |_^ UP026
|
||||||
39 |
|
39 |
|
||||||
40 | # Error (avoid trailing comma)
|
40 | # Error (avoid trailing comma)
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -300,7 +299,7 @@ UP026.py:54:1: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
53 | from mock import mock, a, b, c
|
53 | from mock import mock, a, b, c
|
||||||
54 | from mock import a, b, c, mock
|
54 | from mock import a, b, c, mock
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP026
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP026
|
||||||
55 |
|
55 |
|
||||||
56 | if True:
|
56 | if True:
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -320,15 +319,14 @@ UP026.py:58:9: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
|
|
|
|
||||||
56 | if True:
|
56 | if True:
|
||||||
57 | if False:
|
57 | if False:
|
||||||
58 | from mock import (
|
58 | / from mock import (
|
||||||
| _________^
|
|
||||||
59 | | mock,
|
59 | | mock,
|
||||||
60 | | a,
|
60 | | a,
|
||||||
61 | | b,
|
61 | | b,
|
||||||
62 | | c
|
62 | | c
|
||||||
63 | | )
|
63 | | )
|
||||||
| |_________^ UP026
|
| |_________^ UP026
|
||||||
64 |
|
64 |
|
||||||
65 | # OK
|
65 | # OK
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -354,7 +352,7 @@ UP026.py:69:8: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
68 | # Error (`from unittest import mock`)
|
68 | # Error (`from unittest import mock`)
|
||||||
69 | import mock, mock
|
69 | import mock, mock
|
||||||
| ^^^^ UP026
|
| ^^^^ UP026
|
||||||
70 |
|
70 |
|
||||||
71 | # Error (`from unittest import mock as foo`)
|
71 | # Error (`from unittest import mock as foo`)
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -375,7 +373,7 @@ UP026.py:69:14: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
68 | # Error (`from unittest import mock`)
|
68 | # Error (`from unittest import mock`)
|
||||||
69 | import mock, mock
|
69 | import mock, mock
|
||||||
| ^^^^ UP026
|
| ^^^^ UP026
|
||||||
70 |
|
70 |
|
||||||
71 | # Error (`from unittest import mock as foo`)
|
71 | # Error (`from unittest import mock as foo`)
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -396,7 +394,7 @@ UP026.py:72:8: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
71 | # Error (`from unittest import mock as foo`)
|
71 | # Error (`from unittest import mock as foo`)
|
||||||
72 | import mock as foo
|
72 | import mock as foo
|
||||||
| ^^^^^^^^^^^ UP026
|
| ^^^^^^^^^^^ UP026
|
||||||
73 |
|
73 |
|
||||||
74 | # Error (`from unittest import mock as foo`)
|
74 | # Error (`from unittest import mock as foo`)
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -416,7 +414,7 @@ UP026.py:75:1: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
74 | # Error (`from unittest import mock as foo`)
|
74 | # Error (`from unittest import mock as foo`)
|
||||||
75 | from mock import mock as foo
|
75 | from mock import mock as foo
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP026
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP026
|
||||||
76 |
|
76 |
|
||||||
77 | if True:
|
77 | if True:
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -437,7 +435,7 @@ UP026.py:79:12: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
78 | # This should yield multiple, aliased imports.
|
78 | # This should yield multiple, aliased imports.
|
||||||
79 | import mock as foo, mock as bar, mock
|
79 | import mock as foo, mock as bar, mock
|
||||||
| ^^^^^^^^^^^ UP026
|
| ^^^^^^^^^^^ UP026
|
||||||
80 |
|
80 |
|
||||||
81 | # This should yield multiple, aliased imports, and preserve `os`.
|
81 | # This should yield multiple, aliased imports, and preserve `os`.
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -460,7 +458,7 @@ UP026.py:79:25: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
78 | # This should yield multiple, aliased imports.
|
78 | # This should yield multiple, aliased imports.
|
||||||
79 | import mock as foo, mock as bar, mock
|
79 | import mock as foo, mock as bar, mock
|
||||||
| ^^^^^^^^^^^ UP026
|
| ^^^^^^^^^^^ UP026
|
||||||
80 |
|
80 |
|
||||||
81 | # This should yield multiple, aliased imports, and preserve `os`.
|
81 | # This should yield multiple, aliased imports, and preserve `os`.
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -483,7 +481,7 @@ UP026.py:79:38: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
78 | # This should yield multiple, aliased imports.
|
78 | # This should yield multiple, aliased imports.
|
||||||
79 | import mock as foo, mock as bar, mock
|
79 | import mock as foo, mock as bar, mock
|
||||||
| ^^^^ UP026
|
| ^^^^ UP026
|
||||||
80 |
|
80 |
|
||||||
81 | # This should yield multiple, aliased imports, and preserve `os`.
|
81 | # This should yield multiple, aliased imports, and preserve `os`.
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -505,7 +503,7 @@ UP026.py:82:12: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
81 | # This should yield multiple, aliased imports, and preserve `os`.
|
81 | # This should yield multiple, aliased imports, and preserve `os`.
|
||||||
82 | import mock as foo, mock as bar, mock, os
|
82 | import mock as foo, mock as bar, mock, os
|
||||||
| ^^^^^^^^^^^ UP026
|
| ^^^^^^^^^^^ UP026
|
||||||
83 |
|
83 |
|
||||||
84 | if True:
|
84 | if True:
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -528,7 +526,7 @@ UP026.py:82:25: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
81 | # This should yield multiple, aliased imports, and preserve `os`.
|
81 | # This should yield multiple, aliased imports, and preserve `os`.
|
||||||
82 | import mock as foo, mock as bar, mock, os
|
82 | import mock as foo, mock as bar, mock, os
|
||||||
| ^^^^^^^^^^^ UP026
|
| ^^^^^^^^^^^ UP026
|
||||||
83 |
|
83 |
|
||||||
84 | if True:
|
84 | if True:
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
@ -551,7 +549,7 @@ UP026.py:82:38: UP026 [*] `mock` is deprecated, use `unittest.mock`
|
||||||
81 | # This should yield multiple, aliased imports, and preserve `os`.
|
81 | # This should yield multiple, aliased imports, and preserve `os`.
|
||||||
82 | import mock as foo, mock as bar, mock, os
|
82 | import mock as foo, mock as bar, mock, os
|
||||||
| ^^^^ UP026
|
| ^^^^ UP026
|
||||||
83 |
|
83 |
|
||||||
84 | if True:
|
84 | if True:
|
||||||
|
|
|
|
||||||
= help: Import from `unittest.mock` instead
|
= help: Import from `unittest.mock` instead
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pyupgrade/mod.rs
|
source: crates/ruff_linter/src/rules/pyupgrade/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
UP028_0.py:2:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
UP028_0.py:2:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
|
|
|
|
||||||
1 | def f():
|
1 | def f():
|
||||||
2 | for x in y:
|
2 | / for x in y:
|
||||||
| _____^
|
|
||||||
3 | | yield x
|
3 | | yield x
|
||||||
| |_______________^ UP028
|
| |_______________^ UP028
|
||||||
|
|
|
|
||||||
|
|
@ -24,8 +22,7 @@ UP028_0.py:2:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
UP028_0.py:7:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
UP028_0.py:7:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
|
|
|
|
||||||
6 | def g():
|
6 | def g():
|
||||||
7 | for x, y in z:
|
7 | / for x, y in z:
|
||||||
| _____^
|
|
||||||
8 | | yield (x, y)
|
8 | | yield (x, y)
|
||||||
| |____________________^ UP028
|
| |____________________^ UP028
|
||||||
|
|
|
|
||||||
|
|
@ -45,8 +42,7 @@ UP028_0.py:7:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
UP028_0.py:12:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
UP028_0.py:12:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
|
|
|
|
||||||
11 | def h():
|
11 | def h():
|
||||||
12 | for x in [1, 2, 3]:
|
12 | / for x in [1, 2, 3]:
|
||||||
| _____^
|
|
||||||
13 | | yield x
|
13 | | yield x
|
||||||
| |_______________^ UP028
|
| |_______________^ UP028
|
||||||
|
|
|
|
||||||
|
|
@ -66,8 +62,7 @@ UP028_0.py:12:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
UP028_0.py:17:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
UP028_0.py:17:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
|
|
|
|
||||||
16 | def i():
|
16 | def i():
|
||||||
17 | for x in {x for x in y}:
|
17 | / for x in {x for x in y}:
|
||||||
| _____^
|
|
||||||
18 | | yield x
|
18 | | yield x
|
||||||
| |_______________^ UP028
|
| |_______________^ UP028
|
||||||
|
|
|
|
||||||
|
|
@ -87,8 +82,7 @@ UP028_0.py:17:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
UP028_0.py:22:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
UP028_0.py:22:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
|
|
|
|
||||||
21 | def j():
|
21 | def j():
|
||||||
22 | for x in (1, 2, 3):
|
22 | / for x in (1, 2, 3):
|
||||||
| _____^
|
|
||||||
23 | | yield x
|
23 | | yield x
|
||||||
| |_______________^ UP028
|
| |_______________^ UP028
|
||||||
|
|
|
|
||||||
|
|
@ -108,8 +102,7 @@ UP028_0.py:22:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
UP028_0.py:27:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
UP028_0.py:27:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
|
|
|
|
||||||
26 | def k():
|
26 | def k():
|
||||||
27 | for x, y in {3: "x", 6: "y"}:
|
27 | / for x, y in {3: "x", 6: "y"}:
|
||||||
| _____^
|
|
||||||
28 | | yield x, y
|
28 | | yield x, y
|
||||||
| |__________________^ UP028
|
| |__________________^ UP028
|
||||||
|
|
|
|
||||||
|
|
@ -130,8 +123,7 @@ UP028_0.py:33:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
|
|
|
|
||||||
31 | def f(): # Comment one\n'
|
31 | def f(): # Comment one\n'
|
||||||
32 | # Comment two\n'
|
32 | # Comment two\n'
|
||||||
33 | for x, y in { # Comment three\n'
|
33 | / for x, y in { # Comment three\n'
|
||||||
| _____^
|
|
||||||
34 | | 3: "x", # Comment four\n'
|
34 | | 3: "x", # Comment four\n'
|
||||||
35 | | # Comment five\n'
|
35 | | # Comment five\n'
|
||||||
36 | | 6: "y", # Comment six\n'
|
36 | | 6: "y", # Comment six\n'
|
||||||
|
|
@ -163,8 +155,7 @@ UP028_0.py:33:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
UP028_0.py:44:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
UP028_0.py:44:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
|
|
|
|
||||||
43 | def f():
|
43 | def f():
|
||||||
44 | for x, y in [{3: (3, [44, "long ss"]), 6: "y"}]:
|
44 | / for x, y in [{3: (3, [44, "long ss"]), 6: "y"}]:
|
||||||
| _____^
|
|
||||||
45 | | yield x, y
|
45 | | yield x, y
|
||||||
| |__________________^ UP028
|
| |__________________^ UP028
|
||||||
|
|
|
|
||||||
|
|
@ -184,11 +175,10 @@ UP028_0.py:44:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
UP028_0.py:49:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
UP028_0.py:49:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
|
|
|
|
||||||
48 | def f():
|
48 | def f():
|
||||||
49 | for x, y in z():
|
49 | / for x, y in z():
|
||||||
| _____^
|
|
||||||
50 | | yield x, y
|
50 | | yield x, y
|
||||||
| |__________________^ UP028
|
| |__________________^ UP028
|
||||||
51 |
|
51 |
|
||||||
52 | def f():
|
52 | def f():
|
||||||
|
|
|
|
||||||
= help: Replace with `yield from`
|
= help: Replace with `yield from`
|
||||||
|
|
@ -208,8 +198,7 @@ UP028_0.py:55:9: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
|
|
|
|
||||||
53 | def func():
|
53 | def func():
|
||||||
54 | # This comment is preserved\n'
|
54 | # This comment is preserved\n'
|
||||||
55 | for x, y in z(): # Comment one\n'
|
55 | / for x, y in z(): # Comment one\n'
|
||||||
| _________^
|
|
||||||
56 | | # Comment two\n'
|
56 | | # Comment two\n'
|
||||||
57 | | yield x, y # Comment three\n'
|
57 | | yield x, y # Comment three\n'
|
||||||
| |______________________^ UP028
|
| |______________________^ UP028
|
||||||
|
|
@ -234,8 +223,7 @@ UP028_0.py:67:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
|
|
|
|
||||||
65 | for x in y:
|
65 | for x in y:
|
||||||
66 | yield x
|
66 | yield x
|
||||||
67 | for z in x:
|
67 | / for z in x:
|
||||||
| _____^
|
|
||||||
68 | | yield z
|
68 | | yield z
|
||||||
| |_______________^ UP028
|
| |_______________^ UP028
|
||||||
|
|
|
|
||||||
|
|
@ -255,8 +243,7 @@ UP028_0.py:67:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
UP028_0.py:72:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
UP028_0.py:72:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
|
|
|
|
||||||
71 | def f():
|
71 | def f():
|
||||||
72 | for x, y in z():
|
72 | / for x, y in z():
|
||||||
| _____^
|
|
||||||
73 | | yield x, y
|
73 | | yield x, y
|
||||||
| |__________________^ UP028
|
| |__________________^ UP028
|
||||||
74 | x = 1
|
74 | x = 1
|
||||||
|
|
@ -278,8 +265,7 @@ UP028_0.py:79:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
|
|
|
|
||||||
77 | # Regression test for: https://github.com/astral-sh/ruff/issues/7103
|
77 | # Regression test for: https://github.com/astral-sh/ruff/issues/7103
|
||||||
78 | def _serve_method(fn):
|
78 | def _serve_method(fn):
|
||||||
79 | for h in (
|
79 | / for h in (
|
||||||
| _____^
|
|
||||||
80 | | TaggedText.from_file(args.input)
|
80 | | TaggedText.from_file(args.input)
|
||||||
81 | | .markup(highlight=args.region)
|
81 | | .markup(highlight=args.region)
|
||||||
82 | | ):
|
82 | | ):
|
||||||
|
|
@ -307,8 +293,7 @@ UP028_0.py:97:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
|
|
|
|
||||||
95 | # UP028: The exception binding is not a reference to the loop variable
|
95 | # UP028: The exception binding is not a reference to the loop variable
|
||||||
96 | def f():
|
96 | def f():
|
||||||
97 | for x in (1, 2, 3):
|
97 | / for x in (1, 2, 3):
|
||||||
| _____^
|
|
||||||
98 | | yield x
|
98 | | yield x
|
||||||
| |_______________^ UP028
|
| |_______________^ UP028
|
||||||
99 | # Shadowing with an `except`
|
99 | # Shadowing with an `except`
|
||||||
|
|
@ -331,8 +316,7 @@ UP028_0.py:108:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
|
|
|
|
||||||
106 | # UP028: The context binding is not a reference to the loop variable
|
106 | # UP028: The context binding is not a reference to the loop variable
|
||||||
107 | def f():
|
107 | def f():
|
||||||
108 | for x in (1, 2, 3):
|
108 | / for x in (1, 2, 3):
|
||||||
| _____^
|
|
||||||
109 | | yield x
|
109 | | yield x
|
||||||
| |_______________^ UP028
|
| |_______________^ UP028
|
||||||
110 | # Shadowing with `with`
|
110 | # Shadowing with `with`
|
||||||
|
|
@ -355,8 +339,7 @@ UP028_0.py:118:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
|
|
|
|
||||||
116 | # UP028: The type annotation binding is not a reference to the loop variable
|
116 | # UP028: The type annotation binding is not a reference to the loop variable
|
||||||
117 | def f():
|
117 | def f():
|
||||||
118 | for x in (1, 2, 3):
|
118 | / for x in (1, 2, 3):
|
||||||
| _____^
|
|
||||||
119 | | yield x
|
119 | | yield x
|
||||||
| |_______________^ UP028
|
| |_______________^ UP028
|
||||||
120 | # Shadowing with a type annotation
|
120 | # Shadowing with a type annotation
|
||||||
|
|
@ -379,8 +362,7 @@ UP028_0.py:134:5: UP028 [*] Replace `yield` over `for` loop with `yield from`
|
||||||
|
|
|
|
||||||
132 | # UP028: The exception bindings are not a reference to the loop variable
|
132 | # UP028: The exception bindings are not a reference to the loop variable
|
||||||
133 | def f():
|
133 | def f():
|
||||||
134 | for x in (1, 2, 3):
|
134 | / for x in (1, 2, 3):
|
||||||
| _____^
|
|
||||||
135 | | yield x
|
135 | | yield x
|
||||||
| |_______________^ UP028
|
| |_______________^ UP028
|
||||||
136 | # Shadowing with multiple `except` blocks
|
136 | # Shadowing with multiple `except` blocks
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,13 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pyupgrade/mod.rs
|
source: crates/ruff_linter/src/rules/pyupgrade/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
UP030_0.py:3:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:3:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
1 | # Invalid calls; errors expected.
|
1 | # Invalid calls; errors expected.
|
||||||
2 |
|
2 |
|
||||||
3 | "{0}" "{1}" "{2}".format(1, 2, 3)
|
3 | "{0}" "{1}" "{2}".format(1, 2, 3)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
||||||
4 |
|
4 |
|
||||||
5 | "a {3} complicated {1} string with {0} {2}".format(
|
5 | "a {3} complicated {1} string with {0} {2}".format(
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -25,12 +24,12 @@ UP030_0.py:3:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:5:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:5:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
3 | "{0}" "{1}" "{2}".format(1, 2, 3)
|
3 | "{0}" "{1}" "{2}".format(1, 2, 3)
|
||||||
4 |
|
4 |
|
||||||
5 | / "a {3} complicated {1} string with {0} {2}".format(
|
5 | / "a {3} complicated {1} string with {0} {2}".format(
|
||||||
6 | | "first", "second", "third", "fourth"
|
6 | | "first", "second", "third", "fourth"
|
||||||
7 | | )
|
7 | | )
|
||||||
| |_^ UP030
|
| |_^ UP030
|
||||||
8 |
|
8 |
|
||||||
9 | '{0}'.format(1)
|
9 | '{0}'.format(1)
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -50,10 +49,10 @@ UP030_0.py:5:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:9:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:9:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
7 | )
|
7 | )
|
||||||
8 |
|
8 |
|
||||||
9 | '{0}'.format(1)
|
9 | '{0}'.format(1)
|
||||||
| ^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^ UP030
|
||||||
10 |
|
10 |
|
||||||
11 | '{0:x}'.format(30)
|
11 | '{0:x}'.format(30)
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -71,10 +70,10 @@ UP030_0.py:9:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:11:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:11:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
9 | '{0}'.format(1)
|
9 | '{0}'.format(1)
|
||||||
10 |
|
10 |
|
||||||
11 | '{0:x}'.format(30)
|
11 | '{0:x}'.format(30)
|
||||||
| ^^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^^ UP030
|
||||||
12 |
|
12 |
|
||||||
13 | x = '{0}'.format(1)
|
13 | x = '{0}'.format(1)
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -92,10 +91,10 @@ UP030_0.py:11:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:13:5: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:13:5: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
11 | '{0:x}'.format(30)
|
11 | '{0:x}'.format(30)
|
||||||
12 |
|
12 |
|
||||||
13 | x = '{0}'.format(1)
|
13 | x = '{0}'.format(1)
|
||||||
| ^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^ UP030
|
||||||
14 |
|
14 |
|
||||||
15 | '''{0}\n{1}\n'''.format(1, 2)
|
15 | '''{0}\n{1}\n'''.format(1, 2)
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -113,10 +112,10 @@ UP030_0.py:13:5: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:15:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:15:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
13 | x = '{0}'.format(1)
|
13 | x = '{0}'.format(1)
|
||||||
14 |
|
14 |
|
||||||
15 | '''{0}\n{1}\n'''.format(1, 2)
|
15 | '''{0}\n{1}\n'''.format(1, 2)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
||||||
16 |
|
16 |
|
||||||
17 | x = "foo {0}" \
|
17 | x = "foo {0}" \
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -134,12 +133,12 @@ UP030_0.py:15:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:17:5: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:17:5: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
15 | '''{0}\n{1}\n'''.format(1, 2)
|
15 | '''{0}\n{1}\n'''.format(1, 2)
|
||||||
16 |
|
16 |
|
||||||
17 | x = "foo {0}" \
|
17 | x = "foo {0}" \
|
||||||
| _____^
|
| _____^
|
||||||
18 | | "bar {1}".format(1, 2)
|
18 | | "bar {1}".format(1, 2)
|
||||||
| |__________________________^ UP030
|
| |__________________________^ UP030
|
||||||
19 |
|
19 |
|
||||||
20 | ("{0}").format(1)
|
20 | ("{0}").format(1)
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -159,10 +158,10 @@ UP030_0.py:17:5: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:20:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:20:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
18 | "bar {1}".format(1, 2)
|
18 | "bar {1}".format(1, 2)
|
||||||
19 |
|
19 |
|
||||||
20 | ("{0}").format(1)
|
20 | ("{0}").format(1)
|
||||||
| ^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^ UP030
|
||||||
21 |
|
21 |
|
||||||
22 | "\N{snowman} {0}".format(1)
|
22 | "\N{snowman} {0}".format(1)
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -180,10 +179,10 @@ UP030_0.py:20:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:22:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:22:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
20 | ("{0}").format(1)
|
20 | ("{0}").format(1)
|
||||||
21 |
|
21 |
|
||||||
22 | "\N{snowman} {0}".format(1)
|
22 | "\N{snowman} {0}".format(1)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
||||||
23 |
|
23 |
|
||||||
24 | print(
|
24 | print(
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -201,8 +200,7 @@ UP030_0.py:22:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:25:5: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:25:5: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
24 | print(
|
24 | print(
|
||||||
25 | 'foo{0}'
|
25 | / 'foo{0}'
|
||||||
| _____^
|
|
||||||
26 | | 'bar{1}'.format(1, 2)
|
26 | | 'bar{1}'.format(1, 2)
|
||||||
| |_________________________^ UP030
|
| |_________________________^ UP030
|
||||||
27 | )
|
27 | )
|
||||||
|
|
@ -224,8 +222,7 @@ UP030_0.py:25:5: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:30:5: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:30:5: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
29 | print(
|
29 | print(
|
||||||
30 | 'foo{0}' # ohai\n"
|
30 | / 'foo{0}' # ohai\n"
|
||||||
| _____^
|
|
||||||
31 | | 'bar{1}'.format(1, 2)
|
31 | | 'bar{1}'.format(1, 2)
|
||||||
| |_________________________^ UP030
|
| |_________________________^ UP030
|
||||||
32 | )
|
32 | )
|
||||||
|
|
@ -247,10 +244,10 @@ UP030_0.py:30:5: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:34:1: UP030 Use implicit references for positional format fields
|
UP030_0.py:34:1: UP030 Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
32 | )
|
32 | )
|
||||||
33 |
|
33 |
|
||||||
34 | '{' '0}'.format(1)
|
34 | '{' '0}'.format(1)
|
||||||
| ^^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^^ UP030
|
||||||
35 |
|
35 |
|
||||||
36 | args = list(range(10))
|
36 | args = list(range(10))
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -258,10 +255,10 @@ UP030_0.py:34:1: UP030 Use implicit references for positional format fields
|
||||||
UP030_0.py:39:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:39:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
37 | kwargs = {x: x for x in range(10)}
|
37 | kwargs = {x: x for x in range(10)}
|
||||||
38 |
|
38 |
|
||||||
39 | "{0}".format(*args)
|
39 | "{0}".format(*args)
|
||||||
| ^^^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^^^ UP030
|
||||||
40 |
|
40 |
|
||||||
41 | "{0}".format(**kwargs)
|
41 | "{0}".format(**kwargs)
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -279,10 +276,10 @@ UP030_0.py:39:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:41:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:41:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
39 | "{0}".format(*args)
|
39 | "{0}".format(*args)
|
||||||
40 |
|
40 |
|
||||||
41 | "{0}".format(**kwargs)
|
41 | "{0}".format(**kwargs)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^^^^^^ UP030
|
||||||
42 |
|
42 |
|
||||||
43 | "{0}_{1}".format(*args)
|
43 | "{0}_{1}".format(*args)
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -300,10 +297,10 @@ UP030_0.py:41:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:43:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:43:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
41 | "{0}".format(**kwargs)
|
41 | "{0}".format(**kwargs)
|
||||||
42 |
|
42 |
|
||||||
43 | "{0}_{1}".format(*args)
|
43 | "{0}_{1}".format(*args)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
||||||
44 |
|
44 |
|
||||||
45 | "{0}_{1}".format(1, *args)
|
45 | "{0}_{1}".format(1, *args)
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -321,10 +318,10 @@ UP030_0.py:43:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:45:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:45:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
43 | "{0}_{1}".format(*args)
|
43 | "{0}_{1}".format(*args)
|
||||||
44 |
|
44 |
|
||||||
45 | "{0}_{1}".format(1, *args)
|
45 | "{0}_{1}".format(1, *args)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
||||||
46 |
|
46 |
|
||||||
47 | "{0}_{1}".format(1, 2, *args)
|
47 | "{0}_{1}".format(1, 2, *args)
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -342,10 +339,10 @@ UP030_0.py:45:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:47:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:47:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
45 | "{0}_{1}".format(1, *args)
|
45 | "{0}_{1}".format(1, *args)
|
||||||
46 |
|
46 |
|
||||||
47 | "{0}_{1}".format(1, 2, *args)
|
47 | "{0}_{1}".format(1, 2, *args)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
||||||
48 |
|
48 |
|
||||||
49 | "{0}_{1}".format(*args, 1, 2)
|
49 | "{0}_{1}".format(*args, 1, 2)
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -363,10 +360,10 @@ UP030_0.py:47:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:49:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:49:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
47 | "{0}_{1}".format(1, 2, *args)
|
47 | "{0}_{1}".format(1, 2, *args)
|
||||||
48 |
|
48 |
|
||||||
49 | "{0}_{1}".format(*args, 1, 2)
|
49 | "{0}_{1}".format(*args, 1, 2)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
||||||
50 |
|
50 |
|
||||||
51 | "{0}_{1}_{2}".format(1, **kwargs)
|
51 | "{0}_{1}_{2}".format(1, **kwargs)
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -384,10 +381,10 @@ UP030_0.py:49:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:51:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:51:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
49 | "{0}_{1}".format(*args, 1, 2)
|
49 | "{0}_{1}".format(*args, 1, 2)
|
||||||
50 |
|
50 |
|
||||||
51 | "{0}_{1}_{2}".format(1, **kwargs)
|
51 | "{0}_{1}_{2}".format(1, **kwargs)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
||||||
52 |
|
52 |
|
||||||
53 | "{0}_{1}_{2}".format(1, 2, **kwargs)
|
53 | "{0}_{1}_{2}".format(1, 2, **kwargs)
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -405,10 +402,10 @@ UP030_0.py:51:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:53:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:53:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
51 | "{0}_{1}_{2}".format(1, **kwargs)
|
51 | "{0}_{1}_{2}".format(1, **kwargs)
|
||||||
52 |
|
52 |
|
||||||
53 | "{0}_{1}_{2}".format(1, 2, **kwargs)
|
53 | "{0}_{1}_{2}".format(1, 2, **kwargs)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
||||||
54 |
|
54 |
|
||||||
55 | "{0}_{1}_{2}".format(1, 2, 3, **kwargs)
|
55 | "{0}_{1}_{2}".format(1, 2, 3, **kwargs)
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -426,10 +423,10 @@ UP030_0.py:53:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:55:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:55:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
53 | "{0}_{1}_{2}".format(1, 2, **kwargs)
|
53 | "{0}_{1}_{2}".format(1, 2, **kwargs)
|
||||||
54 |
|
54 |
|
||||||
55 | "{0}_{1}_{2}".format(1, 2, 3, **kwargs)
|
55 | "{0}_{1}_{2}".format(1, 2, 3, **kwargs)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
||||||
56 |
|
56 |
|
||||||
57 | "{0}_{1}_{2}".format(1, 2, 3, *args, **kwargs)
|
57 | "{0}_{1}_{2}".format(1, 2, 3, *args, **kwargs)
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -447,10 +444,10 @@ UP030_0.py:55:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:57:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:57:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
55 | "{0}_{1}_{2}".format(1, 2, 3, **kwargs)
|
55 | "{0}_{1}_{2}".format(1, 2, 3, **kwargs)
|
||||||
56 |
|
56 |
|
||||||
57 | "{0}_{1}_{2}".format(1, 2, 3, *args, **kwargs)
|
57 | "{0}_{1}_{2}".format(1, 2, 3, *args, **kwargs)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
||||||
58 |
|
58 |
|
||||||
59 | "{1}_{0}".format(1, 2, *args)
|
59 | "{1}_{0}".format(1, 2, *args)
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -468,10 +465,10 @@ UP030_0.py:57:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:59:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:59:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
57 | "{0}_{1}_{2}".format(1, 2, 3, *args, **kwargs)
|
57 | "{0}_{1}_{2}".format(1, 2, 3, *args, **kwargs)
|
||||||
58 |
|
58 |
|
||||||
59 | "{1}_{0}".format(1, 2, *args)
|
59 | "{1}_{0}".format(1, 2, *args)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP030
|
||||||
60 |
|
60 |
|
||||||
61 | "{1}_{0}".format(1, 2)
|
61 | "{1}_{0}".format(1, 2)
|
||||||
|
|
|
|
||||||
= help: Remove explicit positional indices
|
= help: Remove explicit positional indices
|
||||||
|
|
@ -488,7 +485,7 @@ UP030_0.py:59:1: UP030 [*] Use implicit references for positional format fields
|
||||||
UP030_0.py:61:1: UP030 [*] Use implicit references for positional format fields
|
UP030_0.py:61:1: UP030 [*] Use implicit references for positional format fields
|
||||||
|
|
|
|
||||||
59 | "{1}_{0}".format(1, 2, *args)
|
59 | "{1}_{0}".format(1, 2, *args)
|
||||||
60 |
|
60 |
|
||||||
61 | "{1}_{0}".format(1, 2)
|
61 | "{1}_{0}".format(1, 2)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ UP030
|
| ^^^^^^^^^^^^^^^^^^^^^^ UP030
|
||||||
|
|
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,13 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pyupgrade/mod.rs
|
source: crates/ruff_linter/src/rules/pyupgrade/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
UP032_0.py:5:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:5:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
3 | ###
|
3 | ###
|
||||||
4 |
|
4 |
|
||||||
5 | "{} {}".format(a, b)
|
5 | "{} {}".format(a, b)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
6 |
|
6 |
|
||||||
7 | "{1} {0}".format(a, b)
|
7 | "{1} {0}".format(a, b)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -26,10 +25,10 @@ UP032_0.py:5:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:7:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:7:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
5 | "{} {}".format(a, b)
|
5 | "{} {}".format(a, b)
|
||||||
6 |
|
6 |
|
||||||
7 | "{1} {0}".format(a, b)
|
7 | "{1} {0}".format(a, b)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
8 |
|
8 |
|
||||||
9 | "{0} {1} {0}".format(a, b)
|
9 | "{0} {1} {0}".format(a, b)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -47,10 +46,10 @@ UP032_0.py:7:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:9:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:9:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
7 | "{1} {0}".format(a, b)
|
7 | "{1} {0}".format(a, b)
|
||||||
8 |
|
8 |
|
||||||
9 | "{0} {1} {0}".format(a, b)
|
9 | "{0} {1} {0}".format(a, b)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
10 |
|
10 |
|
||||||
11 | "{x.y}".format(x=z)
|
11 | "{x.y}".format(x=z)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -68,10 +67,10 @@ UP032_0.py:9:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:11:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:11:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
9 | "{0} {1} {0}".format(a, b)
|
9 | "{0} {1} {0}".format(a, b)
|
||||||
10 |
|
10 |
|
||||||
11 | "{x.y}".format(x=z)
|
11 | "{x.y}".format(x=z)
|
||||||
| ^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
12 |
|
12 |
|
||||||
13 | "{x} {y} {x}".format(x=a, y=b)
|
13 | "{x} {y} {x}".format(x=a, y=b)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -89,10 +88,10 @@ UP032_0.py:11:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:13:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:13:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
11 | "{x.y}".format(x=z)
|
11 | "{x.y}".format(x=z)
|
||||||
12 |
|
12 |
|
||||||
13 | "{x} {y} {x}".format(x=a, y=b)
|
13 | "{x} {y} {x}".format(x=a, y=b)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
14 |
|
14 |
|
||||||
15 | "{.x} {.y}".format(a, b)
|
15 | "{.x} {.y}".format(a, b)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -110,10 +109,10 @@ UP032_0.py:13:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:15:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:15:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
13 | "{x} {y} {x}".format(x=a, y=b)
|
13 | "{x} {y} {x}".format(x=a, y=b)
|
||||||
14 |
|
14 |
|
||||||
15 | "{.x} {.y}".format(a, b)
|
15 | "{.x} {.y}".format(a, b)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
16 |
|
16 |
|
||||||
17 | "{} {}".format(a.b, c.d)
|
17 | "{} {}".format(a.b, c.d)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -131,10 +130,10 @@ UP032_0.py:15:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:17:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:17:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
15 | "{.x} {.y}".format(a, b)
|
15 | "{.x} {.y}".format(a, b)
|
||||||
16 |
|
16 |
|
||||||
17 | "{} {}".format(a.b, c.d)
|
17 | "{} {}".format(a.b, c.d)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
18 |
|
18 |
|
||||||
19 | "{}".format(a())
|
19 | "{}".format(a())
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -152,10 +151,10 @@ UP032_0.py:17:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:19:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:19:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
17 | "{} {}".format(a.b, c.d)
|
17 | "{} {}".format(a.b, c.d)
|
||||||
18 |
|
18 |
|
||||||
19 | "{}".format(a())
|
19 | "{}".format(a())
|
||||||
| ^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^ UP032
|
||||||
20 |
|
20 |
|
||||||
21 | "{}".format(a.b())
|
21 | "{}".format(a.b())
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -173,10 +172,10 @@ UP032_0.py:19:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:21:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:21:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
19 | "{}".format(a())
|
19 | "{}".format(a())
|
||||||
20 |
|
20 |
|
||||||
21 | "{}".format(a.b())
|
21 | "{}".format(a.b())
|
||||||
| ^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^ UP032
|
||||||
22 |
|
22 |
|
||||||
23 | "{}".format(a.b().c())
|
23 | "{}".format(a.b().c())
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -194,10 +193,10 @@ UP032_0.py:21:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:23:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:23:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
21 | "{}".format(a.b())
|
21 | "{}".format(a.b())
|
||||||
22 |
|
22 |
|
||||||
23 | "{}".format(a.b().c())
|
23 | "{}".format(a.b().c())
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
24 |
|
24 |
|
||||||
25 | "hello {}!".format(name)
|
25 | "hello {}!".format(name)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -215,10 +214,10 @@ UP032_0.py:23:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:25:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:25:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
23 | "{}".format(a.b().c())
|
23 | "{}".format(a.b().c())
|
||||||
24 |
|
24 |
|
||||||
25 | "hello {}!".format(name)
|
25 | "hello {}!".format(name)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
26 |
|
26 |
|
||||||
27 | "{}{b}{}".format(a, c, b=b)
|
27 | "{}{b}{}".format(a, c, b=b)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -236,10 +235,10 @@ UP032_0.py:25:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:27:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:27:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
25 | "hello {}!".format(name)
|
25 | "hello {}!".format(name)
|
||||||
26 |
|
26 |
|
||||||
27 | "{}{b}{}".format(a, c, b=b)
|
27 | "{}{b}{}".format(a, c, b=b)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
28 |
|
28 |
|
||||||
29 | "{}".format(0x0)
|
29 | "{}".format(0x0)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -257,10 +256,10 @@ UP032_0.py:27:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:29:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:29:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
27 | "{}{b}{}".format(a, c, b=b)
|
27 | "{}{b}{}".format(a, c, b=b)
|
||||||
28 |
|
28 |
|
||||||
29 | "{}".format(0x0)
|
29 | "{}".format(0x0)
|
||||||
| ^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^ UP032
|
||||||
30 |
|
30 |
|
||||||
31 | "{} {}".format(a, b)
|
31 | "{} {}".format(a, b)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -278,10 +277,10 @@ UP032_0.py:29:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:31:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:31:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
29 | "{}".format(0x0)
|
29 | "{}".format(0x0)
|
||||||
30 |
|
30 |
|
||||||
31 | "{} {}".format(a, b)
|
31 | "{} {}".format(a, b)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
32 |
|
32 |
|
||||||
33 | """{} {}""".format(a, b)
|
33 | """{} {}""".format(a, b)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -299,10 +298,10 @@ UP032_0.py:31:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:33:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:33:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
31 | "{} {}".format(a, b)
|
31 | "{} {}".format(a, b)
|
||||||
32 |
|
32 |
|
||||||
33 | """{} {}""".format(a, b)
|
33 | """{} {}""".format(a, b)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
34 |
|
34 |
|
||||||
35 | "foo{}".format(1)
|
35 | "foo{}".format(1)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -320,10 +319,10 @@ UP032_0.py:33:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:35:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:35:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
33 | """{} {}""".format(a, b)
|
33 | """{} {}""".format(a, b)
|
||||||
34 |
|
34 |
|
||||||
35 | "foo{}".format(1)
|
35 | "foo{}".format(1)
|
||||||
| ^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^ UP032
|
||||||
36 |
|
36 |
|
||||||
37 | r"foo{}".format(1)
|
37 | r"foo{}".format(1)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -341,10 +340,10 @@ UP032_0.py:35:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:37:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:37:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
35 | "foo{}".format(1)
|
35 | "foo{}".format(1)
|
||||||
36 |
|
36 |
|
||||||
37 | r"foo{}".format(1)
|
37 | r"foo{}".format(1)
|
||||||
| ^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^ UP032
|
||||||
38 |
|
38 |
|
||||||
39 | x = "{a}".format(a=1)
|
39 | x = "{a}".format(a=1)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -362,10 +361,10 @@ UP032_0.py:37:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:39:5: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:39:5: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
37 | r"foo{}".format(1)
|
37 | r"foo{}".format(1)
|
||||||
38 |
|
38 |
|
||||||
39 | x = "{a}".format(a=1)
|
39 | x = "{a}".format(a=1)
|
||||||
| ^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^ UP032
|
||||||
40 |
|
40 |
|
||||||
41 | print("foo {} ".format(x))
|
41 | print("foo {} ".format(x))
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -383,10 +382,10 @@ UP032_0.py:39:5: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:41:7: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:41:7: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
39 | x = "{a}".format(a=1)
|
39 | x = "{a}".format(a=1)
|
||||||
40 |
|
40 |
|
||||||
41 | print("foo {} ".format(x))
|
41 | print("foo {} ".format(x))
|
||||||
| ^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
42 |
|
42 |
|
||||||
43 | "{a[b]}".format(a=a)
|
43 | "{a[b]}".format(a=a)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -404,10 +403,10 @@ UP032_0.py:41:7: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:43:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:43:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
41 | print("foo {} ".format(x))
|
41 | print("foo {} ".format(x))
|
||||||
42 |
|
42 |
|
||||||
43 | "{a[b]}".format(a=a)
|
43 | "{a[b]}".format(a=a)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
44 |
|
44 |
|
||||||
45 | "{a.a[b]}".format(a=a)
|
45 | "{a.a[b]}".format(a=a)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -425,10 +424,10 @@ UP032_0.py:43:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:45:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:45:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
43 | "{a[b]}".format(a=a)
|
43 | "{a[b]}".format(a=a)
|
||||||
44 |
|
44 |
|
||||||
45 | "{a.a[b]}".format(a=a)
|
45 | "{a.a[b]}".format(a=a)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
46 |
|
46 |
|
||||||
47 | "{}{{}}{}".format(escaped, y)
|
47 | "{}{{}}{}".format(escaped, y)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -446,10 +445,10 @@ UP032_0.py:45:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:47:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:47:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
45 | "{a.a[b]}".format(a=a)
|
45 | "{a.a[b]}".format(a=a)
|
||||||
46 |
|
46 |
|
||||||
47 | "{}{{}}{}".format(escaped, y)
|
47 | "{}{{}}{}".format(escaped, y)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
48 |
|
48 |
|
||||||
49 | "{}".format(a)
|
49 | "{}".format(a)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -467,10 +466,10 @@ UP032_0.py:47:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:49:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:49:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
47 | "{}{{}}{}".format(escaped, y)
|
47 | "{}{{}}{}".format(escaped, y)
|
||||||
48 |
|
48 |
|
||||||
49 | "{}".format(a)
|
49 | "{}".format(a)
|
||||||
| ^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^ UP032
|
||||||
50 |
|
50 |
|
||||||
51 | '({}={{0!e}})'.format(a)
|
51 | '({}={{0!e}})'.format(a)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -488,10 +487,10 @@ UP032_0.py:49:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:51:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:51:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
49 | "{}".format(a)
|
49 | "{}".format(a)
|
||||||
50 |
|
50 |
|
||||||
51 | '({}={{0!e}})'.format(a)
|
51 | '({}={{0!e}})'.format(a)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
52 |
|
52 |
|
||||||
53 | "{[b]}".format(a)
|
53 | "{[b]}".format(a)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -509,10 +508,10 @@ UP032_0.py:51:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:53:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:53:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
51 | '({}={{0!e}})'.format(a)
|
51 | '({}={{0!e}})'.format(a)
|
||||||
52 |
|
52 |
|
||||||
53 | "{[b]}".format(a)
|
53 | "{[b]}".format(a)
|
||||||
| ^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^ UP032
|
||||||
54 |
|
54 |
|
||||||
55 | '{[b]}'.format(a)
|
55 | '{[b]}'.format(a)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -530,10 +529,10 @@ UP032_0.py:53:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:55:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:55:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
53 | "{[b]}".format(a)
|
53 | "{[b]}".format(a)
|
||||||
54 |
|
54 |
|
||||||
55 | '{[b]}'.format(a)
|
55 | '{[b]}'.format(a)
|
||||||
| ^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^ UP032
|
||||||
56 |
|
56 |
|
||||||
57 | """{[b]}""".format(a)
|
57 | """{[b]}""".format(a)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -551,10 +550,10 @@ UP032_0.py:55:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:57:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:57:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
55 | '{[b]}'.format(a)
|
55 | '{[b]}'.format(a)
|
||||||
56 |
|
56 |
|
||||||
57 | """{[b]}""".format(a)
|
57 | """{[b]}""".format(a)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
58 |
|
58 |
|
||||||
59 | '''{[b]}'''.format(a)
|
59 | '''{[b]}'''.format(a)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -572,10 +571,10 @@ UP032_0.py:57:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:59:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:59:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
57 | """{[b]}""".format(a)
|
57 | """{[b]}""".format(a)
|
||||||
58 |
|
58 |
|
||||||
59 | '''{[b]}'''.format(a)
|
59 | '''{[b]}'''.format(a)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
60 |
|
60 |
|
||||||
61 | "{}".format(
|
61 | "{}".format(
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -593,12 +592,12 @@ UP032_0.py:59:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:61:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:61:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
59 | '''{[b]}'''.format(a)
|
59 | '''{[b]}'''.format(a)
|
||||||
60 |
|
60 |
|
||||||
61 | / "{}".format(
|
61 | / "{}".format(
|
||||||
62 | | 1
|
62 | | 1
|
||||||
63 | | )
|
63 | | )
|
||||||
| |_^ UP032
|
| |_^ UP032
|
||||||
64 |
|
64 |
|
||||||
65 | "123456789 {}".format(
|
65 | "123456789 {}".format(
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -618,12 +617,12 @@ UP032_0.py:61:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:65:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:65:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
63 | )
|
63 | )
|
||||||
64 |
|
64 |
|
||||||
65 | / "123456789 {}".format(
|
65 | / "123456789 {}".format(
|
||||||
66 | | 1111111111111111111111111111111111111111111111111111111111111111111111111,
|
66 | | 1111111111111111111111111111111111111111111111111111111111111111111111111,
|
||||||
67 | | )
|
67 | | )
|
||||||
| |_^ UP032
|
| |_^ UP032
|
||||||
68 |
|
68 |
|
||||||
69 | """
|
69 | """
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -643,12 +642,12 @@ UP032_0.py:65:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:69:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:69:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
67 | )
|
67 | )
|
||||||
68 |
|
68 |
|
||||||
69 | / """
|
69 | / """
|
||||||
70 | | {}
|
70 | | {}
|
||||||
71 | | """.format(1)
|
71 | | """.format(1)
|
||||||
| |_____________^ UP032
|
| |_____________^ UP032
|
||||||
72 |
|
72 |
|
||||||
73 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = """
|
73 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = """
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -669,7 +668,7 @@ UP032_0.py:69:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:73:85: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:73:85: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
71 | """.format(1)
|
71 | """.format(1)
|
||||||
72 |
|
72 |
|
||||||
73 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = """
|
73 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = """
|
||||||
| _____________________________________________________________________________________^
|
| _____________________________________________________________________________________^
|
||||||
74 | | {}
|
74 | | {}
|
||||||
|
|
@ -677,7 +676,7 @@ UP032_0.py:73:85: UP032 [*] Use f-string instead of `format` call
|
||||||
76 | | 111111
|
76 | | 111111
|
||||||
77 | | )
|
77 | | )
|
||||||
| |_^ UP032
|
| |_^ UP032
|
||||||
78 |
|
78 |
|
||||||
79 | "{a}" "{b}".format(a=1, b=1)
|
79 | "{a}" "{b}".format(a=1, b=1)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -701,10 +700,10 @@ UP032_0.py:73:85: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:79:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:79:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
77 | )
|
77 | )
|
||||||
78 |
|
78 |
|
||||||
79 | "{a}" "{b}".format(a=1, b=1)
|
79 | "{a}" "{b}".format(a=1, b=1)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
80 |
|
80 |
|
||||||
81 | (
|
81 | (
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -722,13 +721,13 @@ UP032_0.py:79:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:81:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:81:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
79 | "{a}" "{b}".format(a=1, b=1)
|
79 | "{a}" "{b}".format(a=1, b=1)
|
||||||
80 |
|
80 |
|
||||||
81 | / (
|
81 | / (
|
||||||
82 | | "{a}"
|
82 | | "{a}"
|
||||||
83 | | "{b}"
|
83 | | "{b}"
|
||||||
84 | | ).format(a=1, b=1)
|
84 | | ).format(a=1, b=1)
|
||||||
| |__________________^ UP032
|
| |__________________^ UP032
|
||||||
85 |
|
85 |
|
||||||
86 | (
|
86 | (
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -750,7 +749,7 @@ UP032_0.py:81:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:86:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:86:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
84 | ).format(a=1, b=1)
|
84 | ).format(a=1, b=1)
|
||||||
85 |
|
85 |
|
||||||
86 | / (
|
86 | / (
|
||||||
87 | | "{a}"
|
87 | | "{a}"
|
||||||
88 | | ""
|
88 | | ""
|
||||||
|
|
@ -758,7 +757,7 @@ UP032_0.py:86:1: UP032 [*] Use f-string instead of `format` call
|
||||||
90 | | ""
|
90 | | ""
|
||||||
91 | | ).format(a=1, b=1)
|
91 | | ).format(a=1, b=1)
|
||||||
| |__________________^ UP032
|
| |__________________^ UP032
|
||||||
92 |
|
92 |
|
||||||
93 | (
|
93 | (
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -782,8 +781,7 @@ UP032_0.py:86:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:94:5: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:94:5: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
93 | (
|
93 | (
|
||||||
94 | (
|
94 | / (
|
||||||
| _____^
|
|
||||||
95 | | # comment
|
95 | | # comment
|
||||||
96 | | "{a}"
|
96 | | "{a}"
|
||||||
97 | | # comment
|
97 | | # comment
|
||||||
|
|
@ -816,7 +814,7 @@ UP032_0.py:94:5: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:104:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:104:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
102 | )
|
102 | )
|
||||||
103 |
|
103 |
|
||||||
104 | / (
|
104 | / (
|
||||||
105 | | "{a}"
|
105 | | "{a}"
|
||||||
106 | | "b"
|
106 | | "b"
|
||||||
|
|
@ -931,7 +929,7 @@ UP032_0.py:129:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
129 | "{}".format(1 * 2)
|
129 | "{}".format(1 * 2)
|
||||||
| ^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^ UP032
|
||||||
130 |
|
130 |
|
||||||
131 | ###
|
131 | ###
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -949,12 +947,12 @@ UP032_0.py:129:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:160:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:160:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
158 | r'"\N{snowman} {}".format(a)'
|
158 | r'"\N{snowman} {}".format(a)'
|
||||||
159 |
|
159 |
|
||||||
160 | / "123456789 {}".format(
|
160 | / "123456789 {}".format(
|
||||||
161 | | 11111111111111111111111111111111111111111111111111111111111111111111111111,
|
161 | | 11111111111111111111111111111111111111111111111111111111111111111111111111,
|
||||||
162 | | )
|
162 | | )
|
||||||
| |_^ UP032
|
| |_^ UP032
|
||||||
163 |
|
163 |
|
||||||
164 | """
|
164 | """
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -974,7 +972,7 @@ UP032_0.py:160:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:164:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:164:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
162 | )
|
162 | )
|
||||||
163 |
|
163 |
|
||||||
164 | / """
|
164 | / """
|
||||||
165 | | {}
|
165 | | {}
|
||||||
166 | | {}
|
166 | | {}
|
||||||
|
|
@ -985,7 +983,7 @@ UP032_0.py:164:1: UP032 [*] Use f-string instead of `format` call
|
||||||
171 | | 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,
|
171 | | 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,
|
||||||
172 | | )
|
172 | | )
|
||||||
| |_^ UP032
|
| |_^ UP032
|
||||||
173 |
|
173 |
|
||||||
174 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = """{}
|
174 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = """{}
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -1014,14 +1012,14 @@ UP032_0.py:164:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:174:84: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:174:84: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
172 | )
|
172 | )
|
||||||
173 |
|
173 |
|
||||||
174 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = """{}
|
174 | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = """{}
|
||||||
| ____________________________________________________________________________________^
|
| ____________________________________________________________________________________^
|
||||||
175 | | """.format(
|
175 | | """.format(
|
||||||
176 | | 111111
|
176 | | 111111
|
||||||
177 | | )
|
177 | | )
|
||||||
| |_^ UP032
|
| |_^ UP032
|
||||||
178 |
|
178 |
|
||||||
179 | "{}".format(
|
179 | "{}".format(
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -1043,7 +1041,7 @@ UP032_0.py:174:84: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:202:1: UP032 Use f-string instead of `format` call
|
UP032_0.py:202:1: UP032 Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
200 | "{}".format(**c)
|
200 | "{}".format(**c)
|
||||||
201 |
|
201 |
|
||||||
202 | / "{}".format(
|
202 | / "{}".format(
|
||||||
203 | | 1 # comment
|
203 | | 1 # comment
|
||||||
204 | | )
|
204 | | )
|
||||||
|
|
@ -1057,7 +1055,7 @@ UP032_0.py:209:1: UP032 [*] Use f-string instead of `format` call
|
||||||
208 | # existing line length, so it's fine.
|
208 | # existing line length, so it's fine.
|
||||||
209 | "<Customer: {}, {}, {}, {}, {}>".format(self.internal_ids, self.external_ids, self.properties, self.tags, self.others)
|
209 | "<Customer: {}, {}, {}, {}, {}>".format(self.internal_ids, self.external_ids, self.properties, self.tags, self.others)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
210 |
|
210 |
|
||||||
211 | # When fixing, trim the trailing empty string.
|
211 | # When fixing, trim the trailing empty string.
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -1079,7 +1077,7 @@ UP032_0.py:212:18: UP032 [*] Use f-string instead of `format` call
|
||||||
| __________________^
|
| __________________^
|
||||||
213 | | "".format(new_dict, d))
|
213 | | "".format(new_dict, d))
|
||||||
| |_______________________________________^ UP032
|
| |_______________________________________^ UP032
|
||||||
214 |
|
214 |
|
||||||
215 | # When fixing, trim the trailing empty string.
|
215 | # When fixing, trim the trailing empty string.
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -1102,7 +1100,7 @@ UP032_0.py:216:18: UP032 [*] Use f-string instead of `format` call
|
||||||
| __________________^
|
| __________________^
|
||||||
217 | | .format(new_dict, d))
|
217 | | .format(new_dict, d))
|
||||||
| |_____________________________________^ UP032
|
| |_____________________________________^ UP032
|
||||||
218 |
|
218 |
|
||||||
219 | raise ValueError(
|
219 | raise ValueError(
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -1122,8 +1120,7 @@ UP032_0.py:216:18: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:220:5: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:220:5: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
219 | raise ValueError(
|
219 | raise ValueError(
|
||||||
220 | "Conflicting configuration dicts: {!r} {!r}"
|
220 | / "Conflicting configuration dicts: {!r} {!r}"
|
||||||
| _____^
|
|
||||||
221 | | "".format(new_dict, d)
|
221 | | "".format(new_dict, d)
|
||||||
| |__________________________^ UP032
|
| |__________________________^ UP032
|
||||||
222 | )
|
222 | )
|
||||||
|
|
@ -1144,11 +1141,10 @@ UP032_0.py:220:5: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:225:5: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:225:5: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
224 | raise ValueError(
|
224 | raise ValueError(
|
||||||
225 | "Conflicting configuration dicts: {!r} {!r}"
|
225 | / "Conflicting configuration dicts: {!r} {!r}"
|
||||||
| _____^
|
|
||||||
226 | | "".format(new_dict, d)
|
226 | | "".format(new_dict, d)
|
||||||
| |__________________________^ UP032
|
| |__________________________^ UP032
|
||||||
227 |
|
227 |
|
||||||
228 | )
|
228 | )
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -1172,7 +1168,7 @@ UP032_0.py:231:1: UP032 [*] Use f-string instead of `format` call
|
||||||
233 | | "{{}}"
|
233 | | "{{}}"
|
||||||
234 | | ).format(a)
|
234 | | ).format(a)
|
||||||
| |___________^ UP032
|
| |___________^ UP032
|
||||||
235 |
|
235 |
|
||||||
236 | ("{}" "{{}}").format(a)
|
236 | ("{}" "{{}}").format(a)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -1193,7 +1189,7 @@ UP032_0.py:231:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:236:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:236:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
234 | ).format(a)
|
234 | ).format(a)
|
||||||
235 |
|
235 |
|
||||||
236 | ("{}" "{{}}").format(a)
|
236 | ("{}" "{{}}").format(a)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
|
|
|
|
||||||
|
|
@ -1217,7 +1213,7 @@ UP032_0.py:240:1: UP032 [*] Use f-string instead of `format` call
|
||||||
242 | | "{{{}}}"
|
242 | | "{{{}}}"
|
||||||
243 | | ).format(a, b)
|
243 | | ).format(a, b)
|
||||||
| |______________^ UP032
|
| |______________^ UP032
|
||||||
244 |
|
244 |
|
||||||
245 | ("{}" "{{{}}}").format(a, b)
|
245 | ("{}" "{{{}}}").format(a, b)
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -1239,10 +1235,10 @@ UP032_0.py:240:1: UP032 [*] Use f-string instead of `format` call
|
||||||
UP032_0.py:245:1: UP032 [*] Use f-string instead of `format` call
|
UP032_0.py:245:1: UP032 [*] Use f-string instead of `format` call
|
||||||
|
|
|
|
||||||
243 | ).format(a, b)
|
243 | ).format(a, b)
|
||||||
244 |
|
244 |
|
||||||
245 | ("{}" "{{{}}}").format(a, b)
|
245 | ("{}" "{{{}}}").format(a, b)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
246 |
|
246 |
|
||||||
247 | # The dictionary should be parenthesized.
|
247 | # The dictionary should be parenthesized.
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -1262,7 +1258,7 @@ UP032_0.py:248:1: UP032 [*] Use f-string instead of `format` call
|
||||||
247 | # The dictionary should be parenthesized.
|
247 | # The dictionary should be parenthesized.
|
||||||
248 | "{}".format({0: 1}[0])
|
248 | "{}".format({0: 1}[0])
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
249 |
|
249 |
|
||||||
250 | # The dictionary should be parenthesized.
|
250 | # The dictionary should be parenthesized.
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -1282,7 +1278,7 @@ UP032_0.py:251:1: UP032 [*] Use f-string instead of `format` call
|
||||||
250 | # The dictionary should be parenthesized.
|
250 | # The dictionary should be parenthesized.
|
||||||
251 | "{}".format({0: 1}.bar)
|
251 | "{}".format({0: 1}.bar)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
252 |
|
252 |
|
||||||
253 | # The dictionary should be parenthesized.
|
253 | # The dictionary should be parenthesized.
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -1302,7 +1298,7 @@ UP032_0.py:254:1: UP032 [*] Use f-string instead of `format` call
|
||||||
253 | # The dictionary should be parenthesized.
|
253 | # The dictionary should be parenthesized.
|
||||||
254 | "{}".format({0: 1}())
|
254 | "{}".format({0: 1}())
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
255 |
|
255 |
|
||||||
256 | # The string shouldn't be converted, since it would require repeating the function call.
|
256 | # The string shouldn't be converted, since it would require repeating the function call.
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -1322,7 +1318,7 @@ UP032_0.py:261:1: UP032 [*] Use f-string instead of `format` call
|
||||||
260 | # The string _should_ be converted, since the function call is repeated in the arguments.
|
260 | # The string _should_ be converted, since the function call is repeated in the arguments.
|
||||||
261 | "{0} {1}".format(foo(), foo())
|
261 | "{0} {1}".format(foo(), foo())
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
262 |
|
262 |
|
||||||
263 | # The call should be removed, but the string itself should remain.
|
263 | # The call should be removed, but the string itself should remain.
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -1342,7 +1338,7 @@ UP032_0.py:264:1: UP032 [*] Use f-string instead of `format` call
|
||||||
263 | # The call should be removed, but the string itself should remain.
|
263 | # The call should be removed, but the string itself should remain.
|
||||||
264 | ''.format(self.project)
|
264 | ''.format(self.project)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
265 |
|
265 |
|
||||||
266 | # The call should be removed, but the string itself should remain.
|
266 | # The call should be removed, but the string itself should remain.
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
@ -1362,7 +1358,7 @@ UP032_0.py:267:1: UP032 [*] Use f-string instead of `format` call
|
||||||
266 | # The call should be removed, but the string itself should remain.
|
266 | # The call should be removed, but the string itself should remain.
|
||||||
267 | "".format(self.project)
|
267 | "".format(self.project)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
| ^^^^^^^^^^^^^^^^^^^^^^^ UP032
|
||||||
268 |
|
268 |
|
||||||
269 | # Not a valid type annotation but this test shouldn't result in a panic.
|
269 | # Not a valid type annotation but this test shouldn't result in a panic.
|
||||||
|
|
|
|
||||||
= help: Convert to f-string
|
= help: Convert to f-string
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,12 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/pyupgrade/mod.rs
|
source: crates/ruff_linter/src/rules/pyupgrade/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
UP035.py:2:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
UP035.py:2:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
|
|
|
|
||||||
1 | # UP035
|
1 | # UP035
|
||||||
2 | from collections import Mapping
|
2 | from collections import Mapping
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
3 |
|
3 |
|
||||||
4 | from collections import Mapping as MAP
|
4 | from collections import Mapping as MAP
|
||||||
|
|
|
|
||||||
= help: Import from `collections.abc`
|
= help: Import from `collections.abc`
|
||||||
|
|
@ -23,10 +22,10 @@ UP035.py:2:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
UP035.py:4:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
UP035.py:4:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
|
|
|
|
||||||
2 | from collections import Mapping
|
2 | from collections import Mapping
|
||||||
3 |
|
3 |
|
||||||
4 | from collections import Mapping as MAP
|
4 | from collections import Mapping as MAP
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
5 |
|
5 |
|
||||||
6 | from collections import Mapping, Sequence
|
6 | from collections import Mapping, Sequence
|
||||||
|
|
|
|
||||||
= help: Import from `collections.abc`
|
= help: Import from `collections.abc`
|
||||||
|
|
@ -44,10 +43,10 @@ UP035.py:4:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
UP035.py:6:1: UP035 [*] Import from `collections.abc` instead: `Mapping`, `Sequence`
|
UP035.py:6:1: UP035 [*] Import from `collections.abc` instead: `Mapping`, `Sequence`
|
||||||
|
|
|
|
||||||
4 | from collections import Mapping as MAP
|
4 | from collections import Mapping as MAP
|
||||||
5 |
|
5 |
|
||||||
6 | from collections import Mapping, Sequence
|
6 | from collections import Mapping, Sequence
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
7 |
|
7 |
|
||||||
8 | from collections import Counter, Mapping
|
8 | from collections import Counter, Mapping
|
||||||
|
|
|
|
||||||
= help: Import from `collections.abc`
|
= help: Import from `collections.abc`
|
||||||
|
|
@ -65,10 +64,10 @@ UP035.py:6:1: UP035 [*] Import from `collections.abc` instead: `Mapping`, `Seque
|
||||||
UP035.py:8:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
UP035.py:8:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
|
|
|
|
||||||
6 | from collections import Mapping, Sequence
|
6 | from collections import Mapping, Sequence
|
||||||
7 |
|
7 |
|
||||||
8 | from collections import Counter, Mapping
|
8 | from collections import Counter, Mapping
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
9 |
|
9 |
|
||||||
10 | from collections import (Counter, Mapping)
|
10 | from collections import (Counter, Mapping)
|
||||||
|
|
|
|
||||||
= help: Import from `collections.abc`
|
= help: Import from `collections.abc`
|
||||||
|
|
@ -87,10 +86,10 @@ UP035.py:8:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
UP035.py:10:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
UP035.py:10:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
|
|
|
|
||||||
8 | from collections import Counter, Mapping
|
8 | from collections import Counter, Mapping
|
||||||
9 |
|
9 |
|
||||||
10 | from collections import (Counter, Mapping)
|
10 | from collections import (Counter, Mapping)
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
11 |
|
11 |
|
||||||
12 | from collections import (Counter,
|
12 | from collections import (Counter,
|
||||||
|
|
|
|
||||||
= help: Import from `collections.abc`
|
= help: Import from `collections.abc`
|
||||||
|
|
@ -109,11 +108,11 @@ UP035.py:10:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
UP035.py:12:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
UP035.py:12:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
|
|
|
|
||||||
10 | from collections import (Counter, Mapping)
|
10 | from collections import (Counter, Mapping)
|
||||||
11 |
|
11 |
|
||||||
12 | / from collections import (Counter,
|
12 | / from collections import (Counter,
|
||||||
13 | | Mapping)
|
13 | | Mapping)
|
||||||
| |_________________________________^ UP035
|
| |_________________________________^ UP035
|
||||||
14 |
|
14 |
|
||||||
15 | from collections import Counter, \
|
15 | from collections import Counter, \
|
||||||
|
|
|
|
||||||
= help: Import from `collections.abc`
|
= help: Import from `collections.abc`
|
||||||
|
|
@ -133,11 +132,11 @@ UP035.py:12:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
UP035.py:15:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
UP035.py:15:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
|
|
|
|
||||||
13 | Mapping)
|
13 | Mapping)
|
||||||
14 |
|
14 |
|
||||||
15 | / from collections import Counter, \
|
15 | / from collections import Counter, \
|
||||||
16 | | Mapping
|
16 | | Mapping
|
||||||
| |________________________________^ UP035
|
| |________________________________^ UP035
|
||||||
17 |
|
17 |
|
||||||
18 | from collections import Counter, Mapping, Sequence
|
18 | from collections import Counter, Mapping, Sequence
|
||||||
|
|
|
|
||||||
= help: Import from `collections.abc`
|
= help: Import from `collections.abc`
|
||||||
|
|
@ -157,10 +156,10 @@ UP035.py:15:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
UP035.py:18:1: UP035 [*] Import from `collections.abc` instead: `Mapping`, `Sequence`
|
UP035.py:18:1: UP035 [*] Import from `collections.abc` instead: `Mapping`, `Sequence`
|
||||||
|
|
|
|
||||||
16 | Mapping
|
16 | Mapping
|
||||||
17 |
|
17 |
|
||||||
18 | from collections import Counter, Mapping, Sequence
|
18 | from collections import Counter, Mapping, Sequence
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
19 |
|
19 |
|
||||||
20 | from collections import Mapping as mapping, Counter
|
20 | from collections import Mapping as mapping, Counter
|
||||||
|
|
|
|
||||||
= help: Import from `collections.abc`
|
= help: Import from `collections.abc`
|
||||||
|
|
@ -179,10 +178,10 @@ UP035.py:18:1: UP035 [*] Import from `collections.abc` instead: `Mapping`, `Sequ
|
||||||
UP035.py:20:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
UP035.py:20:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
|
|
|
|
||||||
18 | from collections import Counter, Mapping, Sequence
|
18 | from collections import Counter, Mapping, Sequence
|
||||||
19 |
|
19 |
|
||||||
20 | from collections import Mapping as mapping, Counter
|
20 | from collections import Mapping as mapping, Counter
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
21 |
|
21 |
|
||||||
22 | if True:
|
22 | if True:
|
||||||
|
|
|
|
||||||
= help: Import from `collections.abc`
|
= help: Import from `collections.abc`
|
||||||
|
|
@ -203,7 +202,7 @@ UP035.py:23:5: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
22 | if True:
|
22 | if True:
|
||||||
23 | from collections import Mapping, Counter
|
23 | from collections import Mapping, Counter
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
24 |
|
24 |
|
||||||
25 | if True:
|
25 | if True:
|
||||||
|
|
|
|
||||||
= help: Import from `collections.abc`
|
= help: Import from `collections.abc`
|
||||||
|
|
@ -225,7 +224,7 @@ UP035.py:28:5: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
27 | pass
|
27 | pass
|
||||||
28 | from collections import Mapping, Counter
|
28 | from collections import Mapping, Counter
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
29 |
|
29 |
|
||||||
30 | if True: from collections import Mapping
|
30 | if True: from collections import Mapping
|
||||||
|
|
|
|
||||||
= help: Import from `collections.abc`
|
= help: Import from `collections.abc`
|
||||||
|
|
@ -244,10 +243,10 @@ UP035.py:28:5: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
UP035.py:30:10: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
UP035.py:30:10: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
|
|
|
|
||||||
28 | from collections import Mapping, Counter
|
28 | from collections import Mapping, Counter
|
||||||
29 |
|
29 |
|
||||||
30 | if True: from collections import Mapping
|
30 | if True: from collections import Mapping
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
31 |
|
31 |
|
||||||
32 | import os
|
32 | import os
|
||||||
|
|
|
|
||||||
= help: Import from `collections.abc`
|
= help: Import from `collections.abc`
|
||||||
|
|
@ -285,15 +284,14 @@ UP035.py:33:1: UP035 [*] Import from `collections.abc` instead: `Mapping`
|
||||||
UP035.py:37:5: UP035 [*] Import from `collections.abc` instead: `Mapping`, `Callable`
|
UP035.py:37:5: UP035 [*] Import from `collections.abc` instead: `Mapping`, `Callable`
|
||||||
|
|
|
|
||||||
36 | if True:
|
36 | if True:
|
||||||
37 | from collections import (
|
37 | / from collections import (
|
||||||
| _____^
|
|
||||||
38 | | Mapping,
|
38 | | Mapping,
|
||||||
39 | | Callable,
|
39 | | Callable,
|
||||||
40 | | Bad,
|
40 | | Bad,
|
||||||
41 | | Good,
|
41 | | Good,
|
||||||
42 | | )
|
42 | | )
|
||||||
| |_____^ UP035
|
| |_____^ UP035
|
||||||
43 |
|
43 |
|
||||||
44 | from typing import Callable, Match, Pattern, List, OrderedDict, AbstractSet, ContextManager
|
44 | from typing import Callable, Match, Pattern, List, OrderedDict, AbstractSet, ContextManager
|
||||||
|
|
|
|
||||||
= help: Import from `collections.abc`
|
= help: Import from `collections.abc`
|
||||||
|
|
@ -315,10 +313,10 @@ UP035.py:37:5: UP035 [*] Import from `collections.abc` instead: `Mapping`, `Call
|
||||||
UP035.py:44:1: UP035 [*] Import from `collections.abc` instead: `Callable`
|
UP035.py:44:1: UP035 [*] Import from `collections.abc` instead: `Callable`
|
||||||
|
|
|
|
||||||
42 | )
|
42 | )
|
||||||
43 |
|
43 |
|
||||||
44 | from typing import Callable, Match, Pattern, List, OrderedDict, AbstractSet, ContextManager
|
44 | from typing import Callable, Match, Pattern, List, OrderedDict, AbstractSet, ContextManager
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
45 |
|
45 |
|
||||||
46 | if True: from collections import (
|
46 | if True: from collections import (
|
||||||
|
|
|
|
||||||
= help: Import from `collections.abc`
|
= help: Import from `collections.abc`
|
||||||
|
|
@ -337,10 +335,10 @@ UP035.py:44:1: UP035 [*] Import from `collections.abc` instead: `Callable`
|
||||||
UP035.py:44:1: UP035 [*] Import from `collections` instead: `OrderedDict`
|
UP035.py:44:1: UP035 [*] Import from `collections` instead: `OrderedDict`
|
||||||
|
|
|
|
||||||
42 | )
|
42 | )
|
||||||
43 |
|
43 |
|
||||||
44 | from typing import Callable, Match, Pattern, List, OrderedDict, AbstractSet, ContextManager
|
44 | from typing import Callable, Match, Pattern, List, OrderedDict, AbstractSet, ContextManager
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
45 |
|
45 |
|
||||||
46 | if True: from collections import (
|
46 | if True: from collections import (
|
||||||
|
|
|
|
||||||
= help: Import from `collections`
|
= help: Import from `collections`
|
||||||
|
|
@ -359,10 +357,10 @@ UP035.py:44:1: UP035 [*] Import from `collections` instead: `OrderedDict`
|
||||||
UP035.py:44:1: UP035 [*] Import from `re` instead: `Match`, `Pattern`
|
UP035.py:44:1: UP035 [*] Import from `re` instead: `Match`, `Pattern`
|
||||||
|
|
|
|
||||||
42 | )
|
42 | )
|
||||||
43 |
|
43 |
|
||||||
44 | from typing import Callable, Match, Pattern, List, OrderedDict, AbstractSet, ContextManager
|
44 | from typing import Callable, Match, Pattern, List, OrderedDict, AbstractSet, ContextManager
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
45 |
|
45 |
|
||||||
46 | if True: from collections import (
|
46 | if True: from collections import (
|
||||||
|
|
|
|
||||||
= help: Import from `re`
|
= help: Import from `re`
|
||||||
|
|
@ -381,42 +379,42 @@ UP035.py:44:1: UP035 [*] Import from `re` instead: `Match`, `Pattern`
|
||||||
UP035.py:44:1: UP035 `typing.List` is deprecated, use `list` instead
|
UP035.py:44:1: UP035 `typing.List` is deprecated, use `list` instead
|
||||||
|
|
|
|
||||||
42 | )
|
42 | )
|
||||||
43 |
|
43 |
|
||||||
44 | from typing import Callable, Match, Pattern, List, OrderedDict, AbstractSet, ContextManager
|
44 | from typing import Callable, Match, Pattern, List, OrderedDict, AbstractSet, ContextManager
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
45 |
|
45 |
|
||||||
46 | if True: from collections import (
|
46 | if True: from collections import (
|
||||||
|
|
|
|
||||||
|
|
||||||
UP035.py:44:1: UP035 `typing.AbstractSet` is deprecated, use `collections.abc.Set` instead
|
UP035.py:44:1: UP035 `typing.AbstractSet` is deprecated, use `collections.abc.Set` instead
|
||||||
|
|
|
|
||||||
42 | )
|
42 | )
|
||||||
43 |
|
43 |
|
||||||
44 | from typing import Callable, Match, Pattern, List, OrderedDict, AbstractSet, ContextManager
|
44 | from typing import Callable, Match, Pattern, List, OrderedDict, AbstractSet, ContextManager
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
45 |
|
45 |
|
||||||
46 | if True: from collections import (
|
46 | if True: from collections import (
|
||||||
|
|
|
|
||||||
|
|
||||||
UP035.py:44:1: UP035 `typing.ContextManager` is deprecated, use `contextlib.AbstractContextManager` instead
|
UP035.py:44:1: UP035 `typing.ContextManager` is deprecated, use `contextlib.AbstractContextManager` instead
|
||||||
|
|
|
|
||||||
42 | )
|
42 | )
|
||||||
43 |
|
43 |
|
||||||
44 | from typing import Callable, Match, Pattern, List, OrderedDict, AbstractSet, ContextManager
|
44 | from typing import Callable, Match, Pattern, List, OrderedDict, AbstractSet, ContextManager
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
45 |
|
45 |
|
||||||
46 | if True: from collections import (
|
46 | if True: from collections import (
|
||||||
|
|
|
|
||||||
|
|
||||||
UP035.py:46:10: UP035 Import from `collections.abc` instead: `Mapping`
|
UP035.py:46:10: UP035 Import from `collections.abc` instead: `Mapping`
|
||||||
|
|
|
|
||||||
44 | from typing import Callable, Match, Pattern, List, OrderedDict, AbstractSet, ContextManager
|
44 | from typing import Callable, Match, Pattern, List, OrderedDict, AbstractSet, ContextManager
|
||||||
45 |
|
45 |
|
||||||
46 | if True: from collections import (
|
46 | if True: from collections import (
|
||||||
| __________^
|
| __________^
|
||||||
47 | | Mapping, Counter)
|
47 | | Mapping, Counter)
|
||||||
| |_____________________^ UP035
|
| |_____________________^ UP035
|
||||||
48 |
|
48 |
|
||||||
49 | # Bad imports from PYI027 that are now handled by PYI022 (UP035)
|
49 | # Bad imports from PYI027 that are now handled by PYI022 (UP035)
|
||||||
|
|
|
|
||||||
= help: Import from `collections.abc`
|
= help: Import from `collections.abc`
|
||||||
|
|
@ -1001,7 +999,7 @@ UP035.py:84:1: UP035 [*] Import from `typing` instead: `SupportsIndex`
|
||||||
83 | # UP035 on py312+ only
|
83 | # UP035 on py312+ only
|
||||||
84 | from typing_extensions import SupportsIndex
|
84 | from typing_extensions import SupportsIndex
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
85 |
|
85 |
|
||||||
86 | # UP035 on py312+ only
|
86 | # UP035 on py312+ only
|
||||||
|
|
|
|
||||||
= help: Import from `typing`
|
= help: Import from `typing`
|
||||||
|
|
@ -1021,7 +1019,7 @@ UP035.py:87:1: UP035 [*] Import from `typing` instead: `NamedTuple`
|
||||||
86 | # UP035 on py312+ only
|
86 | # UP035 on py312+ only
|
||||||
87 | from typing_extensions import NamedTuple
|
87 | from typing_extensions import NamedTuple
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
88 |
|
88 |
|
||||||
89 | # UP035 on py312+ only: `typing_extensions` supports `frozen_default` (backported from 3.12).
|
89 | # UP035 on py312+ only: `typing_extensions` supports `frozen_default` (backported from 3.12).
|
||||||
|
|
|
|
||||||
= help: Import from `typing`
|
= help: Import from `typing`
|
||||||
|
|
@ -1041,7 +1039,7 @@ UP035.py:90:1: UP035 [*] Import from `typing` instead: `dataclass_transform`
|
||||||
89 | # UP035 on py312+ only: `typing_extensions` supports `frozen_default` (backported from 3.12).
|
89 | # UP035 on py312+ only: `typing_extensions` supports `frozen_default` (backported from 3.12).
|
||||||
90 | from typing_extensions import dataclass_transform
|
90 | from typing_extensions import dataclass_transform
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
91 |
|
91 |
|
||||||
92 | # UP035
|
92 | # UP035
|
||||||
|
|
|
|
||||||
= help: Import from `typing`
|
= help: Import from `typing`
|
||||||
|
|
@ -1061,7 +1059,7 @@ UP035.py:93:1: UP035 [*] Import from `enum` instead: `StrEnum`
|
||||||
92 | # UP035
|
92 | # UP035
|
||||||
93 | from backports.strenum import StrEnum
|
93 | from backports.strenum import StrEnum
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
94 |
|
94 |
|
||||||
95 | # UP035
|
95 | # UP035
|
||||||
|
|
|
|
||||||
= help: Import from `enum`
|
= help: Import from `enum`
|
||||||
|
|
@ -1081,7 +1079,7 @@ UP035.py:96:1: UP035 [*] Import from `typing` instead: `override`
|
||||||
95 | # UP035
|
95 | # UP035
|
||||||
96 | from typing_extensions import override
|
96 | from typing_extensions import override
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
97 |
|
97 |
|
||||||
98 | # UP035
|
98 | # UP035
|
||||||
|
|
|
|
||||||
= help: Import from `typing`
|
= help: Import from `typing`
|
||||||
|
|
@ -1101,7 +1099,7 @@ UP035.py:99:1: UP035 [*] Import from `collections.abc` instead: `Buffer`
|
||||||
98 | # UP035
|
98 | # UP035
|
||||||
99 | from typing_extensions import Buffer
|
99 | from typing_extensions import Buffer
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
100 |
|
100 |
|
||||||
101 | # UP035
|
101 | # UP035
|
||||||
|
|
|
|
||||||
= help: Import from `collections.abc`
|
= help: Import from `collections.abc`
|
||||||
|
|
@ -1121,7 +1119,7 @@ UP035.py:102:1: UP035 [*] Import from `types` instead: `get_original_bases`
|
||||||
101 | # UP035
|
101 | # UP035
|
||||||
102 | from typing_extensions import get_original_bases
|
102 | from typing_extensions import get_original_bases
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
103 |
|
103 |
|
||||||
104 | # UP035 on py313+ only
|
104 | # UP035 on py313+ only
|
||||||
|
|
|
|
||||||
= help: Import from `types`
|
= help: Import from `types`
|
||||||
|
|
@ -1141,7 +1139,7 @@ UP035.py:105:1: UP035 [*] Import from `typing` instead: `TypeVar`
|
||||||
104 | # UP035 on py313+ only
|
104 | # UP035 on py313+ only
|
||||||
105 | from typing_extensions import TypeVar
|
105 | from typing_extensions import TypeVar
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
106 |
|
106 |
|
||||||
107 | # UP035 on py313+ only
|
107 | # UP035 on py313+ only
|
||||||
|
|
|
|
||||||
= help: Import from `typing`
|
= help: Import from `typing`
|
||||||
|
|
@ -1161,7 +1159,7 @@ UP035.py:108:1: UP035 [*] Import from `types` instead: `CapsuleType`
|
||||||
107 | # UP035 on py313+ only
|
107 | # UP035 on py313+ only
|
||||||
108 | from typing_extensions import CapsuleType
|
108 | from typing_extensions import CapsuleType
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ UP035
|
||||||
109 |
|
109 |
|
||||||
110 | # UP035 on py313+ only
|
110 | # UP035 on py313+ only
|
||||||
|
|
|
|
||||||
= help: Import from `types`
|
= help: Import from `types`
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,11 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/refurb/mod.rs
|
source: crates/ruff_linter/src/rules/refurb/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
FURB110.py:1:5: FURB110 [*] Replace ternary `if` expression with `or` operator
|
FURB110.py:1:5: FURB110 [*] Replace ternary `if` expression with `or` operator
|
||||||
|
|
|
|
||||||
1 | z = x if x else y # FURB110
|
1 | z = x if x else y # FURB110
|
||||||
| ^^^^^^^^^^^^^ FURB110
|
| ^^^^^^^^^^^^^ FURB110
|
||||||
2 |
|
2 |
|
||||||
3 | z = x \
|
3 | z = x \
|
||||||
|
|
|
|
||||||
= help: Replace with `or` operator
|
= help: Replace with `or` operator
|
||||||
|
|
@ -21,12 +20,12 @@ FURB110.py:1:5: FURB110 [*] Replace ternary `if` expression with `or` operator
|
||||||
FURB110.py:3:5: FURB110 [*] Replace ternary `if` expression with `or` operator
|
FURB110.py:3:5: FURB110 [*] Replace ternary `if` expression with `or` operator
|
||||||
|
|
|
|
||||||
1 | z = x if x else y # FURB110
|
1 | z = x if x else y # FURB110
|
||||||
2 |
|
2 |
|
||||||
3 | z = x \
|
3 | z = x \
|
||||||
| _____^
|
| _____^
|
||||||
4 | | if x else y # FURB110
|
4 | | if x else y # FURB110
|
||||||
| |_______________^ FURB110
|
| |_______________^ FURB110
|
||||||
5 |
|
5 |
|
||||||
6 | z = x if x \
|
6 | z = x if x \
|
||||||
|
|
|
|
||||||
= help: Replace with `or` operator
|
= help: Replace with `or` operator
|
||||||
|
|
@ -44,13 +43,13 @@ FURB110.py:3:5: FURB110 [*] Replace ternary `if` expression with `or` operator
|
||||||
FURB110.py:6:5: FURB110 [*] Replace ternary `if` expression with `or` operator
|
FURB110.py:6:5: FURB110 [*] Replace ternary `if` expression with `or` operator
|
||||||
|
|
|
|
||||||
4 | if x else y # FURB110
|
4 | if x else y # FURB110
|
||||||
5 |
|
5 |
|
||||||
6 | z = x if x \
|
6 | z = x if x \
|
||||||
| _____^
|
| _____^
|
||||||
7 | | else \
|
7 | | else \
|
||||||
8 | | y # FURB110
|
8 | | y # FURB110
|
||||||
| |_________^ FURB110
|
| |_________^ FURB110
|
||||||
9 |
|
9 |
|
||||||
10 | z = x() if x() else y() # FURB110
|
10 | z = x() if x() else y() # FURB110
|
||||||
|
|
|
|
||||||
= help: Replace with `or` operator
|
= help: Replace with `or` operator
|
||||||
|
|
@ -70,10 +69,10 @@ FURB110.py:6:5: FURB110 [*] Replace ternary `if` expression with `or` operator
|
||||||
FURB110.py:10:5: FURB110 [*] Replace ternary `if` expression with `or` operator
|
FURB110.py:10:5: FURB110 [*] Replace ternary `if` expression with `or` operator
|
||||||
|
|
|
|
||||||
8 | y # FURB110
|
8 | y # FURB110
|
||||||
9 |
|
9 |
|
||||||
10 | z = x() if x() else y() # FURB110
|
10 | z = x() if x() else y() # FURB110
|
||||||
| ^^^^^^^^^^^^^^^^^^^ FURB110
|
| ^^^^^^^^^^^^^^^^^^^ FURB110
|
||||||
11 |
|
11 |
|
||||||
12 | # FURB110
|
12 | # FURB110
|
||||||
|
|
|
|
||||||
= help: Replace with `or` operator
|
= help: Replace with `or` operator
|
||||||
|
|
@ -100,7 +99,7 @@ FURB110.py:13:5: FURB110 [*] Replace ternary `if` expression with `or` operator
|
||||||
18 | | y
|
18 | | y
|
||||||
19 | | )
|
19 | | )
|
||||||
| |_^ FURB110
|
| |_^ FURB110
|
||||||
20 |
|
20 |
|
||||||
21 | # FURB110
|
21 | # FURB110
|
||||||
|
|
|
|
||||||
= help: Replace with `or` operator
|
= help: Replace with `or` operator
|
||||||
|
|
@ -123,8 +122,7 @@ FURB110.py:23:5: FURB110 [*] Replace ternary `if` expression with `or` operator
|
||||||
|
|
|
|
||||||
21 | # FURB110
|
21 | # FURB110
|
||||||
22 | z = (
|
22 | z = (
|
||||||
23 | x if (
|
23 | / x if (
|
||||||
| _____^
|
|
||||||
24 | | # Test for x.
|
24 | | # Test for x.
|
||||||
25 | | x
|
25 | | x
|
||||||
26 | | ) else (
|
26 | | ) else (
|
||||||
|
|
@ -154,8 +152,7 @@ FURB110.py:34:5: FURB110 [*] Replace ternary `if` expression with `or` operator
|
||||||
|
|
|
|
||||||
32 | # FURB110
|
32 | # FURB110
|
||||||
33 | z = (
|
33 | z = (
|
||||||
34 | x if
|
34 | / x if
|
||||||
| _____^
|
|
||||||
35 | | # If true, use x.
|
35 | | # If true, use x.
|
||||||
36 | | x
|
36 | | x
|
||||||
37 | | # Otherwise, use y.
|
37 | | # Otherwise, use y.
|
||||||
|
|
@ -185,8 +182,7 @@ FURB110.py:44:5: FURB110 [*] Replace ternary `if` expression with `or` operator
|
||||||
|
|
|
|
||||||
42 | # FURB110
|
42 | # FURB110
|
||||||
43 | z = (
|
43 | z = (
|
||||||
44 | x
|
44 | / x
|
||||||
| _____^
|
|
||||||
45 | | if x
|
45 | | if x
|
||||||
46 | | else y
|
46 | | else y
|
||||||
47 | | if y > 0
|
47 | | if y > 0
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/refurb/mod.rs
|
source: crates/ruff_linter/src/rules/refurb/mod.rs
|
||||||
snapshot_kind: text
|
|
||||||
---
|
---
|
||||||
FURB113.py:23:1: FURB113 [*] Use `nums.extend((1, 2))` instead of repeatedly calling `nums.append()`
|
FURB113.py:23:1: FURB113 [*] Use `nums.extend((1, 2))` instead of repeatedly calling `nums.append()`
|
||||||
|
|
|
|
||||||
|
|
@ -156,8 +155,7 @@ FURB113.py:69:5: FURB113 [*] Use `nums.extend((1, 2))` instead of repeatedly cal
|
||||||
|
|
|
|
||||||
67 | if True:
|
67 | if True:
|
||||||
68 | # FURB113
|
68 | # FURB113
|
||||||
69 | nums.append(1)
|
69 | / nums.append(1)
|
||||||
| _____^
|
|
||||||
70 | | nums.append(2)
|
70 | | nums.append(2)
|
||||||
| |__________________^ FURB113
|
| |__________________^ FURB113
|
||||||
|
|
|
|
||||||
|
|
@ -178,8 +176,7 @@ FURB113.py:75:5: FURB113 [*] Use `nums.extend((1, 2))` instead of repeatedly cal
|
||||||
|
|
|
|
||||||
73 | if True:
|
73 | if True:
|
||||||
74 | # FURB113
|
74 | # FURB113
|
||||||
75 | nums.append(1)
|
75 | / nums.append(1)
|
||||||
| _____^
|
|
||||||
76 | | nums.append(2)
|
76 | | nums.append(2)
|
||||||
| |__________________^ FURB113
|
| |__________________^ FURB113
|
||||||
77 | pass
|
77 | pass
|
||||||
|
|
@ -201,8 +198,7 @@ FURB113.py:82:5: FURB113 Use `nums.extend((1, 2, 3))` instead of repeatedly call
|
||||||
|
|
|
|
||||||
80 | if True:
|
80 | if True:
|
||||||
81 | # FURB113
|
81 | # FURB113
|
||||||
82 | nums.append(1)
|
82 | / nums.append(1)
|
||||||
| _____^
|
|
||||||
83 | | nums2.append(1)
|
83 | | nums2.append(1)
|
||||||
84 | | nums.append(2)
|
84 | | nums.append(2)
|
||||||
85 | | nums.append(3)
|
85 | | nums.append(3)
|
||||||
|
|
@ -214,8 +210,7 @@ FURB113.py:90:5: FURB113 [*] Use `x.extend((1, 2))` instead of repeatedly callin
|
||||||
|
|
|
|
||||||
88 | def yes_one(x: list[int]):
|
88 | def yes_one(x: list[int]):
|
||||||
89 | # FURB113
|
89 | # FURB113
|
||||||
90 | x.append(1)
|
90 | / x.append(1)
|
||||||
| _____^
|
|
||||||
91 | | x.append(2)
|
91 | | x.append(2)
|
||||||
| |_______________^ FURB113
|
| |_______________^ FURB113
|
||||||
|
|
|
|
||||||
|
|
@ -236,8 +231,7 @@ FURB113.py:96:5: FURB113 [*] Use `x.extend((1, 2))` instead of repeatedly callin
|
||||||
|
|
|
|
||||||
94 | def yes_two(x: List[int]):
|
94 | def yes_two(x: List[int]):
|
||||||
95 | # FURB113
|
95 | # FURB113
|
||||||
96 | x.append(1)
|
96 | / x.append(1)
|
||||||
| _____^
|
|
||||||
97 | | x.append(2)
|
97 | | x.append(2)
|
||||||
| |_______________^ FURB113
|
| |_______________^ FURB113
|
||||||
|
|
|
|
||||||
|
|
@ -258,8 +252,7 @@ FURB113.py:102:5: FURB113 [*] Use `x.extend((1, 2))` instead of repeatedly calli
|
||||||
|
|
|
|
||||||
100 | def yes_three(*, x: list[int]):
|
100 | def yes_three(*, x: list[int]):
|
||||||
101 | # FURB113
|
101 | # FURB113
|
||||||
102 | x.append(1)
|
102 | / x.append(1)
|
||||||
| _____^
|
|
||||||
103 | | x.append(2)
|
103 | | x.append(2)
|
||||||
| |_______________^ FURB113
|
| |_______________^ FURB113
|
||||||
|
|
|
|
||||||
|
|
@ -280,8 +273,7 @@ FURB113.py:108:5: FURB113 [*] Use `x.extend((1, 2))` instead of repeatedly calli
|
||||||
|
|
|
|
||||||
106 | def yes_four(x: list[int], /):
|
106 | def yes_four(x: list[int], /):
|
||||||
107 | # FURB113
|
107 | # FURB113
|
||||||
108 | x.append(1)
|
108 | / x.append(1)
|
||||||
| _____^
|
|
||||||
109 | | x.append(2)
|
109 | | x.append(2)
|
||||||
| |_______________^ FURB113
|
| |_______________^ FURB113
|
||||||
|
|
|
|
||||||
|
|
@ -302,8 +294,7 @@ FURB113.py:114:5: FURB113 Use `x.extend((1, 2, 3))` instead of repeatedly callin
|
||||||
|
|
|
|
||||||
112 | def yes_five(x: list[int], y: list[int]):
|
112 | def yes_five(x: list[int], y: list[int]):
|
||||||
113 | # FURB113
|
113 | # FURB113
|
||||||
114 | x.append(1)
|
114 | / x.append(1)
|
||||||
| _____^
|
|
||||||
115 | | x.append(2)
|
115 | | x.append(2)
|
||||||
116 | | y.append(1)
|
116 | | y.append(1)
|
||||||
117 | | x.append(3)
|
117 | | x.append(3)
|
||||||
|
|
@ -315,8 +306,7 @@ FURB113.py:122:5: FURB113 [*] Use `x.extend((1, 2))` instead of repeatedly calli
|
||||||
|
|
|
|
||||||
120 | def yes_six(x: list):
|
120 | def yes_six(x: list):
|
||||||
121 | # FURB113
|
121 | # FURB113
|
||||||
122 | x.append(1)
|
122 | / x.append(1)
|
||||||
| _____^
|
|
||||||
123 | | x.append(2)
|
123 | | x.append(2)
|
||||||
| |_______________^ FURB113
|
| |_______________^ FURB113
|
||||||
|
|
|
|
||||||
|
|
@ -337,8 +327,7 @@ FURB113.py:128:5: FURB113 Use `nums.extend((1, 2, 3))` instead of repeatedly cal
|
||||||
|
|
|
|
||||||
126 | if True:
|
126 | if True:
|
||||||
127 | # FURB113
|
127 | # FURB113
|
||||||
128 | nums.append(1)
|
128 | / nums.append(1)
|
||||||
| _____^
|
|
||||||
129 | | # comment
|
129 | | # comment
|
||||||
130 | | nums.append(2)
|
130 | | nums.append(2)
|
||||||
131 | | # comment
|
131 | | # comment
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue