PyString_AsString is permissive and accepts unicode strings.

Replace it with PyUnicode_AsString when the argument is known to be a str.
diff --git a/Python/getargs.c b/Python/getargs.c
index 48860cc..584805e 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -768,7 +768,7 @@
 		else if (PyUnicode_Check(arg) &&
 			 PyUnicode_GET_SIZE(arg) == 1 &&
 			 PyUnicode_AS_UNICODE(arg)[0] < 256)
-			*p = PyUnicode_AS_UNICODE(arg)[0];
+			*p = (char)PyUnicode_AS_UNICODE(arg)[0];
 		else
 			return converterr("char < 256", arg, msgbuf, bufsize);
 		break;
@@ -823,7 +823,7 @@
 			}
 			else
 				return converterr("string", arg, msgbuf, bufsize);
-			if ((Py_ssize_t)strlen(*p) != PyString_Size(arg))
+			if ((Py_ssize_t)strlen(*p) != PyUnicode_GetSize(arg))
 				return converterr("string without null bytes",
 						  arg, msgbuf, bufsize);
 		}
@@ -899,7 +899,7 @@
 				format++;
 			}
 			else if (*p != NULL &&
-				 (Py_ssize_t)strlen(*p) != PyString_Size(arg))
+				 (Py_ssize_t)strlen(*p) != PyUnicode_GetSize(arg))
 				return converterr(
 					"string without null bytes or None",
 					arg, msgbuf, bufsize);
@@ -1596,7 +1596,7 @@
 					        "keywords must be strings");
 				return cleanreturn(0, freelist);
 			}
-			ks = PyString_AsString(key);
+			ks = PyUnicode_AsString(key);
 			for (i = 0; i < max; i++) {
 				if (!strcmp(ks, kwlist[i])) {
 					match = 1;