diff Python/getargs.c @ 20714:091f9656d79b legacy-trunk

vgetargskeywords: + Got rid of now-redundant dict typecheck. + Renamed nkwds to nkwlist. Now all the "counting" vrbls have names related to the things they're counting in an obvious way.
author Tim Peters <tim.peters@gmail.com>
date Sat, 27 Oct 2001 04:45:34 +0000
parents 7f4089519926
children 5e6f8187bd48
line wrap: on
line diff
--- a/Python/getargs.c	Sat Oct 27 04:38:11 2001 +0000
+++ b/Python/getargs.c	Sat Oct 27 04:45:34 2001 +0000
@@ -1034,7 +1034,7 @@
 	char *formatsave;
 	int i, len, nargs, nkeywords;
 	char *msg, *ks, **p;
-	int nkwds, pos, match, converted;
+	int nkwlist, pos, match, converted;
 	PyObject *key, *value;
 
 	assert(args != NULL && PyTuple_Check(args));
@@ -1080,24 +1080,11 @@
 	format = formatsave;
 
 	nargs = PyTuple_GET_SIZE(args);
-
-	/* do a cursory check of the keywords just to see how many we got */
+	nkeywords = keywords == NULL ? 0 : PyDict_Size(keywords);
 
-	nkeywords = 0;
-	if (keywords) { 	
-		if (!PyDict_Check(keywords)) {
-			PyErr_Format(PyExc_SystemError,
-				"%s received when keyword dictionary expected",
-				keywords->ob_type->tp_name);
-			return 0;
-		}	
-		nkeywords = PyDict_Size(keywords);
-	}
-			
 	/* make sure there are no duplicate values for an argument;
 	   its not clear when to use the term "keyword argument vs. 
 	   keyword parameter in messages */
-
 	if (keywords) {
 		for (i = 0; i < nargs; i++) {
 			char *thiskw = kwlist[i];
@@ -1175,14 +1162,14 @@
 	/* make sure the number of keywords in the keyword list matches the 
 	   number of items in the format string */
 	  
-	nkwds = 0;
+	nkwlist = 0;
 	p =  kwlist;
 	for (;;) {
 		if (!*(p++)) break;
-		nkwds++;
+		nkwlist++;
 	}
 
-	if (nkwds != max) {
+	if (nkwlist != max) {
 		PyErr_SetString(PyExc_SystemError,
 	  "number of items in format string and keyword list do not match");
 		return 0;
@@ -1192,7 +1179,7 @@
 	   string where it was left after processing args */
 	
 	converted = 0;
-	for (i = nargs; i < nkwds; i++) {
+	for (i = nargs; i < nkwlist; i++) {
 		PyObject *item;
 		if (*format == '|')
 			format++;
@@ -1223,7 +1210,7 @@
 		while (PyDict_Next(keywords, &pos, &key, &value)) {
 			match = 0;
 			ks = PyString_AsString(key);
-			for (i = 0; i < nkwds; i++) {
+			for (i = 0; i < nkwlist; i++) {
 				if (!strcmp(ks, kwlist[i])) {
 					match = 1;
 					break;