Christian Heimes added the comment:
New patch:
static PyObject *
string_str(PyObject *op)
{
return PyObject_CallMethod(op, "decode", "s", "ascii");
}
Added file: http://bugs.python.org/file8696/py3k-pep3137_str_bytes_ascii.patch
__________________________________
Tracker <[EMAIL PROTECTED]>
<http://bugs.python.org/issue1392>
__________________________________
Index: Objects/bytesobject.c
===================================================================
--- Objects/bytesobject.c (Revision 58857)
+++ Objects/bytesobject.c (Arbeitskopie)
@@ -923,6 +923,12 @@
}
static PyObject *
+bytes_str(PyObject *op)
+{
+ return PyObject_CallMethod(op, "decode", "s", "ascii");
+}
+
+static PyObject *
bytes_richcompare(PyObject *self, PyObject *other, int op)
{
Py_ssize_t self_size, other_size;
@@ -3063,7 +3069,7 @@
&bytes_as_mapping, /* tp_as_mapping */
0, /* tp_hash */
0, /* tp_call */
- (reprfunc)bytes_repr, /* tp_str */
+ bytes_str, /* tp_str */
PyObject_GenericGetAttr, /* tp_getattro */
0, /* tp_setattro */
&bytes_as_buffer, /* tp_as_buffer */
Index: Objects/stringobject.c
===================================================================
--- Objects/stringobject.c (Revision 58857)
+++ Objects/stringobject.c (Arbeitskopie)
@@ -679,6 +679,12 @@
return PyString_Repr(op, 1);
}
+static PyObject *
+string_str(PyObject *op)
+{
+ return PyObject_CallMethod(op, "decode", "s", "ascii");
+}
+
static Py_ssize_t
string_length(PyStringObject *a)
{
@@ -3090,13 +3096,13 @@
0, /* tp_getattr */
0, /* tp_setattr */
0, /* tp_compare */
- string_repr, /* tp_repr */
+ (reprfunc)string_repr, /* tp_repr */
0, /* tp_as_number */
&string_as_sequence, /* tp_as_sequence */
&string_as_mapping, /* tp_as_mapping */
(hashfunc)string_hash, /* tp_hash */
0, /* tp_call */
- string_repr, /* tp_str */
+ string_str, /* tp_str */
PyObject_GenericGetAttr, /* tp_getattro */
0, /* tp_setattro */
&string_as_buffer, /* tp_as_buffer */
Index: Lib/test/test_bytes.py
===================================================================
--- Lib/test/test_bytes.py (Revision 58857)
+++ Lib/test/test_bytes.py (Arbeitskopie)
@@ -86,16 +86,23 @@
self.assertRaises(ValueError, buffer, [sys.maxint+1])
self.assertRaises(ValueError, buffer, [10**100])
- def test_repr_str(self):
- for f in str, repr:
- self.assertEqual(f(buffer()), "buffer(b'')")
- self.assertEqual(f(buffer([0])), "buffer(b'\\x00')")
- self.assertEqual(f(buffer([0, 1, 254, 255])),
- "buffer(b'\\x00\\x01\\xfe\\xff')")
- self.assertEqual(f(b"abc"), "b'abc'")
- self.assertEqual(f(b"'"), '''b"'"''')
- self.assertEqual(f(b"'\""), r"""b'\'"'""")
+ def test_repr(self):
+ self.assertEqual(repr(buffer()), "buffer(b'')")
+ self.assertEqual(repr(buffer([0])), "buffer(b'\\x00')")
+ self.assertEqual(repr(buffer([0, 1, 254, 255])),
+ "buffer(b'\\x00\\x01\\xfe\\xff')")
+ self.assertEqual(repr(b"abc"), "b'abc'")
+ self.assertEqual(repr(b"'"), '''b"'"''')
+ self.assertEqual(repr(b"'\""), r"""b'\'"'""")
+ def test_str(self):
+ self.assertEqual(str(buffer()), "")
+ self.assertEqual(str(buffer([0])), "\x00")
+ self.assertRaises(UnicodeDecodeError, str, buffer([0, 1, 254, 255]))
+ self.assertEqual(str(b"abc"), "abc")
+ self.assertEqual(str(b"'"), "'")
+ self.assertEqual(str(b"'\""), "'\"")
+ self.assertRaises(UnicodeDecodeError, str, bytes([0, 1, 254, 255]))
def test_compare(self):
b1 = buffer([1, 2, 3])
@@ -371,9 +378,10 @@
self.assertEqual(b, buffer(sample))
def test_to_str(self):
- self.assertEqual(str(b''), "b''")
- self.assertEqual(str(b'x'), "b'x'")
- self.assertEqual(str(b'\x80'), "b'\\x80'")
+ self.assertEqual(str(b''), "")
+ self.assertEqual(str(b'x'), "x")
+ self.assertEqual(str(b'\x61\x62'), "ab")
+ self.assertRaises(UnicodeDecodeError, str, b'\xff')
def test_from_int(self):
b = buffer(0)
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com