Massive patch by Skip Montanaro to add ":name" to as many
PyArg_ParseTuple() format string arguments as possible.
diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c
index 3b84729..2f14790 100644
--- a/Modules/_localemodule.c
+++ b/Modules/_localemodule.c
@@ -135,7 +135,7 @@
   char *locale=0,*result;
   PyObject *result_object;
   struct lconv *lc;
-  if(!PyArg_ParseTuple(args,"i|z",&category,&locale))return 0;
+  if(!PyArg_ParseTuple(args,"i|z:setlocale",&category,&locale))return 0;
   if(locale){
     /* set locale */
     result=setlocale(category,locale);
@@ -266,7 +266,7 @@
   PyObject *args;
 {
   char *s1,*s2;
-  if(!PyArg_ParseTuple(args,"ss",&s1,&s2))
+  if(!PyArg_ParseTuple(args,"ss:strcoll",&s1,&s2))
      return NULL;
   return PyInt_FromLong(strcoll(s1,s2));
 }
@@ -283,7 +283,7 @@
   char *s,*buf;
   int n1,n2;
   PyObject *result;
-  if(!PyArg_ParseTuple(args,"s",&s))
+  if(!PyArg_ParseTuple(args,"s:strxfrm",&s))
      return NULL;
   /* assume no change in size, first */
   n1=strlen(s)+1;
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index fd0a69c..d94ae36 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -697,7 +697,7 @@
 	PyObject *res = NULL;
 	int err;
   
-	if (!PyArg_ParseTuple(args, "s", &script))
+	if (!PyArg_ParseTuple(args, "s:eval", &script))
 		return NULL;
 
 	ENTER_TCL
@@ -720,7 +720,7 @@
 	PyObject *res = NULL;
 	int err;
 
-	if (!PyArg_ParseTuple(args, "s", &script))
+	if (!PyArg_ParseTuple(args, "s:globaleval", &script))
 		return NULL;
 
 	ENTER_TCL
@@ -743,7 +743,7 @@
 	PyObject *res = NULL;
 	int err;
 
-	if (!PyArg_ParseTuple(args, "s", &fileName))
+	if (!PyArg_ParseTuple(args, "s:evalfile", &fileName))
 		return NULL;
 
 	ENTER_TCL
@@ -788,7 +788,7 @@
 {
 	char *msg;
 
-	if (!PyArg_ParseTuple(args, "s", &msg))
+	if (!PyArg_ParseTuple(args, "s:adderrorinfo", &msg))
 		return NULL;
 	ENTER_TCL
 	Tcl_AddErrorInfo(Tkapp_Interp(self), msg);
@@ -816,7 +816,7 @@
 	if (!tmp)
 		return NULL;
 
-	if (PyArg_ParseTuple(args, "sO", &name1, &newValue)) {
+	if (PyArg_ParseTuple(args, "sO:setvar", &name1, &newValue)) {
 		/* XXX Merge? */
 		s = AsString(newValue, tmp);
 		ENTER_TCL
@@ -825,7 +825,7 @@
 	}
 	else {
 		PyErr_Clear();
-		if (PyArg_ParseTuple(args, "ssO", &name1, &name2, &newValue)) {
+		if (PyArg_ParseTuple(args, "ssO:setvar", &name1, &name2, &newValue)) {
 			s = AsString (newValue, tmp);
 			ENTER_TCL
 			ok = Tcl_SetVar2(Tkapp_Interp(self), name1, name2, 
@@ -873,7 +873,7 @@
 	char *name1, *name2=NULL, *s;
 	PyObject *res = NULL;
 
-	if (!PyArg_ParseTuple(args, "s|s", &name1, &name2))
+	if (!PyArg_ParseTuple(args, "s|s:getvar", &name1, &name2))
 		return NULL;
 	ENTER_TCL
 	if (name2 == NULL)
@@ -919,7 +919,7 @@
 	PyObject *res = NULL;
 	int code;
 
-	if (!PyArg_ParseTuple(args, "s|s", &name1, &name2))
+	if (!PyArg_ParseTuple(args, "s|s:unsetvar", &name1, &name2))
 		return NULL;
 	ENTER_TCL
 	if (name2 == NULL)
@@ -967,7 +967,7 @@
 	char *s;
 	int v;
 
-	if (!PyArg_ParseTuple(args, "s", &s))
+	if (!PyArg_ParseTuple(args, "s:getint", &s))
 		return NULL;
 	if (Tcl_GetInt(Tkapp_Interp(self), s, &v) == TCL_ERROR)
 		return Tkinter_Error(self);
@@ -982,7 +982,7 @@
 	char *s;
 	double v;
 
-	if (!PyArg_ParseTuple(args, "s", &s))
+	if (!PyArg_ParseTuple(args, "s:getdouble", &s))
 		return NULL;
 	if (Tcl_GetDouble(Tkapp_Interp(self), s, &v) == TCL_ERROR)
 		return Tkinter_Error(self);
@@ -997,7 +997,7 @@
 	char *s;
 	int v;
 
-	if (!PyArg_ParseTuple(args, "s", &s))
+	if (!PyArg_ParseTuple(args, "s:getboolean", &s))
 		return NULL;
 	if (Tcl_GetBoolean(Tkapp_Interp(self), s, &v) == TCL_ERROR)
 		return Tkinter_Error(self);
@@ -1013,7 +1013,7 @@
 	PyObject *res = NULL;
 	int retval;
 
-	if (!PyArg_ParseTuple(args, "s", &s))
+	if (!PyArg_ParseTuple(args, "s:exprstring", &s))
 		return NULL;
 	ENTER_TCL
 	retval = Tcl_ExprString(Tkapp_Interp(self), s);
@@ -1036,7 +1036,7 @@
 	int retval;
 	long v;
 
-	if (!PyArg_ParseTuple(args, "s", &s))
+	if (!PyArg_ParseTuple(args, "s:exprlong", &s))
 		return NULL;
 	ENTER_TCL
 	retval = Tcl_ExprLong(Tkapp_Interp(self), s, &v);
@@ -1059,7 +1059,7 @@
 	double v;
 	int retval;
 
-	if (!PyArg_ParseTuple(args, "s", &s))
+	if (!PyArg_ParseTuple(args, "s:exprdouble", &s))
 		return NULL;
 	PyFPE_START_PROTECT("Tkapp_ExprDouble", return 0)
 	ENTER_TCL
@@ -1084,7 +1084,7 @@
 	int retval;
 	int v;
 
-	if (!PyArg_ParseTuple(args, "s", &s))
+	if (!PyArg_ParseTuple(args, "s:exprboolean", &s))
 		return NULL;
 	ENTER_TCL
 	retval = Tcl_ExprBoolean(Tkapp_Interp(self), s, &v);
@@ -1110,7 +1110,7 @@
 	PyObject *v;
 	int i;
 
-	if (!PyArg_ParseTuple(args, "s", &list))
+	if (!PyArg_ParseTuple(args, "s:splitlist", &list))
 		return NULL;
 
 	if (Tcl_SplitList(Tkapp_Interp(self), list, &argc, &argv) == TCL_ERROR)
@@ -1140,7 +1140,7 @@
 {
 	char *list;
 
-	if (!PyArg_ParseTuple(args, "s", &list))
+	if (!PyArg_ParseTuple(args, "s:split", &list))
 		return NULL;
 	return Split(list);
 }
@@ -1261,7 +1261,7 @@
 	PyObject *func;
 	Tcl_Command err;
 
-	if (!PyArg_ParseTuple(args, "sO", &cmdName, &func))
+	if (!PyArg_ParseTuple(args, "sO:createcommand", &cmdName, &func))
 		return NULL;
 	if (!PyCallable_Check(func)) {
 		PyErr_SetString(PyExc_TypeError, "command not callable");
@@ -1300,7 +1300,7 @@
 	char *cmdName;
 	int err;
 
-	if (!PyArg_ParseTuple(args, "s", &cmdName))
+	if (!PyArg_ParseTuple(args, "s:deletecommand", &cmdName))
 		return NULL;
 	ENTER_TCL
 	err = Tcl_DeleteCommand(Tkapp_Interp(self), cmdName);
@@ -1443,7 +1443,7 @@
 	int mask, id;
 	FHANDLE tfile;
 
-	if (!PyArg_ParseTuple(args, "OiO", &file, &mask, &func))
+	if (!PyArg_ParseTuple(args, "OiO:createfilehandler", &file, &mask, &func))
 		return NULL;
 	id = GetFileNo(file);
 	if (id < 0)
@@ -1476,7 +1476,7 @@
 	int id;
 	FHANDLE tfile;
   
-	if (!PyArg_ParseTuple(args, "O", &file))
+	if (!PyArg_ParseTuple(args, "O:deletefilehandler", &file))
 		return NULL;
 	id = GetFileNo(file);
 	if (id < 0)
@@ -1513,7 +1513,7 @@
 	TkttObject *v = (TkttObject *)self;
 	PyObject *func = v->func;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":deletetimerhandler"))
 		return NULL;
 	if (v->token != NULL) {
 		Tcl_DeleteTimerHandler(v->token);
@@ -1646,7 +1646,7 @@
 	PyObject *func;
 	TkttObject *v;
 
-	if (!PyArg_ParseTuple(args, "iO", &milliseconds, &func))
+	if (!PyArg_ParseTuple(args, "iO:createtimerhandler", &milliseconds, &func))
 		return NULL;
 	if (!PyCallable_Check(func)) {
 		PyErr_SetString(PyExc_TypeError, "bad argument list");
@@ -1672,7 +1672,7 @@
 	PyThreadState *tstate = PyThreadState_Get();
 #endif
 
-	if (!PyArg_ParseTuple(args, "|i", &threshold))
+	if (!PyArg_ParseTuple(args, "|i:mainloop", &threshold))
 		return NULL;
 
 	quitMainLoop = 0;
@@ -1721,7 +1721,7 @@
 	int flags = 0;
 	int rv;
 
-	if (!PyArg_ParseTuple(args, "|i", &flags))
+	if (!PyArg_ParseTuple(args, "|i:dooneevent", &flags))
 		return NULL;
 
 	ENTER_TCL
@@ -1736,7 +1736,7 @@
 	PyObject *args;
 {
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":quit"))
 		return NULL;
 
 	quitMainLoop = 1;
@@ -1750,7 +1750,7 @@
 	PyObject *args;
 {
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":interpaddr"))
 		return NULL;
 
 	return PyInt_FromLong((long)Tkapp_Interp(self));
@@ -1862,7 +1862,7 @@
 		baseName = Py_GetProgramName();
 	className = "Tk";
   
-	if (!PyArg_ParseTuple(args, "|zssi",
+	if (!PyArg_ParseTuple(args, "|zssi:create",
 			      &screenName, &baseName, &className,
 			      &interactive))
 		return NULL;
diff --git a/Modules/almodule.c b/Modules/almodule.c
index 7fcfae6..1033c07 100644
--- a/Modules/almodule.c
+++ b/Modules/almodule.c
@@ -281,7 +281,7 @@
 {
 	int par;
 
-	if (!PyArg_ParseTuple(args, "i", &par))
+	if (!PyArg_ParseTuple(args, "i:SetConfig", &par))
 		return NULL;
 
 	if ((*func)(self->config, par) == -1)
@@ -299,7 +299,7 @@
 {	
 	int par;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":GetConfig"))
 		return NULL;
 	
 	if ((par = (*func)(self->config)) == -1)
@@ -397,7 +397,7 @@
 {
 	double maximum_value;
 
-	if (!PyArg_ParseTuple(args, "d", &maximum_value))
+	if (!PyArg_ParseTuple(args, "d:SetFloatMax", &maximum_value))
 		return NULL;
 	if (alSetFloatMax(self->config, maximum_value) < 0)
 		return NULL;
@@ -417,7 +417,7 @@
 {
 	double maximum_value;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":GetFloatMax"))
 		return NULL;
 	if ((maximum_value = alGetFloatMax(self->config)) == 0)
 		return NULL;
@@ -486,7 +486,7 @@
 {
 	long par;
 
-	if (!PyArg_ParseTuple(args, "l", &par))
+	if (!PyArg_ParseTuple(args, "l:SetConfig", &par))
 		return NULL;
 
 	if ((*func)(self->config, par) == -1)
@@ -504,7 +504,7 @@
 {	
 	long par;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":GetConfig"))
 		return NULL;
 	
 	if ((par = (*func)(self->config)) == -1)
@@ -586,7 +586,7 @@
 {
 	double arg;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":GetFloatMax"))
 		return 0;
 	if ((arg = ALgetfloatmax(self->config)) == 0)
 		return NULL;
@@ -600,7 +600,7 @@
 {
 	double arg;
 
-	if (!PyArg_ParseTuple(args, "d", &arg))
+	if (!PyArg_ParseTuple(args, "d:SetFloatMax", &arg))
 		return 0;
 	if (ALsetfloatmax(self->config, arg) == -1)
 		return NULL;
@@ -723,7 +723,7 @@
 	PyObject *args;
 {
 	alcobject *config;
-	if (!PyArg_ParseTuple(args, "O!", &Alctype, &config))
+	if (!PyArg_ParseTuple(args, "O!:SetConfig", &Alctype, &config))
 		return NULL;
 	if (alSetConfig(self->port, config->config) < 0)
 		return NULL;
@@ -742,7 +742,7 @@
 	PyObject *args;
 {
 	ALconfig config;
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":GetConfig"))
 		return NULL;
 	if ((config = alGetConfig(self->port)) == NULL)
 		return NULL;
@@ -761,7 +761,7 @@
 {
 	int resource;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":GetResource"))
 		return NULL;
 	if ((resource = alGetResource(self->port)) == 0)
 		return NULL;
@@ -780,7 +780,7 @@
 {
 	int fd;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":GetFD"))
 		return NULL;
 
 	if ((fd = alGetFD(self->port)) < 0)
@@ -801,7 +801,7 @@
 {
 	int filled;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":GetFilled"))
 		return NULL;
 	if ((filled = alGetFilled(self->port)) < 0)
 		return NULL;
@@ -820,7 +820,7 @@
 {
 	int fillable;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":GetFillable"))
 		return NULL;
 	if ((fillable = alGetFillable(self->port)) < 0)
 		return NULL;
@@ -844,7 +844,7 @@
 	int ch;
 	ALconfig c;
 
-	if (!PyArg_ParseTuple(args, "i", &framecount))
+	if (!PyArg_ParseTuple(args, "i:ReadFrames", &framecount))
 		return NULL;
 	if (framecount < 0) {
 		PyErr_SetString(ErrorObject, "negative framecount");
@@ -910,7 +910,7 @@
 {
 	int framecount;
 
-	if (!PyArg_ParseTuple(args, "i", &framecount))
+	if (!PyArg_ParseTuple(args, "i:DiscardFrames", &framecount))
 		return NULL;
 
 	Py_BEGIN_ALLOW_THREADS
@@ -935,7 +935,7 @@
 {
 	int framecount;
 
-	if (!PyArg_ParseTuple(args, "i", &framecount))
+	if (!PyArg_ParseTuple(args, "i:ZeroFrames", &framecount))
 		return NULL;
 
 	if (framecount < 0) {
@@ -963,7 +963,7 @@
 {
 	int fillpoint;
 
-	if (!PyArg_ParseTuple(args, "i", &fillpoint))
+	if (!PyArg_ParseTuple(args, "i:SetFillPoint", &fillpoint))
 		return NULL;
 
 	if (alSetFillPoint(self->port, fillpoint) < 0)
@@ -985,7 +985,7 @@
 {
 	int fillpoint;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":GetFillPoint"))
 		return NULL;
 
 	if ((fillpoint = alGetFillPoint(self->port)) < 0)
@@ -1006,7 +1006,7 @@
 {
 	stamp_t fnum;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":GetFrameNumber"))
 		return NULL;
 
 	if (alGetFrameNumber(self->port, &fnum) < 0)
@@ -1028,7 +1028,7 @@
 	stamp_t fnum, time;
 	PyObject *ret, *v0, *v1;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":GetFrameTime"))
 		return NULL;
 	if (alGetFrameTime(self->port, &fnum, &time) < 0)
 		return NULL;
@@ -1060,7 +1060,7 @@
 	int size, ch;
 	ALconfig c;
 
-	if (!PyArg_ParseTuple(args, "s#", &samples, &length))
+	if (!PyArg_ParseTuple(args, "s#:WriteFrames", &samples, &length))
 		return NULL;
 	c = alGetConfig(self->port);
 	switch (alGetSampFmt(c)) {
@@ -1123,7 +1123,7 @@
 	alpobject *self;
 	PyObject *args;
 {
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":ClosePort"))
 		return NULL;
 	if (alClosePort(self->port) < 0)
 		return NULL;
@@ -1140,7 +1140,7 @@
 	alpobject *self;
 	PyObject *args;
 {
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":ClosePort"))
 		return NULL;
 	if (ALcloseport(self->port) < 0)
 		return NULL;
@@ -1150,13 +1150,13 @@
 }
 
 static PyObject *
-alp_getfd (self, args)
+alp_getfd(self, args)
 	alpobject *self;
 	PyObject *args;
 {
 	int fd;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":GetFD"))
 		return NULL;
 	if ((fd = ALgetfd(self-> port)) == -1)
 		return NULL;
@@ -1170,7 +1170,7 @@
 {
 	long count;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":GetFilled"))
 		return NULL;
 	if ((count = ALgetfilled(self-> port)) == -1)
 		return NULL;
@@ -1184,7 +1184,7 @@
 {
 	long count;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":GetFillable"))
 		return NULL;
 	if ((count = ALgetfillable(self-> port)) == -1)
 		return NULL;
