Commit a3508acb authored by Guido van Rossum's avatar Guido van Rossum

It's ok for __hex__ or __oct__ to return unicode.

Don't insist that float('1'*10000) raises an exception.
parent 4005afa4
...@@ -608,8 +608,7 @@ class BuiltinTest(unittest.TestCase): ...@@ -608,8 +608,7 @@ class BuiltinTest(unittest.TestCase):
if have_unicode: if have_unicode:
self.assertEqual(float(str(" 3.14 ")), 3.14) self.assertEqual(float(str(" 3.14 ")), 3.14)
self.assertEqual(float(str(b" \u0663.\u0661\u0664 ",'raw-unicode-escape')), 3.14) self.assertEqual(float(str(b" \u0663.\u0661\u0664 ",'raw-unicode-escape')), 3.14)
# Implementation limitation in PyFloat_FromString() self.assertEqual(float("1"*10000), 1e10000) # Inf on both sides
self.assertRaises(ValueError, float, str("1"*10000))
@run_with_locale('LC_NUMERIC', 'fr_FR', 'de_DE') @run_with_locale('LC_NUMERIC', 'fr_FR', 'de_DE')
def test_float_with_comma(self): def test_float_with_comma(self):
......
...@@ -1230,7 +1230,7 @@ builtin_hex(PyObject *self, PyObject *v) ...@@ -1230,7 +1230,7 @@ builtin_hex(PyObject *self, PyObject *v)
return NULL; return NULL;
} }
res = (*nb->nb_hex)(v); res = (*nb->nb_hex)(v);
if (res && !PyString_Check(res)) { if (res && !PyString_Check(res) && !PyUnicode_Check(res)) {
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"__hex__ returned non-string (type %.200s)", "__hex__ returned non-string (type %.200s)",
res->ob_type->tp_name); res->ob_type->tp_name);
...@@ -1430,7 +1430,7 @@ builtin_oct(PyObject *self, PyObject *v) ...@@ -1430,7 +1430,7 @@ builtin_oct(PyObject *self, PyObject *v)
return NULL; return NULL;
} }
res = (*nb->nb_oct)(v); res = (*nb->nb_oct)(v);
if (res && !PyString_Check(res)) { if (res && !PyString_Check(res) && !PyUnicode_Check(res)) {
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"__oct__ returned non-string (type %.200s)", "__oct__ returned non-string (type %.200s)",
res->ob_type->tp_name); res->ob_type->tp_name);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment