From cce2f217d403dff7344fcc1c381e36dfd075a961 Mon Sep 17 00:00:00 2001
From: Mark Dickinson <dickinsm@gmail.com>
Date: Thu, 15 Jan 2009 19:32:23 +0000
Subject: Issue 4910, patch 2 of (probably) 3: pave the way for renaming of
 nb_long:  remove last remaining use of nb_long (in the struct module) from
 the core, set nb_long slots on all builtin and extension types to 0, and
 remove uses of __long__ in test_complex and test_binop.

Reviewed by Benjamin Peterson.
---
 Lib/test/test_binop.py  |  6 ------
 Lib/test/test_cmath.py  |  4 +---
 Modules/_struct.c       |  4 ++--
 Objects/complexobject.c | 10 +---------
 Objects/floatobject.c   |  2 +-
 Objects/longobject.c    |  2 +-
 Objects/weakrefobject.c |  3 +--
 PC/winreg.c             |  2 +-
 8 files changed, 8 insertions(+), 25 deletions(-)

diff --git a/Lib/test/test_binop.py b/Lib/test/test_binop.py
index f60fe3f..0dc18dd 100644
--- a/Lib/test/test_binop.py
+++ b/Lib/test/test_binop.py
@@ -77,12 +77,6 @@ class Rat(object):
                                       repr(self))
         raise ValueError("can't convert %s to int" % repr(self))
 
-    def __long__(self):
-        """Convert a Rat to an long; self.den must be 1."""
-        if self.__den == 1:
-            return int(self.__num)
-        raise ValueError("can't convert %s to long" % repr(self))
-
     def __add__(self, other):
         """Add two Rats, or a Rat and a number."""
         if isint(other):
diff --git a/Lib/test/test_cmath.py b/Lib/test/test_cmath.py
index 3c34fec..17cb566 100755
--- a/Lib/test/test_cmath.py
+++ b/Lib/test/test_cmath.py
@@ -182,11 +182,9 @@ class CMathTests(unittest.TestCase):
             pass
         class MyInt(object):
             def __int__(self): return 2
-            def __long__(self): return 2
             def __index__(self): return 2
         class MyIntOS:
             def __int__(self): return 2
-            def __long__(self): return 2
             def __index__(self): return 2
 
         # other possible combinations of __float__ and __complex__
@@ -219,7 +217,7 @@ class CMathTests(unittest.TestCase):
             self.assertEqual(f(JustFloatOS()), f(flt_arg))
             # TypeError should be raised for classes not providing
             # either __complex__ or __float__, even if they provide
-            # __int__, __long__ or __index__.  An old-style class
+            # __int__ or __index__.  An old-style class
             # currently raises AttributeError instead of a TypeError;
             # this could be considered a bug.
             self.assertRaises(TypeError, f, NeitherComplexNorFloat())
diff --git a/Modules/_struct.c b/Modules/_struct.c
index a9b1ffa..a99e7f2 100644
--- a/Modules/_struct.c
+++ b/Modules/_struct.c
@@ -127,8 +127,8 @@ get_pylong(PyObject *v)
 		return v;
 	}
 	m = Py_TYPE(v)->tp_as_number;
-	if (m != NULL && m->nb_long != NULL) {
-		v = m->nb_long(v);
+	if (m != NULL && m->nb_int != NULL) {
+		v = m->nb_int(v);
 		if (v == NULL)
 			return NULL;
 		if (PyLong_Check(v))
diff --git a/Objects/complexobject.c b/Objects/complexobject.c
index 75283a0..a7fd7dc 100644
--- a/Objects/complexobject.c
+++ b/Objects/complexobject.c
@@ -661,14 +661,6 @@ complex_int(PyObject *v)
 }
 
 static PyObject *
-complex_long(PyObject *v)
-{
-	PyErr_SetString(PyExc_TypeError,
-		   "can't convert complex to long; use long(abs(z))");
-	return NULL;
-}
-
-static PyObject *
 complex_float(PyObject *v)
 {
 	PyErr_SetString(PyExc_TypeError,
@@ -1068,7 +1060,7 @@ static PyNumberMethods complex_as_number = {
 	0,					/* nb_xor */
 	0,					/* nb_or */
 	complex_int,				/* nb_int */
-	complex_long,				/* nb_long */
+	0,					/* nb_long */
 	complex_float,				/* nb_float */
 	0,					/* nb_inplace_add */
 	0,					/* nb_inplace_subtract */
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index 20c1eef..7292ca5 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -1798,7 +1798,7 @@ static PyNumberMethods float_as_number = {
 	0,		/*nb_xor*/
 	0,		/*nb_or*/
 	float_trunc,	/*nb_int*/
-	float_trunc,	/*nb_long*/
+	0,		/*nb_long*/
 	float_float,	/*nb_float*/
 	0,		/* nb_inplace_add */
 	0,		/* nb_inplace_subtract */
diff --git a/Objects/longobject.c b/Objects/longobject.c
index 9993d10..259f7c5 100644
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -3830,7 +3830,7 @@ static PyNumberMethods long_as_number = {
 			long_xor,	/*nb_xor*/
 			long_or,	/*nb_or*/
 			long_long,	/*nb_int*/
-			long_long,	/*nb_long*/
+	0,				/*nb_long*/
 			long_float,	/*nb_float*/
 	0,				/* nb_inplace_add */
 	0,				/* nb_inplace_subtract */
diff --git a/Objects/weakrefobject.c b/Objects/weakrefobject.c
index faa0f86..538b21c 100644
--- a/Objects/weakrefobject.c
+++ b/Objects/weakrefobject.c
@@ -489,7 +489,6 @@ WRAP_BINARY(proxy_and, PyNumber_And)
 WRAP_BINARY(proxy_xor, PyNumber_Xor)
 WRAP_BINARY(proxy_or, PyNumber_Or)
 WRAP_UNARY(proxy_int, PyNumber_Int)
-WRAP_UNARY(proxy_long, PyNumber_Long)
 WRAP_UNARY(proxy_float, PyNumber_Float)
 WRAP_BINARY(proxy_iadd, PyNumber_InPlaceAdd)
 WRAP_BINARY(proxy_isub, PyNumber_InPlaceSubtract)
@@ -595,7 +594,7 @@ static PyNumberMethods proxy_as_number = {
     proxy_xor,              /*nb_xor*/
     proxy_or,               /*nb_or*/
     proxy_int,              /*nb_int*/
-    proxy_long,             /*nb_long*/
+    0,                      /*nb_long*/
     proxy_float,            /*nb_float*/
     proxy_iadd,             /*nb_inplace_add*/
     proxy_isub,             /*nb_inplace_subtract*/
diff --git a/PC/winreg.c b/PC/winreg.c
index 7d1d816..7316fcd 100644
--- a/PC/winreg.c
+++ b/PC/winreg.c
@@ -451,7 +451,7 @@ static PyNumberMethods PyHKEY_NumberMethods =
 	PyHKEY_binaryFailureFunc,	/* nb_xor */
 	PyHKEY_binaryFailureFunc,	/* nb_or */
 	PyHKEY_intFunc,			/* nb_int */
-	PyHKEY_unaryFailureFunc,	/* nb_long */
+	0,				/* nb_long */
 	PyHKEY_unaryFailureFunc,	/* nb_float */
 };
 
-- 
cgit v0.12