Some patches by Drew Csillag; plus a few of my own uncommitted changes.
diff --git a/Doc/api.tex b/Doc/api.tex
index 6039121..7f44500 100644
--- a/Doc/api.tex
+++ b/Doc/api.tex
@@ -1073,7 +1073,7 @@
 Print an object \var{o}, on file \var{fp}.  Returns \code{-1} on error
 The flags argument is used to enable certain printing
 options. The only option currently supported is
-\constant{Py_Print_RAW}.
+\constant{Py_PRINT_RAW}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{PyObject_HasAttrString}{PyObject *o, char *attr_name}
@@ -1721,28 +1721,40 @@
 \end{cvardesc}
 
 \begin{cfuncdesc}{int}{PyString_Check}{PyObject *o}
-
+Returns true if the object \var{o} is a string object.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{const char *v,
                                                           int len}
+Returns a new string object with the value \var{v} and length
+\var{len} on success, and \NULL{} on failure.  If \var{v} is \NULL{},
+the contents of the string are uninitialized.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyString_FromString}{const char *v}
+Returns a new string object with the value \var{v} on success, and
+\NULL{} on failure.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{PyString_Size}{PyObject *string}
+Returns the length of the string in string object \var{string}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{char*}{PyString_AsString}{PyObject *string}
+Resturns a \NULL{} terminated representation of the contents of \var{string}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{void}{PyString_Concat}{PyObject **string,
                                          PyObject *newpart}
+Creates a new string object in \var{*string} containing the contents
+of \var{newpart} appended to \var{string}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{void}{PyString_ConcatAndDel}{PyObject **string,
                                                PyObject *newpart}
+Creates a new string object in \var{*string} containing the contents
+of \var{newpart} appended to \var{string}.  --WHAT IS THE 
+DIFFERENCE BETWEEN THIS AND PLAIN CONCAT?--
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{_PyString_Resize}{PyObject **string, int newsize}
@@ -1852,27 +1864,42 @@
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyList_New}{int size}
+Returns a new list of length \var{len} on success, and \NULL{} on
+failure.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{PyList_Size}{PyObject *list}
+Returns the length of the list object in \var{list}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyList_GetItem}{PyObject *list, int index}
+Returns the item in \var{list} at index \var{index}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{PyList_SetItem}{PyObject *list, int index,
                                        PyObject *item}
+Sets the item at index \var{index} in list to \var{item}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{PyList_Insert}{PyObject *list, int index,
                                       PyObject *index}
+Inserts the item \var{item} into list \var{list} in front of index \var{index}
+and returns true if successful.
+For example: 
+\begin{verbatim}
+PyList_Insert(list, 0, object);
+\end{verbatim}
 \end{cfuncdesc}
+would insert \var{object} at the front of the list.
 
 \begin{cfuncdesc}{int}{PyList_Append}{PyObject *list, PyObject *item}
+Appends the object \var{item} at the end of list \var{list}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyList_GetSlice}{PyObject *list,
                                               int low, int high}
