This directory contains various demonstrations of what you can do with
Python.  They were all written by me except where explicitly stated
otherwise -- in general, demos contributed by others ends up in the
../Contrib directory, unless I think they're of utmost general
importance (like Matt Conway's Tk demos).

A fair number of utilities that are useful when while developing
Python code can be found in the ../Tools directory -- some of these
can also be considered good examples of how to write Python code.

Finally, in order to save disk space and net bandwidth, not all
subdirectories listed here are distributed.  They are listed just
in case I change my mind about them.


cgi             CGI examples (see also ../Tools/faqwiz/.)

classes		Some examples of how to use classes.

comparisons	A set of responses to a really old language-comparison
		challenge.

curses		A set of curses demos.

embed		An example of embedding Python in another application
		(see also pysvr).

imputil		Demonstration subclasses of imputil.Importer.

md5test		Test program for the optional md5 module.

metaclasses	The code from the 1.5 metaclasses paper on the web.

parser		Example using the parser module.

pdist		Old, unfinished code messing with CVS, RCS and remote
		files.

pysvr		An example of embedding Python in a threaded
		application.

rpc		A set of classes for building clients and servers for
		Sun RPC.

scripts		Some useful Python scripts that I put in my bin
		directory.  No optional built-in modules needed.

sockets		Examples for the new built-in module 'socket'.

threads		Demos that use the 'thread' module.  (Currently these
		only run on SGIs, but this may change in the future.)

tix		Demos using the Tix widget set addition to Tkinter.

tkinter		Demos using the Tk interface (including Matt Conway's
		excellent set of demos).

xml		Some XML demos.

zlib		Some demos for the zlib module (see also the standard
		library module gzip.py).
