diff options
-rw-r--r-- | Doc/c-api/newtypes.rst | 10 | ||||
-rw-r--r-- | Include/methodobject.h | 2 | ||||
-rw-r--r-- | Objects/methodobject.c | 17 |
3 files changed, 5 insertions, 24 deletions
diff --git a/Doc/c-api/newtypes.rst b/Doc/c-api/newtypes.rst index f8386b6..91efe4b 100644 --- a/Doc/c-api/newtypes.rst +++ b/Doc/c-api/newtypes.rst @@ -255,16 +255,6 @@ convention flags can be combined with a binding flag. :ctype:`PyObject\*` parameter representing the single argument. -.. XXX deprecated, should be removed -.. data:: METH_OLDARGS - - This calling convention is deprecated. The method must be of type - :ctype:`PyCFunction`. The second argument is *NULL* if no arguments are given, - a single object if exactly one argument is given, and a tuple of objects if more - than one argument is given. There is no way for a function using this - convention to distinguish between a call with multiple arguments and a call with - a tuple as the only argument. - These two constants are not used to indicate the calling convention but the binding when use with methods of classes. These may not be used for functions defined for modules. At most one of these flags may be set for any given diff --git a/Include/methodobject.h b/Include/methodobject.h index 7b23fe9..0068120 100644 --- a/Include/methodobject.h +++ b/Include/methodobject.h @@ -50,7 +50,7 @@ PyAPI_FUNC(PyObject *) PyCFunction_NewEx(PyMethodDef *, PyObject *, PyObject *); /* Flag passed to newmethodobject */ -#define METH_OLDARGS 0x0000 +/* #define METH_OLDARGS 0x0000 -- unsupported now */ #define METH_VARARGS 0x0001 #define METH_KEYWORDS 0x0002 /* METH_NOARGS and METH_O must not be combined with the flags above. */ diff --git a/Objects/methodobject.c b/Objects/methodobject.c index d7dc280..8a8ca03 100644 --- a/Objects/methodobject.c +++ b/Objects/methodobject.c @@ -73,7 +73,6 @@ PyCFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) return (*meth)(self, arg); break; case METH_VARARGS | METH_KEYWORDS: - case METH_OLDARGS | METH_KEYWORDS: return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); case METH_NOARGS: if (kw == NULL || PyDict_Size(kw) == 0) { @@ -97,19 +96,11 @@ PyCFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) return NULL; } break; - case METH_OLDARGS: - /* the really old style */ - if (kw == NULL || PyDict_Size(kw) == 0) { - size = PyTuple_GET_SIZE(arg); - if (size == 1) - arg = PyTuple_GET_ITEM(arg, 0); - else if (size == 0) - arg = NULL; - return (*meth)(self, arg); - } - break; default: - PyErr_BadInternalCall(); + PyErr_SetString(PyExc_SystemError, "Bad call flags in " + "PyCFunction_Call. METH_OLDARGS is no " + "longer supported!"); + return NULL; } PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", |