mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-01 06:11:43 +00:00

## Summary Resolves #16374. `PLW0177` now also reports the pattern of a case branch if it is an attribute access whose qualified name is that of either `np.nan` or `math.nan`. As the rule is in preview, the changes are not preview-gated. ## Test Plan `cargo nextest run` and `cargo insta test`.
94 lines
1 KiB
Python
94 lines
1 KiB
Python
import math
|
|
from math import nan as bad_val
|
|
import numpy as np
|
|
from numpy import nan as npy_nan
|
|
|
|
|
|
x = float("nan")
|
|
y = np.NaN
|
|
|
|
# PLW0117
|
|
if x == float("nan"):
|
|
pass
|
|
|
|
# PLW0117
|
|
if x == float("NaN"):
|
|
pass
|
|
|
|
# PLW0117
|
|
if x == float("NAN"):
|
|
pass
|
|
|
|
# PLW0117
|
|
if x == float("Nan"):
|
|
pass
|
|
|
|
# PLW0117
|
|
if x == math.nan:
|
|
pass
|
|
|
|
# PLW0117
|
|
if x == bad_val:
|
|
pass
|
|
|
|
# PLW0117
|
|
if y == np.NaN:
|
|
pass
|
|
|
|
# PLW0117
|
|
if y == np.NAN:
|
|
pass
|
|
|
|
# PLW0117
|
|
if y == np.nan:
|
|
pass
|
|
|
|
# PLW0117
|
|
if y == npy_nan:
|
|
pass
|
|
|
|
import builtins
|
|
|
|
# PLW0117
|
|
if x == builtins.float("nan"):
|
|
pass
|
|
|
|
# https://github.com/astral-sh/ruff/issues/16374
|
|
match number:
|
|
# Errors
|
|
case np.nan: ...
|
|
case math.nan: ...
|
|
|
|
# No errors
|
|
case np.nan(): ...
|
|
case math.nan(): ...
|
|
case float('nan'): ...
|
|
case npy_nan: ...
|
|
|
|
# OK
|
|
if math.isnan(x):
|
|
pass
|
|
|
|
# OK
|
|
if np.isnan(y):
|
|
pass
|
|
|
|
# OK
|
|
if x == 0:
|
|
pass
|
|
|
|
# OK
|
|
if x == float("32"):
|
|
pass
|
|
|
|
# OK
|
|
if x == float(42):
|
|
pass
|
|
|
|
# OK
|
|
if y == np.inf:
|
|
pass
|
|
|
|
# OK
|
|
if x == "nan":
|
|
pass
|