summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2007-09-01 13:59:50 (GMT)
committerGeorg Brandl <georg@python.org>2007-09-01 13:59:50 (GMT)
commitf2fc934a77fef3ef368f4a41e05e67b846821a12 (patch)
treeffe2a7e765f9b462071f416ab4cc0a92c0363f6b
parent55ac8f0f26efdbbcb5cc197f9369d23d50bee908 (diff)
downloadcpython-f2fc934a77fef3ef368f4a41e05e67b846821a12.zip
cpython-f2fc934a77fef3ef368f4a41e05e67b846821a12.tar.gz
cpython-f2fc934a77fef3ef368f4a41e05e67b846821a12.tar.bz2
Get rid of METH_OLDARGS.
-rw-r--r--Doc/c-api/newtypes.rst10
-rw-r--r--Include/methodobject.h2
-rw-r--r--Objects/methodobject.c17
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",