@@ -1202,7 +1202,7 @@
 	int width;
 	int ret;
 
-	if (!PyArg_ParseTuple(args, "l", &count))
+	if (!PyArg_ParseTuple(args, "l:readsamps", &count))
 		return NULL;
 
 	if (count <= 0) {
@@ -1248,7 +1248,7 @@
 	ALconfig c;
 	int ret;
 
-	if (!PyArg_ParseTuple(args, "s#", &buf, &size))
+	if (!PyArg_ParseTuple(args, "s#:writesamps", &buf, &size))
 		return NULL;
 
 	c = ALgetconfig(self->port);
@@ -1281,7 +1281,7 @@
 {
 	long count;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":GetFillPoint"))
 		return NULL;
 	if ((count = ALgetfillpoint(self->port)) == -1)
 		return NULL;
@@ -1289,13 +1289,13 @@
 }
 
 static PyObject *
-alp_setfillpoint (self, args)
+alp_setfillpoint(self, args)
 	alpobject *self;
 	PyObject *args;
 {
 	long count;
 
-	if (!PyArg_ParseTuple(args, "l", &count))
+	if (!PyArg_ParseTuple(args, "l:SetFillPoint", &count))
 		return NULL;
 	if (ALsetfillpoint(self->port, count) == -1)
 		return NULL;
@@ -1310,7 +1310,7 @@
 {
 	alcobject *config;
 
-	if (!PyArg_ParseTuple(args, "O!", &Alctype, &config))
+	if (!PyArg_ParseTuple(args, "O!:SetConfig", &Alctype, &config))
 		return NULL;
 	if (ALsetconfig(self->port, config->config) == -1)
 		return NULL;
@@ -1325,7 +1325,7 @@
 {
 	ALconfig config;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":GetConfig"))
 		return NULL;
 	config = ALgetconfig(self->port);
 	if (config == NULL)
@@ -1504,7 +1504,7 @@
 {
 	ALconfig config;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":NewConfig"))
 		return NULL;
 	if ((config = alNewConfig()) == NULL)
 		return NULL;
@@ -1524,7 +1524,7 @@
 	char *name, *dir;
 	alcobject *config = NULL;
 
-	if (!PyArg_ParseTuple(args, "ss|O!", &name, &dir, &Alctype, &config))
+	if (!PyArg_ParseTuple(args, "ss|O!:OpenPort", &name, &dir, &Alctype, &config))
 		return NULL;
 	if ((port = alOpenPort(name, dir, config ? config->config : NULL)) == NULL)
 		return NULL;
@@ -1545,7 +1545,7 @@
 	ALparamInfo *propinfo = NULL;
 	PyObject *propobj = NULL;
 
