Get rid of METH_OLDARGS.

This commit is contained in:
Georg Brandl 2007-09-01 13:59:50 +00:00
parent 55ac8f0f26
commit f2fc934a77
3 changed files with 5 additions and 24 deletions

View File

@ -255,16 +255,6 @@ convention flags can be combined with a binding flag.
:ctype:`PyObject\*` parameter representing the single argument. :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 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 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 defined for modules. At most one of these flags may be set for any given

View File

@ -50,7 +50,7 @@ PyAPI_FUNC(PyObject *) PyCFunction_NewEx(PyMethodDef *, PyObject *,
PyObject *); PyObject *);
/* Flag passed to newmethodobject */ /* Flag passed to newmethodobject */
#define METH_OLDARGS 0x0000 /* #define METH_OLDARGS 0x0000 -- unsupported now */
#define METH_VARARGS 0x0001 #define METH_VARARGS 0x0001
#define METH_KEYWORDS 0x0002 #define METH_KEYWORDS 0x0002
/* METH_NOARGS and METH_O must not be combined with the flags above. */ /* METH_NOARGS and METH_O must not be combined with the flags above. */

View File

@ -73,7 +73,6 @@ PyCFunction_Call(PyObject *func, PyObject *arg, PyObject *kw)
return (*meth)(self, arg); return (*meth)(self, arg);
break; break;
case METH_VARARGS | METH_KEYWORDS: case METH_VARARGS | METH_KEYWORDS:
case METH_OLDARGS | METH_KEYWORDS:
return (*(PyCFunctionWithKeywords)meth)(self, arg, kw); return (*(PyCFunctionWithKeywords)meth)(self, arg, kw);
case METH_NOARGS: case METH_NOARGS:
if (kw == NULL || PyDict_Size(kw) == 0) { if (kw == NULL || PyDict_Size(kw) == 0) {
@ -97,19 +96,11 @@ PyCFunction_Call(PyObject *func, PyObject *arg, PyObject *kw)
return NULL; return NULL;
} }
break; 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: default:
PyErr_BadInternalCall(); PyErr_SetString(PyExc_SystemError, "Bad call flags in "
"PyCFunction_Call. METH_OLDARGS is no "
"longer supported!");
return NULL; return NULL;
} }
PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments", PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",