\chapter{Undocumented Modules}

Here's a quick listing of modules that are currently undocumented, but
that should be documented.  Feel free to contribute documentation for
them!  (The idea and most contents for this chapter were taken from a
posting by Fredrik Lundh; I have revised some modules' status.)


\section{Fundamental, and pretty straightforward to document}

cPickle.c -- mostly the same as pickle but no subclassing

cStringIO.c -- mostly the same as StringIO but no subclassing


\section{Frameworks; somewhat harder to document, but
well worth the effort}

Tkinter.py -- Interface to Tcl/Tk for graphical user interfaces;
Fredrik Lundh is working on this one!

BaseHTTPServer.py -- HTTP server base class

CGIHTTPServer.py -- CGI-savvy HTTP Server

SimpleHTTPServer.py -- Simple HTTP Server


\section{Stuff useful to a lot of people, including the CGI crowd}

MimeWriter.py -- Generic MIME writer

multifile.py -- make each part of a multipart message ``feel'' like

fileinput.py -- convenient loop over the lines in a list of input files.


\section{Miscellaneous useful utilities}

Some of these are very old and/or not very robust; marked with ``hmm''.

calendar.py -- Calendar printing functions

cmp.py -- Efficiently compare files

cmpcache.py -- Efficiently compare files (uses statcache)

dircache.py -- like os.listdir, but caches results

dircmp.py -- class to build directory diff tools on

linecache.py -- Cache lines from files (used by pdb)

pipes.py -- Conversion pipeline templates (hmm)

popen2.py -- improved popen, can read AND write simultaneously

statcache.py -- Maintain a cache of file stats

colorsys.py -- Conversion between RGB and other color systems

dbhash.py -- (g)dbm-like wrapper for bsdhash.hashopen

mhlib.py -- MH interface

pty.py -- Pseudo terminal utilities

tty.py -- Terminal utilities

cmd.py -- build line-oriented command interpreters (used by pdb)

bdb.py -- A generic Python debugger base class (used by pdb)

ihooks.py -- Import hook support (for ni and rexec)


\section{Parsing Python}

(One could argue that these should all be documented together with the
parser module.)

tokenize.py -- regular expression that recognizes Python tokens; also
contains helper code for colorizing Python source code.

pyclbr.py -- Parse a Python file and retrieve classes and methods


\section{Platform specific modules}

ntpath.py -- equivalent of posixpath on 32-bit Windows

dospath.py -- equivalent of posixpath on MS-DOS


\section{Code objects and files, debugger etc.}

compileall.py -- force "compilation" of all .py files in a directory

py_compile.py -- "compile" a .py file to a .pyc file

repr.py -- Redo the `...` (representation) but with limits on most
sizes (used by pdb)

copy_reg.py -- helper to provide extensibility for pickle/cPickle


\section{Multimedia}

audiodev.py -- Plays audio files

sunau.py -- parse Sun and NeXT audio files

sunaudio.py -- interpret sun audio headers

toaiff.py -- Convert "arbitrary" sound files to AIFF files

sndhdr.py -- recognizing sound files

wave.py -- parse WAVE files

whatsound.py -- recognizing sound files


\section{Oddities}

These modules are probably also obsolete, or just not very useful.

bisect.py -- Bisection algorithms (this is actually useful at times)

dump.py -- Print python code that reconstructs a variable

find.py -- find files matching pattern in directory tree

fpformat.py -- General floating point formatting functions -- obsolete

grep.py -- grep

mutex.py -- Mutual exclusion -- for use with module sched

packmail.py -- create a self-unpacking \UNIX{} shell archive

poly.py -- Polynomials

sched.py -- event scheduler class

shutil.py -- utility functions usable in a shell-like program

util.py -- useful functions that don't fit elsewhere

zmod.py -- Compute properties of mathematical "fields"

tzparse.py -- Parse a timezone specification (unfinished)


\section{Obsolete}

newdir.py -- New dir() function (the standard dir() is now just as good)

addpack.py -- standard support for "packages" (use ni instead)

fmt.py -- text formatting abstractions (too slow)

Para.py -- helper for fmt.py

lockfile.py -- wrapper around FCNTL file locking (use
fcntl.lockf/flock intead)

tb.py -- Print tracebacks, with a dump of local variables (use
pdb.pm() or traceback.py instead)

codehack.py -- extract function name or line number from a function
code object (these are now accessible as attributes: co.co_name,
func.func_name, co.co_firstlineno)


\section{Extension modules}

bsddbmodule.c -- Interface to the Berkeley DB interface (yet another
dbm clone).

cursesmodule.c -- Curses interface.

dbhashmodule.c -- Obsolete; this functionality is now provided by
bsddbmodule.c.

dlmodule.c --  A highly experimental and dangerous device for calling
arbitrary C functions in arbitrary shared libraries.

newmodule.c -- Tommy Burnette's `new' module (creates new empty
objects of certain kinds) -- dangerous.

nismodule.c -- NIS (a.k.a. Sun's Yellow Pages) interface.

timingmodule.c -- Measure time intervals to high resolution (obsolete
-- use time.clock() instead).

resource.c -- Interface to getrusage() and friends.

stdwinmodule.c -- Interface to STDWIN (an old, unsupported
platform-independent GUI package).  Obsolete; use Tkinter for a
platform-independent GUI instead.

The following are SGI specific:

clmodule.c -- Interface to the SGI compression library.

svmodule.c -- Interface to the ``simple video'' board on SGI Indigo
(obsolete hardware).
