$ cat >furb122.py <<'# EOF'
from pathlib import Path
def write(lines_a, lines_b, *, write_a):
with Path("file.txt").open("w", encoding="utf-8") as f:
for line in lines_a if write_a else lines_b:
f.write(f"[{line}]")
with Path("file.txt").open("w", encoding="utf-8") as f:
for l in lambda: 0:
f.write(f"[{l}]")
# EOF
$ ruff --isolated check furb122.py --select FURB122 --preview --diff 2>&1 | grep error:
error: Fix introduced a syntax error. Reverting all changes.
$ cat >furb142.py <<'# EOF'
s = set()
for x in (1,) if True else (2,):
s.add(-x)
for x in lambda: 0:
s.discard(-x)
# EOF
$ ruff --isolated check furb142.py --select FURB142 --preview --diff 2>&1 | grep error:
error: Fix introduced a syntax error. Reverting all changes.
Summary
The fixes for
for-loop-writes(FURB122) andfor-loop-set-mutations(FURB142) should parenthesize the iterable expression when it is a lambda expression or a ternary conditional expression and it is not already parenthesized and the fix produces a comprehension.Version
ruff 0.11.13 (5faf72a 2025-06-05)