\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

SocketServer.py -- Generic socket server classes


\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

mailbox.py -- handle Unix style, MMDF style, and MH style mailboxes


\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

commands.py -- executing commands and looking at their output and
status

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

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

codehack.py -- extract a function name from a code object

dis.py -- Disassembler for Python bytecode objects

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

newdir.py -- New dir() function


\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

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}

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)


\section{Extension modules}

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

cmathmodule.c -- Exactly the same as math, except takes complex
arguments and returns complex results.

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