]> granicus.if.org Git - python/commitdiff
Patch #1049 by Thomas Lee.
authorGuido van Rossum <guido@python.org>
Tue, 9 Oct 2007 17:21:10 +0000 (17:21 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 9 Oct 2007 17:21:10 +0000 (17:21 +0000)
Changes comparisons between PyBytes and PyUnicode to return unequal
instead of raising TypeError.

Lib/test/test_bytes.py
Objects/bytesobject.c

index 61950cc273cfc1e1445348fc9247f9e212ff1f36..c51a3202e104a203067b2e454718a8b40fd70645 100644 (file)
@@ -130,12 +130,14 @@ class BytesTest(unittest.TestCase):
         self.assertEqual(str8("abc") < b"ab", False)
         self.assertEqual(str8("abc") <= b"ab", False)
 
-        # Bytes can't be compared to Unicode!
+        # Byte comparisons with unicode should always fail!
         # Test this for all expected byte orders and Unicode character sizes
-        self.assertRaises(TypeError, lambda: b"\0a\0b\0c" == "abc")
-        self.assertRaises(TypeError, lambda: b"\0\0\0a\0\0\0b\0\0\0c" == "abc")
-        self.assertRaises(TypeError, lambda: b"a\0b\0c\0" == "abc")
-        self.assertRaises(TypeError, lambda: b"a\0\0\0b\0\0\0c\0\0\0" == "abc")
+        self.assertEqual(b"\0a\0b\0c" == "abc", False)
+        self.assertEqual(b"\0\0\0a\0\0\0b\0\0\0c" == "abc", False)
+        self.assertEqual(b"a\0b\0c\0" == "abc", False)
+        self.assertEqual(b"a\0\0\0b\0\0\0c\0\0\0" == "abc", False)
+        self.assertEqual(bytes() == str(), False)
+        self.assertEqual(bytes() != str(), True)
 
     def test_nohash(self):
         self.assertRaises(TypeError, hash, bytes())
index c7fe751562520bf3d1e8af42cbe0c3a18a6c541e..da2e23f1f6e89eb820f541b9403da580ed48b38c 100644 (file)
@@ -964,8 +964,8 @@ bytes_richcompare(PyObject *self, PyObject *other, int op)
        error, even if the comparison is for equality. */
     if (PyObject_IsInstance(self, (PyObject*)&PyUnicode_Type) ||
         PyObject_IsInstance(other, (PyObject*)&PyUnicode_Type)) {
-            PyErr_SetString(PyExc_TypeError, "can't compare bytes and str");
-            return NULL;
+        Py_INCREF(Py_NotImplemented);
+        return Py_NotImplemented;
     }
 
     self_size = _getbuffer(self, &self_bytes);