PYTHON DOCUMENTATION TO-DO LIST			-*- indented-text -*-
===============================


* The "Very High Level Interface" in the API document has been
  requested; I guess it wouldn't hurt to fill in a bit there.  Request 
  by Albert Hofkamp <a.hofkamp@wtb.tue.nl>.  (Partly done.)

* Describe implementing types in C, including use of the 'self'
  parameter to the method implementation function.  (Missing material
  mentioned in the Extending & Embedding manual, section 1.1; problem
  reported by Clay Spence <cspence@sarnoff.com>.)

* In the extensions manual, more information is needed about building
  dynamically linked extensions in C++.  Specifically, the extensions
  must be linked against the C++ libraries (and possibly runtime).
  Also noted by Albert Hofkamp <a.hofkamp@wtb.tue.nl>.

* Python/C API reference missing PyArg_ParseTuple(),
  PyArg_ParseTupleAndKeywords(), Py_BuildValue().  Information
  requested by Greg Kochanski <gpk@bell-labs.com>.  PyEval_EvalCode()
  has also been requested.

* Update the pickle documentation to describe all of the current
  behavior; only a subset is described.  __reduce__, etc.  Partial
  update submitted by Jim Kerr <jbkerr@sr.hp.com>.

* Update the code/codeop module documentation.

* Figure out HTMLHelp generation for the Windows world.

* Straighten out random/whrandom.

* Update the filecmp documentation (Moshe?).

* Update the httplib documentation to match Greg Stein's HTTP/1.1
  support and new classes.  (Greg, this is yours!)


NOT WORTH THE TROUBLE
---------------------

* In the indexes, some subitem entries are separated from the item
  entries by column- or page-breaks.  Reported by Lorenzo M. Catucci
  <lorenzo@argon.roma2.infn.it>.  This one will be hard; probably not
  really worth the pain.  (Only an issue at all when a header-letter
  and the first index entry get separated -- can change as soon as we
  change the index entries in the text.)

* Fix problem with howto documents getting the last module synopsis
  twice (in \localmoduletable) so we can get rid of the ugly 'uniq'
  hack in tools/mkhowto.  (Probably not worth the trouble of fixing.)
