]> granicus.if.org Git - python/commitdiff
revert 63425 over Guido's Febuary message about this, that I missed
authorBenjamin Peterson <benjamin@python.org>
Sat, 17 May 2008 20:09:42 +0000 (20:09 +0000)
committerBenjamin Peterson <benjamin@python.org>
Sat, 17 May 2008 20:09:42 +0000 (20:09 +0000)
Lib/test/test_builtin.py
Lib/test/test_py3kwarn.py
Python/bltinmodule.c

index 4264a9915ddaea1860ef4a14e2c40492e27295dd..15d80a369831dc35a384844e57d94410a1e426d8 100644 (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)
index 07d5b3465ab9d1c68f1cf9d930be00beaddc710c..2c8f509e605b0b92f755b27c73d641af8cee34f8 100644 (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):
 
index 45f4081aa0104ad9825d551aa1ec358723e296b4..0234b6bd809f66e8451d956ae1810499c4592ee4 100644 (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,