Change ValueErrors to TypeErrors and add PyList_Check() assertions.
diff --git a/Modules/heapqmodule.c b/Modules/heapqmodule.c
index 629f516..8e724e6 100644
--- a/Modules/heapqmodule.c
+++ b/Modules/heapqmodule.c
@@ -14,6 +14,7 @@
 	PyObject *newitem, *parent;
 	int cmp, parentpos;
 
+	assert(PyList_Check(heap));
 	if (pos >= PyList_GET_SIZE(heap)) {
 		PyErr_SetString(PyExc_IndexError, "index out of range");
 		return -1;
@@ -48,6 +49,7 @@
 	int cmp;
 	PyObject *newitem, *tmp;
 
+	assert(PyList_Check(heap));
 	endpos = PyList_GET_SIZE(heap);
 	startpos = pos;
 	if (pos >= endpos) {
@@ -97,7 +99,7 @@
 		return NULL;
 
 	if (!PyList_Check(heap)) {
-		PyErr_SetString(PyExc_ValueError, "heap argument must be a list");
+		PyErr_SetString(PyExc_TypeError, "heap argument must be a list");
 		return NULL;
 	}
 
@@ -120,7 +122,7 @@
 	int n;
 
 	if (!PyList_Check(heap)) {
-		PyErr_SetString(PyExc_ValueError, "heap argument must be a list");
+		PyErr_SetString(PyExc_TypeError, "heap argument must be a list");
 		return NULL;
 	}
 
@@ -159,7 +161,7 @@
 		return NULL;
 
 	if (!PyList_Check(heap)) {
-		PyErr_SetString(PyExc_ValueError, "heap argument must be a list");
+		PyErr_SetString(PyExc_TypeError, "heap argument must be a list");
 		return NULL;
 	}
 
@@ -192,7 +194,7 @@
 	int i, n;
 
 	if (!PyList_Check(heap)) {
-		PyErr_SetString(PyExc_ValueError, "heap argument must be a list");
+		PyErr_SetString(PyExc_TypeError, "heap argument must be a list");
 		return NULL;
 	}