revert 63425 over Guido's Febuary message about this, that I missed

This commit is contained in:
Benjamin Peterson 2008-05-17 20:09:42 +00:00
parent d7943cb71d
commit c6d64ec83f
3 changed files with 15 additions and 45 deletions

View File

@ -632,10 +632,6 @@ class BuiltinTest(unittest.TestCase):
self.assertEqual(hex(-16L), '-0x10L')
self.assertRaises(TypeError, hex, {})
class Spam(object):
def __index__(self): return 23
self.assertEqual(hex(Spam()), "0x17")
def test_id(self):
id(None)
id(1)

View File

@ -123,20 +123,6 @@ class TestPy3KWarnings(unittest.TestCase):
with catch_warning() as w:
self.assertWarning(buffer('a'), w, expected)
def test_hex_and_oct(self):
class Spam(object):
def __hex__(self): return "0x17"
def __oct__(self): return "07"
expected = 'In 3.x, oct() converts the result of __index__ to octal; ' \
'Use future_builtins.oct for this behavior. ' \
'Also, note the returned format is different.'
with catch_warning() as w:
self.assertWarning(oct(Spam()), w, expected)
expected = 'In 3.x, hex() converts the result of __index__ to hexadecimal.'
with catch_warning() as w:
self.assertWarning(hex(Spam()), w, expected)
class TestStdlibRemovals(unittest.TestCase):

View File

@ -1181,29 +1181,22 @@ builtin_hex(PyObject *self, PyObject *v)
{
PyNumberMethods *nb;
PyObject *res;
nb = Py_TYPE(v)->tp_as_number;
if (nb != NULL && nb->nb_hex != NULL) {
if (PyErr_WarnPy3k("In 3.x, hex() converts "
"the result of __index__ to hexadecimal.",
1) < 0)
return NULL;
res = (*nb->nb_hex)(v);
if (res && !PyString_Check(res)) {
PyErr_Format(PyExc_TypeError,
"__hex__ returned non-string (type %.200s)",
res->ob_type->tp_name);
Py_DECREF(res);
return NULL;
}
return res;
if ((nb = v->ob_type->tp_as_number) == NULL ||
nb->nb_hex == NULL) {
PyErr_SetString(PyExc_TypeError,
"hex() argument can't be converted to hex");
return NULL;
}
else if (PyIndex_Check(v))
return PyNumber_ToBase(v, 16);
PyErr_SetString(PyExc_TypeError,
"hex() argument can't be converted to hex");
return NULL;
res = (*nb->nb_hex)(v);
if (res && !PyString_Check(res)) {
PyErr_Format(PyExc_TypeError,
"__hex__ returned non-string (type %.200s)",
res->ob_type->tp_name);
Py_DECREF(res);
return NULL;
}
return res;
}
PyDoc_STRVAR(hex_doc,
@ -1463,11 +1456,6 @@ builtin_oct(PyObject *self, PyObject *v)
"oct() argument can't be converted to oct");
return NULL;
}
if (PyErr_WarnPy3k("In 3.x, oct() converts the result of __index__ to octal; "
"Use future_builtins.oct for this behavior. "
"Also, note the returned format is different.",
1) < 0)
return NULL;
res = (*nb->nb_oct)(v);
if (res && !PyString_Check(res)) {
PyErr_Format(PyExc_TypeError,