It's ok for __hex__ or __oct__ to return unicode.
Don't insist that float('1'*10000) raises an exception.
This commit is contained in:
parent
a45ea5828e
commit
e1083734ec
|
@ -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)
|
||||||
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)
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue