Use the simpler and faster PyArg_UnpackTuple() instead of
PyArg_ParseTuple() where possible.
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 945c337..bb498e4 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -3317,7 +3317,7 @@
 	inquiry func = (inquiry)wrapped;
 	int res;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_UnpackTuple(args, "", 0, 0))
 		return NULL;
 	res = (*func)(self);
 	if (res == -1 && PyErr_Occurred())
@@ -3331,7 +3331,7 @@
 	inquiry func = (inquiry)wrapped;
 	int res;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_UnpackTuple(args, "", 0, 0))
 		return NULL;
 	res = (*func)(self);
 	if (res == -1 && PyErr_Occurred())
@@ -3345,7 +3345,7 @@
 	binaryfunc func = (binaryfunc)wrapped;
 	PyObject *other;
 
-	if (!PyArg_ParseTuple(args, "O", &other))
+	if (!PyArg_UnpackTuple(args, "", 1, 1, &other))
 		return NULL;
 	return (*func)(self, other);
 }
@@ -3356,7 +3356,7 @@
 	binaryfunc func = (binaryfunc)wrapped;
 	PyObject *other;
 
-	if (!PyArg_ParseTuple(args, "O", &other))
+	if (!PyArg_UnpackTuple(args, "", 1, 1, &other))
 		return NULL;
 	if (!(self->ob_type->tp_flags & Py_TPFLAGS_CHECKTYPES) &&
 	    !PyType_IsSubtype(other->ob_type, self->ob_type)) {
@@ -3372,7 +3372,7 @@
 	binaryfunc func = (binaryfunc)wrapped;
 	PyObject *other;
 
-	if (!PyArg_ParseTuple(args, "O", &other))
+	if (!PyArg_UnpackTuple(args, "", 1, 1, &other))
 		return NULL;
 	if (!(self->ob_type->tp_flags & Py_TPFLAGS_CHECKTYPES) &&
 	    !PyType_IsSubtype(other->ob_type, self->ob_type)) {
@@ -3389,7 +3389,7 @@
 	PyObject *other, *res;
 	int ok;
 
-	if (!PyArg_ParseTuple(args, "O", &other))
+	if (!PyArg_UnpackTuple(args, "", 1, 1, &other))
 		return NULL;
 	ok = func(&self, &other);
 	if (ok < 0)
@@ -3418,7 +3418,7 @@
 
 	/* Note: This wrapper only works for __pow__() */
 
-	if (!PyArg_ParseTuple(args, "O|O", &other, &third))
+	if (!PyArg_UnpackTuple(args, "", 1, 2, &other, &third))
 		return NULL;
 	return (*func)(self, other, third);
 }
@@ -3432,7 +3432,7 @@
 
 	/* Note: This wrapper only works for __pow__() */
 
-	if (!PyArg_ParseTuple(args, "O|O", &other, &third))
+	if (!PyArg_UnpackTuple(args, "", 1, 2, &other, &third))
 		return NULL;
 	return (*func)(other, self, third);
 }
@@ -3442,7 +3442,7 @@
 {
 	unaryfunc func = (unaryfunc)wrapped;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_UnpackTuple(args, "", 0, 0))
 		return NULL;
 	return (*func)(self);
 }
@@ -3492,7 +3492,7 @@
 			return NULL;
 		return (*func)(self, i);
 	}
-	PyArg_ParseTuple(args, "O", &arg);
+	PyArg_UnpackTuple(args, "", 1, 1, &arg);
 	assert(PyErr_Occurred());
 	return NULL;
 }
@@ -3515,7 +3515,7 @@
 	int i, res;
 	PyObject *arg, *value;
 
-	if (!PyArg_ParseTuple(args, "OO", &arg, &value))
+	if (!PyArg_UnpackTuple(args, "", 2, 2, &arg, &value))
 		return NULL;
 	i = getindex(self, arg);
 	if (i == -1 && PyErr_Occurred())
@@ -3534,7 +3534,7 @@
 	int i, res;
 	PyObject *arg;
 
-	if (!PyArg_ParseTuple(args, "O", &arg))
+	if (!PyArg_UnpackTuple(args, "", 1, 1, &arg))
 		return NULL;
 	i = getindex(self, arg);
 	if (i == -1 && PyErr_Occurred())
@@ -3585,7 +3585,7 @@
 	int res;
 	PyObject *value;
 
-	if (!PyArg_ParseTuple(args, "O", &value))
+	if (!PyArg_UnpackTuple(args, "", 1, 1, &value))
 		return NULL;
 	res = (*func)(self, value);
 	if (res == -1 && PyErr_Occurred())
@@ -3601,7 +3601,7 @@
 	int res;
 	PyObject *key, *value;
 
-	if (!PyArg_ParseTuple(args, "OO", &key, &value))
+	if (!PyArg_UnpackTuple(args, "", 2, 2, &key, &value))
 		return NULL;
 	res = (*func)(self, key, value);
 	if (res == -1 && PyErr_Occurred())
@@ -3617,7 +3617,7 @@
 	int res;
 	PyObject *key;
 
-	if (!PyArg_ParseTuple(args, "O", &key))
+	if (!PyArg_UnpackTuple(args, "", 1, 1, &key))
 		return NULL;
 	res = (*func)(self, key, NULL);
 	if (res == -1 && PyErr_Occurred())
@@ -3633,7 +3633,7 @@
 	int res;
 	PyObject *other;
 
-	if (!PyArg_ParseTuple(args, "O", &other))
+	if (!PyArg_UnpackTuple(args, "", 1, 1, &other))
 		return NULL;
 	if (other->ob_type->tp_compare != func &&
 	    !PyType_IsSubtype(other->ob_type, self->ob_type)) {
@@ -3676,7 +3676,7 @@
 	int res;
 	PyObject *name, *value;
 
-	if (!PyArg_ParseTuple(args, "OO", &name, &value))
+	if (!PyArg_UnpackTuple(args, "", 2, 2, &name, &value))
 		return NULL;
 	if (!hackcheck(self, func, "__setattr__"))
 		return NULL;
@@ -3694,7 +3694,7 @@
 	int res;
 	PyObject *name;
 
-	if (!PyArg_ParseTuple(args, "O", &name))
+	if (!PyArg_UnpackTuple(args, "", 1, 1, &name))
 		return NULL;
 	if (!hackcheck(self, func, "__delattr__"))
 		return NULL;
@@ -3711,7 +3711,7 @@
 	hashfunc func = (hashfunc)wrapped;
 	long res;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_UnpackTuple(args, "", 0, 0))
 		return NULL;
 	res = (*func)(self);
 	if (res == -1 && PyErr_Occurred())
@@ -3733,7 +3733,7 @@
 	richcmpfunc func = (richcmpfunc)wrapped;
 	PyObject *other;
 
-	if (!PyArg_ParseTuple(args, "O", &other))
+	if (!PyArg_UnpackTuple(args, "", 1, 1, &other))
 		return NULL;
 	return (*func)(self, other, op);
 }
@@ -3759,7 +3759,7 @@
 	unaryfunc func = (unaryfunc)wrapped;
 	PyObject *res;
 
-	if (!PyArg_ParseTuple(args, ""))
+	if (!PyArg_UnpackTuple(args, "", 0, 0))
 		return NULL;
 	res = (*func)(self);
 	if (res == NULL && !PyErr_Occurred())
@@ -3774,7 +3774,7 @@
 	PyObject *obj;
 	PyObject *type = NULL;
 
-	if (!PyArg_ParseTuple(args, "O|O", &obj, &type))
+	if (!PyArg_UnpackTuple(args, "", 1, 2, &obj, &type))
 		return NULL;
 	if (obj == Py_None)
 		obj = NULL;
@@ -3795,7 +3795,7 @@
 	PyObject *obj, *value;
 	int ret;
 
-	if (!PyArg_ParseTuple(args, "OO", &obj, &value))
+	if (!PyArg_UnpackTuple(args, "", 2, 2, &obj, &value))
 		return NULL;
 	ret = (*func)(self, obj, value);
 	if (ret < 0)
@@ -3811,7 +3811,7 @@
 	PyObject *obj;
 	int ret;
 
-	if (!PyArg_ParseTuple(args, "O", &obj))
+	if (!PyArg_UnpackTuple(args, "", 1, 1, &obj))
 		return NULL;
 	ret = (*func)(self, obj, NULL);
 	if (ret < 0)