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

General
-------

* Figure out HTMLHelp generation for the Windows world.

* Straighten out random/whrandom.  Things are generally in the right
  place, but need to respond to comments in email from Jan Kim
  <kim@mpiz-koeln.mpg.de>.


Python/C API
------------

* 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>.)  Heavily impacts one
  chapter of the Python/C API manual.

* Missing PyArg_ParseTuple(), PyArg_ParseTupleAndKeywords(),
  Py_BuildValue().  Information requested by Greg Kochanski
  <gpk@bell-labs.com>.  PyEval_EvalCode() has also been requested.

Extending & Embedding
---------------------

* 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>.

Reference Manual
----------------

* Document the Extended Call Syntax in the language reference.
  [Jeremy Hylton]

* Document new comparison support for recursive objects (lang. ref.?
  library ref.? (cmp() function).  [Jeremy Hylton]

* Range literals need to be documented.  [Thomas Wouters]

* Augmented assignment.  [Thomas Wouters]

Library Reference
-----------------

* urllib2 module reference.  [Jeremy Hylton]

* 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 httplib documentation to match Greg Stein's HTTP/1.1
  support and new classes.  (Greg, this is yours!)

Tutorial
--------

* Update tutorial to use string methods and talk about backward
  compatibility of same.


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.)  Also only a problem in the
  print version.

* 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.)
