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!)

* SSL support in the socket module is not documented.

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