mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-29 13:25:17 +00:00

## Summary Make SIM401 rules to catch ternary operations when preview is enabled. Fixes #7288. ## Test Plan Tested against `SIM401.py` fixtures.
129 lines
2.2 KiB
Python
129 lines
2.2 KiB
Python
###
|
||
# Positive cases
|
||
###
|
||
|
||
# SIM401 (pattern-1)
|
||
if key in a_dict:
|
||
var = a_dict[key]
|
||
else:
|
||
var = "default1"
|
||
|
||
# SIM401 (pattern-2)
|
||
if key not in a_dict:
|
||
var = "default2"
|
||
else:
|
||
var = a_dict[key]
|
||
|
||
# OK (default contains effect)
|
||
if key in a_dict:
|
||
var = a_dict[key]
|
||
else:
|
||
var = val1 + val2
|
||
|
||
# SIM401 (complex expression in key)
|
||
if keys[idx] in a_dict:
|
||
var = a_dict[keys[idx]]
|
||
else:
|
||
var = "default"
|
||
|
||
# SIM401 (complex expression in dict)
|
||
if key in dicts[idx]:
|
||
var = dicts[idx][key]
|
||
else:
|
||
var = "default"
|
||
|
||
# SIM401 (complex expression in var)
|
||
if key in a_dict:
|
||
vars[idx] = a_dict[key]
|
||
else:
|
||
vars[idx] = "defaultß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789"
|
||
|
||
# SIM401
|
||
if foo():
|
||
pass
|
||
else:
|
||
if key in a_dict:
|
||
vars[idx] = a_dict[key]
|
||
else:
|
||
vars[idx] = "default"
|
||
|
||
###
|
||
# Negative cases
|
||
###
|
||
|
||
# OK (too long)
|
||
if key in a_dict:
|
||
vars[idx] = a_dict[key]
|
||
else:
|
||
vars[idx] = "defaultß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789ß9💣2ℝ6789ß"
|
||
|
||
# OK (false negative)
|
||
if not key in a_dict:
|
||
var = "default"
|
||
else:
|
||
var = a_dict[key]
|
||
|
||
# OK (different dict)
|
||
if key in a_dict:
|
||
var = other_dict[key]
|
||
else:
|
||
var = "default"
|
||
|
||
# OK (different key)
|
||
if key in a_dict:
|
||
var = a_dict[other_key]
|
||
else:
|
||
var = "default"
|
||
|
||
# OK (different var)
|
||
if key in a_dict:
|
||
var = a_dict[key]
|
||
else:
|
||
other_var = "default"
|
||
|
||
# OK (extra vars in body)
|
||
if key in a_dict:
|
||
var = a_dict[key]
|
||
var2 = value2
|
||
else:
|
||
var = "default"
|
||
|
||
# OK (extra vars in orelse)
|
||
if key in a_dict:
|
||
var = a_dict[key]
|
||
else:
|
||
var2 = value2
|
||
var = "default"
|
||
|
||
# OK (complex default value)
|
||
if key in a_dict:
|
||
var = a_dict[key]
|
||
else:
|
||
var = foo()
|
||
|
||
# OK (complex default value)
|
||
if key in a_dict:
|
||
var = a_dict[key]
|
||
else:
|
||
var = a_dict["fallback"]
|
||
|
||
# OK (false negative for elif)
|
||
if foo():
|
||
pass
|
||
elif key in a_dict:
|
||
vars[idx] = a_dict[key]
|
||
else:
|
||
vars[idx] = "default"
|
||
|
||
###
|
||
# Positive cases (preview)
|
||
###
|
||
|
||
# SIM401
|
||
var = a_dict[key] if key in a_dict else "default3"
|
||
|
||
# SIM401
|
||
var = "default-1" if key not in a_dict else a_dict[key]
|
||
|
||
# OK (default contains effect)
|
||
var = a_dict[key] if key in a_dict else val1 + val2
|