-	if (!PyArg_ParseTuple(args, "ii|O!", &source, &dest, &PyList_Type, &propobj))
+	if (!PyArg_ParseTuple(args, "ii|O!:Connect", &source, &dest, &PyList_Type, &propobj))
 		return NULL;
 	if (propobj != NULL) {
 		nprops = python2params(source, dest, propobj, &props, &propinfo);
@@ -1584,7 +1584,7 @@
 {
 	int res;
 
-	if (!PyArg_ParseTuple(args, "i", &res))
+	if (!PyArg_ParseTuple(args, "i:Disconnect", &res))
 		return NULL;
 	if (alDisconnect(res) < 0)
 		return NULL;
@@ -1607,7 +1607,7 @@
 	int i, j, npvs;
 	ALparamInfo *pinfo;
 
-	if (!PyArg_ParseTuple(args, "iO!", &resource, &PyList_Type, &pvslist))
+	if (!PyArg_ParseTuple(args, "iO!:GetParams", &resource, &PyList_Type, &pvslist))
 		return NULL;
 	npvs = PyList_Size(pvslist);
 	pvs = PyMem_NEW(ALpv, npvs);
@@ -1753,7 +1753,7 @@
 	ALparamInfo *pinfo;
 	int npvs, i;
 
-	if (!PyArg_ParseTuple(args, "iO!", &resource, &PyList_Type, &pvslist))
+	if (!PyArg_ParseTuple(args, "iO!:SetParams", &resource, &PyList_Type, &pvslist))
 		return NULL;
 	npvs = python2params(resource, -1, pvslist, &pvs, &pinfo);
 	if (npvs < 0)
@@ -1804,7 +1804,7 @@
 	PyObject *qualobj = NULL;
 	PyObject *res = NULL, *item;
 
-	if (!PyArg_ParseTuple(args, "ii|O!", &resource, &param,
+	if (!PyArg_ParseTuple(args, "ii|O!:QueryValues", &resource, &param,
 			      &PyList_Type, &qualobj))
 		return NULL;
 	if (qualobj != NULL) {
@@ -1881,7 +1881,7 @@
 	ALparamInfo pinfo;
 	PyObject *v, *item;;
 
-	if (!PyArg_ParseTuple(args, "ii", &res, &param))
+	if (!PyArg_ParseTuple(args, "ii:GetParamInfo", &res, &param))
 		return NULL;
 	if (alGetParamInfo(res, param, &pinfo) < 0)
 		return NULL;
@@ -1965,7 +1965,7 @@
 	int res, start_res, type;
 	char *name;
 
-	if (!PyArg_ParseTuple(args, "isi", &start_res, &name, &type))
+	if (!PyArg_ParseTuple(args, "isi:GetResourceByName", &start_res, &name, &type))
 		return NULL;
 	if ((res = alGetResourceByName(start_res, name, type)) == 0)
 		return NULL;
@@ -1983,7 +1983,7 @@
 {
 	int type, subtype;
 
-	if (!PyArg_ParseTuple(args, "ii", &type, &subtype))
+	if (!PyArg_ParseTuple(args, "ii:IsSubtype", &type, &subtype))
 		return NULL;
 	return PyInt_FromLong((long) alIsSubtype(type, subtype));
 }
@@ -1998,7 +1998,7 @@
 	PyObject *args;
 {
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":SetErrorHandler"))
 		return NULL;
 	Py_INCREF(Py_None);
 	return Py_None;
@@ -2016,7 +2016,7 @@
 	ALport port;
 	alcobject *config = NULL;
 
-	if (!PyArg_ParseTuple(args, "ss|O!", &name, &dir, &Alctype, &config))
+	if (!PyArg_ParseTuple(args, "ss|O!:OpenPort", &name, &dir, &Alctype, &config))
 		return NULL;
 	if ((port = ALopenport(name, dir, config ? config->config : NULL)) == NULL)
 		return NULL;
@@ -2029,7 +2029,7 @@
 {
 	ALconfig config;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":NewConfig"))
 		return NULL;
 	if ((config = ALnewconfig ()) == NULL)
 		return NULL;
@@ -2047,7 +2047,7 @@
 	PyObject *v = NULL;
 	int i;
 
-	if (!PyArg_ParseTuple(args, "l", &device))
+	if (!PyArg_ParseTuple(args, "l:queryparams", &device))
 		return NULL;
 	if ((length = ALqueryparams(device, PVdummy, 2L)) == -1)
 		return NULL;
@@ -2127,7 +2127,7 @@
 	long device, descriptor;
 	char *name;
 
-	if (!PyArg_ParseTuple(args, "ll", &device, &descriptor))
+	if (!PyArg_ParseTuple(args, "ll:getname", &device, &descriptor))
 		return NULL;
 	if ((name = ALgetname(device, descriptor)) == NULL)
 		return NULL;
@@ -2140,7 +2140,7 @@
 {
 	long device, descriptor, value;
 
-	if (!PyArg_ParseTuple(args, "ll", &device, &descriptor))
+	if (!PyArg_ParseTuple(args, "ll:getdefault", &device, &descriptor))
 		return NULL;
 	if ((value = ALgetdefault(device, descriptor)) == -1)
 		return NULL;
@@ -2153,7 +2153,7 @@
 {
 	long device, descriptor, min, max;
 
-	if (!PyArg_ParseTuple(args, "ll", &device, &descriptor))
+	if (!PyArg_ParseTuple(args, "ll:getminmax", &device, &descriptor))
 		return NULL;
 	min = -1;
 	max = -1;
diff --git a/Modules/audioop.c b/Modules/audioop.c
index 02a30c6..702ca90 100644
--- a/Modules/audioop.c
+++ b/Modules/audioop.c
@@ -981,7 +981,7 @@
 
 	weightA = 1;
 	weightB = 0;
-	if (!PyArg_ParseTuple(args, "s#iiiiO|ii", &cp, &len, &size, &nchannels,
+	if (!PyArg_ParseTuple(args, "s#iiiiO|ii:ratecv", &cp, &len, &size, &nchannels,
 			      &inrate, &outrate, &state, &weightA, &weightB))
 		return NULL;
 	if (size != 1 && size != 2 && size != 4) {
@@ -1034,7 +1034,7 @@
 		}
 		for (chan = 0; chan < nchannels; chan++) {
 			if (!PyArg_ParseTuple(PyTuple_GetItem(samps, chan),
-					      "ii",&prev_i[chan],&cur_i[chan]))
+					      "ii:ratecv",&prev_i[chan],&cur_i[chan]))
 				goto exit;
 		}
 	}
diff --git a/Modules/binascii.c b/Modules/binascii.c
index 55f08bf..d1ada65 100644
--- a/Modules/binascii.c
+++ b/Modules/binascii.c
@@ -213,7 +213,7 @@
 	PyObject *rv;
 	int ascii_len, bin_len;
 	
-	if ( !PyArg_ParseTuple(args, "t#", &ascii_data, &ascii_len) )
+	if ( !PyArg_ParseTuple(args, "t#:a2b_uu", &ascii_data, &ascii_len) )
 		return NULL;
 
 	/* First byte: binary data length (in bytes) */
@@ -290,7 +290,7 @@
 	PyObject *rv;
 	int bin_len;
 	
-	if ( !PyArg_ParseTuple(args, "s#", &bin_data, &bin_len) )
+	if ( !PyArg_ParseTuple(args, "s#:b2a_uu", &bin_data, &bin_len) )
 		return NULL;
 	if ( bin_len > 45 ) {
 		/* The 45 is a limit that appears in all uuencode's */
@@ -372,7 +372,7 @@
 	int ascii_len, bin_len;
 	int quad_pos = 0;
 	
-	if ( !PyArg_ParseTuple(args, "t#", &ascii_data, &ascii_len) )
+	if ( !PyArg_ParseTuple(args, "t#:a2b_base64", &ascii_data, &ascii_len) )
 		return NULL;
 
 	bin_len = ((ascii_len+3)/4)*3; /* Upper bound, corrected later */
@@ -456,7 +456,7 @@
 	PyObject *rv;
 	int bin_len;
 	
-	if ( !PyArg_ParseTuple(args, "s#", &bin_data, &bin_len) )
+	if ( !PyArg_ParseTuple(args, "s#:b2a_base64", &bin_data, &bin_len) )
 		return NULL;
 	if ( bin_len > BASE64_MAXBIN ) {
 		PyErr_SetString(Error, "Too much data for base64 line");
@@ -510,7 +510,7 @@
 	int len;
 	int done = 0;
 	
-	if ( !PyArg_ParseTuple(args, "t#", &ascii_data, &len) )
+	if ( !PyArg_ParseTuple(args, "t#:a2b_hqx", &ascii_data, &len) )
 		return NULL;
 
 	/* Allocate a string that is too big (fixed later) */
@@ -573,7 +573,7 @@
 	unsigned char ch;
 	int in, inend, len;
 	
-	if ( !PyArg_ParseTuple(args, "s#", &in_data, &len) )
+	if ( !PyArg_ParseTuple(args, "s#:rlecode_hqx", &in_data, &len) )
 		return NULL;
 
 	/* Worst case: output is twice as big as input (fixed later) */
@@ -624,7 +624,7 @@
 	PyObject *rv;
 	int len;
 	
-	if ( !PyArg_ParseTuple(args, "s#", &bin_data, &len) )
+	if ( !PyArg_ParseTuple(args, "s#:b2a_hqx", &bin_data, &len) )
 		return NULL;
 
 	/* Allocate a buffer that is at least large enough */
@@ -664,7 +664,7 @@
 	PyObject *rv;
 	int in_len, out_len, out_len_left;
 
-	if ( !PyArg_ParseTuple(args, "s#", &in_data, &in_len) )
+	if ( !PyArg_ParseTuple(args, "s#:rledecode_hqx", &in_data, &in_len) )
 		return NULL;
 
 	/* Empty string is a special case */
@@ -762,7 +762,7 @@
 	unsigned int crc;
 	int len;
 	
-	if ( !PyArg_ParseTuple(args, "s#i", &bin_data, &len, &crc) )
+	if ( !PyArg_ParseTuple(args, "s#i:crc_hqx", &bin_data, &len, &crc) )
 		return NULL;
 
 	while(len--) {
@@ -902,7 +902,7 @@
 	unsigned long crc = 0UL;	/* initial value of CRC */
 	int len;
 	
-	if ( !PyArg_ParseTuple(args, "s#|l", &bin_data, &len, &crc) )
+	if ( !PyArg_ParseTuple(args, "s#|l:crc32", &bin_data, &len, &crc) )
 		return NULL;
 
 	crc = crc ^ 0xFFFFFFFFUL;
diff --git a/Modules/bsddbmodule.c b/Modules/bsddbmodule.c
index 514159f..16178ed 100644
--- a/Modules/bsddbmodule.c
+++ b/Modules/bsddbmodule.c
@@ -697,7 +697,7 @@
 	int hash = 0; /* XXX currently ignored */
 	int lorder = 0;
 
-	if (!PyArg_ParseTuple(args, "s|siiiiiii",
+	if (!PyArg_ParseTuple(args, "s|siiiiiii:hashopen",
 			      &file, &flag, &mode,
 			      &bsize, &ffactor, &nelem, &cachesize,
 			      &hash, &lorder))
@@ -750,7 +750,7 @@
 	unsigned int psize = 0;
 	int lorder = 0;
 
-	if (!PyArg_ParseTuple(args, "s|siiiiiii",
+	if (!PyArg_ParseTuple(args, "s|siiiiiii:btopen",
 			      &file, &flag, &mode,
 			      &btflags, &cachesize, &maxkeypage, &minkeypage,
 			      &psize, &lorder))
@@ -805,7 +805,7 @@
 	char  *bval = "";
 	char *bfname = NULL;
 
-	if (!PyArg_ParseTuple(args, "s|siiiiiiss",
+	if (!PyArg_ParseTuple(args, "s|siiiiiiss:rnopen",
 			      &file, &flag, &mode,
 			      &rnflags, &cachesize, &psize, &lorder,
 			      &reclen, &bval, &bfname))
diff --git a/Modules/cPickle.c b/Modules/cPickle.c
index 0737d94..158ed1a 100644
--- a/Modules/cPickle.c
+++ b/Modules/cPickle.c
@@ -1868,7 +1868,7 @@
 
 static PyObject *
 Pickle_clear_memo(Picklerobject *self, PyObject *args) {
-  if (args && ! PyArg_ParseTuple(args,"")) return NULL;
+  if (args && ! PyArg_ParseTuple(args,":clear_memo")) return NULL;
   if (self->memo) PyDict_Clear(self->memo);
   Py_INCREF(Py_None);
   return Py_None;
@@ -1882,7 +1882,7 @@
   char *s, *p, *have_get;
   Pdata *data;
 
-  if (args && ! PyArg_ParseTuple(args,"|i",&clear)) return NULL;
+  if (args && ! PyArg_ParseTuple(args,"|i:getvalue",&clear)) return NULL;
 
   /* Check to make sure we are based on a list */
   if (! Pdata_Check(self->file)) {
@@ -2014,7 +2014,7 @@
     PyObject *ob;
     int get=0;
 
-    UNLESS (PyArg_ParseTuple(args, "O|i", &ob, &get))
+    UNLESS (PyArg_ParseTuple(args, "O|i:dump", &ob, &get))
         return NULL;
 
     if (dump(self, ob) < 0)
@@ -2132,10 +2132,10 @@
     int bin;
 
     bin=1;
-    if (! PyArg_ParseTuple(args, "|i", &bin)) {
+    if (! PyArg_ParseTuple(args, "|i:Pickler", &bin)) {
         PyErr_Clear();
         bin=0;
-        if (! PyArg_ParseTuple(args, "O|i", &file, &bin))
+        if (! PyArg_ParseTuple(args, "O|i:Pickler", &file, &bin))
           return NULL;
       }
     return (PyObject *)newPicklerobject(file, bin);
@@ -3853,7 +3853,7 @@
 
 static PyObject *
 Unpickler_load(Unpicklerobject *self, PyObject *args) {
-    UNLESS (PyArg_ParseTuple(args, "")) 
+    UNLESS (PyArg_ParseTuple(args, ":load")) 
         return NULL;
 
     return load(self);
@@ -3861,7 +3861,7 @@
 
 static PyObject *
 Unpickler_noload(Unpicklerobject *self, PyObject *args) {
-    UNLESS (PyArg_ParseTuple(args, "")) 
+    UNLESS (PyArg_ParseTuple(args, ":noload")) 
         return NULL;
 
     return noload(self);
@@ -3969,7 +3969,7 @@
 get_Unpickler(PyObject *self, PyObject *args) {
     PyObject *file;
   
-    UNLESS (PyArg_ParseTuple(args, "O", &file))
+    UNLESS (PyArg_ParseTuple(args, "O:Unpickler", &file))
         return NULL;
     return (PyObject *)newUnpicklerobject(file);
 }
@@ -4110,7 +4110,7 @@
     Picklerobject *pickler = 0;
     int bin = 0;
 
-    UNLESS (PyArg_ParseTuple(args, "O|i", &ob, &bin))
+    UNLESS (PyArg_ParseTuple(args, "O|i:dumps", &ob, &bin))
         goto finally;
 
     UNLESS (file = PycStringIO->NewOutput(128))
@@ -4137,7 +4137,7 @@
     Unpicklerobject *unpickler = 0;
     PyObject *ob, *res = NULL;
 
-    UNLESS (PyArg_ParseTuple(args, "O", &ob))
+    UNLESS (PyArg_ParseTuple(args, "O:load", &ob))
         goto finally;
 
     UNLESS (unpickler = newUnpicklerobject(ob))
@@ -4157,7 +4157,7 @@
     PyObject *ob, *file = 0, *res = NULL;
     Unpicklerobject *unpickler = 0;
 
-    UNLESS (PyArg_ParseTuple(args, "S", &ob))
+    UNLESS (PyArg_ParseTuple(args, "S:loads", &ob))
         goto finally;
 
     UNLESS (file = PycStringIO->NewInput(ob))
diff --git a/Modules/cStringIO.c b/Modules/cStringIO.c
index 0c4462d..6a5efd6 100644
--- a/Modules/cStringIO.c
+++ b/Modules/cStringIO.c
@@ -134,7 +134,7 @@
 O_seek(Oobject *self, PyObject *args) {
   int position, mode = 0;
 
-  UNLESS(PyArg_ParseTuple(args, "i|i", &position, &mode)) {
+  UNLESS(PyArg_ParseTuple(args, "i|i:seek", &position, &mode)) {
     return NULL;
   }
 
@@ -187,7 +187,7 @@
   int n = -1;
   char *output;
 
-  UNLESS(PyArg_ParseTuple(args, "|i", &n)) return NULL;
+  UNLESS(PyArg_ParseTuple(args, "|i:read", &n)) return NULL;
 
   n=O_cread((PyObject*)self,&output,n);
 
@@ -264,7 +264,7 @@
   char *c;
   int l;
 
-  UNLESS(PyArg_ParseTuple(args, "O", &s)) return NULL;
+  UNLESS(PyArg_ParseTuple(args, "O:write", &s)) return NULL;
   UNLESS(-1 != (l=PyString_Size(s))) return NULL;
   UNLESS(c=PyString_AsString(s)) return NULL;
   UNLESS(-1 != O_cwrite((PyObject*)self,c,l)) return NULL;
@@ -286,7 +286,7 @@
   int s;
 
   use_pos=Py_None;
-  UNLESS(PyArg_ParseTuple(args,"|O",&use_pos)) return NULL;
+  UNLESS(PyArg_ParseTuple(args,"|O:getval",&use_pos)) return NULL;
   if(PyObject_IsTrue(use_pos)) {
       s=self->pos;
       if (s > self->string_size) s=self->string_size;
@@ -350,7 +350,7 @@
   PyObject *string_module = 0;
   static PyObject *string_joinfields = 0;
 
-  UNLESS(PyArg_ParseTuple(args, "O", &args)) {
+  UNLESS(PyArg_ParseTuple(args, "O:writelines", &args)) {
     return NULL;
   }
 
@@ -500,7 +500,7 @@
 I_seek(Oobject *self, PyObject *args) {
   int position, mode = 0;
 
-  UNLESS(PyArg_ParseTuple(args, "i|i", &position, &mode)) {
+  UNLESS(PyArg_ParseTuple(args, "i|i:seek", &position, &mode)) {
     return NULL;
   }
 
@@ -603,7 +603,7 @@
 IO_StringIO(PyObject *self, PyObject *args) {
   PyObject *s=0;
 
-  UNLESS(PyArg_ParseTuple(args, "|O", &s)) return NULL;
+  UNLESS(PyArg_ParseTuple(args, "|O:StringIO", &s)) return NULL;
   if(s) return newIobject(s);
   return newOobject(128);
 }
diff --git a/Modules/cdmodule.c b/Modules/cdmodule.c
index 71598d7..1b414c1 100644
--- a/Modules/cdmodule.c
+++ b/Modules/cdmodule.c
@@ -50,7 +50,7 @@
 	cdplayerobject *self;
 	PyObject *args;
 {
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":allowremoval"))
 		return NULL;
 
 	CDallowremoval(self->ob_cdplayer);
@@ -64,7 +64,7 @@
 	cdplayerobject *self;
 	PyObject *args;
 {
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":preventremoval"))
 		return NULL;
 
 	CDpreventremoval(self->ob_cdplayer);
@@ -78,7 +78,7 @@
 	cdplayerobject *self;
 	PyObject *args;
 {
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":bestreadsize"))
 		return NULL;
 
 	return PyInt_FromLong((long) CDbestreadsize(self->ob_cdplayer));
@@ -89,7 +89,7 @@
 	cdplayerobject *self;
 	PyObject *args;
 {
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":close"))
 		return NULL;
 
 	if (!CDclose(self->ob_cdplayer)) {
@@ -109,7 +109,7 @@
 {
 	CDSTATUS status;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":eject"))
 		return NULL;
 
 	if (!CDeject(self->ob_cdplayer)) {
@@ -132,7 +132,7 @@
 {
 	CDSTATUS status;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":getstatus"))
 		return NULL;
 
 	if (!CDgetstatus(self->ob_cdplayer, &status)) {
@@ -157,7 +157,7 @@
 	CDTRACKINFO info;
 	CDSTATUS status;
 
-	if (!PyArg_ParseTuple(args, "i", &track))
+	if (!PyArg_ParseTuple(args, "i:gettrackinfo", &track))
 		return NULL;
 
 	if (!CDgettrackinfo(self->ob_cdplayer, track, &info)) {
@@ -181,7 +181,7 @@
 {
 	int min, sec, frame;
 
-	if (!PyArg_ParseTuple(args, "iii", &min, &sec, &frame))
+	if (!PyArg_ParseTuple(args, "iii:msftoblock", &min, &sec, &frame))
 		return NULL;
 
 	return PyInt_FromLong((long) CDmsftoblock(self->ob_cdplayer,
@@ -196,7 +196,7 @@
 	int start, play;
 	CDSTATUS status;
 
-	if (!PyArg_ParseTuple(args, "ii", &start, &play))
+	if (!PyArg_ParseTuple(args, "ii:play", &start, &play))
 		return NULL;
 
 	if (!CDplay(self->ob_cdplayer, start, play)) {
@@ -220,7 +220,7 @@
 	int min, sec, frame, play;
 	CDSTATUS status;
 
-	if (!PyArg_ParseTuple(args, "iiii", &min, &sec, &frame, &play))
+	if (!PyArg_ParseTuple(args, "iiii:playabs", &min, &sec, &frame, &play))
 		return NULL;
 
 	if (!CDplayabs(self->ob_cdplayer, min, sec, frame, play)) {
@@ -244,7 +244,7 @@
 	int start, play;
 	CDSTATUS status;
 
-	if (!PyArg_ParseTuple(args, "ii", &start, &play))
+	if (!PyArg_ParseTuple(args, "ii:playtrack", &start, &play))
 		return NULL;
 
 	if (!CDplaytrack(self->ob_cdplayer, start, play)) {
@@ -268,7 +268,7 @@
 	int track, min, sec, frame, play;
 	CDSTATUS status;
 
-	if (!PyArg_ParseTuple(args, "iiiii", &track, &min, &sec,
+	if (!PyArg_ParseTuple(args, "iiiii:playtrackabs", &track, &min, &sec,
 			      &frame, &play))
 		return NULL;
 
@@ -293,7 +293,7 @@
 	int numframes, n;
 	PyObject *result;
 
-	if (!PyArg_ParseTuple(args, "i", &numframes))
+	if (!PyArg_ParseTuple(args, "i:readda", &numframes))
 		return NULL;
 
 	result = PyString_FromStringAndSize(NULL, numframes * sizeof(CDFRAME));
@@ -322,7 +322,7 @@
 	int min, sec, frame;
 	long PyTryBlock;
 
-	if (!PyArg_ParseTuple(args, "iii", &min, &sec, &frame))
+	if (!PyArg_ParseTuple(args, "iii:seek", &min, &sec, &frame))
 		return NULL;
 
 	PyTryBlock = CDseek(self->ob_cdplayer, min, sec, frame);
@@ -342,7 +342,7 @@
 	int track;
 	long PyTryBlock;
 
-	if (!PyArg_ParseTuple(args, "i", &track))
+	if (!PyArg_ParseTuple(args, "i:seektrack", &track))
 		return NULL;
 
 	PyTryBlock = CDseektrack(self->ob_cdplayer, track);
@@ -361,7 +361,7 @@
 {
 	unsigned long PyTryBlock;
 
-	if (!PyArg_ParseTuple(args, "l", &PyTryBlock))
+	if (!PyArg_ParseTuple(args, "l:seekblock", &PyTryBlock))
 		return NULL;
 
 	PyTryBlock = CDseekblock(self->ob_cdplayer, PyTryBlock);
@@ -380,7 +380,7 @@
 {
 	CDSTATUS status;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":stop"))
 		return NULL;
 
 	if (!CDstop(self->ob_cdplayer)) {
@@ -403,7 +403,7 @@
 {
 	CDSTATUS status;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":togglepause"))
 		return NULL;
 
 	if (!CDtogglepause(self->ob_cdplayer)) {
@@ -503,7 +503,7 @@
 	 */
 	dev = NULL;
 	direction = "r";
-	if (!PyArg_ParseTuple(args, "|zs", &dev, &direction))
+	if (!PyArg_ParseTuple(args, "|zs:open", &dev, &direction))
 		return NULL;
 
 	cdp = CDopen(dev, direction);
@@ -605,7 +605,7 @@
 {
 	int i;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":deleteparser"))
 		return NULL;
 
 	CDdeleteparser(self->ob_cdparser);
@@ -632,7 +632,7 @@
 	int length;
 	CDFRAME *p;
 
-	if (!PyArg_ParseTuple(args, "s#", &cdfp, &length))
+	if (!PyArg_ParseTuple(args, "s#:parseframe", &cdfp, &length))
 		return NULL;
 
 	if (length % sizeof(CDFRAME) != 0) {
@@ -660,7 +660,7 @@
 {
 	int type;
 
-	if (!PyArg_ParseTuple(args, "i", &type))
+	if (!PyArg_ParseTuple(args, "i:removecallback", &type))
 		return NULL;
 
 	if (type < 0 || type >= NCALLBACKS) {
@@ -685,7 +685,7 @@
 	cdparserobject *self;
 	PyObject *args;
 {
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":resetparser"))
 		return NULL;
 
 	CDresetparser(self->ob_cdparser);
@@ -703,7 +703,7 @@
 	PyObject *func, *funcarg;
 
 	/* XXX - more work here */
-	if (!PyArg_ParseTuple(args, "iOO", &type, &func, &funcarg))
+	if (!PyArg_ParseTuple(args, "iOO:addcallback", &type, &func, &funcarg))
 		return NULL;
 
 	if (type < 0 || type >= NCALLBACKS) {
@@ -816,7 +816,7 @@
 {
 	CDPARSER *cdp;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":createparser"))
 		return NULL;
 	cdp = CDcreateparser();
 	if (cdp == NULL) {
@@ -833,7 +833,7 @@
 {
 	int min, sec, frame;
 
-	if (!PyArg_ParseTuple(args, "iii", &min, &sec, &frame))
+	if (!PyArg_ParseTuple(args, "iii:msftoframe", &min, &sec, &frame))
 		return NULL;
 
 	return PyInt_FromLong((long) CDmsftoframe(min, sec, frame));
diff --git a/Modules/dbmmodule.c b/Modules/dbmmodule.c
index 7a234a2..501c3f4 100644
--- a/Modules/dbmmodule.c
+++ b/Modules/dbmmodule.c
@@ -286,7 +286,7 @@
 	int iflags;
 	int mode = 0666;
 
-        if ( !PyArg_ParseTuple(args, "s|si", &name, &flags, &mode) )
+        if ( !PyArg_ParseTuple(args, "s|si:open", &name, &flags, &mode) )
 		return NULL;
 	if ( strcmp(flags, "r") == 0 )
 		iflags = O_RDONLY;
diff --git a/Modules/fcntlmodule.c b/Modules/fcntlmodule.c
index 1764bca..84531b7 100644
--- a/Modules/fcntlmodule.c
+++ b/Modules/fcntlmodule.c
@@ -234,7 +234,7 @@
 	int fd, code, ret, whence = 0;
 	PyObject *lenobj = NULL, *startobj = NULL;
 
-	if (!PyArg_ParseTuple(args, "ii|OOi", &fd, &code,
+	if (!PyArg_ParseTuple(args, "ii|OOi:lockf", &fd, &code,
 			      &lenobj, &startobj, &whence))
 	    return NULL;
 
diff --git a/Modules/gdbmmodule.c b/Modules/gdbmmodule.c
index 31855f5..96b5866 100644
--- a/Modules/gdbmmodule.c
+++ b/Modules/gdbmmodule.c
@@ -490,7 +490,7 @@
 	int iflags;
 	int mode = 0666;
 
-	if ( !PyArg_ParseTuple(args, "s|si", &name, &flags, &mode) )
+	if ( !PyArg_ParseTuple(args, "s|si:open", &name, &flags, &mode) )
 		return NULL;
 	switch (flags[0]) {
 	case 'r':
diff --git a/Modules/md5module.c b/Modules/md5module.c
index ee11ee1..3c001ae 100644
--- a/Modules/md5module.c
+++ b/Modules/md5module.c
@@ -237,7 +237,7 @@
 	unsigned char *cp = NULL;
 	int len = 0;
 
-	if (!PyArg_ParseTuple(args, "|s#", &cp, &len))
+	if (!PyArg_ParseTuple(args, "|s#:new", &cp, &len))
 		return NULL;
 
 	if ((md5p = newmd5object()) == NULL)
diff --git a/Modules/newmodule.c b/Modules/newmodule.c
index 786ddc5..2758f14 100644
--- a/Modules/newmodule.c
+++ b/Modules/newmodule.c
@@ -45,7 +45,7 @@
 	PyObject* klass;
 	PyObject *dict;
 	PyInstanceObject *inst;
-	if (!PyArg_ParseTuple(args, "O!O!",
+	if (!PyArg_ParseTuple(args, "O!O!:instance",
 			      &PyClass_Type, &klass,
 			      &PyDict_Type, &dict))
 		return NULL;
@@ -71,7 +71,7 @@
 	PyObject* self;
 	PyObject* classObj;
 
-	if (!PyArg_ParseTuple(args, "OOO!",
+	if (!PyArg_ParseTuple(args, "OOO!:instancemethod",
 			      &func,
 			      &self,
 			      &PyClass_Type, &classObj))
@@ -105,7 +105,7 @@
 	PyObject* defaults = Py_None;
 	PyFunctionObject* newfunc;
 
-	if (!PyArg_ParseTuple(args, "O!O!|SO!",
+	if (!PyArg_ParseTuple(args, "O!O!|SO!:function",
 			      &PyCode_Type, &code,
 			      &PyDict_Type, &globals,
 			      &name,
@@ -152,7 +152,7 @@
 	PyObject* lnotab;
 	PyBufferProcs *pb;
 
-	if (!PyArg_ParseTuple(args, "iiiiOO!O!O!SSiS",
+	if (!PyArg_ParseTuple(args, "iiiiOO!O!O!SSiS:code",
 			      &argcount, &nlocals, &stacksize, &flags,
 			      &code,
 			      &PyTuple_Type, &consts,
@@ -188,7 +188,7 @@
 {
 	char *name;
   
-	if (!PyArg_ParseTuple(args, "s", &name))
+	if (!PyArg_ParseTuple(args, "s:module", &name))
 		return NULL;
 	return PyModule_New(name);
 }
@@ -205,7 +205,7 @@
 	PyObject * classes;
 	PyObject * dict;
   
-	if (!PyArg_ParseTuple(args, "SO!O!", &name, &PyTuple_Type, &classes,
+	if (!PyArg_ParseTuple(args, "SO!O!:class", &name, &PyTuple_Type, &classes,
 			      &PyDict_Type, &dict))
 		return NULL;
 	return PyClass_New(classes, dict, name);
diff --git a/Modules/pcremodule.c b/Modules/pcremodule.c
index 6f6b910..f44726e 100644
--- a/Modules/pcremodule.c
+++ b/Modules/pcremodule.c
@@ -109,7 +109,7 @@
 	int offsets[100*2]; 
 	PyObject *list;
 
-	if (!PyArg_ParseTuple(args, "t#|iiii", &string, &stringlen, &pos, &endpos, &options))
+	if (!PyArg_ParseTuple(args, "t#|iiii:match", &string, &stringlen, &pos, &endpos, &options))
 		return NULL;
 	if (endpos == -1) {endpos = stringlen;}
 	count = pcre_exec(self->regex, self->regex_extra, 
@@ -193,7 +193,7 @@
 	const char *error;
 	
 	int options, erroroffset;
-	if (!PyArg_ParseTuple(args, "siO!", &pattern, &options,
+	if (!PyArg_ParseTuple(args, "siO!:pcre_compile", &pattern, &options,
 			      &PyDict_Type, &dictionary))
 		return NULL;
 	rv = newPcreObject(args);
@@ -471,7 +471,7 @@
 	unsigned char *repl;
 	int size, total_len, i, start, pos;
 
-	if (!PyArg_ParseTuple(args, "OS", &match_obj, &repl_obj)) 
+	if (!PyArg_ParseTuple(args, "OS:pcre_expand", &match_obj, &repl_obj)) 
 		return NULL;
 
 	repl=(unsigned char *)PyString_AsString(repl_obj);
diff --git a/Modules/puremodule.c b/Modules/puremodule.c
index ee80a2f..a8ada75 100644
--- a/Modules/puremodule.c
+++ b/Modules/puremodule.c
@@ -321,7 +321,7 @@
 	long memrep;
 	int id;
 
-	if (!PyArg_ParseTuple(args, "li", &memrep, &id))
+	if (!PyArg_ParseTuple(args, "li:purify_set_pool_id", &memrep, &id))
 		return NULL;
 
 	purify_set_pool_id((char*)memrep, id);
@@ -343,7 +343,7 @@
 	long memrep;
 	long datarep;
 
-	if (!PyArg_ParseTuple(args, "ll", &memrep, &datarep))
+	if (!PyArg_ParseTuple(args, "ll:purify_set_user_data", &memrep, &datarep))
 		return NULL;
 
 	purify_set_user_data((char*)memrep, (void*)datarep);
@@ -361,7 +361,7 @@
 	long memrep;
 	void* data;
 
-	if (!PyArg_ParseTuple(args, "l", &memrep))
+	if (!PyArg_ParseTuple(args, "l:purify_get_user_data", &memrep))
 		return NULL;
 
 	data = purify_get_user_data((char*)memrep);
@@ -411,7 +411,7 @@
 	PyObject* arg_callable;
 	int id;
 
-	if (!PyArg_ParseTuple(args, "iO", &id, &arg_callable))
+	if (!PyArg_ParseTuple(args, "iO:purify_map_pool", &id, &arg_callable))
 		return NULL;
 
 	if (!PyCallable_Check(arg_callable)) {
@@ -451,7 +451,7 @@
 	PyObject* saved_callable = MapCallable;
 	PyObject* arg_callable;
 
-	if (!PyArg_ParseTuple(args, "O", &arg_callable))
+	if (!PyArg_ParseTuple(args, "O:purify_map_pool_id", &arg_callable))
 		return NULL;
 
 	if (!PyCallable_Check(arg_callable)) {
@@ -530,7 +530,7 @@
 	int status;
 	char* stringarg;
 
-	if (!PyArg_ParseTuple(args, "s", &stringarg))
+	if (!PyArg_ParseTuple(args, "s:purify_name_thread", &stringarg))
 		return NULL;
 
 	status = purify_name_thread(stringarg);
@@ -666,7 +666,7 @@
 	char* type;
 	int status;
 
-	if (!PyArg_ParseTuple(args, "lis", &addrrep, &size, &type))
+	if (!PyArg_ParseTuple(args, "lis:purify_watch_n", &addrrep, &size, &type))
 		return NULL;
 
 	status = purify_watch_n((char*)addrrep, size, type);
@@ -689,7 +689,7 @@
 	int watchno;
 	int status;
 
-	if (!PyArg_ParseTuple(args, "i", &watchno))
+	if (!PyArg_ParseTuple(args, "i:purify_watch_remove", &watchno))
 		return NULL;
 
 	status = purify_watch_remove(watchno);
@@ -711,7 +711,7 @@
 	long addrrep;
 	char* rtn;
 
-	if (!PyArg_ParseTuple(args, "l", &addrrep))
+	if (!PyArg_ParseTuple(args, "l:purify_describe", &addrrep))
 		return NULL;
 
 	rtn = purify_describe((char*)addrrep);
@@ -727,7 +727,7 @@
 	unsigned int size;
 	int status;
     
-	if (!PyArg_ParseTuple(args, "li", &addrrep, &size))
+	if (!PyArg_ParseTuple(args, "li:purify_what_colors", &addrrep, &size))
 		return NULL;
 
 	status = purify_what_colors((char*)addrrep, size);
@@ -772,7 +772,7 @@
 {
 	int status;
 
-	if (!PyArg_ParseTuple(args, "i", &status))
+	if (!PyArg_ParseTuple(args, "i:purify_exit", &status))
 		return NULL;
 
         /* purify_exit doesn't always act like exit(). See the manual */
diff --git a/Modules/readline.c b/Modules/readline.c
index 68f3cf6..d4ba3f8 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -50,7 +50,7 @@
 	PyObject *args;
 {
 	char *s, *copy;
-	if (!PyArg_ParseTuple(args, "s", &s))
+	if (!PyArg_ParseTuple(args, "s:parse_and_bind", &s))
 		return NULL;
 	/* Make a copy -- rl_parse_and_bind() modifies its argument */
 	/* Bernard Herzog */
@@ -78,7 +78,7 @@
 	PyObject *args;
 {
 	char *s = NULL;
-	if (!PyArg_ParseTuple(args, "|z", &s))
+	if (!PyArg_ParseTuple(args, "|z:read_init_file", &s))
 		return NULL;
 	errno = rl_read_init_file(s);
 	if (errno)
@@ -146,7 +146,7 @@
 {
 	char *break_chars;
 
-	if(!PyArg_ParseTuple(args, "s", &break_chars)) {
+	if(!PyArg_ParseTuple(args, "s:set_completer_delims", &break_chars)) {
 		return NULL;
 	}
 	free(rl_completer_word_break_characters);
@@ -183,7 +183,7 @@
 	PyObject *args;
 {
 	PyObject *function = Py_None;
-	if (!PyArg_ParseTuple(args, "|O", &function))
+	if (!PyArg_ParseTuple(args, "|O:set_completer", &function))
 		return NULL;
 	if (function == Py_None) {
 		Py_XDECREF(completer);
@@ -239,7 +239,7 @@
 	PyObject *args;
 {
 	char *s;
-	if (!PyArg_ParseTuple(args, "s", &s))
+	if (!PyArg_ParseTuple(args, "s:insert_text", &s))
 		return NULL;
 	rl_insert_text(s);
 	Py_INCREF(Py_None);
diff --git a/Modules/regexmodule.c b/Modules/regexmodule.c
index 1f64f61..4fbf5c8 100644
--- a/Modules/regexmodule.c
+++ b/Modules/regexmodule.c
@@ -119,7 +119,7 @@
 	int offset = 0;
 	int result;
 
-	if (!PyArg_ParseTuple(args, "O|i", &argstring, &offset))
+	if (!PyArg_ParseTuple(args, "O|i:match", &argstring, &offset))
 		return NULL;
 	if (!PyArg_Parse(argstring, "t#", &buffer, &size))
 		return NULL;
@@ -158,9 +158,9 @@
 	int range;
 	int result;
 	
-	if (!PyArg_ParseTuple(args, "O|i", &argstring, &offset))
+	if (!PyArg_ParseTuple(args, "O|i:search", &argstring, &offset))
 		return NULL;
-	if (!PyArg_Parse(argstring, "t#", &buffer, &size))
+	if (!PyArg_Parse(argstring, "t#:search", &buffer, &size))
 		return NULL;
 
 	if (offset < 0 || offset > size) {
@@ -459,7 +459,7 @@
 	PyObject *pat = NULL;
 	PyObject *tran = NULL;
 
-	if (!PyArg_ParseTuple(args, "S|S", &pat, &tran))
+	if (!PyArg_ParseTuple(args, "S|S:compile", &pat, &tran))
 		return NULL;
 	return newregexobject(pat, tran, pat, NULL);
 }
@@ -584,7 +584,7 @@
 	PyObject *npattern;
 	PyObject *retval = NULL;
 
-	if (!PyArg_ParseTuple(args, "S|S", &pattern, &tran))
+	if (!PyArg_ParseTuple(args, "S|S:symcomp", &pattern, &tran))
 		return NULL;
 
 	gdict = PyDict_New();
diff --git a/Modules/resource.c b/Modules/resource.c
index 4e1c2b1..2c825c7 100644
--- a/Modules/resource.c
+++ b/Modules/resource.c
@@ -60,7 +60,7 @@
 	int who;
 	struct rusage ru;
 
-	if (!PyArg_ParseTuple(args, "i", &who))
+	if (!PyArg_ParseTuple(args, "i:getrusage", &who))
 		return NULL;
 
 	if (getrusage(who, &ru) == -1) {
@@ -107,7 +107,7 @@
 	struct rlimit rl;
 	int resource;
 
-	if (!PyArg_ParseTuple(args, "i", &resource)) 
+	if (!PyArg_ParseTuple(args, "i:getrlimit", &resource)) 
 		return NULL;
 
 	if (resource < 0 || resource >= RLIM_NLIMITS) {
@@ -140,7 +140,7 @@
 	int resource;
 	PyObject *curobj, *maxobj;
 
-	if (!PyArg_ParseTuple(args, "i(OO)", &resource, &curobj, &maxobj))
+	if (!PyArg_ParseTuple(args, "i(OO):setrlimit", &resource, &curobj, &maxobj))
 		return NULL;
 
 	if (resource < 0 || resource >= RLIM_NLIMITS) {
@@ -182,7 +182,7 @@
 	PyObject *self;
 	PyObject *args;
 {
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":getpagesize"))
 		return NULL;
 	return Py_BuildValue("i", getpagesize());
 }
diff --git a/Modules/rotormodule.c b/Modules/rotormodule.c
index b3511d8..b1fef39 100644
--- a/Modules/rotormodule.c
+++ b/Modules/rotormodule.c
@@ -583,7 +583,7 @@
 {
 	char *key;
 
-	if (!PyArg_ParseTuple(args, "s", &key))
+	if (!PyArg_ParseTuple(args, "s:setkey", &key))
 		return NULL;
 
 	set_key(self, key);
@@ -639,7 +639,7 @@
 	int len;
 	int num_rotors = 6;
 
-	if (!PyArg_ParseTuple(args, "s#|i", &string, &len, &num_rotors))
+	if (!PyArg_ParseTuple(args, "s#|i:newrotor", &string, &len, &num_rotors))
 		return NULL;
 
 	r = rotorobj_new(num_rotors, string);
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index 3e018dd..b48eb54 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -243,7 +243,7 @@
 	int n;
 
 	/* convert arguments */
-	if (!PyArg_ParseTuple(args, "OOO|O",
+	if (!PyArg_ParseTuple(args, "OOO|O:select",
 			      &ifdlist, &ofdlist, &efdlist, &tout))
 		return NULL;
 
diff --git a/Modules/shamodule.c b/Modules/shamodule.c
index 76b95b2..0504fad 100644
--- a/Modules/shamodule.c
+++ b/Modules/shamodule.c
@@ -548,7 +548,7 @@
 	if ((new = newSHAobject()) == NULL)
 		return NULL;
 
-	if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s#", kwlist,
+	if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s#:new", kwlist,
 					 &cp, &len)) {
 	        Py_DECREF(new);
 		return NULL;
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 5e63e53..3f8aa19 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -1096,7 +1096,7 @@
 	FILE *fp;
 	PyObject *f;
 
-	if (!PyArg_ParseTuple(args, "|si", &mode, &bufsize))
+	if (!PyArg_ParseTuple(args, "|si:makefile", &mode, &bufsize))
 		return NULL;
 #ifdef MS_WIN32
 	if (((fd = _open_osfhandle(s->sock_fd, _O_BINARY)) < 0) ||
@@ -1131,7 +1131,7 @@
 {
 	int len, n, flags = 0;
 	PyObject *buf;
-	if (!PyArg_ParseTuple(args, "i|i", &len, &flags))
+	if (!PyArg_ParseTuple(args, "i|i:recv", &len, &flags))
 		return NULL;
 	buf = PyString_FromStringAndSize((char *) 0, len);
 	if (buf == NULL)
@@ -1168,7 +1168,7 @@
 	PyObject *ret = NULL;
 
 	int addrlen, len, n, flags = 0;
-	if (!PyArg_ParseTuple(args, "i|i", &len, &flags))
+	if (!PyArg_ParseTuple(args, "i|i:recvfrom", &len, &flags))
 		return NULL;
 	if (!getsockaddrlen(s, &addrlen))
 		return NULL;
@@ -1218,7 +1218,7 @@
 {
 	char *buf;
 	int len, n, flags = 0;
-	if (!PyArg_ParseTuple(args, "s#|i", &buf, &len, &flags))
+	if (!PyArg_ParseTuple(args, "s#|i:send", &buf, &len, &flags))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	n = send(s->sock_fd, buf, len, flags);
@@ -1702,7 +1702,7 @@
 	int fd;
 #endif
 	int family, type, proto = 0;
-	if (!PyArg_ParseTuple(args, "ii|i", &family, &type, &proto))
+	if (!PyArg_ParseTuple(args, "ii|i:socket", &family, &type, &proto))
 		return NULL;
 	Py_BEGIN_ALLOW_THREADS
 	fd = socket(family, type, proto);
@@ -1747,7 +1747,7 @@
 {
 	PySocketSockObject *s;
 	int fd, family, type, proto = 0;
-	if (!PyArg_ParseTuple(args, "iii|i", &fd, &family, &type, &proto))
+	if (!PyArg_ParseTuple(args, "iii|i:fromfd", &fd, &family, &type, &proto))
 		return NULL;
 	/* Dup the fd so it and the socket can be closed independently */
 	fd = dup(fd);
@@ -2015,7 +2015,7 @@
 	char *key_file;
 	char *cert_file;
   
-	if (!PyArg_ParseTuple(args, "O!zz",
+	if (!PyArg_ParseTuple(args, "O!zz:ssl",
 			      &PySocketSock_Type, (PyObject*)&Sock,
 			      &key_file, &cert_file) )
 		return NULL;
@@ -2094,7 +2094,7 @@
 	char *data;
 	int len = 0;
   
-	if (!PyArg_ParseTuple(args, "s|i", &data, &len))
+	if (!PyArg_ParseTuple(args, "s|i:write", &data, &len))
 		return NULL;
   
 	if (!len)
@@ -2111,7 +2111,7 @@
 	int len = 1024;
 	int res;
   
-	PyArg_ParseTuple(args, "|i", &len);
+	PyArg_ParseTuple(args, "|i:read", &len);
   
 	if (!(buf = PyString_FromStringAndSize((char *) 0, len)))
 		return NULL;	/* Error object should already be set */
diff --git a/Modules/soundex.c b/Modules/soundex.c
index 3ef6824..e905fe0 100644
--- a/Modules/soundex.c
+++ b/Modules/soundex.c
@@ -125,7 +125,7 @@
 	char *str;
 	char sdx[7];
 
-	if(!PyArg_ParseTuple( args, "s", &str))
+	if(!PyArg_ParseTuple( args, "s:get_soundex", &str))
 	  return NULL;
 
 	soundex_hash(str, sdx);
@@ -141,7 +141,7 @@
     char *str1, *str2;
     char res1[7], res2[7];
     
-    if(!PyArg_ParseTuple(args, "ss", &str1, &str2))
+    if(!PyArg_ParseTuple(args, "ss:sound_similar", &str1, &str2))
         return NULL;
 
     soundex_hash(str1, res1);
diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c
index 7a56e37..a0d8b9a 100644
--- a/Modules/stropmodule.c
+++ b/Modules/stropmodule.c
@@ -141,7 +141,7 @@
 	n = 0;
 	splitcount = 0;
 	maxsplit = 0;
-	if (!PyArg_ParseTuple(args, "t#|z#i", &s, &len, &sub, &n, &maxsplit))
+	if (!PyArg_ParseTuple(args, "t#|z#i:split", &s, &len, &sub, &n, &maxsplit))
 		return NULL;
 	if (sub == NULL)
 		return split_whitespace(s, len, maxsplit);
@@ -211,7 +211,7 @@
 	char* p = NULL;
 	intargfunc getitemfunc;
 
-	if (!PyArg_ParseTuple(args, "O|t#", &seq, &sep, &seplen))
+	if (!PyArg_ParseTuple(args, "O|t#:join", &seq, &sep, &seplen))
 		return NULL;
 	if (sep == NULL) {
 		sep = " ";
@@ -338,7 +338,7 @@
 	char *s, *sub;
 	int len, n, i = 0, last = INT_MAX;
 
-	if (!PyArg_ParseTuple(args, "t#t#|ii", &s, &len, &sub, &n, &i, &last))
+	if (!PyArg_ParseTuple(args, "t#t#|ii:find", &s, &len, &sub, &n, &i, &last))
 		return NULL;
 
 	if (last > len)
@@ -383,7 +383,7 @@
 	int len, n, j;
 	int i = 0, last = INT_MAX;
 
-	if (!PyArg_ParseTuple(args, "t#t#|ii", &s, &len, &sub, &n, &i, &last))
+	if (!PyArg_ParseTuple(args, "t#t#|ii:rfind", &s, &len, &sub, &n, &i, &last))
 		return NULL;
 
 	if (last > len)
@@ -642,7 +642,7 @@
 	int tabsize = 8;
 
 	/* Get arguments */
-	if (!PyArg_ParseTuple(args, "s#|i", &string, &stringlen, &tabsize))
+	if (!PyArg_ParseTuple(args, "s#|i:expandtabs", &string, &stringlen, &tabsize))
 		return NULL;
 	if (tabsize < 1) {
 		PyErr_SetString(PyExc_ValueError,
@@ -708,7 +708,7 @@
 	int i = 0, last = INT_MAX;
 	int m, r;
 
-	if (!PyArg_ParseTuple(args, "t#t#|ii", &s, &len, &sub, &n, &i, &last))
+	if (!PyArg_ParseTuple(args, "t#t#|ii:count", &s, &len, &sub, &n, &i, &last))
 		return NULL;
 	if (last > len)
 		last = len;
@@ -803,7 +803,7 @@
 	long x;
 	char buffer[256]; /* For errors */
 
-	if (!PyArg_ParseTuple(args, "s|i", &s, &base))
+	if (!PyArg_ParseTuple(args, "s|i:atoi", &s, &base))
 		return NULL;
 
 	if ((base != 0 && base < 2) || base > 36) {
@@ -858,7 +858,7 @@
 	PyObject *x;
 	char buffer[256]; /* For errors */
 
-	if (!PyArg_ParseTuple(args, "s|i", &s, &base))
+	if (!PyArg_ParseTuple(args, "s|i:atol", &s, &base))
 		return NULL;
 
 	if ((base != 0 && base < 2) || base > 36) {
@@ -904,7 +904,7 @@
 	double x;
 	char buffer[256]; /* For errors */
 
-	if (!PyArg_ParseTuple(args, "s", &s))
+	if (!PyArg_ParseTuple(args, "s:atof", &s))
 		return NULL;
 	while (*s && isspace(Py_CHARMASK(*s)))
 		s++;
@@ -948,7 +948,7 @@
 	int i, fromlen=0, tolen=0;
 	PyObject *result;
 
-	if (!PyArg_ParseTuple(args, "t#t#", &from, &fromlen, &to, &tolen))
+	if (!PyArg_ParseTuple(args, "t#t#:maketrans", &from, &fromlen, &to, &tolen))
 		return NULL;
 
 	if (fromlen != tolen) {
@@ -991,7 +991,7 @@
 	PyObject *result;
 	int trans_table[256];
 
-	if (!PyArg_ParseTuple(args, "St#|t#", &input_obj,
+	if (!PyArg_ParseTuple(args, "St#|t#:translate", &input_obj,
 			      &table1, &tablen, &del_table, &dellen))
 		return NULL;
 	if (tablen != 256) {
@@ -1205,7 +1205,7 @@
 	int count = 0;
 	PyObject *new;
 
-	if (!PyArg_ParseTuple(args, "t#t#t#|i",
+	if (!PyArg_ParseTuple(args, "t#t#t#|i:replace",
 			      &str, &len, &pat, &pat_len, &sub, &sub_len,
 			      &count))
 		return NULL;
diff --git a/Modules/structmodule.c b/Modules/structmodule.c
index 9994d20..0a706a9 100644
--- a/Modules/structmodule.c
+++ b/Modules/structmodule.c
@@ -1097,7 +1097,7 @@
 	const formatdef *f;
 	int size;
 
-	if (!PyArg_ParseTuple(args, "s", &fmt))
+	if (!PyArg_ParseTuple(args, "s:calcsize", &fmt))
 		return NULL;
 	f = whichtable(&fmt);
 	size = calcsize(fmt, f);
@@ -1262,7 +1262,7 @@
 	int len, size, num;
 	PyObject *res, *v;
 
-	if (!PyArg_ParseTuple(args, "ss#", &fmt, &start, &len))
+	if (!PyArg_ParseTuple(args, "ss#:unpack", &fmt, &start, &len))
 		return NULL;
 	f = whichtable(&fmt);
 	size = calcsize(fmt, f);
diff --git a/Modules/syslogmodule.c b/Modules/syslogmodule.c
index 60889b1..6f192c3 100644
--- a/Modules/syslogmodule.c
+++ b/Modules/syslogmodule.c
@@ -105,7 +105,7 @@
 	PyObject * self;
 	PyObject * args;
 {
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":closelog"))
 		return NULL;
 	closelog();
 	Py_XDECREF(S_ident_o);
@@ -134,7 +134,7 @@
 {
 	long mask;
 	long pri;
-	if (!PyArg_ParseTuple(args, "l", &pri))
+	if (!PyArg_ParseTuple(args, "l:LOG_MASK", &pri))
 		return NULL;
 	mask = LOG_MASK(pri);
 	return PyInt_FromLong(mask);
@@ -147,7 +147,7 @@
 {
 	long mask;
 	long pri;
-	if (!PyArg_ParseTuple(args, "l", &pri))
+	if (!PyArg_ParseTuple(args, "l:LOG_UPTO", &pri))
 		return NULL;
 	mask = LOG_UPTO(pri);
 	return PyInt_FromLong(mask);
diff --git a/Modules/threadmodule.c b/Modules/threadmodule.c
index 3d5e4cc..cb463d9 100644
--- a/Modules/threadmodule.c
+++ b/Modules/threadmodule.c
@@ -251,7 +251,7 @@
 	PyObject *func, *args = NULL, *keyw = NULL;
 	struct bootstate *boot;
 
-	if (!PyArg_ParseTuple(fargs, "OO|O", &func, &args, &keyw))
+	if (!PyArg_ParseTuple(fargs, "OO|O:start_new_thread", &func, &args, &keyw))
 		return NULL;
 	if (!PyCallable_Check(func)) {
 		PyErr_SetString(PyExc_TypeError,
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 1d0fc3c..392f2b9 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -373,7 +373,7 @@
 
 	memset((ANY *) &buf, '\0', sizeof(buf));
 
-	if (!PyArg_ParseTuple(args, "sO", &fmt, &tup) || !gettmarg(tup, &buf))
+	if (!PyArg_ParseTuple(args, "sO:strftime", &fmt, &tup) || !gettmarg(tup, &buf))
 		return NULL;
 	fmtlen = strlen(fmt);
 
@@ -421,7 +421,7 @@
 	char *buf;
 	char *s;
 
-	if (!PyArg_ParseTuple(args, "s|s", &buf, &fmt)) {
+	if (!PyArg_ParseTuple(args, "s|s:strptime", &buf, &fmt)) {
 		PyErr_SetString(PyExc_ValueError, "invalid argument");
 		return NULL;
 	}
@@ -455,7 +455,7 @@
 	PyObject *tup;
 	struct tm buf;
 	char *p;
-	if (!PyArg_ParseTuple(args, "O", &tup))
+	if (!PyArg_ParseTuple(args, "O:asctime", &tup))
 		return NULL;
 	if (!gettmarg(tup, &buf))
 		return NULL;
@@ -506,7 +506,7 @@
 	PyObject *tup;
 	struct tm buf;
 	time_t tt;
-	if (!PyArg_ParseTuple(args, "O", &tup))
+	if (!PyArg_ParseTuple(args, "O:mktime", &tup))
 		return NULL;
 	tt = time(&tt);
 	buf = *localtime(&tt);
diff --git a/Modules/xxmodule.c b/Modules/xxmodule.c
index 04a474c..c0d05f4 100644
--- a/Modules/xxmodule.c
+++ b/Modules/xxmodule.c
@@ -84,7 +84,7 @@
 	XxoObject *self;
 	PyObject *args;
 {
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":demo"))
 		return NULL;
 	Py_INCREF(Py_None);
 	return Py_None;
@@ -163,7 +163,7 @@
 {
 	long i, j;
 	long res;
-	if (!PyArg_ParseTuple(args, "ll", &i, &j))
+	if (!PyArg_ParseTuple(args, "ll:foo", &i, &j))
 		return NULL;
 	res = i+j; /* XXX Do something here */
 	return PyInt_FromLong(res);
@@ -179,7 +179,7 @@
 {
 	XxoObject *rv;
 	
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":new"))
 		return NULL;
 	rv = newXxoObject(args);
 	if ( rv == NULL )
@@ -196,7 +196,7 @@
 {
 	PyObject *list, *item;
 	
-	if (!PyArg_ParseTuple(args, "O", &list))
+	if (!PyArg_ParseTuple(args, "O:bug", &list))
 		return NULL;
 	
 	item = PyList_GetItem(list, 0);
@@ -219,7 +219,7 @@
 {
 	PyObject *a;
 	long b;
-	if (!PyArg_ParseTuple(args, "O#", &a, &b))
+	if (!PyArg_ParseTuple(args, "O#:roj", &a, &b))
 		return NULL;
 	Py_INCREF(Py_None);
 	return Py_None;
diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c
index 8286339..aaecc11 100644
--- a/Modules/zlibmodule.c
+++ b/Modules/zlibmodule.c
@@ -74,7 +74,7 @@
   int length, level=Z_DEFAULT_COMPRESSION, err;
   z_stream zst;
   
-  if (!PyArg_ParseTuple(args, "s#|i", &input, &length, &level))
+  if (!PyArg_ParseTuple(args, "s#|i:compress", &input, &length, &level))
     return NULL;
   zst.avail_out = length + length/1000 + 12 + 1;
   output=(Byte*)malloc(zst.avail_out);
@@ -172,7 +172,7 @@
   int length, err;
   int wsize=DEF_WBITS, r_strlen=DEFAULTALLOC;
   z_stream zst;
-  if (!PyArg_ParseTuple(args, "s#|ii", &input, &length, &wsize, &r_strlen))
+  if (!PyArg_ParseTuple(args, "s#|ii:decompress", &input, &length, &wsize, &r_strlen))
     return NULL;
 
   if (r_strlen <= 0)
@@ -278,7 +278,7 @@
   int level=Z_DEFAULT_COMPRESSION, method=DEFLATED;
   int wbits=MAX_WBITS, memLevel=DEF_MEM_LEVEL, strategy=0, err;
 
-  if (!PyArg_ParseTuple(args, "|iiiii", &level, &method, &wbits,
+  if (!PyArg_ParseTuple(args, "|iiiii:compressobj", &level, &method, &wbits,
 			&memLevel, &strategy))
       return NULL;
 
@@ -325,7 +325,7 @@
 {
   int wbits=DEF_WBITS, err;
   compobject *self;
-  if (!PyArg_ParseTuple(args, "|i", &wbits))
+  if (!PyArg_ParseTuple(args, "|i:decompressobj", &wbits))
     {
      return NULL;
     }  
@@ -403,7 +403,7 @@
   Byte *input;
   unsigned long start_total_out;
   
-  if (!PyArg_ParseTuple(args, "s#", &input, &inplen))
+  if (!PyArg_ParseTuple(args, "s#:compress", &input, &inplen))
       return NULL;
   self->zst.avail_in = inplen;
   self->zst.next_in = input;
@@ -461,7 +461,7 @@
   Byte *input;
   unsigned long start_total_out;
 
-  if (!PyArg_ParseTuple(args, "s#", &input, &inplen))
+  if (!PyArg_ParseTuple(args, "s#:decompress", &input, &inplen))
     return NULL;
   start_total_out = self->zst.total_out;
   RetVal = PyString_FromStringAndSize(NULL, DEFAULTALLOC);
@@ -535,7 +535,7 @@
   int flushmode = Z_FINISH;
   unsigned long start_total_out;
 
-  if (!PyArg_ParseTuple(args, "|i", &flushmode))
+  if (!PyArg_ParseTuple(args, "|i:flush", &flushmode))
       return NULL;
 
   /* Flushing with Z_NO_FLUSH is a no-op, so there's no point in
@@ -745,7 +745,7 @@
     Byte *buf;
     int len;
  
-    if (!PyArg_ParseTuple(args, "s#|l", &buf, &len, &adler32val))
+    if (!PyArg_ParseTuple(args, "s#|l:adler32", &buf, &len, &adler32val))
     {
 	return NULL;
     }
@@ -767,7 +767,7 @@
     uLong crc32val=crc32(0L, Z_NULL, 0);
     Byte *buf;
     int len;
-    if (!PyArg_ParseTuple(args, "s#|l", &buf, &len, &crc32val))
+    if (!PyArg_ParseTuple(args, "s#|l:crc32", &buf, &len, &crc32val))
     {
 	return NULL;
     }
diff --git a/Objects/complexobject.c b/Objects/complexobject.c
index ac95e8b..0564942 100644
--- a/Objects/complexobject.c
+++ b/Objects/complexobject.c
@@ -578,7 +578,7 @@
 	PyObject *args;
 {
 	Py_complex c;
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":conjugate"))
 		return NULL;
 	c = ((PyComplexObject *)self)->cval;
 	c.imag = -c.imag;
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index 867b11a..5b3d6eb 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -263,7 +263,7 @@
 	if (f->f_fp == NULL)
 		return err_closed();
 	whence = 0;
-	if (!PyArg_ParseTuple(args, "O|i", &offobj, &whence))
+	if (!PyArg_ParseTuple(args, "O|i:seek", &offobj, &whence))
 		return NULL;
 #if !defined(HAVE_LARGEFILE_SUPPORT)
 	offset = PyInt_AsLong(offobj);
@@ -305,7 +305,7 @@
 	if (f->f_fp == NULL)
 		return err_closed();
 	newsizeobj = NULL;
-	if (!PyArg_ParseTuple(args, "|O", &newsizeobj))
+	if (!PyArg_ParseTuple(args, "|O:truncate", &newsizeobj))
 		return NULL;
 	if (newsizeobj != NULL) {
 #if !defined(HAVE_LARGEFILE_SUPPORT)
@@ -518,7 +518,7 @@
 	
 	if (f->f_fp == NULL)
 		return err_closed();
-	if (!PyArg_ParseTuple(args, "|l", &bytesrequested))
+	if (!PyArg_ParseTuple(args, "|l:read", &bytesrequested))
 		return NULL;
 	if (bytesrequested < 0)
 		buffersize = new_buffersize(f, (size_t)0);
@@ -732,7 +732,7 @@
 
 	if (f->f_fp == NULL)
 		return err_closed();
-	if (!PyArg_ParseTuple(args, "|i", &n))
+	if (!PyArg_ParseTuple(args, "|i:readline", &n))
 		return NULL;
 	if (n == 0)
 		return PyString_FromString("");
@@ -761,7 +761,7 @@
 
 	if (f->f_fp == NULL)
 		return err_closed();
-	if (!PyArg_ParseTuple(args, "|l", &sizehint))
+	if (!PyArg_ParseTuple(args, "|l:readlines", &sizehint))
 		return NULL;
 	if ((list = PyList_New(0)) == NULL)
 		return NULL;
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index cb264e9..ec49dd7 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -612,7 +612,7 @@
 	n = 0;
 	splitcount = 0;
 	maxsplit = 0;
-	if (!PyArg_ParseTuple(args, "|z#i", &sub, &n, &maxsplit))
+	if (!PyArg_ParseTuple(args, "|z#i:split", &sub, &n, &maxsplit))
 		return NULL;
 	if (sub == NULL)
 		return split_whitespace(s, len, maxsplit);
@@ -680,7 +680,7 @@
 	int i, slen;
 	PyObject *seq;
 
-	if (!PyArg_ParseTuple(args, "O", &seq))
+	if (!PyArg_ParseTuple(args, "O:join", &seq))
 		return NULL;
 
 	seqlen = PySequence_Length(seq);
@@ -769,7 +769,7 @@
 	int len = PyString_GET_SIZE(self);
 	int n, i = 0, last = INT_MAX;
 
-	if (!PyArg_ParseTuple(args, "t#|ii", &sub, &n, &i, &last))
+	if (!PyArg_ParseTuple(args, "t#|ii:find", &sub, &n, &i, &last))
 		return -2;
 
 	if (last > len)
@@ -848,7 +848,7 @@
 	int len = PyString_GET_SIZE(self), n, j;
 	int i = 0, last = INT_MAX;
 
-	if (!PyArg_ParseTuple(args, "t#|ii", &sub, &n, &i, &last))
+	if (!PyArg_ParseTuple(args, "t#|ii:rfind", &sub, &n, &i, &last))
 		return -2;
 
 	if (last > len)
@@ -926,7 +926,7 @@
 	char *s = PyString_AS_STRING(self);
 	int len = PyString_GET_SIZE(self), i, j;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":strip"))
 		return NULL;
 
 	i = 0;
@@ -1010,7 +1010,7 @@
 	int i, n = PyString_GET_SIZE(self);
 	PyObject *new;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":lower"))
 		return NULL;
 	new = PyString_FromStringAndSize(NULL, n);
 	if (new == NULL)
@@ -1042,7 +1042,7 @@
 	int i, n = PyString_GET_SIZE(self);
 	PyObject *new;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":upper"))
 		return NULL;
 	new = PyString_FromStringAndSize(NULL, n);
 	if (new == NULL)
@@ -1075,7 +1075,7 @@
 	int i, n = PyString_GET_SIZE(self);
 	PyObject *new;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":capitalize"))
 		return NULL;
 	new = PyString_FromStringAndSize(NULL, n);
 	if (new == NULL)
@@ -1118,7 +1118,7 @@
 	int i = 0, last = INT_MAX;
 	int m, r;
 
-	if (!PyArg_ParseTuple(args, "t#|ii", &sub, &n, &i, &last))
+	if (!PyArg_ParseTuple(args, "t#|ii:count", &sub, &n, &i, &last))
 		return NULL;
 	if (last > len)
 		last = len;
@@ -1162,7 +1162,7 @@
 	int i, n = PyString_GET_SIZE(self);
 	PyObject *new;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":swapcase"))
 		return NULL;
 	new = PyString_FromStringAndSize(NULL, n);
 	if (new == NULL)
@@ -1205,7 +1205,7 @@
 	PyObject *result;
 	int trans_table[256];
 
-	if (!PyArg_ParseTuple(args, "t#|t#",
+	if (!PyArg_ParseTuple(args, "t#|t#:translate",
 			      &table1, &tablen, &del_table, &dellen))
 		return NULL;
 	if (tablen != 256) {
@@ -1422,7 +1422,7 @@
 	int count = 0;
 	PyObject *new;
 
-	if (!PyArg_ParseTuple(args, "t#t#|i",
+	if (!PyArg_ParseTuple(args, "t#t#|i:replace",
 			      &pat, &pat_len, &sub, &sub_len, &count))
 		return NULL;
 	if (pat_len <= 0) {
@@ -1466,7 +1466,7 @@
 	int start = 0;
 	int end = -1;
 
-	if (!PyArg_ParseTuple(args, "t#|ii", &prefix, &plen, &start, &end))
+	if (!PyArg_ParseTuple(args, "t#|ii:startswith", &prefix, &plen, &start, &end))
 		return NULL;
 
 	/* adopt Java semantics for index out of range.  it is legal for
@@ -1509,7 +1509,7 @@
 	int end = -1;
 	int lower, upper;
 
-	if (!PyArg_ParseTuple(args, "t#|ii", &suffix, &plen, &start, &end))
+	if (!PyArg_ParseTuple(args, "t#|ii:endswith", &suffix, &plen, &start, &end))
 		return NULL;
 
 	if (start < 0 || start > len || plen > len)
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index bfbce43..3fafa5d 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -846,7 +846,7 @@
 {
 	PyObject *d;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":globals"))
 		return NULL;
 	d = PyEval_GetGlobals();
 	Py_INCREF(d);
@@ -1212,7 +1212,7 @@
 	PyObject *args;
 {
 	PyObject *s;
-	if (!PyArg_ParseTuple(args, "S", &s))
+	if (!PyArg_ParseTuple(args, "S:intern", &s))
 		return NULL;
 	Py_INCREF(s);
 	PyString_InternInPlace(&s);
@@ -1383,7 +1383,7 @@
 {
 	PyObject *d;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":locals"))
 		return NULL;
 	d = PyEval_GetLocals();
 	Py_INCREF(d);
@@ -2091,7 +2091,7 @@
 	static PyObject *__class__ = NULL;
 	int retval = 0;
 
-	if (!PyArg_ParseTuple(args, "OO", &inst, &cls))
+	if (!PyArg_ParseTuple(args, "OO:isinstance", &inst, &cls))
 		return NULL;
 
         if (PyClass_Check(cls)) {
@@ -2150,7 +2150,7 @@
 	PyObject *cls;
 	int retval;
 
-	if (!PyArg_ParseTuple(args, "OO", &derived, &cls))
+	if (!PyArg_ParseTuple(args, "OO:issubclass", &derived, &cls))
 		return NULL;
 
 	if (!PyClass_Check(derived) || !PyClass_Check(cls)) {
diff --git a/Python/import.c b/Python/import.c
index bce1b57..88908a9 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -1951,7 +1951,7 @@
 {
 	char buf[4];
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":get_magic"))
 		return NULL;
 	buf[0] = (char) ((MAGIC >>  0) & 0xff);
 	buf[1] = (char) ((MAGIC >>  8) & 0xff);
@@ -1969,7 +1969,7 @@
 	PyObject *list;
 	struct filedescr *fdp;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_ParseTuple(args, ":get_suffixes"))
 		return NULL;
 	list = PyList_New(0);
 	if (list == NULL)
@@ -2032,7 +2032,7 @@
 {
 	char *name;
 	PyObject *path = NULL;
-	if (!PyArg_ParseTuple(args, "s|O", &name, &path))
+	if (!PyArg_ParseTuple(args, "s|O:find_module", &name, &path))
 		return NULL;
 	return call_find_module(name, path);
 }
@@ -2045,7 +2045,7 @@
 	char *name;
 	int ret;
 	PyObject *m;
-	if (!PyArg_ParseTuple(args, "s", &name))
+	if (!PyArg_ParseTuple(args, "s:init_builtin", &name))
 		return NULL;
 	ret = init_builtin(name);
 	if (ret < 0)
@@ -2067,7 +2067,7 @@
 	char *name;
 	int ret;
 	PyObject *m;
-	if (!PyArg_ParseTuple(args, "s", &name))
+	if (!PyArg_ParseTuple(args, "s:init_frozen", &name))
 		return NULL;
 	ret = PyImport_ImportFrozenModule(name);
 	if (ret < 0)
@@ -2088,7 +2088,7 @@
 {
 	char *name;
 
-	if (!PyArg_ParseTuple(args, "s", &name))
+	if (!PyArg_ParseTuple(args, "s:get_frozen_object", &name))
 		return NULL;
 	return get_frozen_object(name);
 }
@@ -2099,7 +2099,7 @@
 	PyObject *args;
 {
 	char *name;
-	if (!PyArg_ParseTuple(args, "s", &name))
+	if (!PyArg_ParseTuple(args, "s:is_builtin", &name))
 		return NULL;
 	return PyInt_FromLong(is_builtin(name));
 }
@@ -2111,7 +2111,7 @@
 {
 	char *name;
 	struct _frozen *p;
-	if (!PyArg_ParseTuple(args, "s", &name))
+	if (!PyArg_ParseTuple(args, "s:is_frozen", &name))
 		return NULL;
 	p = find_frozen(name);
 	return PyInt_FromLong((long) (p == NULL ? 0 : p->size));
@@ -2148,7 +2148,7 @@
 	PyObject *fob = NULL;
 	PyObject *m;
 	FILE *fp;
-	if (!PyArg_ParseTuple(args, "ss|O!", &name, &pathname,
+	if (!PyArg_ParseTuple(args, "ss|O!:load_compiled", &name, &pathname,
 			      &PyFile_Type, &fob))
 		return NULL;
 	fp = get_file(pathname, fob, "rb");
@@ -2172,7 +2172,7 @@
 	PyObject *fob = NULL;
 	PyObject *m;
 	FILE *fp = NULL;
-	if (!PyArg_ParseTuple(args, "ss|O!", &name, &pathname,
+	if (!PyArg_ParseTuple(args, "ss|O!:load_dynamic", &name, &pathname,
 			      &PyFile_Type, &fob))
 		return NULL;
 	if (fob) {
@@ -2196,7 +2196,7 @@
 	PyObject *fob = NULL;
 	PyObject *m;
 	FILE *fp;
-	if (!PyArg_ParseTuple(args, "ss|O!", &name, &pathname,
+	if (!PyArg_ParseTuple(args, "ss|O!:load_source", &name, &pathname,
 			      &PyFile_Type, &fob))
 		return NULL;
 	fp = get_file(pathname, fob, "r");
@@ -2218,7 +2218,7 @@
 	char *pathname;
 	PyObject *m;
 
-	if (!PyArg_ParseTuple(args, "ss", &name, &pathname))
+	if (!PyArg_ParseTuple(args, "ss:load_resource", &name, &pathname))
 		return NULL;
 	m = PyMac_LoadResourceModule(name, pathname);
 	return m;
@@ -2238,7 +2238,7 @@
 	int type;
 	FILE *fp;
 
-	if (!PyArg_ParseTuple(args, "sOs(ssi)",
+	if (!PyArg_ParseTuple(args, "sOs(ssi):load_module",
 			      &name, &fob, &pathname,
 			      &suffix, &mode, &type))
 		return NULL;
@@ -2269,7 +2269,7 @@
 {
 	char *name;
 	char *pathname;
-	if (!PyArg_ParseTuple(args, "ss", &name, &pathname))
+	if (!PyArg_ParseTuple(args, "ss:load_package", &name, &pathname))
 		return NULL;
 	return load_package(name, pathname);
 }
@@ -2280,7 +2280,7 @@
 	PyObject *args;
 {
 	char *name;
-	if (!PyArg_ParseTuple(args, "s", &name))
+	if (!PyArg_ParseTuple(args, "s:new_module", &name))
 		return NULL;
 	return PyModule_New(name);
 }
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index a7a5933..59a34de 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -192,7 +192,7 @@
 	PyObject *args;
 {
 	PyThreadState *tstate = PyThreadState_Get();
-	if (!PyArg_ParseTuple(args, "i", &tstate->interp->checkinterval))
+	if (!PyArg_ParseTuple(args, "i:setcheckinterval", &tstate->interp->checkinterval))
 		return NULL;
 	Py_INCREF(Py_None);
 	return Py_None;