]> granicus.if.org Git - python/commitdiff
It's ok for __hex__ or __oct__ to return unicode.
authorGuido van Rossum <guido@python.org>
Tue, 15 May 2007 21:32:59 +0000 (21:32 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 15 May 2007 21:32:59 +0000 (21:32 +0000)
Don't insist that float('1'*10000) raises an exception.

Lib/test/test_builtin.py
Python/bltinmodule.c

index a11e40aa15bab537a44c5f720a67c82c4a9c5ae0..54df9e114d071dbeb1415cd2b18a8cdc56f66580 100644 (file)
@@ -608,8 +608,7 @@ class BuiltinTest(unittest.TestCase):
         if have_unicode:
             self.assertEqual(float(str("  3.14  ")), 3.14)
             self.assertEqual(float(str(b"  \u0663.\u0661\u0664  ",'raw-unicode-escape')), 3.14)
-            # Implementation limitation in PyFloat_FromString()
-            self.assertRaises(ValueError, float, str("1"*10000))
+            self.assertEqual(float("1"*10000), 1e10000) # Inf on both sides
 
     @run_with_locale('LC_NUMERIC', 'fr_FR', 'de_DE')
     def test_float_with_comma(self):
index aa0d0df1a28576527e8120b6aa930a32ee4f33f3..064b92a7bd4414bfb1cd05d8fbf0038cbd2adac3 100644 (file)
@@ -1230,7 +1230,7 @@ builtin_hex(PyObject *self, PyObject *v)
                return NULL;
        }
        res = (*nb->nb_hex)(v);
-       if (res && !PyString_Check(res)) {
+       if (res && !PyString_Check(res) && !PyUnicode_Check(res)) {
                PyErr_Format(PyExc_TypeError,
                             "__hex__ returned non-string (type %.200s)",
                             res->ob_type->tp_name);
@@ -1430,7 +1430,7 @@ builtin_oct(PyObject *self, PyObject *v)
                return NULL;
        }
        res = (*nb->nb_oct)(v);
-       if (res && !PyString_Check(res)) {
+       if (res && !PyString_Check(res) && !PyUnicode_Check(res)) {
                PyErr_Format(PyExc_TypeError,
                             "__oct__ returned non-string (type %.200s)",
                             res->ob_type->tp_name);