Use ==/!= to compare str, bytes, and int literals (#4686)
authorChristian Clauss <cclauss@me.com>
Sat, 11 Jan 2020 05:39:04 +0000 (06:39 +0100)
committerTianqi Chen <tqchen@users.noreply.github.com>
Sat, 11 Jan 2020 05:39:04 +0000 (21:39 -0800)
Identity is not the same thing as equality in Python so use ==/!= to compare str, bytes, and int literals. In Python >= 3.8, these instances will raise __SyntaxWarnings__ so it is best to fix them now. https://docs.python.org/3.8/whatsnew/3.8.html#porting-to-python-3-8

% __python__
```
>>> dtype = "float"
>>> dtype += "16"
>>> dtype == "float16"
True
>>> dtype is "float16"
False
>>> 0 == 0.0
True
>>> 0 is 0.0
False
```

tests/python/relay/test_op_level1.py

index 33c8b90..6723369 100644 (file)
@@ -155,7 +155,7 @@ def test_bias_add():
     for dtype in ['float16', 'float32']:
         xshape=(10, 2, 3, 4)
         bshape=(2,)
-        rtol = 1e-2 if dtype is 'float16' else 1e-5
+        rtol = 1e-2 if dtype == 'float16' else 1e-5
         x = relay.var("x", shape=xshape, dtype=dtype)
         bias = relay.var("bias", dtype=dtype)
         z = relay.nn.bias_add(x, bias)