ComparePrimitivesByEqualRule
Enforces the use of ==
and !=
in comparisons to primitives rather than is
and is not
.
The ==
operator checks equality (https://docs.python.org/3/reference/datamodel.html#object.__eq__),
while is
checks identity (https://docs.python.org/3/reference/expressions.html#is).
Message
Don’t use is or is not to compare primitives, as they compare references. Use == or != instead.
Has Autofix: Yes
VALID Code Examples
# 1:
a == 1
# 2:
a == '1'
# 3:
a != '1'
# 4:
'3' == '1'
# 5:
3 == '1'
# 6:
3 > 2 > 1
# 7:
3 > 2 > '1'
# 8:
a is b > 1
# 9:
a is b is c
# 10:
1 > b is c
INVALID Code Examples
# 1:
a is 1
Autofix:
---
+++
@@ -1 +1 @@
-a is 1
+a == 1
# 2:
a is '1'
Autofix:
---
+++
@@ -1 +1 @@
-a is '1'
+a == '1'
# 3:
a is f'1{b}'
Autofix:
---
+++
@@ -1 +1 @@
-a is f'1{b}'
+a == f'1{b}'
# 4:
a is not f'1{d}'
Autofix:
---
+++
@@ -1 +1 @@
-a is not f'1{d}'
+a != f'1{d}'
# 5:
1 is a
Autofix:
---
+++
@@ -1 +1 @@
-1 is a
+1 == a
# 6:
'2' > '1' is a
Autofix:
---
+++
@@ -1 +1 @@
-'2' > '1' is a
+'2' > '1' == a
# 7:
3 > a is 2
Autofix:
---
+++
@@ -1 +1 @@
-3 > a is 2
+3 > a == 2
# 8:
1 is 2
Autofix:
---
+++
@@ -1 +1 @@
-1 is 2
+1 == 2