-
Notifications
You must be signed in to change notification settings - Fork 180
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