+Returns a list of the objects in \var{list} containing the objects 
+\emph{between} \var{low} and \var{high}.  Analogous to \var{list[low:high]}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{PyList_SetSlice}{PyObject *list,
@@ -1881,12 +1908,14 @@
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{PyList_Sort}{PyObject *list}
+
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{PyList_Reverse}{PyObject *list}
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyList_AsTuple}{PyObject *list}
+Returns a new tuple object containing the contents of \var{list}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyList_GET_ITEM}{PyObject *list, int i}
@@ -2051,21 +2080,29 @@
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
+Returns a new \code{PyLong} object from \var{v}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyLong_FromUnsignedLong}{unsigned long v}
+Returns a new \code{PyLong} object from an unsigned \C{} long.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
+Returns a new \code{PyLong} object from the integer part of \var{v}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{long}{PyLong_AsLong}{PyObject *pylong}
+Returns a \C{} \code{long} representation of the contents of \var{pylong}.  
+WHAT HAPPENS IF \var{pylong} > MAXLONG?
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{unsigned long}{PyLong_AsUnsignedLong}{PyObject *pylong}
+Returns a \C{} \code{unsigned long} representation of the contents of 
+\var{pylong}.  WHAT HAPPENS IF \var{pylong} > MAXLONG?
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{double}{PyLong_AsDouble}{PyObject *pylong}
+Returns a \C{} \code{double} representation of teh contents of \var{pylong}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyLong_FromString}{char *str, char **pend,
@@ -2091,9 +2128,11 @@
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
+Creates a \code{PyFloat} object from \var{v}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{double}{PyFloat_AsDouble}{PyObject *pyfloat}
+Returns a \C{} \code{double} representation of the contents of \var{pyfloat}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{double}{PyFloat_AS_DOUBLE}{PyObject *pyfloat}
@@ -2153,12 +2192,15 @@
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyComplex_FromDoubles}{double real, double imag}
+Returns a new \code{PyComplex} object from \var{real} and \var{imag}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{double}{PyComplex_RealAsDouble}{PyObject *op}
+Returns the real part of \var{op} as a \C{} \code{double}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{double}{PyComplex_ImagAsDouble}{PyObject *op}
+Returns the imaginary part of \var{op} as a \C{} \code{double}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{Py_complex}{PyComplex_AsCComplex}{PyObject *op}
@@ -2854,6 +2896,11 @@
 \begin{cfuncdesc}{TYPE}{_PyObject_NEW_VAR}{TYPE, PyTypeObject *, int size}
 \end{cfuncdesc}
 
+Py_InitModule (!!!)
+
+PyArg_ParseTupleAndKeywords, PyArg_ParseTuple, PyArg_Parse
+
+Py_BuildValue
 
 PyObject, PyVarObject
 
diff --git a/Doc/api/api.tex b/Doc/api/api.tex
index 6039121..7f44500 100644
--- a/Doc/api/api.tex
+++ b/Doc/api/api.tex
@@ -1073,7 +1073,7 @@
 Print an object \var{o}, on file \var{fp}.  Returns \code{-1} on error
 The flags argument is used to enable certain printing
 options. The only option currently supported is
-\constant{Py_Print_RAW}.
+\constant{Py_PRINT_RAW}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{PyObject_HasAttrString}{PyObject *o, char *attr_name}
@@ -1721,28 +1721,40 @@
 \end{cvardesc}
 
 \begin{cfuncdesc}{int}{PyString_Check}{PyObject *o}
-
+Returns true if the object \var{o} is a string object.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyString_FromStringAndSize}{const char *v,
                                                           int len}
+Returns a new string object with the value \var{v} and length
+\var{len} on success, and \NULL{} on failure.  If \var{v} is \NULL{},
+the contents of the string are uninitialized.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyString_FromString}{const char *v}
+Returns a new string object with the value \var{v} on success, and
+\NULL{} on failure.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{PyString_Size}{PyObject *string}
+Returns the length of the string in string object \var{string}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{char*}{PyString_AsString}{PyObject *string}
+Resturns a \NULL{} terminated representation of the contents of \var{string}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{void}{PyString_Concat}{PyObject **string,
                                          PyObject *newpart}
+Creates a new string object in \var{*string} containing the contents
+of \var{newpart} appended to \var{string}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{void}{PyString_ConcatAndDel}{PyObject **string,
                                                PyObject *newpart}
+Creates a new string object in \var{*string} containing the contents
+of \var{newpart} appended to \var{string}.  --WHAT IS THE 
+DIFFERENCE BETWEEN THIS AND PLAIN CONCAT?--
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{_PyString_Resize}{PyObject **string, int newsize}
@@ -1852,27 +1864,42 @@
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyList_New}{int size}
+Returns a new list of length \var{len} on success, and \NULL{} on
+failure.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{PyList_Size}{PyObject *list}
+Returns the length of the list object in \var{list}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyList_GetItem}{PyObject *list, int index}
+Returns the item in \var{list} at index \var{index}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{PyList_SetItem}{PyObject *list, int index,
                                        PyObject *item}
