Remove many uses of PyArg_NoArgs macro, change METH_OLDARGS to METH_NOARGS.
diff --git a/Include/Python.h b/Include/Python.h
index d1ffc73..d3fce4b 100644
--- a/Include/Python.h
+++ b/Include/Python.h
@@ -118,6 +118,9 @@
 #include "abstract.h"
 
 #define PyArg_GetInt(v, a)	PyArg_Parse((v), "i", (a))
+
+/* PyArg_NoArgs should not be necessary.
+   Set ml_flags in the PyMethodDef to METH_NOARGS. */
 #define PyArg_NoArgs(v)		PyArg_Parse(v, "")
 
 /* Convert a possibly signed character to a nonnegative int */
diff --git a/Modules/_curses_panel.c b/Modules/_curses_panel.c
index 5736868..5603fe9 100644
--- a/Modules/_curses_panel.c
+++ b/Modules/_curses_panel.c
@@ -355,14 +355,12 @@
    panel.above() *requires* a panel object in the first place which
    may be undesirable. */
 static PyObject *
-PyCurses_bottom_panel(PyObject *self, PyObject *args)
+PyCurses_bottom_panel(PyObject *self)
 {
     PANEL *pan;
     PyCursesPanelObject *po;
 
     PyCursesInitialised;
-	
-    if (!PyArg_NoArgs(args)) return NULL;
 
     pan = panel_above(NULL);
 
@@ -403,14 +401,12 @@
    *requires* a panel object in the first place which may be
    undesirable. */
 static PyObject *
-PyCurses_top_panel(PyObject *self, PyObject *args)
+PyCurses_top_panel(PyObject *self)
 {
     PANEL *pan;
     PyCursesPanelObject *po;
     
     PyCursesInitialised;
-	
-    if (!PyArg_NoArgs(args)) return NULL;
 
     pan = panel_below(NULL);
 
@@ -429,10 +425,9 @@
     return (PyObject *)po;
 }
 
-static PyObject *PyCurses_update_panels(PyObject *self, PyObject *args)
+static PyObject *PyCurses_update_panels(PyObject *self)
 { 
     PyCursesInitialised;
-    if (!PyArg_NoArgs(args)) return NULL;
     update_panels();
     Py_INCREF(Py_None);
     return Py_None;
@@ -442,10 +437,10 @@
 /* List of functions defined in the module */
 
 static PyMethodDef PyCurses_methods[] = {
-    {"bottom_panel",        (PyCFunction)PyCurses_bottom_panel},
-    {"new_panel",           (PyCFunction)PyCurses_new_panel, METH_VARARGS},
-    {"top_panel",           (PyCFunction)PyCurses_top_panel},
-    {"update_panels",       (PyCFunction)PyCurses_update_panels},
+    {"bottom_panel",        (PyCFunction)PyCurses_bottom_panel,  METH_NOARGS},
+    {"new_panel",           (PyCFunction)PyCurses_new_panel,     METH_VARARGS},
+    {"top_panel",           (PyCFunction)PyCurses_top_panel,     METH_NOARGS},
+    {"update_panels",       (PyCFunction)PyCurses_update_panels, METH_NOARGS},
     {NULL,		NULL}		/* sentinel */
 };
 
diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c
index c617bfb..cfbef9f 100644
--- a/Modules/_localemodule.c
+++ b/Modules/_localemodule.c
@@ -245,15 +245,12 @@
 ;
 
 static PyObject*
-PyLocale_localeconv(PyObject* self, PyObject* args)
+PyLocale_localeconv(PyObject* self)
 {
     PyObject* result;
     struct lconv *l;
     PyObject *x;
 
-    if (!PyArg_NoArgs(args))
-        return NULL;
-
     result = PyDict_New();
     if (!result)
         return NULL;
@@ -368,14 +365,11 @@
 
 #if defined(MS_WIN32)
 static PyObject*
-PyLocale_getdefaultlocale(PyObject* self, PyObject* args)
+PyLocale_getdefaultlocale(PyObject* self)
 {
     char encoding[100];
     char locale[100];
 
-    if (!PyArg_NoArgs(args))
-        return NULL;
-
     PyOS_snprintf(encoding, sizeof(encoding), "cp%d", GetACP());
 
     if (GetLocaleInfo(LOCALE_USER_DEFAULT,
@@ -408,7 +402,7 @@
 
 #if defined(macintosh)
 static PyObject*
-PyLocale_getdefaultlocale(PyObject* self, PyObject* args)
+PyLocale_getdefaultlocale(PyObject* self)
 {
     return Py_BuildValue("Os", Py_None, PyMac_getscript());
 }
@@ -530,13 +524,13 @@
   {"setlocale", (PyCFunction) PyLocale_setlocale, 
    METH_VARARGS, setlocale__doc__},
   {"localeconv", (PyCFunction) PyLocale_localeconv, 
-   0, localeconv__doc__},
+   METH_NOARGS, localeconv__doc__},
   {"strcoll", (PyCFunction) PyLocale_strcoll, 
    METH_VARARGS, strcoll__doc__},
   {"strxfrm", (PyCFunction) PyLocale_strxfrm, 
    METH_VARARGS, strxfrm__doc__},
 #if defined(MS_WIN32) || defined(macintosh)
-  {"_getdefaultlocale", (PyCFunction) PyLocale_getdefaultlocale, 0},
+  {"_getdefaultlocale", (PyCFunction) PyLocale_getdefaultlocale, METH_NOARGS},
 #endif
 #ifdef HAVE_LANGINFO_H
   {"nl_langinfo", (PyCFunction) PyLocale_nl_langinfo,
diff --git a/Modules/bsddbmodule.c b/Modules/bsddbmodule.c
index 85dfa83..d767626 100644
--- a/Modules/bsddbmodule.c
+++ b/Modules/bsddbmodule.c
@@ -380,10 +380,8 @@
 };
 
 static PyObject *
-bsddb_close(bsddbobject *dp, PyObject *args)
+bsddb_close(bsddbobject *dp)
 {
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	if (dp->di_bsddb != NULL) {
 		int status;
 		BSDDB_BGN_SAVE(dp)
@@ -401,7 +399,7 @@
 }
 
 static PyObject *
-bsddb_keys(bsddbobject *dp, PyObject *args)
+bsddb_keys(bsddbobject *dp)
 {
 	PyObject *list, *item=NULL;
 	DBT krec, drec;
@@ -409,8 +407,6 @@
 	int status;
 	int err;
 
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	check_bsddbobject_open(dp, NULL);
 	list = PyList_New(0);
 	if (list == NULL)
@@ -562,7 +558,7 @@
 }
 
 static PyObject *
-bsddb_seq(bsddbobject *dp, PyObject *args, int sequence_request)
+bsddb_seq(bsddbobject *dp, int sequence_request)
 {
 	int status;
 	DBT krec, drec;
@@ -570,9 +566,6 @@
 	char *ddata=NULL,dbuf[4096];
 	PyObject *result;
 
-	if (!PyArg_NoArgs(args))
-		return NULL;
-
 	check_bsddbobject_open(dp, NULL);
 	krec.data = 0;
 	krec.size = 0;
@@ -598,11 +591,10 @@
 		if (status < 0)
 			PyErr_SetFromErrno(BsddbError);
 		else
-			PyErr_SetObject(PyExc_KeyError, args);
+			PyErr_SetString(PyExc_KeyError, "no key/data pairs");
 		return NULL;
 	}
 
-	
 	if (dp->di_type == DB_RECNO)
 		result = Py_BuildValue("is#", *((int*)kdata),
 				       ddata, drec.size);
@@ -615,32 +607,30 @@
 }
 
 static PyObject *
-bsddb_next(bsddbobject *dp, PyObject *key)
+bsddb_next(bsddbobject *dp)
 {
-	return bsddb_seq(dp, key, R_NEXT);
+	return bsddb_seq(dp, R_NEXT);
 }
 static PyObject *
-bsddb_previous(bsddbobject *dp, PyObject *key)
+bsddb_previous(bsddbobject *dp)
 {
-	return bsddb_seq(dp, key, R_PREV);
+	return bsddb_seq(dp, R_PREV);
 }
 static PyObject *
-bsddb_first(bsddbobject *dp, PyObject *key)
+bsddb_first(bsddbobject *dp)
 {
-	return bsddb_seq(dp, key, R_FIRST);
+	return bsddb_seq(dp, R_FIRST);
 }
 static PyObject *
-bsddb_last(bsddbobject *dp, PyObject *key)
+bsddb_last(bsddbobject *dp)
 {
-	return bsddb_seq(dp, key, R_LAST);
+	return bsddb_seq(dp, R_LAST);
 }
 static PyObject *
-bsddb_sync(bsddbobject *dp, PyObject *args)
+bsddb_sync(bsddbobject *dp)
 {
 	int status;
 
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	check_bsddbobject_open(dp, NULL);
 	BSDDB_BGN_SAVE(dp)
 	status = (dp->di_bsddb->sync)(dp->di_bsddb, 0);
@@ -652,15 +642,15 @@
 	return PyInt_FromLong(status = 0);
 }
 static PyMethodDef bsddb_methods[] = {
-	{"close",		(PyCFunction)bsddb_close, METH_OLDARGS},
-	{"keys",		(PyCFunction)bsddb_keys, METH_OLDARGS},
+	{"close",		(PyCFunction)bsddb_close, METH_NOARGS},
+	{"keys",		(PyCFunction)bsddb_keys, METH_NOARGS},
 	{"has_key",		(PyCFunction)bsddb_has_key, METH_OLDARGS},
 	{"set_location",	(PyCFunction)bsddb_set_location, METH_OLDARGS},
-	{"next",		(PyCFunction)bsddb_next, METH_OLDARGS},
-	{"previous",	(PyCFunction)bsddb_previous, METH_OLDARGS},
-	{"first",		(PyCFunction)bsddb_first, METH_OLDARGS},
-	{"last",		(PyCFunction)bsddb_last, METH_OLDARGS},
-	{"sync",		(PyCFunction)bsddb_sync, METH_OLDARGS},
+	{"next",		(PyCFunction)bsddb_next, METH_NOARGS},
+	{"previous",	(PyCFunction)bsddb_previous, METH_NOARGS},
+	{"first",		(PyCFunction)bsddb_first, METH_NOARGS},
+	{"last",		(PyCFunction)bsddb_last, METH_NOARGS},
+	{"sync",		(PyCFunction)bsddb_sync, METH_NOARGS},
 	{NULL,	       	NULL}		/* sentinel */
 };
 
diff --git a/Modules/md5module.c b/Modules/md5module.c
index 3ddacf5..fb904f4 100644
--- a/Modules/md5module.c
+++ b/Modules/md5module.c
@@ -70,14 +70,11 @@
 
 
 static PyObject *
-md5_digest(md5object *self, PyObject *args)
+md5_digest(md5object *self)
 {
  	MD5_CTX mdContext;
 	unsigned char aDigest[16];
 
-	if (!PyArg_NoArgs(args))
-		return NULL;
-
 	/* make a temporary copy, and perform the final */
 	mdContext = self->md5;
 	MD5Final(aDigest, &mdContext);
@@ -94,16 +91,13 @@
 
 
 static PyObject *
-md5_hexdigest(md5object *self, PyObject *args)
+md5_hexdigest(md5object *self)
 {
  	MD5_CTX mdContext;
 	unsigned char digest[16];
 	unsigned char hexdigest[32];
 	int i, j;
 
-	if (!PyArg_NoArgs(args))
-		return NULL;
-
 	/* make a temporary copy, and perform the final */
 	mdContext = self->md5;
 	MD5Final(digest, &mdContext);
@@ -129,13 +123,10 @@
 
 
 static PyObject *
-md5_copy(md5object *self, PyObject *args)
+md5_copy(md5object *self)
 {
 	md5object *md5p;
 
-	if (!PyArg_NoArgs(args))
-		return NULL;
-
 	if ((md5p = newmd5object()) == NULL)
 		return NULL;
 
@@ -152,9 +143,9 @@
 
 static PyMethodDef md5_methods[] = {
 	{"update",    (PyCFunction)md5_update,    METH_OLDARGS, update_doc},
-	{"digest",    (PyCFunction)md5_digest,    METH_OLDARGS, digest_doc},
-	{"hexdigest", (PyCFunction)md5_hexdigest, METH_OLDARGS, hexdigest_doc},
-	{"copy",      (PyCFunction)md5_copy,      METH_OLDARGS, copy_doc},
+	{"digest",    (PyCFunction)md5_digest,    METH_NOARGS,  digest_doc},
+	{"hexdigest", (PyCFunction)md5_hexdigest, METH_NOARGS,  hexdigest_doc},
+	{"copy",      (PyCFunction)md5_copy,      METH_NOARGS,  copy_doc},
 	{NULL, NULL}			     /* sentinel */
 };
 
diff --git a/Modules/pwdmodule.c b/Modules/pwdmodule.c
index 91989b7..a52d45f 100644
--- a/Modules/pwdmodule.c
+++ b/Modules/pwdmodule.c
@@ -120,12 +120,10 @@
 See pwd.__doc__ for more on password database entries.";
 
 static PyObject *
-pwd_getpwall(PyObject *self, PyObject *args)
+pwd_getpwall(PyObject *self)
 {
 	PyObject *d;
 	struct passwd *p;
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	if ((d = PyList_New(0)) == NULL)
 		return NULL;
 #if defined(PYOS_OS2) && defined(PYCC_GCC)
@@ -151,7 +149,7 @@
 	{"getpwuid",	pwd_getpwuid, METH_OLDARGS, pwd_getpwuid__doc__},
 	{"getpwnam",	pwd_getpwnam, METH_OLDARGS, pwd_getpwnam__doc__},
 #ifdef HAVE_GETPWENT
-	{"getpwall",	pwd_getpwall, METH_OLDARGS, pwd_getpwall__doc__},
+	{"getpwall",	pwd_getpwall, METH_NOARGS,  pwd_getpwall__doc__},
 #endif
 	{NULL,		NULL}		/* sentinel */
 };
diff --git a/Modules/readline.c b/Modules/readline.c
index e573773..ed78b92 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -237,11 +237,8 @@
 
 /* get the beginning index for the scope of the tab-completion */
 static PyObject *
-get_begidx(PyObject *self, PyObject *args)
+get_begidx(PyObject *self)
 {
-	if(!PyArg_NoArgs(args)) {
-		return NULL;
-	} 
 	Py_INCREF(begidx);
 	return begidx;
 }
@@ -252,11 +249,8 @@
 
 /* get the ending index for the scope of the tab-completion */
 static PyObject *
-get_endidx(PyObject *self, PyObject *args)
+get_endidx(PyObject *self)
 {
- 	if(!PyArg_NoArgs(args)) {
-		return NULL;
-	} 
 	Py_INCREF(endidx);
 	return endidx;
 }
@@ -307,11 +301,8 @@
 /* get the tab-completion word-delimiters that readline uses */
 
 static PyObject *
-get_completer_delims(PyObject *self, PyObject *args)
+get_completer_delims(PyObject *self)
 {
-	if(!PyArg_NoArgs(args)) {
-		return NULL;
-	}
 	return PyString_FromString(rl_completer_word_break_characters);
 }
 	
@@ -359,12 +350,10 @@
 /* Exported function to get current length of history */
 
 static PyObject *
-get_current_history_length(PyObject *self, PyObject *args)
+get_current_history_length(PyObject *self)
 {
 	HISTORY_STATE *hist_st;
 
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	hist_st = history_get_history_state();
 	return PyInt_FromLong(hist_st ? (long) hist_st->length : (long) 0);
 }
@@ -377,10 +366,8 @@
 /* Exported function to read the current line buffer */
 
 static PyObject *
-get_line_buffer(PyObject *self, PyObject *args)
+get_line_buffer(PyObject *self)
 {
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	return PyString_FromString(rl_line_buffer);
 }
 
@@ -427,7 +414,7 @@
 {
 	{"parse_and_bind", parse_and_bind, METH_VARARGS, doc_parse_and_bind},
 	{"get_line_buffer", get_line_buffer, 
-	 METH_OLDARGS, doc_get_line_buffer},
+	 METH_NOARGS, doc_get_line_buffer},
 	{"insert_text", insert_text, METH_VARARGS, doc_insert_text},
 	{"redisplay", (PyCFunction)redisplay, METH_NOARGS, doc_redisplay},
 	{"read_init_file", read_init_file, METH_VARARGS, doc_read_init_file},
@@ -438,20 +425,20 @@
 	{"get_history_item", get_history_item,
 	 METH_VARARGS, doc_get_history_item},
 	{"get_current_history_length", get_current_history_length,
-	 METH_OLDARGS, doc_get_current_history_length},
+	 METH_NOARGS, doc_get_current_history_length},
  	{"set_history_length", set_history_length, 
 	 METH_VARARGS, set_history_length_doc},
  	{"get_history_length", get_history_length, 
 	 METH_VARARGS, get_history_length_doc},
 	{"set_completer", set_completer, METH_VARARGS, doc_set_completer},
-	{"get_begidx", get_begidx, METH_OLDARGS, doc_get_begidx},
-	{"get_endidx", get_endidx, METH_OLDARGS, doc_get_endidx},
+	{"get_begidx", get_begidx, METH_NOARGS, doc_get_begidx},
+	{"get_endidx", get_endidx, METH_NOARGS, doc_get_endidx},
 
 	{"set_completer_delims", set_completer_delims, 
 	 METH_VARARGS, doc_set_completer_delims},
 	{"add_history", py_add_history, METH_VARARGS, doc_add_history},
 	{"get_completer_delims", get_completer_delims, 
-	 METH_OLDARGS, doc_get_completer_delims},
+	 METH_NOARGS, doc_get_completer_delims},
 	
 	{"set_startup_hook", set_startup_hook, METH_VARARGS, doc_set_startup_hook},
 #ifdef HAVE_RL_PRE_INPUT_HOOK
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index b27c4b7..e4298c6 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -163,11 +163,8 @@
 
 #ifdef HAVE_PAUSE
 static PyObject *
-signal_pause(PyObject *self, PyObject *args)
+signal_pause(PyObject *self)
 {
-	if (!PyArg_NoArgs(args))
-		return NULL;
-
 	Py_BEGIN_ALLOW_THREADS
 	(void)pause();
 	Py_END_ALLOW_THREADS
@@ -282,7 +279,7 @@
 	{"signal",	        signal_signal, METH_OLDARGS, signal_doc},
 	{"getsignal",	        signal_getsignal, METH_OLDARGS, getsignal_doc},
 #ifdef HAVE_PAUSE
-	{"pause",	        signal_pause, METH_OLDARGS, pause_doc},
+	{"pause",	        signal_pause, METH_NOARGS, pause_doc},
 #endif
 	{"default_int_handler", signal_default_int_handler, 
 	 METH_OLDARGS, default_int_handler_doc},
diff --git a/Modules/threadmodule.c b/Modules/threadmodule.c
index dfc5cbe..cf4d3d5 100644
--- a/Modules/threadmodule.c
+++ b/Modules/threadmodule.c
@@ -87,11 +87,8 @@
 The blocking operation is not interruptible.";
 
 static PyObject *
-lock_PyThread_release_lock(lockobject *self, PyObject *args)
+lock_PyThread_release_lock(lockobject *self)
 {
-	if (!PyArg_NoArgs(args))
-		return NULL;
-
 	/* Sanity check: the lock must be locked */
 	if (PyThread_acquire_lock(self->lock_lock, 0)) {
 		PyThread_release_lock(self->lock_lock);
@@ -113,11 +110,8 @@
 but it needn't be locked by the same thread that unlocks it.";
 
 static PyObject *
-lock_locked_lock(lockobject *self, PyObject *args)
+lock_locked_lock(lockobject *self)
 {
-	if (!PyArg_NoArgs(args))
-		return NULL;
-
 	if (PyThread_acquire_lock(self->lock_lock, 0)) {
 		PyThread_release_lock(self->lock_lock);
 		return PyInt_FromLong(0L);
@@ -137,11 +131,11 @@
 	{"acquire",      (PyCFunction)lock_PyThread_acquire_lock, 
 	 METH_OLDARGS, acquire_doc},
 	{"release_lock", (PyCFunction)lock_PyThread_release_lock, 
-	 METH_OLDARGS, release_doc},
+	 METH_NOARGS, release_doc},
 	{"release",      (PyCFunction)lock_PyThread_release_lock, 
 	 METH_OLDARGS, release_doc},
 	{"locked_lock",  (PyCFunction)lock_locked_lock,  
-	 METH_OLDARGS, locked_doc},
+	 METH_NOARGS, locked_doc},
 	{"locked",       (PyCFunction)lock_locked_lock,  
 	 METH_OLDARGS, locked_doc},
 	{NULL,           NULL}		/* sentinel */
@@ -267,10 +261,8 @@
 printed unless the exception is SystemExit.\n";
 
 static PyObject *
-thread_PyThread_exit_thread(PyObject *self, PyObject *args)
+thread_PyThread_exit_thread(PyObject *self)
 {
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	PyErr_SetNone(PyExc_SystemExit);
 	return NULL;
 }
@@ -295,10 +287,8 @@
 #endif
 
 static PyObject *
-thread_PyThread_allocate_lock(PyObject *self, PyObject *args)
+thread_PyThread_allocate_lock(PyObject *self)
 {
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	return (PyObject *) newlockobject();
 }
 
@@ -309,11 +299,9 @@
 Create a new lock object.  See LockType.__doc__ for information about locks.";
 
 static PyObject *
-thread_get_ident(PyObject *self, PyObject *args)
+thread_get_ident(PyObject *self)
 {
 	long ident;
-	if (!PyArg_NoArgs(args))
-		return NULL;
 	ident = PyThread_get_thread_ident();
 	if (ident == -1) {
 		PyErr_SetString(ThreadError, "no current thread ident");
@@ -341,15 +329,15 @@
 	                        METH_VARARGS,
 				start_new_doc},
 	{"allocate_lock",	(PyCFunction)thread_PyThread_allocate_lock, 
-	 METH_OLDARGS, allocate_doc},
+	 METH_NOARGS, allocate_doc},
 	{"allocate",		(PyCFunction)thread_PyThread_allocate_lock, 
 	 METH_OLDARGS, allocate_doc},
 	{"exit_thread",		(PyCFunction)thread_PyThread_exit_thread, 
-	 METH_OLDARGS, exit_doc},
+	 METH_NOARGS, exit_doc},
 	{"exit",		(PyCFunction)thread_PyThread_exit_thread, 
 	 METH_OLDARGS, exit_doc},
 	{"get_ident",		(PyCFunction)thread_get_ident, 
-	 METH_OLDARGS, get_ident_doc},
+	 METH_NOARGS, get_ident_doc},
 #ifndef NO_EXIT_PROG
 	{"exit_prog",		(PyCFunction)thread_PyThread_exit_prog},
 #endif