\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}

ni.py -- New import scheme with package support


\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

mimify.py -- Mimification and unmimification of mail messages

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

gzip.py -- compression using zlib (compatible with gzip)


\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; in fact the parser module section already references
the token and symbol modules.)

token.py -- Tokens (from ``token.h'')

symbol.py -- Symbols (from ``graminit.h'')

keyword.py -- Keywords (from ``graminit.c'')

tokenize.py -- regular expression that recognizes Python tokens

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

macpath.py -- equivalent of posixpath on Mac


\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

dis.py -- Disassembler for Python bytecode objects

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.

Queue.py -- A multi-producer, multi-consumer queue
p
bisect.py -- Bisection algorithms

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

emacs.py -- Execute Emacs code from a Python interpreter

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