+Sets the item at index \var{index} in list to \var{item}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{PyList_Insert}{PyObject *list, int index,
                                       PyObject *index}
+Inserts the item \var{item} into list \var{list} in front of index \var{index}
+and returns true if successful.
+For example: 
+\begin{verbatim}
+PyList_Insert(list, 0, object);
+\end{verbatim}
 \end{cfuncdesc}
+would insert \var{object} at the front of the list.
 
 \begin{cfuncdesc}{int}{PyList_Append}{PyObject *list, PyObject *item}
+Appends the object \var{item} at the end of list \var{list}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyList_GetSlice}{PyObject *list,
                                               int low, int high}
+Returns a list of the objects in \var{list} containing the objects 
+\emph{between} \var{low} and \var{high}.  Analogous to \var{list[low:high]}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{PyList_SetSlice}{PyObject *list,
@@ -1881,12 +1908,14 @@
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{PyList_Sort}{PyObject *list}
+
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{int}{PyList_Reverse}{PyObject *list}
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyList_AsTuple}{PyObject *list}
+Returns a new tuple object containing the contents of \var{list}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyList_GET_ITEM}{PyObject *list, int i}
@@ -2051,21 +2080,29 @@
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyLong_FromLong}{long v}
+Returns a new \code{PyLong} object from \var{v}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyLong_FromUnsignedLong}{unsigned long v}
+Returns a new \code{PyLong} object from an unsigned \C{} long.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyLong_FromDouble}{double v}
+Returns a new \code{PyLong} object from the integer part of \var{v}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{long}{PyLong_AsLong}{PyObject *pylong}
+Returns a \C{} \code{long} representation of the contents of \var{pylong}.  
+WHAT HAPPENS IF \var{pylong} > MAXLONG?
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{unsigned long}{PyLong_AsUnsignedLong}{PyObject *pylong}
+Returns a \C{} \code{unsigned long} representation of the contents of 
+\var{pylong}.  WHAT HAPPENS IF \var{pylong} > MAXLONG?
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{double}{PyLong_AsDouble}{PyObject *pylong}
+Returns a \C{} \code{double} representation of teh contents of \var{pylong}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyLong_FromString}{char *str, char **pend,
@@ -2091,9 +2128,11 @@
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
+Creates a \code{PyFloat} object from \var{v}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{double}{PyFloat_AsDouble}{PyObject *pyfloat}
+Returns a \C{} \code{double} representation of the contents of \var{pyfloat}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{double}{PyFloat_AS_DOUBLE}{PyObject *pyfloat}
@@ -2153,12 +2192,15 @@
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{PyObject*}{PyComplex_FromDoubles}{double real, double imag}
+Returns a new \code{PyComplex} object from \var{real} and \var{imag}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{double}{PyComplex_RealAsDouble}{PyObject *op}
+Returns the real part of \var{op} as a \C{} \code{double}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{double}{PyComplex_ImagAsDouble}{PyObject *op}
+Returns the imaginary part of \var{op} as a \C{} \code{double}.
 \end{cfuncdesc}
 
 \begin{cfuncdesc}{Py_complex}{PyComplex_AsCComplex}{PyObject *op}
@@ -2854,6 +2896,11 @@
 \begin{cfuncdesc}{TYPE}{_PyObject_NEW_VAR}{TYPE, PyTypeObject *, int size}
 \end{cfuncdesc}
 
+Py_InitModule (!!!)
+
+PyArg_ParseTupleAndKeywords, PyArg_ParseTuple, PyArg_Parse
+
+Py_BuildValue
 
 PyObject, PyVarObject