Thomas Lee added the comment:
Revised patch - originally misinterpreted what was required here.
bytes() == str() now returns False, bytes() != str() now returns True.
----------
title: PEP 3137 patch: make PyBytes/PyUnicode ==/!= comparisons return False ->
PEP 3137 patch: PyBytes/PyUnicode comparisons
__________________________________
Tracker <[EMAIL PROTECTED]>
<http://bugs.python.org/issue1249>
__________________________________
Index: Objects/bytesobject.c
===================================================================
--- Objects/bytesobject.c (revision 58389)
+++ Objects/bytesobject.c (working copy)
@@ -964,8 +964,9 @@
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;
+ PyErr_Clear();
+ Py_INCREF(Py_NotImplemented);
+ return Py_NotImplemented;
}
self_size = _getbuffer(self, &self_bytes);
Index: Lib/test/test_bytes.py
===================================================================
--- Lib/test/test_bytes.py (revision 58389)
+++ Lib/test/test_bytes.py (working copy)
@@ -130,12 +130,14 @@
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())
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com