-
Notifications
You must be signed in to change notification settings - Fork 179
Open
Description
I was pointed to this buggy line:
if x is None != y is None:
(For context, Python allows chaining any of the comparison operators ==
, !=
, is
, is not
, >
, >=
, <
, <=
, in
, not in
. a OP b OP c
is equivalent to a OP b and b OP c
except that b
is only evaluated once.)
I find it hard to imagine a use case for combining is
and !=
in the same chained comparison, so it would be useful for linters to warn about this and similar patterns.
In my company's internal linter, I implemented a check that disallows all chained comparison pairs except ==
+ ==
, is
+ is
, <
/<=
+ <
/<=
, and >
/>=
+ >
/>=
.
It found one false positive where someone had intentionally written ==
+ !=
, but I'd argue it's clearer with and
:
- value.fullName == existing.fullName != "*"
+ (value.fullName == existing.fullName and value.fullName != "*")
Would pyflakes be interested in a similar check?
AlexWaygood
Metadata
Metadata
Assignees
Labels
No labels