diff --git a/Doc/api/refcounts.dat b/Doc/api/refcounts.dat index b8aaad543d0..019bfd4ef83 100644 --- a/Doc/api/refcounts.dat +++ b/Doc/api/refcounts.dat @@ -712,10 +712,6 @@ PyNumber_And:PyObject*:o2:0: PyNumber_Check:PyObject*:o:0: PyNumber_Check:int::: -PyNumber_Coerce:int::: -PyNumber_Coerce:PyObject**:p1:+1: -PyNumber_Coerce:PyObject**:p2:+1: - PyNumber_Divide:PyObject*::+1: PyNumber_Divide:PyObject*:o1:0: PyNumber_Divide:PyObject*:o2:0: diff --git a/Doc/lib/libfuncs.tex b/Doc/lib/libfuncs.tex index c9e35b57e72..f51f0d5808e 100644 --- a/Doc/lib/libfuncs.tex +++ b/Doc/lib/libfuncs.tex @@ -1228,12 +1228,6 @@ bypass these functions without concerns about missing something important. argument). \end{funcdesc} -\begin{funcdesc}{coerce}{x, y} - Return a tuple consisting of the two numeric arguments converted to - a common type, using the same rules as used by arithmetic - operations. If coercion is not possible, raise \exception{TypeError}. -\end{funcdesc} - \begin{funcdesc}{intern}{string} Enter \var{string} in the table of ``interned'' strings and return the interned string -- which is \var{string} itself or a copy. diff --git a/Doc/tut/tut.tex b/Doc/tut/tut.tex index 6f6fe6ffaae..702d7590287 100644 --- a/Doc/tut/tut.tex +++ b/Doc/tut/tut.tex @@ -2696,7 +2696,7 @@ standard module \module{__builtin__}\refbimodindex{__builtin__}: 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '__debug__', '__doc__', '__import__', '__name__', 'abs', 'basestring', 'bool', 'buffer', - 'callable', 'chr', 'classmethod', 'cmp', 'coerce', 'compile', + 'callable', 'chr', 'classmethod', 'cmp', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile', 'exit', 'file', 'filter', 'float', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', diff --git a/Include/object.h b/Include/object.h index 30f0bec279e..80447a91fab 100644 --- a/Include/object.h +++ b/Include/object.h @@ -395,7 +395,6 @@ PyAPI_FUNC(long) PyObject_Hash(PyObject *); PyAPI_FUNC(int) PyObject_IsTrue(PyObject *); PyAPI_FUNC(int) PyObject_Not(PyObject *); PyAPI_FUNC(int) PyCallable_Check(PyObject *); -PyAPI_FUNC(int) PyNumber_CoerceEx(PyObject **, PyObject **); PyAPI_FUNC(void) PyObject_ClearWeakRefs(PyObject *); diff --git a/Objects/longobject.c b/Objects/longobject.c index ab8a8d78861..87082cbb014 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -3158,22 +3158,6 @@ long_or(PyObject *v, PyObject *w) return c; } -static int -long_coerce(PyObject **pv, PyObject **pw) -{ - if (PyInt_Check(*pw)) { - *pw = PyLong_FromLong(PyInt_AS_LONG(*pw)); - Py_INCREF(*pv); - return 0; - } - else if (PyLong_Check(*pw)) { - Py_INCREF(*pv); - Py_INCREF(*pw); - return 0; - } - return 1; /* Can't do it */ -} - static PyObject * long_long(PyObject *v) { @@ -3330,7 +3314,7 @@ static PyNumberMethods long_as_number = { long_and, /*nb_and*/ long_xor, /*nb_xor*/ long_or, /*nb_or*/ - long_coerce, /*nb_coerce*/ + 0, /*nb_coerce*/ long_int, /*nb_int*/ long_long, /*nb_long*/ long_float, /*nb_float*/ diff --git a/Objects/object.c b/Objects/object.c index 4fee2f02feb..e202e9ba0fb 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -1273,33 +1273,6 @@ PyObject_Not(PyObject *v) return res == 0; } -/* Coerce two numeric types to the "larger" one. - Increment the reference count on each argument. - Return value: - -1 if an error occurred; - 0 if the coercion succeeded (and then the reference counts are increased); - 1 if no coercion is possible (and no error is raised). -*/ -int -PyNumber_CoerceEx(PyObject **pv, PyObject **pw) -{ - register PyObject *v = *pv; - register PyObject *w = *pw; - int res; - - if (v->ob_type->tp_as_number && v->ob_type->tp_as_number->nb_coerce) { - res = (*v->ob_type->tp_as_number->nb_coerce)(pv, pw); - if (res <= 0) - return res; - } - if (w->ob_type->tp_as_number && w->ob_type->tp_as_number->nb_coerce) { - res = (*w->ob_type->tp_as_number->nb_coerce)(pw, pv); - if (res <= 0) - return res; - } - return 1; -} - /* Test whether an object can be called */ int diff --git a/Objects/typeobject.c b/Objects/typeobject.c index d16c6b4daec..074fad9b2c5 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -2935,7 +2935,6 @@ inherit_slots(PyTypeObject *type, PyTypeObject *base) COPYNUM(nb_and); COPYNUM(nb_xor); COPYNUM(nb_or); - COPYNUM(nb_coerce); COPYNUM(nb_int); COPYNUM(nb_long); COPYNUM(nb_float);