[Python-checkins] r63428 - in python/trunk: Lib/test/test_builtin.py Lib/test/test_py3kwarn.py Python/bltinmodule.c

benjamin.peterson python-checkins at python.org
Sat May 17 22:09:42 CEST 2008


Author: benjamin.peterson
Date: Sat May 17 22:09:42 2008
New Revision: 63428

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


Modified:
   python/trunk/Lib/test/test_builtin.py
   python/trunk/Lib/test/test_py3kwarn.py
   python/trunk/Python/bltinmodule.c

Modified: python/trunk/Lib/test/test_builtin.py
==============================================================================
--- python/trunk/Lib/test/test_builtin.py	(original)
+++ python/trunk/Lib/test/test_builtin.py	Sat May 17 22:09:42 2008
@@ -632,10 +632,6 @@
         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)

Modified: python/trunk/Lib/test/test_py3kwarn.py
==============================================================================
--- python/trunk/Lib/test/test_py3kwarn.py	(original)
+++ python/trunk/Lib/test/test_py3kwarn.py	Sat May 17 22:09:42 2008
@@ -123,20 +123,6 @@
         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):
 

Modified: python/trunk/Python/bltinmodule.c
==============================================================================
--- python/trunk/Python/bltinmodule.c	(original)
+++ python/trunk/Python/bltinmodule.c	Sat May 17 22:09:42 2008
@@ -1181,29 +1181,22 @@
 {
 	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 @@
 			   "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,


More information about the Python-checkins mailing list