ruff/crates/ruff_linter/resources/test/fixtures/perflint/PERF401.py

262 lines
4.9 KiB
Python

def f():
items = [1, 2, 3, 4]
result = []
for i in items:
if i % 2:
result.append(i) # PERF401
def f():
items = [1, 2, 3, 4]
result = []
for i in items:
result.append(i * i) # PERF401
def f():
items = [1, 2, 3, 4]
result = []
for i in items:
if i % 2:
result.append(i) # Ok
elif i % 2:
result.append(i)
else:
result.append(i)
def f():
items = [1, 2, 3, 4]
result = []
for i in items:
result.append(i) # OK
def f():
items = [1, 2, 3, 4]
result = {}
for i in items:
result[i].append(i) # OK
def f():
items = [1, 2, 3, 4]
result = []
for i in items:
if i not in result:
result.append(i) # OK
def f():
fibonacci = [0, 1]
for i in range(20):
fibonacci.append(sum(fibonacci[-2:])) # OK
print(fibonacci)
def f():
foo = object()
foo.fibonacci = [0, 1]
for i in range(20):
foo.fibonacci.append(sum(foo.fibonacci[-2:])) # OK
print(foo.fibonacci)
class Foo:
def append(self, x):
pass
def f():
items = [1, 2, 3, 4]
result = Foo()
for i in items:
result.append(i) # Ok
async def f():
items = [1, 2, 3, 4]
result = []
async for i in items:
if i % 2:
result.append(i) # PERF401
async def f():
items = [1, 2, 3, 4]
result = []
async for i in items:
result.append(i) # PERF401
async def f():
items = [1, 2, 3, 4]
result = [1, 2]
async for i in items:
result.append(i) # PERF401
def f():
result, _ = [1, 2, 3, 4], ...
for i in range(10):
result.append(i * 2) # PERF401
def f():
result = []
if True:
for i in range(10): # single-line comment 1 should be protected
# single-line comment 2 should be protected
if i % 2: # single-line comment 3 should be protected
result.append(i) # PERF401
def f():
result = [] # comment after assignment should be protected
for i in range(10): # single-line comment 1 should be protected
# single-line comment 2 should be protected
if i % 2: # single-line comment 3 should be protected
result.append(i) # PERF401
def f():
result = []
for i in range(10):
"""block comment stops the fix"""
result.append(i * 2) # Ok
def f(param):
# PERF401
# make sure the fix does not panic if there is no comments
if param:
new_layers = []
for value in param:
new_layers.append(value * 3)
def f():
result = []
var = 1
for _ in range(10):
result.append(var + 1) # PERF401
def f():
# make sure that `tmp` is not deleted
tmp = 1; result = [] # commment should be protected
for i in range(10):
result.append(i + 1) # PERF401
def f():
# make sure that `tmp` is not deleted
result = []; tmp = 1 # commment should be protected
for i in range(10):
result.append(i + 1) # PERF401
def f():
result = [] # comment should be protected
for i in range(10):
result.append(i * 2) # PERF401
def f():
result = []
result.append(1)
for i in range(10):
result.append(i * 2) # PERF401
def f():
result = []
result += [1]
for i in range(10):
result.append(i * 2) # PERF401
def f():
result = []
for val in range(5):
result.append(val * 2) # Ok
print(val)
def f():
result = []
for val in range(5):
result.append(val * 2) # PERF401
val = 1
print(val)
def f():
i = [1, 2, 3]
result = []
for i in i:
result.append(i + 1) # PERF401
def f():
result = []
for i in range( # Comment 1 should not be duplicated
(
2 # Comment 2
+ 1
)
): # Comment 3
if i % 2: # Comment 4
result.append(
(
i + 1,
# Comment 5
2,
)
) # PERF401
def f():
result: list[int] = []
for i in range(10):
result.append(i * 2) # PERF401
def f():
a, b = [1, 2, 3], [4, 5, 6]
result = []
for i in a, b:
result.append(i[0] + i[1]) # PERF401
return result
def f():
values = [1, 2, 3]
result = []
for a in values:
print(a)
for a in values:
result.append(a + 1) # PERF401
def f():
values = [1, 2, 3]
def g():
for a in values:
result.append(a + 1) # PERF401
result = []
def f():
values = [1, 2, 3]
result = []
for i in values:
result.append(i + 1) # Ok
del i
# The fix here must parenthesize the walrus operator
# https://github.com/astral-sh/ruff/issues/15047
def f():
items = []
for i in range(5):
if j := i:
items.append(j)