summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_builtin.py4
-rw-r--r--Lib/test/test_py3kwarn.py14
-rw-r--r--Python/bltinmodule.c42
3 files changed, 15 insertions, 45 deletions
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
index 4264a99..15d80a3 100644
--- a/Lib/test/test_builtin.py
+++ b/Lib/test/test_builtin.py
@@ -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)
diff --git a/Lib/test/test_py3kwarn.py b/Lib/test/test_py3kwarn.py
index 07d5b34..2c8f509 100644
--- a/Lib/test/test_py3kwarn.py
+++ b/Lib/test/test_py3kwarn.py
@@ -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):
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 45f4081..0234b6b 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -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,